Assembly Diffs

linux arm64

Diffs are based on 1,610,906 contexts (368,644 MinOpts, 1,242,262 FullOpts).

MISSED contexts: base: 2,790 (0.17%), diff: 2,794 (0.17%)

Overall (-7,300 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 13,063,852 -164
benchmarks.run_pgo.linux.arm64.checked.mch 65,248,792 +172
benchmarks.run_tiered.linux.arm64.checked.mch 20,463,728 -80
coreclr_tests.run.linux.arm64.checked.mch 301,233,192 -748
libraries.crossgen2.linux.arm64.checked.mch 63,764,680 -216
libraries.pmi.linux.arm64.checked.mch 76,205,836 -2,312
libraries_tests.run.linux.arm64.Release.mch 38,230,684 -1,028
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 161,794,580 -2,520
realworld.run.linux.arm64.checked.mch 15,928,884 -316
smoke_tests.nativeaot.linux.arm64.checked.mch 2,851,260 -88

FullOpts (-7,300 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 12,930,536 -164
benchmarks.run_pgo.linux.arm64.checked.mch 43,966,168 +172
benchmarks.run_tiered.linux.arm64.checked.mch 4,685,104 -80
coreclr_tests.run.linux.arm64.checked.mch 140,439,428 -748
libraries.crossgen2.linux.arm64.checked.mch 63,763,044 -216
libraries.pmi.linux.arm64.checked.mch 76,085,852 -2,312
libraries_tests.run.linux.arm64.Release.mch 14,335,208 -1,028
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 148,391,748 -2,520
realworld.run.linux.arm64.checked.mch 15,346,680 -316
smoke_tests.nativeaot.linux.arm64.checked.mch 2,850,272 -88

Example diffs

benchmarks.run.linux.arm64.checked.mch

-24 (-4.92%) : 3782.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-12 (-1.94%) : 6839.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)

@@ -10,8 +10,8 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -24,20 +24,21 @@ ; V13 tmp5 [V13,T05] ( 3, 12 ) ref -> x24 class-hnd "Inlining Arg" <System.AggregateException> ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp8 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp8 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V18 tmp10 [V18,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V19 tmp11 [V19,T03] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V18 tmp10 [V18,T03] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V19 tmp11 [V19,T02] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V20 tmp12 [V20,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V21 tmp13 [V21,T07] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V22 tmp14 [V22,T13] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V21 tmp13 [V21,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V22 tmp14 [V22,T14] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V24 tmp16 [V24,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V25 tmp17 [V25,T14] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V24 tmp16 [V24,T18] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V25 tmp17 [V25,T15] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
; V26 tmp18 [V26,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V27 PSPSym [V27,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V28 cse0 [V28,T06] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V29 cse1 [V29,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
+; V27 PSPSym [V27,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V28 cse0 [V28,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V29 cse1 [V29,T06] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V30 cse2 [V30,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -68,7 +69,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x1] ldapr x21, [x1] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG15
+ cbz x21, G_M37406_IG14
;; size=40 bbWeight=1 PerfScore 11.00 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x1] @@ -76,7 +77,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x18] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x18] // [V04 loc2] cbnz w1, G_M37406_IG09 add x1, fp, #24 // [V04 loc2] @@ -96,17 +97,17 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs= mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M37406_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG10
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG11
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG13
+ bhs G_M37406_IG12
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M37406_IG11
+ bhs G_M37406_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -213,18 +214,11 @@ G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cmp w22, w24 - bne G_M37406_IG12 - b G_M37406_IG13 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -233,10 +227,10 @@ G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19] ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG14
+ cbz w0, G_M37406_IG13
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -244,12 +238,12 @@ G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #40 ; byrRegs +[x0] stlr xzr, [x0] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -259,8 +253,8 @@ G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03 V16}
+G_M37406_IG15: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -269,17 +263,17 @@ G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG16: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG18
+ cbz w0, G_M37406_IG17
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V03 V16}
+ ; GC ptr vars -{V03}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -288,7 +282,7 @@ G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 620, prolog size 40, PerfScore 268.75, instruction count 155, allocated bytes for code 620 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 608, prolog size 40, PerfScore 258.75, instruction count 152, allocated bytes for code 608 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -299,7 +293,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
+ Function Length : 135 (0x00087) Actual length = 540 (0x00021c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -338,4 +332,4 @@ Unwind Info: *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG13) handled by [G_M37406_IG16..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG12) handled by [G_M37406_IG15..END) (fault)
-8 (-1.82%) : 6652.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
@@ -10,62 +10,63 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> x19 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> x20 single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> x2 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> x21 "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x28] + stp x21, x22, [sp, #0x38] + str x23, [sp, #0x48]
mov fp, sp
- add x2, sp, #96 - str x2, [fp, #0x28] // [V24 PSPSym]
+ add x2, sp, #80 + str x2, [fp, #0x20] // [V24 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.00 G_M53769_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- str x19, [fp, #0x18] // [V02 loc0]
+ str x19, [fp, #0x10] // [V02 loc0]
; GC ptr vars +{V02}
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1]
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1]
cbnz w1, G_M53769_IG06
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x20] // [V03 loc1]
+ ldrb w0, [fp, #0x18] // [V03 loc1]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -74,7 +75,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180 ; gcr arg pop 0 ldr x21, [x19, #0x08] ; gcrRegs +[x21]
- cbz x21, G_M53769_IG12
+ cbz x21, G_M53769_IG11
;; size=52 bbWeight=1 PerfScore 16.50 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x1, x21 @@ -85,24 +86,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M53769_IG11
+ cbz x0, G_M53769_IG10
mov x21, x0 ldr w22, [x21, #0x14] mov w23, wzr ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M53769_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M53769_IG07
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M53769_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M53769_IG08
+ bhs G_M53769_IG07
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M53769_IG09
+ bhs G_M53769_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -133,21 +134,17 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- cmp w22, w24 - bne G_M53769_IG10 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08]
- b G_M53769_IG12
+ b G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 8.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -156,7 +153,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21] mov x2, x21 ; gcrRegs +[x2] @@ -177,56 +174,56 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs blr x3 ; gcrRegs -[x0-x2 x20-x21] ; gcr arg pop 0
- b G_M53769_IG08
+ b G_M53769_IG07
;; size=60 bbWeight=0.50 PerfScore 6.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG14
+ ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0] ; GC ptr vars -{V02} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x60
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M53769_IG15: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16} - stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - add x3, fp, #96 - str x3, [sp, #0x18]
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M53769_IG14: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17} + stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38] + add x3, fp, #80 + str x3, [sp, #0x10]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG17 - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG16 + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50
+G_M53769_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 36, PerfScore 171.75, instruction count 110, allocated bytes for code 440 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
+; Total bytes of code 432, prolog size 36, PerfScore 166.75, instruction count 108, allocated bytes for code 432 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
...

-8 (-0.15%) : 12036.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)

@@ -10,211 +10,212 @@ ; ; V00 this [V00,T00] ( 86,251 ) ref -> [fp+0x60] this class-hnd EH-live single-def <Jil.Deserialize.InlineDeserializer`1[System.__Canon]> ; V01 arg1 [V01,T32] ( 15, 12 ) ref -> x19 class-hnd single-def <System.Type>
-; V02 loc0 [V02,T53] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V03 loc1 [V03,T79] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
+; V02 loc0 [V02,T54] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V03 loc1 [V03,T80] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
; V04 loc2 [V04,T23] ( 12, 18 ) ref -> [fp+0x58] class-hnd exact EH-live spill-single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ; V05 loc3 [V05,T22] ( 8, 22 ) ref -> x22 class-hnd <<unknown class>> ; V06 loc4 [V06,T24] ( 5, 18 ) ref -> x24 class-hnd single-def <Sigil.Label>
-; V07 loc5 [V07,T139] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> -; V08 loc6 [V08,T71] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
+; V07 loc5 [V07,T140] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> +; V08 loc6 [V08,T72] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T132] ( 3, 3 ) ref -> x26 class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T133] ( 3, 3 ) ref -> x26 class-hnd single-def <<unknown class>>
; V11 loc9 [V11,T39] ( 4, 11 ) ref -> x28 class-hnd <System.Reflection.MethodInfo>
-; V12 loc10 [V12,T140] ( 2, 2 ) ref -> x25 class-hnd single-def <Sigil.Label[]>
+; V12 loc10 [V12,T141] ( 2, 2 ) ref -> x25 class-hnd single-def <Sigil.Label[]>
; V13 loc11 [V13,T43] ( 3, 10 ) ref -> x27 class-hnd single-def <Sigil.Label> ; V14 loc12 [V14,T20] ( 3, 24 ) ref -> x25 class-hnd single-def <Sigil.Label>
-; V15 loc13 [V15,T133] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
+; V15 loc13 [V15,T134] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
;* V16 loc14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V17 loc15 [V17,T78] ( 7, 4 ) ref -> [fp+0x50] class-hnd EH-live spill-single-def <Sigil.Local> -; V18 loc16 [V18,T134] ( 3, 3 ) ref -> [fp+0x48] class-hnd spill-single-def <Sigil.Label>
+; V17 loc15 [V17,T79] ( 7, 4 ) ref -> [fp+0x50] class-hnd EH-live spill-single-def <Sigil.Local> +; V18 loc16 [V18,T135] ( 3, 3 ) ref -> [fp+0x48] class-hnd spill-single-def <Sigil.Label>
;* V19 loc17 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V20 loc18 [V20,T49] ( 2, 8 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String>
+; V20 loc18 [V20,T50] ( 2, 8 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String>
; V21 loc19 [V21,T36] ( 3, 12 ) ref -> x1 class-hnd <Sigil.Label>
-; V22 loc20 [V22,T26] ( 4, 16 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MemberInfo[]> -; V23 loc21 [V23,T50] ( 2, 8 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.MemberInfo>
+; V22 loc20 [V22,T25] ( 4, 16 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MemberInfo[]> +; V23 loc21 [V23,T51] ( 2, 8 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.MemberInfo>
;# V24 OutArgs [V24 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V25 tmp1 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> ;* V26 tmp2 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp3 [V27,T86] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V28 tmp4 [V28,T87] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V27 tmp3 [V27,T87] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V28 tmp4 [V28,T88] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V29 tmp5 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ;* V30 tmp6 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V31 tmp7 [V31,T88] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V32 tmp8 [V32,T44] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V33 tmp9 [V33,T89] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V34 tmp10 [V34,T45] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
+; V31 tmp7 [V31,T89] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V32 tmp8 [V32,T45] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V33 tmp9 [V33,T90] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V34 tmp10 [V34,T46] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
;* V35 tmp11 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType>
-; V36 tmp12 [V36,T73] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V37 tmp13 [V37,T138] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V36 tmp12 [V36,T74] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V37 tmp13 [V37,T139] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
; V38 tmp14 [V38,T37] ( 7, 11.50) ref -> x26 class-hnd "spilling QMark2" <<unknown class>> ;* V39 tmp15 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V40 tmp16 [V40,T90] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
+; V40 tmp16 [V40,T91] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
;* V41 tmp17 [V41 ] ( 0, 0 ) ref -> zero-ref single-def
-; V42 tmp18 [V42,T72] ( 5, 5 ) ref -> x28 -; V43 tmp19 [V43,T46] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V44 tmp20 [V44,T91] ( 2, 4 ) ref -> x28 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V45 tmp21 [V45,T54] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
+; V42 tmp18 [V42,T73] ( 5, 5 ) ref -> x28 +; V43 tmp19 [V43,T47] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V44 tmp20 [V44,T92] ( 2, 4 ) ref -> x28 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V45 tmp21 [V45,T55] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
;* V46 tmp22 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V47 tmp23 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V48 tmp24 [V48,T92] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V48 tmp24 [V48,T93] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V49 tmp25 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
-; V50 tmp26 [V50,T80] ( 4, 4 ) ref -> x2 -; V51 tmp27 [V51,T93] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V52 tmp28 [V52,T94] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V53 tmp29 [V53,T95] ( 2, 4 ) ref -> [fp+0x20] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V54 tmp30 [V54,T55] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
+; V50 tmp26 [V50,T81] ( 4, 4 ) ref -> x2 +; V51 tmp27 [V51,T94] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V52 tmp28 [V52,T95] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V53 tmp29 [V53,T96] ( 2, 4 ) ref -> [fp+0x20] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V54 tmp30 [V54,T56] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
;* V55 tmp31 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]>
-; V56 tmp32 [V56,T06] ( 2, 32 ) ref -> x25 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V56 tmp32 [V56,T05] ( 2, 32 ) ref -> x25 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V57 tmp33 [V57,T01] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]> ; V58 tmp34 [V58,T02] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
-; V59 tmp35 [V59,T96] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -;* V60 tmp36 [V60,T145] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V59 tmp35 [V59,T97] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +;* V60 tmp36 [V60,T146] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V61 tmp37 [V61,T40] ( 5, 10 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V62 tmp38 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V63 tmp39 [V63,T56] ( 3, 6 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Type[]> -; V64 tmp40 [V64,T97] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> -;* V65 tmp41 [V65,T146] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V63 tmp39 [V63,T57] ( 3, 6 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Type[]> +; V64 tmp40 [V64,T98] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> +;* V65 tmp41 [V65,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V66 tmp42 [V66,T41] ( 5, 10 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V67 tmp43 [V67 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V68 tmp44 [V68,T98] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V68 tmp44 [V68,T99] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V69 tmp45 [V69 ] ( 0, 0 ) ref -> zero-ref single-def ;* V70 tmp46 [V70 ] ( 0, 0 ) ref -> zero-ref single-def ;* V71 tmp47 [V71 ] ( 0, 0 ) ref -> zero-ref single-def
-; V72 tmp48 [V72,T152] ( 3, 0 ) ref -> x20 -; V73 tmp49 [V73,T153] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V74 tmp50 [V74,T47] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V72 tmp48 [V72,T153] ( 3, 0 ) ref -> x20 +; V73 tmp49 [V73,T154] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V74 tmp50 [V74,T48] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V75 tmp51 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V76 tmp52 [V76,T99] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
+; V76 tmp52 [V76,T100] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
;* V77 tmp53 [V77 ] ( 0, 0 ) ref -> zero-ref single-def ;* V78 tmp54 [V78 ] ( 0, 0 ) int -> zero-ref single-def
-; V79 tmp55 [V79,T81] ( 4, 4 ) ref -> x23 -; V80 tmp56 [V80,T48] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V81 tmp57 [V81,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V79 tmp55 [V79,T82] ( 4, 4 ) ref -> x23 +; V80 tmp56 [V80,T49] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V81 tmp57 [V81,T148] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V82 tmp58 [V82,T42] ( 5, 10 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V83 tmp59 [V83 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V84 tmp60 [V84,T100] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V85 tmp61 [V85,T101] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V84 tmp60 [V84,T101] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V85 tmp61 [V85,T102] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V86 tmp62 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V87 tmp63 [V87,T57] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V88 tmp64 [V88,T102] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V87 tmp63 [V87,T58] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V88 tmp64 [V88,T103] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
;* V89 tmp65 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V90 tmp66 [V90,T103] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V90 tmp66 [V90,T104] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V91 tmp67 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V92 tmp68 [V92,T104] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V92 tmp68 [V92,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V93 tmp69 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 tmp70 [V94,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V95 tmp71 [V95,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V94 tmp70 [V94,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V95 tmp71 [V95,T107] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V96 tmp72 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V97 tmp73 [V97,T107] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V97 tmp73 [V97,T108] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V98 tmp74 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V99 tmp75 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Object[]> ;* V100 tmp76 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo> ;* V101 tmp77 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V102 tmp78 [V102,T58] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V102 tmp78 [V102,T59] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V103 tmp79 [V103,T33] ( 7, 14 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V104 tmp80 [V104 ] ( 0, 0 ) ref -> zero-ref ;* V105 tmp81 [V105 ] ( 0, 0 ) ref -> zero-ref ;* V106 tmp82 [V106 ] ( 0, 0 ) ref -> zero-ref ;* V107 tmp83 [V107 ] ( 0, 0 ) ref -> zero-ref
-; V108 tmp84 [V108,T59] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V109 tmp85 [V109,T141] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V110 tmp86 [V110,T149] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V108 tmp84 [V108,T60] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V109 tmp85 [V109,T142] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V110 tmp86 [V110,T150] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V111 tmp87 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V112 tmp88 [V112,T34] ( 6, 12 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V113 tmp89 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V114 tmp90 [V114 ] ( 2, 2 ) struct ( 8) [fp+0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-; V115 tmp91 [V115,T60] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V116 tmp92 [V116,T108] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V117 tmp93 [V117,T109] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V118 tmp94 [V118,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V119 tmp95 [V119,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V120 tmp96 [V120,T112] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V121 tmp97 [V121,T113] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V122 tmp98 [V122,T114] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V123 tmp99 [V123,T61] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V124 tmp100 [V124,T115] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V125 tmp101 [V125,T116] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V126 tmp102 [V126,T117] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V127 tmp103 [V127,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V128 tmp104 [V128,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V129 tmp105 [V129,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V130 tmp106 [V130,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V131 tmp107 [V131,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V132 tmp108 [V132,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V133 tmp109 [V133,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V115 tmp91 [V115,T61] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V116 tmp92 [V116,T109] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V117 tmp93 [V117,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V118 tmp94 [V118,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V119 tmp95 [V119,T112] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V120 tmp96 [V120,T113] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V121 tmp97 [V121,T114] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V122 tmp98 [V122,T115] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V123 tmp99 [V123,T62] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V124 tmp100 [V124,T116] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V125 tmp101 [V125,T117] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V126 tmp102 [V126,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V127 tmp103 [V127,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V128 tmp104 [V128,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V129 tmp105 [V129,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V130 tmp106 [V130,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V131 tmp107 [V131,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V132 tmp108 [V132,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V133 tmp109 [V133,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V134 tmp110 [V134 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V135 tmp111 [V135,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V136 tmp112 [V136,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V137 tmp113 [V137,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V138 tmp114 [V138,T30] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -;* V139 tmp115 [V139,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V135 tmp111 [V135,T26] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V136 tmp112 [V136,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V137 tmp113 [V137,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V138 tmp114 [V138,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +;* V139 tmp115 [V139,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V140 tmp116 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V141 tmp117 [V141,T07] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V142 tmp118 [V142,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V143 tmp119 [V143,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V144 tmp120 [V144,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V145 tmp121 [V145,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V146 tmp122 [V146,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V147 tmp123 [V147,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V141 tmp117 [V141,T06] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V142 tmp118 [V142,T07] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V143 tmp119 [V143,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V144 tmp120 [V144,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V145 tmp121 [V145,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V146 tmp122 [V146,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V147 tmp123 [V147,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V148 tmp124 [V148 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Label>
-; V149 tmp125 [V149,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V150 tmp126 [V150,T15] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V151 tmp127 [V151,T16] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V152 tmp128 [V152,T17] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V153 tmp129 [V153,T18] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V154 tmp130 [V154,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V155 tmp131 [V155,T126] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V156 tmp132 [V156,T127] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V149 tmp125 [V149,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V150 tmp126 [V150,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
...

-8 (-0.15%) : 1187.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

-4 (-0.04%) : 15521.dasm - System.Net.WebSockets.ManagedWebSocket+d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc3 [V04 ] ( 10, 10 ) struct (16) [fp+0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ; V06 loc5 [V06,T39] ( 3, 12 ) ref -> x0 class-hnd exact <System.String>
-; V07 loc6 [V07,T29] ( 4, 16 ) long -> x20
+; V07 loc6 [V07,T29] ( 4, 16 ) long -> x1
; V08 loc7 [V08 ] ( 11, 35 ) struct (16) [fp+0x188] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]> ; V09 loc8 [V09 ] ( 8, 20 ) struct (16) [fp+0x178] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask`1[int]> ;* V10 loc9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]> @@ -81,17 +81,17 @@ ;* V70 tmp40 [V70 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V71 tmp41 [V71 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V72 tmp42 [V72 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V73 tmp43 [V73,T102] ( 2, 8 ) int -> x2
+; V73 tmp43 [V73,T101] ( 2, 8 ) int -> x2
;* V74 tmp44 [V74 ] ( 0, 0 ) int -> zero-ref ; V75 tmp45 [V75,T46] ( 3, 12 ) int -> x3 ;* V76 tmp46 [V76 ] ( 0, 0 ) int -> zero-ref "dup spill" ; V77 tmp47 [V77,T23] ( 3, 24 ) int -> x1 "Span.get_Item index" ;* V78 tmp48 [V78 ] ( 0, 0 ) int -> zero-ref ;* V79 tmp49 [V79 ] ( 0, 0 ) int -> zero-ref
-; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x21 -; V81 tmp51 [V81,T103] ( 2, 8 ) int -> x1
+; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x2 +; V81 tmp51 [V81,T102] ( 2, 8 ) int -> x2
;* V82 tmp52 [V82 ] ( 0, 0 ) int -> zero-ref
-; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x2
+; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x1
;* V84 tmp54 [V84 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V85 tmp55 [V85 ] ( 0, 0 ) int -> zero-ref ;* V86 tmp56 [V86 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -119,7 +119,7 @@ ;* V108 tmp78 [V108 ] ( 0, 0 ) byref -> zero-ref single-def ;* V109 tmp79 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ; V110 tmp80 [V110,T149] ( 5, 5 ) ref -> x21
-; V111 tmp81 [V111,T63] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
+; V111 tmp81 [V111,T62] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
; V112 tmp82 [V112,T325] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception> ; V113 tmp83 [V113,T131] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V114 tmp84 [V114 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration> @@ -320,10 +320,10 @@ ; V309 tmp279 [V309 ] ( 4, 8 ) struct ( 8) [fp+0x40] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Net.WebSockets.ValueWebSocketReceiveResult> ;* V310 tmp280 [V310 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V311 tmp281 [V311 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V312 tmp282 [V312,T79] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V312 tmp282 [V312,T78] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V313 tmp283 [V313 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V314 tmp284 [V314,T64] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V315 tmp285 [V315,T68] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V314 tmp284 [V314,T63] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V315 tmp285 [V315,T67] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V316 tmp286 [V316 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V317 tmp287 [V317 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V318 tmp288 [V318,T135] ( 3, 6 ) int -> x21 "Inlining Arg" @@ -336,8 +336,8 @@ ;* V325 tmp295 [V325 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V326 tmp296 [V326,T125] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V327 tmp297 [V327,T120] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V328 tmp298 [V328,T80] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V329 tmp299 [V329,T74] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V328 tmp298 [V328,T79] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V329 tmp299 [V329,T73] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V330 tmp300 [V330 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V331 tmp301 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V332 tmp302 [V332 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -354,8 +354,8 @@ ;* V343 tmp313 [V343 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V344 tmp314 [V344,T126] ( 6, 6 ) byref -> x25 "Inline stloc first use temp" ; V345 tmp315 [V345,T121] ( 7, 7 ) int -> x26 "Inline stloc first use temp"
-; V346 tmp316 [V346,T81] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" -; V347 tmp317 [V347,T75] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V346 tmp316 [V346,T80] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" +; V347 tmp317 [V347,T74] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V348 tmp318 [V348 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V349 tmp319 [V349 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V350 tmp320 [V350 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -366,10 +366,10 @@ ;* V355 tmp325 [V355 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V356 tmp326 [V356,T171] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V357 tmp327 [V357 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V358 tmp328 [V358,T82] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V358 tmp328 [V358,T81] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V359 tmp329 [V359 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V360 tmp330 [V360,T65] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> -; V361 tmp331 [V361,T69] ( 5, 10 ) int -> x0 "Inlining Arg"
+; V360 tmp330 [V360,T64] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> +; V361 tmp331 [V361,T68] ( 5, 10 ) int -> x0 "Inlining Arg"
;* V362 tmp332 [V362 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V363 tmp333 [V363 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V364 tmp334 [V364,T140] ( 3, 6 ) int -> x24 "Inlining Arg" @@ -380,14 +380,14 @@ ; V369 tmp339 [V369,T196] ( 2, 4 ) long -> x3 "Inlining Arg" ; V370 tmp340 [V370,T141] ( 3, 6 ) int -> x2 "Inlining Arg" ; V371 tmp341 [V371,T142] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V372 tmp342 [V372,T83] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
+; V372 tmp342 [V372,T82] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
;* V373 tmp343 [V373 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V374 tmp344 [V374,T66] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
+; V374 tmp344 [V374,T65] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
; V375 tmp345 [V375,T233] ( 3, 3 ) int -> registers ; V376 tmp346 [V376,T197] ( 2, 4 ) int -> x22 "Inlining Arg"
-; V377 tmp347 [V377,T84] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> -; V378 tmp348 [V378,T85] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> -; V379 tmp349 [V379,T90] ( 4, 8 ) int -> x1 "Inlining Arg"
+; V377 tmp347 [V377,T83] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> +; V378 tmp348 [V378,T84] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> +; V379 tmp349 [V379,T89] ( 4, 8 ) int -> x1 "Inlining Arg"
;* V380 tmp350 [V380 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V381 tmp351 [V381,T143] ( 3, 6 ) int -> x3 "Inlining Arg" ; V382 tmp352 [V382,T144] ( 3, 6 ) int -> x20 "Inlining Arg" @@ -423,8 +423,8 @@ ;* V412 tmp382 [V412 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V413 tmp383 [V413,T127] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V414 tmp384 [V414,T122] ( 7, 7 ) int -> x22 "Inline stloc first use temp"
-; V415 tmp385 [V415,T86] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V416 tmp386 [V416,T76] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V415 tmp385 [V415,T85] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V416 tmp386 [V416,T75] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V417 tmp387 [V417 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V418 tmp388 [V418 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V419 tmp389 [V419 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -435,25 +435,25 @@ ;* V424 tmp394 [V424 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V425 tmp395 [V425,T174] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V426 tmp396 [V426 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V427 tmp397 [V427,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V427 tmp397 [V427,T90] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V428 tmp398 [V428 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V429 tmp399 [V429,T175] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
-; V430 tmp400 [V430,T87] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V430 tmp400 [V430,T86] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V431 tmp401 [V431 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V432 tmp402 [V432,T67] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V433 tmp403 [V433,T70] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V432 tmp402 [V432,T66] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V433 tmp403 [V433,T69] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V434 tmp404 [V434 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V435 tmp405 [V435 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V436 tmp406 [V436,T146] ( 3, 6 ) int -> x21 "Inlining Arg" ; V437 tmp407 [V437,T176] ( 2, 4 ) byref -> x20 single-def "Inlining Arg"
-; V438 tmp408 [V438,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V438 tmp408 [V438,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V439 tmp409 [V439 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V440 tmp410 [V440,T177] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V441 tmp411 [V441 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V442 tmp412 [V442,T128] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V443 tmp413 [V443,T123] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V444 tmp414 [V444,T88] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V445 tmp415 [V445,T77] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V444 tmp414 [V444,T87] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V445 tmp415 [V445,T76] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V446 tmp416 [V446 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V447 tmp417 [V447 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V448 tmp418 [V448 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -470,8 +470,8 @@ ;* V459 tmp429 [V459 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V460 tmp430 [V460,T129] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V461 tmp431 [V461,T124] ( 7, 7 ) int -> x23 "Inline stloc first use temp"
-; V462 tmp432 [V462,T89] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V463 tmp433 [V463,T78] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V462 tmp432 [V462,T88] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V463 tmp433 [V463,T77] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V464 tmp434 [V464 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V465 tmp435 [V465 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V466 tmp436 [V466 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -482,7 +482,7 @@ ;* V471 tmp441 [V471 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V472 tmp442 [V472,T179] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V473 tmp443 [V473 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V474 tmp444 [V474,T93] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V474 tmp444 [V474,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V475 tmp445 [V475 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V476 tmp446 [V476,T180] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V477 tmp447 [V477 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> @@ -511,9 +511,9 @@ ; V500 tmp470 [V500,T159] ( 4, 4 ) int -> [fp+0x30] do-not-enreg[Z] EH-live "field V03._messageType (fldOffset=0x4)" P-INDEP ; V501 tmp471 [V501 ] ( 6, 6 ) ref -> [fp+0x198] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V502 tmp472 [V502 ] ( 6, 6 ) int -> [fp+0x1A0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
-; V503 tmp473 [V503,T71] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP -; V504 tmp474 [V504,T72] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP -; V505 tmp475 [V505,T73] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
+; V503 tmp473 [V503,T70] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP +; V504 tmp474 [V504,T71] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP +; V505 tmp475 [V505,T72] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
; V506 tmp476 [V506,T154] ( 2, 5 ) ubyte -> [fp+0x186] do-not-enreg[] "field V09._continueOnCapturedContext (fldOffset=0xe)" P-DEP ; V507 tmp477 [V507,T03] ( 12, 36 ) ref -> [fp+0x158] do-not-enreg[] "field V12._obj (fldOffset=0x0)" P-DEP ; V508 tmp478 [V508,T04] ( 12, 36 ) short -> [fp+0x160] do-not-enreg[] "field V12._token (fldOffset=0x8)" P-DEP @@ -551,43 +551,43 @@ ; V540 tmp510 [V540,T45] ( 3, 12 ) ref -> [fp+0xC8] do-not-enreg[] "field V155._object (fldOffset=0x0)" P-DEP ; V541 tmp511 [V541,T59] ( 3, 12 ) int -> [fp+0xD0] do-not-enreg[] "field V155._index (fldOffset=0x8)" P-DEP ; V542 tmp512 [V542,T60] ( 3, 12 ) int -> [fp+0xD4] do-not-enreg[] "field V155._length (fldOffset=0xc)" P-DEP
-; V543 tmp513 [V543,T94] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP -; V544 tmp514 [V544,T104] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP -; V545 tmp515 [V545,T105] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
+; V543 tmp513 [V543,T93] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP +; V544 tmp514 [V544,T103] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP +; V545 tmp515 [V545,T104] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
;* V546 tmp516 [V546,T208] ( 0, 0 ) ubyte -> zero-ref "field V156._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V547 tmp517 [V547,T95] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
+; V547 tmp517 [V547,T94] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
;* V548 tmp518 [V548 ] ( 0, 0 ) ref -> zero-ref "field V183.m_task (fldOffset=0x0)" P-INDEP
-; V549 tmp519 [V549,T96] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP -; V550 tmp520 [V550,T106] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
+; V549 tmp519 [V549,T95] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP +; V550 tmp520 [V550,T105] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
;* V551 tmp521 [V551,T209] ( 0, 0 ) ubyte -> zero-ref "field V184._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V552 tmp522 [V552 ] ( 0, 0 ) ref -> zero-ref "field V185._obj (fldOffset=0x0)" P-INDEP ;* V553 tmp523 [V553 ] ( 0, 0 ) short -> zero-ref "field V185._token (fldOffset=0x8)" P-INDEP ;* V554 tmp524 [V554 ] ( 0, 0 ) ubyte -> zero-ref "field V185._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V555 tmp525 [V555 ] ( 0, 0 ) byref -> zero-ref "field V205._reference (fldOffset=0x0)" P-INDEP ;* V556 tmp526 [V556 ] ( 0, 0 ) int -> zero-ref "field V205._length (fldOffset=0x8)" P-INDEP
-; V557 tmp527 [V557,T97] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP -; V558 tmp528 [V558,T107] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
+; V557 tmp527 [V557,T96] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP +; V558 tmp528 [V558,T106] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
;* V559 tmp529 [V559 ] ( 0, 0 ) byref -> zero-ref "field V212._reference (fldOffset=0x0)" P-DEP ;* V560 tmp530 [V560 ] ( 0, 0 ) int -> zero-ref "field V212._length (fldOffset=0x8)" P-DEP
-; V561 tmp531 [V561,T98] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP -; V562 tmp532 [V562,T108] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
+; V561 tmp531 [V561,T97] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP +; V562 tmp532 [V562,T107] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
;* V563 tmp533 [V563 ] ( 0, 0 ) byref -> zero-ref "field V219._reference (fldOffset=0x0)" P-INDEP ;* V564 tmp534 [V564 ] ( 0, 0 ) int -> zero-ref "field V219._length (fldOffset=0x8)" P-INDEP
-; V565 tmp535 [V565,T99] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP -; V566 tmp536 [V566,T109] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
+; V565 tmp535 [V565,T98] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP +; V566 tmp536 [V566,T108] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
;* V567 tmp537 [V567,T210] ( 0, 0 ) ubyte -> zero-ref "field V220._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V568 tmp538 [V568 ] ( 0, 0 ) ref -> zero-ref "field V221._obj (fldOffset=0x0)" P-INDEP ;* V569 tmp539 [V569 ] ( 0, 0 ) short -> zero-ref "field V221._token (fldOffset=0x8)" P-INDEP ;* V570 tmp540 [V570 ] ( 0, 0 ) ubyte -> zero-ref "field V221._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V571 tmp541 [V571 ] ( 0, 0 ) ref -> zero-ref "field V240.m_task (fldOffset=0x0)" P-INDEP
-; V572 tmp542 [V572,T100] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP -; V573 tmp543 [V573,T110] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
+; V572 tmp542 [V572,T99] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP +; V573 tmp543 [V573,T109] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
;* V574 tmp544 [V574,T211] ( 0, 0 ) ubyte -> zero-ref "field V241._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V575 tmp545 [V575 ] ( 0, 0 ) ref -> zero-ref "field V242._obj (fldOffset=0x0)" P-INDEP ;* V576 tmp546 [V576 ] ( 0, 0 ) short -> zero-ref "field V242._token (fldOffset=0x8)" P-INDEP ;* V577 tmp547 [V577 ] ( 0, 0 ) ubyte -> zero-ref "field V242._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V578 tmp548 [V578,T101] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP -; V579 tmp549 [V579,T111] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
+; V578 tmp548 [V578,T100] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP +; V579 tmp549 [V579,T110] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
;* V580 tmp550 [V580,T212] ( 0, 0 ) ubyte -> zero-ref "field V260._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V581 tmp551 [V581 ] ( 0, 0 ) ref -> zero-ref "field V261._obj (fldOffset=0x0)" P-INDEP ;* V582 tmp552 [V582 ] ( 0, 0 ) short -> zero-ref "field V261._token (fldOffset=0x8)" P-INDEP @@ -728,8 +728,8 @@ ; V717 PSPSym [V717,T317] ( 1, 1 ) long -> [fp+0x1B0] do-not-enreg[V] "PSPSym" ;* V718 cse0 [V718,T318] ( 0, 0 ) long -> zero-ref "CSE - conservative" ...

benchmarks.run_pgo.linux.arm64.checked.mch

-4 (-3.23%) : 110151.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8964
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8964
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> @@ -30,22 +30,22 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2] cmp w1, w3
- bne G_M264_IG11
+ bne G_M264_IG09
;; size=8 bbWeight=1 PerfScore 1.50 G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref sxtw w4, w3 ;; size=4 bbWeight=0.97 PerfScore 0.49 G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz sub w4, w4, #1
- tbnz w4, #31, G_M264_IG09
+ tbnz w4, #31, G_M264_IG13
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M264_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w4, w1
- bhs G_M264_IG14
+ bhs G_M264_IG12
mov w5, w4 ldr w6, [x0, x5, LSL #2] cmp w4, w3
- bhs G_M264_IG14
+ bhs G_M264_IG12
ldr w5, [x2, x5, LSL #2] cmp w6, w5 beq G_M264_IG04 @@ -53,7 +53,7 @@ G_M264_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x2] cmp w5, w6
- bhi G_M264_IG12
+ bhi G_M264_IG10
;; size=8 bbWeight=0.97 PerfScore 1.45 G_M264_IG07: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #1 @@ -62,31 +62,30 @@ G_M264_IG08: ; bbWeight=0.74, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG09: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0.97 PerfScore 0.48 -G_M264_IG10: ; bbWeight=0.97, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.97 PerfScore 1.94 -G_M264_IG11: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG09: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3 bge G_M264_IG07 ;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG12: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG13: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- brk_unix #0
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG14: ; bbWeight=0, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 22.40, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 120, prolog size 8, PerfScore 19.98, instruction count 30, allocated bytes for code 120 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.87%) : 105604.dasm - System.Linq.Enumerable:CountSystem.__Canon:int (Tier1)

@@ -25,7 +25,7 @@ ; V13 tmp7 [V13,T09] ( 2, 154.40) int -> x0 "guarded devirt return temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V16 tmp10 [V16,T00] ( 12,1084.78) byref -> x23 "Inlining Arg"
+; V16 tmp10 [V16,T00] ( 10,1080.81) byref -> x23 "Inlining Arg"
; V17 tmp11 [V17,T07] ( 4, 307.81) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T01] ( 3, 457.24) ref -> x14 "arr expr" @@ -54,12 +54,12 @@ G_M54795_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=40 bbWeight=1 PerfScore 7.50 G_M54795_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M54795_IG24 - cbz x19, G_M54795_IG25
+ cbz x21, G_M54795_IG23 + cbz x19, G_M54795_IG24
mov w22, wzr ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M54795_IG20
+ cbz x11, G_M54795_IG19
;; size=24 bbWeight=1 PerfScore 9.50 G_M54795_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref mov x0, x21 @@ -143,11 +143,11 @@ G_M54795_IG10: ; bbWeight=77.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {} ldr w15, [x23, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M54795_IG18
+ bne G_M54795_IG17
ldr w15, [x23, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M54795_IG19
+ bhs G_M54795_IG18
;; size=56 bbWeight=77.20 PerfScore 1930.02 G_M54795_IG11: ; bbWeight=76.21, gcrefRegs=84000 {x14 x19}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x0] @@ -183,7 +183,7 @@ G_M54795_IG12: ; bbWeight=77.20, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ;; size=24 bbWeight=77.20 PerfScore 501.80 G_M54795_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=4 bbWeight=1 PerfScore 1.00 G_M54795_IG14: ; bbWeight=5.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] @@ -211,17 +211,8 @@ G_M54795_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M54795_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
; byrRegs +[x23]
- ldr w11, [x23, #0x14] - ldr x1, [x23] - ; gcrRegs +[x1] - ldr w1, [x1, #0x14] - ; gcrRegs -[x1] - cmp w11, w1 - bne G_M54795_IG17 - ;; size=20 bbWeight=0.99 PerfScore 10.43 -G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
ldr x11, [x23] ; gcrRegs +[x11] ldr w11, [x11, #0x10] @@ -229,9 +220,9 @@ G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23} add w11, w11, #1 str w11, [x23, #0x10] str xzr, [x23, #0x08]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=24 bbWeight=0.99 PerfScore 9.44
-G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG19: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x21] ; byrRegs -[x23] ; GC ptr vars -{V04} @@ -244,28 +235,28 @@ G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280 mov x11, x0 b G_M54795_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG20: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] ldr x1, [x0] cmp x1, x21
- bne G_M54795_IG26
+ bne G_M54795_IG25
;; size=16 bbWeight=1 PerfScore 6.50
-G_M54795_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V04} mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M54795_IG22: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x48] ldp x21, x22, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #17 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -275,7 +266,7 @@ G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -285,7 +276,7 @@ G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG25: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] @@ -297,9 +288,9 @@ G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M54795_IG22
+ b G_M54795_IG21
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -308,16 +299,16 @@ G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 add x3, fp, #80 str x3, [sp, #0x10] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0]
- cbz x0, G_M54795_IG29
+ cbz x0, G_M54795_IG28
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- beq G_M54795_IG29
+ beq G_M54795_IG28
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -327,7 +318,7 @@ G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0 PerfScore 0.00
-G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M54795_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -335,7 +326,7 @@ G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 696, prolog size 40, PerfScore 6923.15, instruction count 174, allocated bytes for code 696 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
+; Total bytes of code 676, prolog size 40, PerfScore 6912.72, instruction count 169, allocated bytes for code 676 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -346,7 +337,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 150 (0x00096) Actual length = 600 (0x000258)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -381,4 +372,4 @@ Unwind Info: *************** EH table for System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M54795_IG04..G_M54795_IG20) handled by [G_M54795_IG27..END) (fault)
+EH#0: try [G_M54795_IG04..G_M54795_IG19) handled by [G_M54795_IG26..END) (fault)
-12 (-2.52%) : 5815.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
@@ -8,28 +8,28 @@ ; 3 inlinees with PGO data; 12 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T18] ( 3, 3 ) long -> x20 single-def
+; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def
; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T19] ( 4, 11 ) long -> x20
+; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T08] ( 7, 83.78) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>>
+; V08 tmp1 [V08,T09] ( 7, 83.78) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T27] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T20] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T21] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T06] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T05] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T10] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp14 [V21,T11] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V24 tmp17 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 16.89) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 17.78) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T16] ( 3, 19.78) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V34 tmp27 [V34,T24] ( 3, 16.89) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 17.78) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T17] ( 3, 19.78) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" ; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP ; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
-; V40 tmp33 [V40,T02] ( 5, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 18.70) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V40 tmp33 [V40,T04] ( 4, 23.70) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 18.70) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 35.79) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T11] ( 3, 10.30) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T12] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T14] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T12] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T22] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T23] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T25] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T24] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP -; V52 tmp45 [V52,T09] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP -; V53 tmp46 [V53,T04] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T13] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T15] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP +; V52 tmp45 [V52,T10] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP +; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,7 +79,8 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 40.19) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T26] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T27] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T03] ( 2, 16 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -110,7 +111,7 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08] ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG12
+ cbz w2, G_M19804_IG11
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -150,15 +151,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG15
+ cbnz w0, G_M19804_IG14
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x14] cmp w21, w2
- bne G_M19804_IG11
+ bne G_M19804_IG10
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG12
+ bhs G_M19804_IG11
;; size=24 bbWeight=8 PerfScore 72.00 G_M19804_IG08: ; bbWeight=6.70, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x2, [x19, #0x08] @@ -189,14 +190,7 @@ G_M19804_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M19804_IG11: ; bbWeight=1.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - ldr w0, [x19, #0x14] - cmp w21, w0 - bne G_M19804_IG10 - ;; size=12 bbWeight=1.30 PerfScore 5.86 -G_M19804_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19]
+G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19] add x0, fp, #40 // [V02 loc0] @@ -216,9 +210,9 @@ G_M19804_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG14
+ bls G_M19804_IG13
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG13: ; bbWeight=0.89, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=0.89, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -231,9 +225,9 @@ G_M19804_IG13: ; bbWeight=0.89, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG15
+ b G_M19804_IG14
;; size=28 bbWeight=0.89 PerfScore 4.90
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -245,18 +239,18 @@ G_M19804_IG14: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V37 tmp30] bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x50] ldp x19, x20, [sp, #0x40] ldp fp, lr, [sp], #0x60 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M19804_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -264,7 +258,7 @@ G_M19804_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, fp, #96 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,16 +271,16 @@ G_M19804_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG15]
+ adr x0, [G_M19804_IG14]
;; size=40 bbWeight=0 PerfScore 0.00
-G_M19804_IG19: ; bbWeight=0, funclet epilog, nogc, extend
+G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 476, prolog size 36, PerfScore 456.98, instruction count 119, allocated bytes for code 476 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
+; Total bytes of code 464, prolog size 36, PerfScore 451.12, instruction count 116, allocated bytes for code 464 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
; ============================================================ Unwind Info: @@ -297,7 +291,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -334,4 +328,4 @@ Unwind Info: *************** EH table for System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M19804_IG03..G_M19804_IG15) handled by [G_M19804_IG17..END) (class: 2000053)
+EH#0: try [G_M19804_IG03..G_M19804_IG14) handled by [G_M19804_IG16..END) (class: 2000053)
+32 (+1.01%) : 75015.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
@@ -12,13 +12,13 @@ ; V00 loc0 [V00,T09] ( 26, 8.38) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T10] ( 18, 8.32) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 10.53) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T23] ( 6, 5.32) ref -> x21 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T23] ( 8, 5.32) ref -> x21 class-hnd single-def <System.Object>
; V04 loc4 [V04,T07] ( 13, 8.65) ref -> x23 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T66] ( 3, 1.66) int -> x28 ; V06 loc6 [V06,T58] ( 2, 2.00) ubyte -> x0 ;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc8 [V08 ] ( 3, 1.76) ubyte -> [fp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T24] ( 5, 4.88) int -> x27
+; V09 loc9 [V09,T24] ( 5, 4.88) int -> x24
; V10 loc10 [V10 ] ( 3, 1.91) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref @@ -53,23 +53,23 @@ ;* V41 tmp30 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V43 tmp32 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V44 tmp33 [V44,T56] ( 3, 2.20) ref -> x24 class-hnd "Inline return value spill temp" <System.Object>
+; V44 tmp33 [V44,T56] ( 3, 2.20) ref -> x25 class-hnd "Inline return value spill temp" <System.Object>
; V45 tmp34 [V45 ] ( 11, 6.92) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> ; V46 tmp35 [V46,T54] ( 3, 2.31) int -> x24 "Inline stloc first use temp" ; V47 tmp36 [V47,T48] ( 2, 2.46) ref -> x25 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V48 tmp37 [V48,T41] ( 3, 3.23) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> ; V49 tmp38 [V49,T04] ( 9, 11.30) int -> [fp+0x24] "Inline stloc first use temp"
-; V50 tmp39 [V50,T55] ( 2, 2.23) int -> [fp+0x20] spill-single-def "Inline stloc first use temp"
+; V50 tmp39 [V50,T55] ( 2, 2.23) int -> [fp+0x20] "Inline stloc first use temp"
; V51 tmp40 [V51,T06] ( 6, 8.69) int -> x24 "Inline stloc first use temp"
-; V52 tmp41 [V52,T19] ( 5, 5.70) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> -; V53 tmp42 [V53,T37] ( 3, 3.69) int -> x24
+; V52 tmp41 [V52,T19] ( 5, 5.70) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> +; V53 tmp42 [V53,T37] ( 3, 3.69) int -> x3
; V54 tmp43 [V54,T50] ( 3, 2.43) ref -> x24 class-hnd "Inline return value spill temp" <System.Object> ; V55 tmp44 [V55,T11] ( 4, 7.79) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V56 tmp45 [V56,T52] ( 2, 1.54) ubyte -> x0 "Inline return value spill temp"
-; V57 tmp46 [V57,T29] ( 3, 4.62) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> -; V58 tmp47 [V58,T53] ( 3, 2.31) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>> -; V59 tmp48 [V59,T01] ( 9, 13.85) ref -> x1 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> -; V60 tmp49 [V60,T35] ( 5, 3.85) long -> x0 "Inline stloc first use temp"
+; V57 tmp46 [V57,T29] ( 3, 4.62) ref -> x25 class-hnd "Inlining Arg" <<unknown class>> +; V58 tmp47 [V58,T53] ( 3, 2.31) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>> +; V59 tmp48 [V59,T01] ( 9, 13.85) ref -> x0 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> +; V60 tmp49 [V60,T35] ( 5, 3.85) long -> x1 "Inline stloc first use temp"
; V61 tmp50 [V61,T20] ( 7, 5.39) long -> x2 "Inline stloc first use temp" ; V62 tmp51 [V62,T21] ( 7, 5.39) long -> x3 "Inline stloc first use temp" ; V63 tmp52 [V63,T22] ( 7, 5.39) long -> x4 "Inline stloc first use temp" @@ -97,14 +97,14 @@ ; V85 tmp74 [V85,T08] ( 4, 8.54) ref -> x0 ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V88 tmp77 [V88,T00] ( 8, 14.64) ref -> x24 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V88 tmp77 [V88,T00] ( 8, 14.64) ref -> x25 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V90 tmp79 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V91 tmp80 [V91,T15] ( 3, 6.10) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V91 tmp80 [V91,T15] ( 5, 6.10) ref -> x2 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V92 tmp81 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V93 tmp82 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V94 tmp83 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V95 tmp84 [V95,T38] ( 3, 3.66) int -> x0 "Inline stloc first use temp"
+; V95 tmp84 [V95,T38] ( 5, 3.66) int -> x3 "Inline stloc first use temp"
;* V96 tmp85 [V96,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V97 tmp86 [V97,T39] ( 3, 3.66) int -> x0 "Inline stloc first use temp" ;* V98 tmp87 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -120,9 +120,9 @@ ; V108 rat0 [V108,T33] ( 3, 4 ) byref -> x21 "TLS field access" ; V109 rat1 [V109,T17] ( 3, 6 ) long -> x0 "TLS access" ; V110 rat2 [V110,T18] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
-; V111 rat3 [V111,T25] ( 3, 4.88) byref -> x27 "TLS field access"
+; V111 rat3 [V111,T25] ( 3, 4.88) byref -> x24 "TLS field access"
; V112 rat4 [V112,T12] ( 5, 7.32) long -> x1 "TLS access"
-; V113 rat5 [V113,T13] ( 3, 7.32) long -> x27 "ThreadStaticBlockBase access"
+; V113 rat5 [V113,T13] ( 3, 7.32) long -> x24 "ThreadStaticBlockBase access"
; ; Lcl frame size = 64 @@ -147,10 +147,10 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #6
- blt G_M63069_IG101
+ blt G_M63069_IG100
ldr x0, [x0, #0xD1FFAB1E] ldr x0, [x0, #0x30]
- cbz x0, G_M63069_IG101
+ cbz x0, G_M63069_IG100
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 @@ -168,12 +168,12 @@ G_M63069_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x48] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG102
+ cbnz w0, G_M63069_IG101
;; size=20 bbWeight=1.00 PerfScore 16.01 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x48] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG75
+ cbnz x0, G_M63069_IG67
;; size=8 bbWeight=1.00 PerfScore 3.00 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -189,7 +189,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldapr w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG32
+ blt G_M63069_IG20
;; size=32 bbWeight=1.00 PerfScore 12.50 G_M63069_IG07: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -200,13 +200,13 @@ G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=700000 {x20 x21 x22}, byrefRegs str x21, [fp, #0x30] // [V17 tmp6] ldr x0, [fp, #0x30] // [V17 tmp6] ; gcrRegs +[x0]
- cbz x0, G_M63069_IG36
+ cbz x0, G_M63069_IG24
;; size=12 bbWeight=1.00 PerfScore 4.00 G_M63069_IG09: ; bbWeight=0.37, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x21] ldr x21, [fp, #0x30] // [V17 tmp6] ; gcrRegs +[x21]
- b G_M63069_IG51
+ b G_M63069_IG39
;; size=8 bbWeight=0.37 PerfScore 1.10 G_M63069_IG10: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21-x22] @@ -224,20 +224,20 @@ G_M63069_IG10: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ;; size=32 bbWeight=0.00 PerfScore 0.00 G_M63069_IG11: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] +[x21 x23]
- ldr x0, [x27]
+ ldr x0, [x24]
; byrRegs +[x0]
- add x27, x0, #16 - ; byrRegs +[x27]
+ add x24, x0, #16 + ; byrRegs +[x24]
;; size=8 bbWeight=1.22 PerfScore 4.27
-G_M63069_IG12: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=8000000 {x27}, byref, isz
+G_M63069_IG12: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=1000000 {x24}, byref, isz
; byrRegs -[x0]
- ldr x0, [x27, #0x20]
+ ldr x0, [x24, #0x20]
; gcrRegs +[x0] cbnz x0, G_M63069_IG14 ;; size=8 bbWeight=1.22 PerfScore 4.88 G_M63069_IG13: ; bbWeight=4.88, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- ; byrRegs -[x27]
+ ; byrRegs -[x24]
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -248,7 +248,7 @@ G_M63069_IG13: ; bbWeight=4.88, gcrefRegs=F00000 {x20 x21 x22 x23}, byref ;; size=20 bbWeight=4.88 PerfScore 26.84 G_M63069_IG14: ; bbWeight=1.22, gcrefRegs=F00001 {x0 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz cmp x23, x0
- bne G_M63069_IG116
+ bne G_M63069_IG115
;; size=8 bbWeight=1.22 PerfScore 1.83 G_M63069_IG15: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -257,140 +257,40 @@ G_M63069_IG15: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byref bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG117
+ cbz w0, G_M63069_IG116
;; size=12 bbWeight=1.22 PerfScore 3.05 G_M63069_IG16: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldrb w0, [x23, #0x38]
- cbnz w0, G_M63069_IG118
+ cbnz w0, G_M63069_IG117
;; size=8 bbWeight=1.22 PerfScore 4.88 G_M63069_IG17: ; bbWeight=1.22, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- sxtw w27, w0 - ldr x24, [x19, #0xD1FFAB1E] - ; gcrRegs +[x24] - cbz x21, G_M63069_IG119 - ;; size=16 bbWeight=1.22 PerfScore 6.71 -G_M63069_IG18: ; bbWeight=1.22, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - mov x0, x21 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG20 - ;; size=8 bbWeight=1.22 PerfScore 1.83 -G_M63069_IG19: ; bbWeight=0.61, gcrefRegs=1F00001 {x0 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - beq G_M63069_IG21
+ sxtw w24, w0 + ldr x25, [x19, #0xD1FFAB1E] + ; gcrRegs +[x25] + cbz x21, G_M63069_IG118 + mov x2, x21 + ; gcrRegs +[x2] + cbz x2, G_M63069_IG119 + ;; size=24 bbWeight=1.22 PerfScore 8.54 +G_M63069_IG18: ; bbWeight=0.61, gcrefRegs=2F00004 {x2 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz + ldr x1, [x2] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0 + bne G_M63069_IG119
;; size=24 bbWeight=0.61 PerfScore 3.66
-G_M63069_IG20: ; bbWeight=1.22, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcr arg pop 0 - ;; size=44 bbWeight=1.22 PerfScore 10.37 -G_M63069_IG21: ; bbWeight=1.22, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ldr w0, [x21, #0x20] - add w0, w0, #1 - cbz w0, G_M63069_IG120 - str w0, [x21, #0x20]
+G_M63069_IG19: ; bbWeight=1.22, gcrefRegs=2F00000 {x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr w1, [x21, #0x20] + add w3, w1, #1 + cbz w3, G_M63069_IG120 + b G_M63069_IG70
;; size=16 bbWeight=1.22 PerfScore 6.71
-G_M63069_IG22: ; bbWeight=1.22, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - str w27, [x24, #0xD1FFAB1E] - add x0, x24, #0xD1FFAB1E - ; byrRegs +[x0] - ldapr w0, [x0] - ; byrRegs -[x0] - sub w1, w27, w0 - ldr w2, [x24, #0xD1FFAB1E]
...

+36 (+1.12%) : 25717.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T11] ( 26, 13.49) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T21] ( 18, 10.65) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 17.99) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T14] ( 6, 11.19) ref -> x23 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T14] ( 8, 11.19) ref -> x23 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 14, 22.42) ref -> x24 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T61] ( 3, 2.83) int -> x25 ; V06 loc6 [V06,T68] ( 2, 2.01) ubyte -> x0 @@ -59,17 +59,17 @@ ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V50 tmp39 [V50,T54] ( 3, 3.52) ref -> x1 class-hnd "Inline return value spill temp" <System.Object> -; V51 tmp40 [V51 ] ( 12, 16.48) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> -; V52 tmp41 [V52,T67] ( 3, 2.20) int -> x28 "Inline stloc first use temp"
+; V50 tmp39 [V50,T54] ( 3, 3.52) ref -> x2 class-hnd "Inline return value spill temp" <System.Object> +; V51 tmp40 [V51 ] ( 14, 16.48) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> +; V52 tmp41 [V52,T67] ( 3, 2.20) int -> x26 "Inline stloc first use temp"
; V53 tmp42 [V53,T59] ( 2, 2.88) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V54 tmp43 [V54,T52] ( 3, 3.61) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]>
+; V54 tmp43 [V54,T52] ( 3, 3.61) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]>
; V55 tmp44 [V55,T19] ( 9, 10.84) int -> [fp+0x2C] "Inline stloc first use temp" ; V56 tmp45 [V56,T60] ( 2, 2.88) int -> [fp+0x28] "Inline stloc first use temp"
-; V57 tmp46 [V57,T20] ( 6, 10.72) int -> x28 "Inline stloc first use temp"
+; V57 tmp46 [V57,T20] ( 6, 10.72) int -> registers "Inline stloc first use temp"
; V58 tmp47 [V58,T29] ( 5, 7.11) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V59 tmp48 [V59,T46] ( 3, 4.29) int -> x0 -; V60 tmp49 [V60,T39] ( 3, 5.58) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V59 tmp48 [V59,T46] ( 3, 4.29) int -> x1 +; V60 tmp49 [V60,T39] ( 4, 5.58) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V61 tmp50 [V61,T08] ( 4, 16.74) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T25] ( 2, 5.58) ubyte -> x0 "Inline return value spill temp" ; V63 tmp52 [V63,T09] ( 3, 16.74) ref -> x26 class-hnd "Inlining Arg" <<unknown class>> @@ -83,8 +83,8 @@ ; V71 tmp60 [V71,T31] ( 3, 6.31) int -> x1 "Inline stloc first use temp" ; V72 tmp61 [V72,T85] ( 2, 0.73) ubyte -> x6 "Inline stloc first use temp" ; V73 tmp62 [V73,T77] ( 3, 1.47) int -> x7 "Inline stloc first use temp"
-; V74 tmp63 [V74,T12] ( 9, 13.23) ref -> x0 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> -; V75 tmp64 [V75,T51] ( 5, 3.67) long -> x1 "Inline stloc first use temp"
+; V74 tmp63 [V74,T12] ( 9, 13.23) ref -> x1 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> +; V75 tmp64 [V75,T51] ( 5, 3.67) long -> x0 "Inline stloc first use temp"
; V76 tmp65 [V76,T40] ( 7, 5.14) long -> x2 "Inline stloc first use temp" ; V77 tmp66 [V77,T41] ( 7, 5.14) long -> x3 "Inline stloc first use temp" ; V78 tmp67 [V78,T42] ( 7, 5.14) long -> x4 "Inline stloc first use temp" @@ -103,14 +103,14 @@ ; V91 tmp80 [V91,T03] ( 4, 19.53) ref -> x0 ;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V93 tmp82 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V94 tmp83 [V94,T00] ( 8, 33.50) ref -> x26 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V94 tmp83 [V94,T00] ( 8, 33.50) ref -> x27 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
;* V95 tmp84 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V97 tmp86 [V97,T10] ( 3, 13.95) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V97 tmp86 [V97,T10] ( 5, 13.95) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V98 tmp87 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V99 tmp88 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V101 tmp90 [V101,T23] ( 3, 8.37) int -> x0 "Inline stloc first use temp"
+; V101 tmp90 [V101,T23] ( 5, 8.37) int -> x1 "Inline stloc first use temp"
;* V102 tmp91 [V102,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V103 tmp92 [V103,T24] ( 3, 8.37) int -> x0 "Inline stloc first use temp" ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -162,17 +162,17 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #6
- blt G_M63069_IG90
+ blt G_M63069_IG92
ldr x0, [x0, #0xD1FFAB1E] ldr x0, [x0, #0x30]
- cbz x0, G_M63069_IG90
+ cbz x0, G_M63069_IG92
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 ; byrRegs +[x21] ldr x22, [x21, #0x40] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG91
+ cbz x22, G_M63069_IG93
;; size=60 bbWeight=1 PerfScore 24.50 G_M63069_IG03: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x21] @@ -180,12 +180,12 @@ G_M63069_IG03: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG92
+ cbnz w0, G_M63069_IG94
;; size=20 bbWeight=1.00 PerfScore 16.05 G_M63069_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG66
+ cbnz x0, G_M63069_IG43
;; size=8 bbWeight=1.00 PerfScore 3.01 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -201,12 +201,12 @@ G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldapr w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG93
+ blt G_M63069_IG95
mov x2, xzr ; gcrRegs +[x2] str x2, [fp, #0x40] // [V17 tmp6] ldr x0, [fp, #0x40] // [V17 tmp6]
- cbnz x0, G_M63069_IG94
+ cbnz x0, G_M63069_IG96
;; size=48 bbWeight=1.00 PerfScore 17.01 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2] @@ -215,7 +215,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ;; size=8 bbWeight=1.00 PerfScore 4.00 G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x30]
- cbnz w1, G_M63069_IG95
+ cbnz w1, G_M63069_IG97
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -238,7 +238,7 @@ G_M63069_IG09: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w1, w26, w1 ldr w21, [x25, #0x08] cmp w1, w21
- bhs G_M63069_IG89
+ bhs G_M63069_IG91
ubfiz x1, x1, #4, #32 add x27, x1, #16 add x1, x25, x27 @@ -249,7 +249,7 @@ G_M63069_IG09: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x1] add w0, w26, #1 sub w1, w1, w0
- cbnz w1, G_M63069_IG45
+ cbnz w1, G_M63069_IG22
;; size=60 bbWeight=1.00 PerfScore 19.01 G_M63069_IG10: ; bbWeight=0.74, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=10000000 {x28}, byref, isz add x1, x24, #160 @@ -259,7 +259,7 @@ G_M63069_IG10: ; bbWeight=0.74, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, casal w2, w0, [x1] cmp w2, w26 bne G_M63069_IG09
- b G_M63069_IG48
+ b G_M63069_IG25
;; size=28 bbWeight=0.74 PerfScore 5.16 G_M63069_IG11: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23-x25] @@ -275,7 +275,7 @@ G_M63069_IG11: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG94
+ cbnz w0, G_M63069_IG96
strb wzr, [x22, #0x3C] b G_M63069_IG08 ;; size=44 bbWeight=0.00 PerfScore 0.01 @@ -303,7 +303,7 @@ G_M63069_IG14: ; bbWeight=11.16, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, ;; size=20 bbWeight=11.16 PerfScore 61.39 G_M63069_IG15: ; bbWeight=2.79, gcrefRegs=1F00001 {x0 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz cmp x24, x0
- bne G_M63069_IG114
+ bne G_M63069_IG116
;; size=8 bbWeight=2.79 PerfScore 4.19 G_M63069_IG16: ; bbWeight=2.79, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -312,286 +312,42 @@ G_M63069_IG16: ; bbWeight=2.79, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG115
+ cbz w0, G_M63069_IG117
;; size=12 bbWeight=2.79 PerfScore 6.98 G_M63069_IG17: ; bbWeight=2.79, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ldrb w0, [x24, #0x38]
- cbnz w0, G_M63069_IG116
+ cbnz w0, G_M63069_IG118
;; size=8 bbWeight=2.79 PerfScore 11.16 G_M63069_IG18: ; bbWeight=2.79, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 sxtw w28, w0
- ldr x26, [x19, #0xD1FFAB1E] - ; gcrRegs +[x26] - cbz x23, G_M63069_IG117
+ ldr x27, [x19, #0xD1FFAB1E] + ; gcrRegs +[x27] + cbz x23, G_M63069_IG119
;; size=16 bbWeight=2.79 PerfScore 15.35
-G_M63069_IG19: ; bbWeight=2.79, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - mov x0, x23 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG21
+G_M63069_IG19: ; bbWeight=2.79, gcrefRegs=9F00000 {x20 x21 x22 x23 x24 x27}, byrefRegs=0000 {}, byref, isz + mov x1, x23 + ; gcrRegs +[x1] + cbz x1, G_M63069_IG120
;; size=8 bbWeight=2.79 PerfScore 4.19
-G_M63069_IG20: ; bbWeight=1.40, gcrefRegs=5F00001 {x0 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0]
+G_M63069_IG20: ; bbWeight=1.40, gcrefRegs=9F00002 {x1 x20 x21 x22 x23 x24 x27}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1]
movz x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M63069_IG22
+ bne G_M63069_IG120
;; size=24 bbWeight=1.40 PerfScore 8.37
-G_M63069_IG21: ; bbWeight=2.79, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcr arg pop 0 - ;; size=44 bbWeight=2.79 PerfScore 23.72 -G_M63069_IG22: ; bbWeight=2.79, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG21: ; bbWeight=2.79, gcrefRegs=9F00000 {x20 x21 x22 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x23, #0x20]
- add w0, w0, #1 - cbz w0, G_M63069_IG118 - str w0, [x23, #0x20]
+ add w1, w0, #1 + cbz w1, G_M63069_IG121 + b G_M63069_IG78
;; size=16 bbWeight=2.79 PerfScore 15.35
-G_M63069_IG23: ; bbWeight=2.79, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - str w28, [x26, #0xD1FFAB1E] - add x0, x26, #0xD1FFAB1E - ; byrRegs +[x0] - ldapr w0, [x0] - ; byrRegs -[x0] - sub w1, w28, w0 - ldr w2, [x26, #0xD1FFAB1E] - sub w0, w2, w0 - cmp w1, w0 - bhs G_M63069_IG70 - ;; size=32 bbWeight=2.79 PerfScore 27.90 -G_M63069_IG24: ; bbWeight=2.79, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
...

+48 (+1.50%) : 106509.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T11] ( 26, 14.09) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T21] ( 18, 11.04) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 18.96) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T14] ( 6, 11.93) ref -> x23 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T14] ( 8, 11.93) ref -> x23 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 14, 23.89) ref -> x24 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T57] ( 3, 3.00) int -> x25 ; V06 loc6 [V06,T68] ( 2, 2.01) ubyte -> x0 @@ -59,17 +59,17 @@ ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V50 tmp39 [V50,T52] ( 3, 3.74) ref -> x1 class-hnd "Inline return value spill temp" <System.Object> -; V51 tmp40 [V51 ] ( 12, 17.63) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> -; V52 tmp41 [V52,T67] ( 3, 2.25) int -> x28 "Inline stloc first use temp"
+; V50 tmp39 [V50,T52] ( 3, 3.74) ref -> x0 class-hnd "Inline return value spill temp" <System.Object> +; V51 tmp40 [V51 ] ( 14, 17.63) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> +; V52 tmp41 [V52,T67] ( 3, 2.25) int -> x26 "Inline stloc first use temp"
; V53 tmp42 [V53,T60] ( 2, 2.99) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V54 tmp43 [V54,T53] ( 3, 3.74) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]>
+; V54 tmp43 [V54,T53] ( 3, 3.74) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]>
; V55 tmp44 [V55,T19] ( 9, 11.21) int -> [fp+0x2C] "Inline stloc first use temp" ; V56 tmp45 [V56,T61] ( 2, 2.99) int -> [fp+0x28] "Inline stloc first use temp"
-; V57 tmp46 [V57,T20] ( 6, 11.20) int -> x28 "Inline stloc first use temp" -; V58 tmp47 [V58,T29] ( 5, 7.46) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> -; V59 tmp48 [V59,T46] ( 3, 4.48) int -> x0 -; V60 tmp49 [V60,T37] ( 3, 5.98) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V57 tmp46 [V57,T20] ( 6, 11.20) int -> registers "Inline stloc first use temp" +; V58 tmp47 [V58,T29] ( 5, 7.46) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> +; V59 tmp48 [V59,T46] ( 3, 4.48) int -> x3 +; V60 tmp49 [V60,T37] ( 4, 5.98) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V61 tmp50 [V61,T06] ( 4, 17.95) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T24] ( 2, 5.98) ubyte -> x0 "Inline return value spill temp" ; V63 tmp52 [V63,T07] ( 3, 17.95) ref -> x26 class-hnd "Inlining Arg" <<unknown class>> @@ -106,11 +106,11 @@ ; V94 tmp83 [V94,T00] ( 8, 35.73) ref -> x26 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V95 tmp84 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V97 tmp86 [V97,T10] ( 3, 14.88) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V97 tmp86 [V97,T10] ( 5, 14.88) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V98 tmp87 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V99 tmp88 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V101 tmp90 [V101,T25] ( 3, 8.93) int -> x0 "Inline stloc first use temp"
+; V101 tmp90 [V101,T25] ( 5, 8.93) int -> x1 "Inline stloc first use temp"
;* V102 tmp91 [V102,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V103 tmp92 [V103,T26] ( 3, 8.93) int -> x0 "Inline stloc first use temp" ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -135,9 +135,9 @@ ; V123 rat0 [V123,T48] ( 4, 4 ) byref -> x21 "TLS field access" ; V124 rat1 [V124,T35] ( 3, 6 ) long -> x0 "TLS access" ; V125 rat2 [V125,T36] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
-; V126 rat3 [V126,T17] ( 3, 11.90) byref -> x0 "TLS field access" -; V127 rat4 [V127,T08] ( 5, 17.86) long -> x1 "TLS access" -; V128 rat5 [V128,T09] ( 3, 17.86) long -> x0 "ThreadStaticBlockBase access"
+; V126 rat3 [V126,T17] ( 3, 11.90) byref -> x27 "TLS field access" +; V127 rat4 [V127,T08] ( 5, 17.86) long -> x2 "TLS access" +; V128 rat5 [V128,T09] ( 3, 17.86) long -> x26 "ThreadStaticBlockBase access"
; ; Lcl frame size = 80 @@ -185,7 +185,7 @@ G_M63069_IG03: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 G_M63069_IG04: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG63
+ cbnz x0, G_M63069_IG45
;; size=8 bbWeight=1.01 PerfScore 3.02 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -253,7 +253,7 @@ G_M63069_IG10: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x1] add w0, w26, #1 sub w1, w1, w0
- cbnz w1, G_M63069_IG42
+ cbnz w1, G_M63069_IG24
;; size=60 bbWeight=1.00 PerfScore 19.02 G_M63069_IG11: ; bbWeight=0.75, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=10000000 {x28}, byref, isz add x1, x24, #160 @@ -267,7 +267,7 @@ G_M63069_IG11: ; bbWeight=0.75, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, G_M63069_IG12: ; bbWeight=0.75, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=10000000 {x28}, byref ; gcrRegs -[x23] ; byrRegs -[x1]
- b G_M63069_IG45
+ b G_M63069_IG27
;; size=4 bbWeight=0.75 PerfScore 0.75 G_M63069_IG13: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24-x25] @@ -289,18 +289,20 @@ G_M63069_IG13: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ;; size=44 bbWeight=0.00 PerfScore 0.02 G_M63069_IG14: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref ; gcrRegs +[x21 x23-x24]
- ldr x0, [x0]
+ ldr x0, [x26]
; byrRegs +[x0]
- add x0, x0, #16
+ add x27, x0, #16 + ; byrRegs +[x27]
;; size=8 bbWeight=2.98 PerfScore 10.42
-G_M63069_IG15: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0001 {x0}, byref, isz - ldr x0, [x0, #0x20] - ; gcrRegs +[x0]
+G_M63069_IG15: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs -[x0]
+ ldr x0, [x27, #0x20] + ; gcrRegs +[x0]
cbnz x0, G_M63069_IG17 ;; size=8 bbWeight=2.98 PerfScore 11.90 G_M63069_IG16: ; bbWeight=11.90, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -311,7 +313,7 @@ G_M63069_IG16: ; bbWeight=11.90, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, ;; size=20 bbWeight=11.90 PerfScore 65.47 G_M63069_IG17: ; bbWeight=2.98, gcrefRegs=1F00001 {x0 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz cmp x24, x0
- bne G_M63069_IG119
+ bne G_M63069_IG118
;; size=8 bbWeight=2.98 PerfScore 4.46 G_M63069_IG18: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -320,11 +322,11 @@ G_M63069_IG18: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG120
+ cbz w0, G_M63069_IG119
;; size=12 bbWeight=2.98 PerfScore 7.44 G_M63069_IG19: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ldrb w0, [x24, #0x38]
- cbnz w0, G_M63069_IG121
+ cbnz w0, G_M63069_IG120
;; size=8 bbWeight=2.98 PerfScore 11.90 G_M63069_IG20: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz bl <unknown method> @@ -332,215 +334,30 @@ G_M63069_IG20: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, sxtw w28, w0 ldr x26, [x19, #0xD1FFAB1E] ; gcrRegs +[x26]
- cbz x23, G_M63069_IG122 - ;; size=16 bbWeight=2.98 PerfScore 16.37 -G_M63069_IG21: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - mov x0, x23 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG23 - ;; size=8 bbWeight=2.98 PerfScore 4.46 -G_M63069_IG22: ; bbWeight=1.49, gcrefRegs=5F00001 {x0 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0]
+ cbz x23, G_M63069_IG121 + mov x1, x23 + ; gcrRegs +[x1] + cbz x1, G_M63069_IG122 + ;; size=24 bbWeight=2.98 PerfScore 20.83 +G_M63069_IG21: ; bbWeight=1.49, gcrefRegs=5F00002 {x1 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1]
movz x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M63069_IG24
+ bne G_M63069_IG122
;; size=24 bbWeight=1.49 PerfScore 8.93
-G_M63069_IG23: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcr arg pop 0 - ;; size=44 bbWeight=2.98 PerfScore 25.30 -G_M63069_IG24: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG22: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
ldr w0, [x23, #0x20]
- add w0, w0, #1 - cbz w0, G_M63069_IG123
+ add w1, w0, #1 + cbz w1, G_M63069_IG123
;; size=12 bbWeight=2.98 PerfScore 13.39
-G_M63069_IG25: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref - str w0, [x23, #0x20]
+G_M63069_IG23: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref + b G_M63069_IG81
;; size=4 bbWeight=2.98 PerfScore 2.98
-G_M63069_IG26: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - str w28, [x26, #0xD1FFAB1E] - add x0, x26, #0xD1FFAB1E - ; byrRegs +[x0] - ldapr w0, [x0] - ; byrRegs -[x0] - sub w1, w28, w0 - ldr w2, [x26, #0xD1FFAB1E] - sub w0, w2, w0 - cmp w1, w0 - bhs G_M63069_IG84 - ;; size=32 bbWeight=2.98 PerfScore 29.76 -G_M63069_IG27: ; bbWeight=2.98, gcrefRegs=5F00000 {x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - mov x0, x26 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0 x26] - ; gcr arg pop 0 - cbnz w0, G_M63069_IG91 - ;; size=28 bbWeight=2.98 PerfScore 20.83 -G_M63069_IG28: ; bbWeight=2.98, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - sub w0, w28, w25 - cmp w0, #30 - bhs G_M63069_IG41 - ;; size=12 bbWeight=2.98 PerfScore 5.95 -G_M63069_IG29: ; bbWeight=3.00, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x58] // [V02 loc2] - ; gcrRegs +[x0] - cbnz x0, G_M63069_IG77 - ;; size=8 bbWeight=3.00 PerfScore 8.99 -G_M63069_IG30: ; bbWeight=2.99, gcrefRegs=1F00000 {x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - str wzr, [fp, #0x48] // [V10 loc10] - ldr x0, [x22, #0x18] - ; gcrRegs +[x0] - add x1, x0, #20 - ; byrRegs +[x1] - ldapr w1, [x1] - ; byrRegs -[x1] - add x2, x0, #24 - ; byrRegs +[x2] - ldapr w2, [x2] - ; byrRegs -[x2] - cmp w1, w2 - blt G_M63069_IG109 - mov x2, xzr - ; gcrRegs +[x2] - ;; size=36 bbWeight=2.99 PerfScore 38.89 -G_M63069_IG31: ; bbWeight=2.99, gcrefRegs=1F00004 {x2 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - str x2, [fp, #0x30] // [V51 tmp40] - ldr x0, [fp, #0x30] // [V51 tmp40]
...

benchmarks.run_tiered.linux.arm64.checked.mch

-24 (-4.92%) : 3296.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-12 (-1.06%) : 1233.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)

@@ -8,28 +8,28 @@ ; 0 inlinees with PGO data; 21 single block inlinees; 14 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T38] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
+; V00 loc0 [V00,T39] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
; V01 loc1 [V01 ] ( 6, 2.50) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc2 [V02,T03] ( 6, 26.50) ref -> x20 class-hnd exact single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 6, 17 ) ref -> x21 class-hnd <System.Diagnostics.Tracing.EventListener> ; V04 loc4 [V04,T15] ( 4, 10.50) int -> x21 ;* V05 loc5 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
-; V07 loc7 [V07,T17] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
+; V07 loc7 [V07,T16] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
; V08 loc8 [V08,T00] ( 11,468 ) ref -> x25 class-hnd <<unknown class>> ; V09 loc9 [V09 ] ( 7, 42 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]> ; V10 loc10 [V10,T01] ( 2,144 ) ref -> x27 class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T31] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp2 [V13,T34] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
+; V12 tmp1 [V12,T32] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp2 [V13,T35] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
;* V14 tmp3 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp5 [V16,T33] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V16 tmp5 [V16,T34] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ; V20 tmp9 [V20,T24] ( 3, 6 ) ref -> x25 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V21 tmp10 [V21,T11] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
+; V21 tmp10 [V21,T10] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> ; V23 tmp12 [V23,T25] ( 3, 6 ) ref -> x25 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> @@ -37,47 +37,48 @@ ; V26 tmp15 [V26,T13] ( 3, 12 ) ref -> x25 class-hnd "updating class info" <System.ComAwareWeakReference> ;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp18 [V29,T20] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> -; V30 tmp19 [V30,T18] ( 4, 8 ) ref -> x0
+; V29 tmp18 [V29,T19] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> +; V30 tmp19 [V30,T17] ( 4, 8 ) ref -> x0
;* V31 tmp20 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp21 [V32,T02] ( 2, 64 ) ref -> x1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V35 tmp24 [V35,T21] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> -; V36 tmp25 [V36,T19] ( 4, 8 ) ref -> x1 -; V37 tmp26 [V37,T10] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V35 tmp24 [V35,T20] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> +; V36 tmp25 [V36,T18] ( 4, 8 ) ref -> x1 +; V37 tmp26 [V37,T09] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>
-; V40 tmp29 [V40,T22] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
+; V40 tmp29 [V40,T21] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp32 [V43,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp32 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V45 tmp34 [V45,T09] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V46 tmp35 [V46,T12] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V45 tmp34 [V45,T12] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V46 tmp35 [V46,T11] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V47 tmp36 [V47,T04] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V48 tmp37 [V48,T16] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
+; V48 tmp37 [V48,T29] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
; V49 tmp38 [V49 ] ( 3, 20 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP ; V50 tmp39 [V50 ] ( 4, 36 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x8)" P-DEP ; V51 tmp40 [V51 ] ( 3, 20 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x10)" P-DEP ; V52 tmp41 [V52 ] ( 3, 20 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0x14)" P-DEP
-; V53 tmp42 [V53,T37] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V53 tmp42 [V53,T38] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V55 tmp44 [V55,T41] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V56 tmp45 [V56,T39] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
+;* V55 tmp44 [V55,T42] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V56 tmp45 [V56,T40] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
; V57 tmp46 [V57,T26] ( 3, 6 ) ref -> x0 "field V39._dictionary (fldOffset=0x0)" P-INDEP
-;* V58 tmp47 [V58,T35] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP -;* V59 tmp48 [V59,T36] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP -; V60 tmp49 [V60,T30] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
+;* V58 tmp47 [V58,T36] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP +;* V59 tmp48 [V59,T37] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP +; V60 tmp49 [V60,T31] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
; V61 tmp50 [V61,T05] ( 3, 24 ) ref -> x0 "arr expr"
-; V62 PSPSym [V62,T40] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V63 cse0 [V63,T14] ( 3, 12 ) int -> x24 "CSE - moderate" -; V64 cse1 [V64,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" -; V65 cse2 [V65,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" -; V66 cse3 [V66,T32] ( 4, 2 ) long -> x19 "CSE - moderate" -; V67 rat0 [V67,T29] ( 3, 4 ) long -> x0 "TLS field access" -; V68 rat1 [V68,T27] ( 3, 6 ) long -> x0 "TLS access" -; V69 rat2 [V69,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V62 PSPSym [V62,T41] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V63 cse0 [V63,T23] ( 2, 8 ) int -> x0 "CSE - moderate" +; V64 cse1 [V64,T14] ( 2, 8 ) int -> x0 "CSE - moderate" +; V65 cse2 [V65,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" +; V66 cse3 [V66,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" +; V67 cse4 [V67,T33] ( 4, 2 ) long -> x19 "CSE - moderate" +; V68 rat0 [V68,T30] ( 3, 4 ) long -> x0 "TLS field access" +; V69 rat1 [V69,T27] ( 3, 6 ) long -> x0 "TLS access" +; V70 rat2 [V70,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
; ; Lcl frame size = 56 @@ -97,10 +98,10 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #2
- blt G_M15982_IG39
+ blt G_M15982_IG38
ldr x0, [x0, #0xD1FFAB1E] ldr x0, [x0, #0x10]
- cbz x0, G_M15982_IG39
+ cbz x0, G_M15982_IG38
;; size=28 bbWeight=1 PerfScore 12.50 G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x0, #0xD1FFAB1E] @@ -127,7 +128,7 @@ G_M15982_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; GC ptr vars +{V00} str wzr, [fp, #0x38] // [V01 loc1] ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M15982_IG06: ; bbWeight=0.50, gcVars=0000004000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG06: ; bbWeight=0.50, gcVars=0000008000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x38] // [V01 loc1] cbnz w1, G_M15982_IG32 add x1, fp, #56 // [V01 loc1] @@ -238,17 +239,17 @@ G_M15982_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w23, wzr ;; size=16 bbWeight=0.50 PerfScore 3.50 G_M15982_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x19, #0x14] - cmp w22, w24 - bne G_M15982_IG35
+ ldr w0, [x19, #0x14] + cmp w22, w0 + bne G_M15982_IG36
ldr w0, [x19, #0x10] cmp w23, w0
- bhs G_M15982_IG38
+ bhs G_M15982_IG37
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M15982_IG36
+ bhs G_M15982_IG35
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -481,17 +482,12 @@ G_M15982_IG34: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs -[x24] b G_M15982_IG13 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M15982_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- cmp w22, w24 - bne G_M15982_IG37 - b G_M15982_IG38 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -500,7 +496,7 @@ G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1] cbz w0, G_M15982_IG04 ldr x0, [fp, #0x18] // [V00 loc0] @@ -511,13 +507,13 @@ G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 b G_M15982_IG04 ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M15982_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #2 bl CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; gcr arg pop 0 b G_M15982_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M15982_IG39: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00} stp fp, lr, [sp, #-0x60]! stp x19, x20, [sp, #0x18] @@ -528,9 +524,9 @@ G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 add x3, fp, #144 str x3, [sp, #0x10] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG40: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1]
- cbz w0, G_M15982_IG42
+ cbz w0, G_M15982_IG41
ldr x0, [fp, #0x18] // [V00 loc0] ; gcrRegs +[x0] ; GC ptr vars -{V00} @@ -538,7 +534,7 @@ G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M15982_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x27, [sp, #0x58] ldp x25, x26, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -548,7 +544,7 @@ G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1132, prolog size 40, PerfScore 2107.00, instruction count 283, allocated bytes for code 1132 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
+; Total bytes of code 1120, prolog size 40, PerfScore 2097.00, instruction count 280, allocated bytes for code 1120 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
; ============================================================ Unwind Info: @@ -559,7 +555,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 264 (0x00108) Actual length = 1056 (0x000420)
+ Function Length : 261 (0x00105) Actual length = 1044 (0x000414)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -602,4 +598,4 @@ Unwind Info: *************** EH table for System.Diagnostics.Tracing.EventListener:Validate() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M15982_IG06..G_M15982_IG38) handled by [G_M15982_IG40..END) (fault)
+EH#0: try [G_M15982_IG06..G_M15982_IG37) handled by [G_M15982_IG39..END) (fault)
-8 (-0.90%) : 11528.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
@@ -8,27 +8,27 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T22] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T18] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T23] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T19] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T20] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T22] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T24] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T26] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def -;* V20 tmp11 [V20,T31] ( 0, 0 ) int -> zero-ref
+;* V19 tmp10 [V19,T32] ( 0, 0 ) ref -> zero-ref single-def +;* V20 tmp11 [V20,T33] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -36,44 +36,46 @@ ;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
-; V28 tmp19 [V28,T13] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V28 tmp19 [V28,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp21 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V32 tmp23 [V32,T09] ( 3, 24 ) byref -> x1 "Inlining Arg" ;* V33 tmp24 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp25 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp26 [V35,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp26 [V35,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V39 tmp30 [V39,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp30 [V39,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V41 tmp32 [V41,T20] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V42 tmp33 [V42,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V43 tmp34 [V43,T06] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
+; V41 tmp32 [V41,T21] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V42 tmp33 [V42,T06] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V43 tmp34 [V43,T05] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
; V44 tmp35 [V44,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V45 tmp36 [V45,T12] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V45 tmp36 [V45,T24] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V46 tmp37 [V46,T07] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V47 tmp38 [V47,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V48 tmp39 [V48,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V49 tmp40 [V49,T23] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V50 tmp41 [V50,T26] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
+; V49 tmp40 [V49,T25] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V50 tmp41 [V50,T28] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V27._current (fldOffset=0x8)" P-INDEP
-;* V52 tmp43 [V52,T32] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP -; V53 tmp44 [V53,T28] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP -; V54 tmp45 [V54,T27] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
+;* V52 tmp43 [V52,T34] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP +; V53 tmp44 [V53,T30] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP +; V54 tmp45 [V54,T29] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._current (fldOffset=0x8)" P-INDEP
-;* V56 tmp47 [V56,T33] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP -; V57 tmp48 [V57,T29] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
+;* V56 tmp47 [V56,T35] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP +; V57 tmp48 [V57,T31] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
; V58 tmp49 [V58,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V59 tmp50 [V59,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V60 PSPSym [V60,T34] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V61 cse0 [V61,T10] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V62 cse1 [V62,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" -; V63 cse2 [V63,T16] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" -; V64 cse3 [V64,T17] ( 3, 12 ) byref -> x1 "CSE - aggressive" -; V65 cse4 [V65,T25] ( 4, 4 ) byref -> x1 "CSE - moderate"
+; V60 PSPSym [V60,T36] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V61 cse0 [V61,T15] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V62 cse1 [V62,T10] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V63 cse2 [V63,T16] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V64 cse3 [V64,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V65 cse4 [V65,T17] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" +; V66 cse5 [V66,T18] ( 3, 12 ) byref -> x1 "CSE - aggressive" +; V67 cse6 [V67,T27] ( 4, 4 ) byref -> x1 "CSE - moderate"
; ; Lcl frame size = 40 @@ -92,7 +94,7 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=44 bbWeight=1 PerfScore 9.00
-G_M12834_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 movz x0, #0xD1FFAB1E @@ -171,7 +173,7 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { str x21, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x22, x0 @@ -261,12 +263,12 @@ G_M12834_IG10: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=52 bbWeight=4 PerfScore 50.00 G_M12834_IG11: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG15
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG14
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG16
+ bhs G_M12834_IG15
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w2, [x1, #0x08] @@ -305,12 +307,8 @@ G_M12834_IG14: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov w1, w19 @@ -325,19 +323,19 @@ G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcr arg pop 0 str w0, [fp, #0x2C] // [V03 loc0] ;; size=36 bbWeight=8 PerfScore 64.00
-G_M12834_IG17: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M12834_IG16: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V60 PSPSym]
- bl G_M12834_IG21
+ bl G_M12834_IG20
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG18: ; bbWeight=1, nogc, extend
+G_M12834_IG17: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M12834_IG19: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x68] ldp x23, x24, [sp, #0x58] ldp x21, x22, [sp, #0x48] @@ -345,7 +343,7 @@ G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M12834_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -354,19 +352,19 @@ G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #112 str x3, [sp, #0x10] ;; size=28 bbWeight=1 PerfScore 6.50
-G_M12834_IG22: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG21: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0]
- cbnz w0, G_M12834_IG27
+ cbnz w0, G_M12834_IG26
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] mov w21, wzr
- b G_M12834_IG24
+ b G_M12834_IG23
;; size=28 bbWeight=1 PerfScore 10.00
-G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG22: ; bbWeight=4, gcVars=0000000000000010 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00} add x1, x0, #52 ; byrRegs +[x1] @@ -374,7 +372,7 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; byrRegs -[x1] mov w2, #0xD1FFAB1E tst w1, w2
- bne G_M12834_IG24
+ bne G_M12834_IG23
ldr x1, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -385,18 +383,18 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=4 PerfScore 52.00
-G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG23: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14] cmp w20, w0
- bne G_M12834_IG26
+ bne G_M12834_IG25
ldr w0, [x19, #0x10] cmp w21, w0
- bhs G_M12834_IG27
+ bhs G_M12834_IG26
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M12834_IG25
+ bhs G_M12834_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -404,15 +402,15 @@ G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x0] ; byrRegs -[x0] add w21, w21, #1
- b G_M12834_IG23
+ b G_M12834_IG22
;; size=56 bbWeight=8 PerfScore 172.00
-G_M12834_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.29%) : 51995.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 24 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 20, 34 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 19, 33 ) byref -> x19 this single-def
; V01 loc0 [V01,T01] ( 13, 39 ) ref -> x21 class-hnd <System.Text.RegularExpressions.RegexNode> ; V02 loc1 [V02,T02] ( 12, 38 ) int -> x22
-; V03 loc2 [V03,T49] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
+; V03 loc2 [V03,T50] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
; V04 loc3 [V04,T34] ( 5, 4 ) ref -> x21 class-hnd exact single-def <System.String[]> ;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]> @@ -55,16 +55,16 @@ ; V44 tmp35 [V44,T15] ( 6, 10 ) int -> x20 "Inlining Arg" ; V45 tmp36 [V45,T26] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" ;* V46 tmp37 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V47 tmp38 [V47,T47] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
+; V47 tmp38 [V47,T48] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V49 tmp40 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V51 tmp42 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V52 tmp43 [V52,T48] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> -; V53 tmp44 [V53,T56] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> -; V54 tmp45 [V54,T50] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
+; V52 tmp43 [V52,T49] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> +; V53 tmp44 [V53,T57] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> +; V54 tmp45 [V54,T51] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V55 tmp46 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V56 tmp47 [V56,T51] ( 2, 2 ) long -> x2 "Inlining Arg"
+; V56 tmp47 [V56,T52] ( 2, 2 ) long -> x2 "Inlining Arg"
;* V57 tmp48 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V58 tmp49 [V58,T27] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V59 tmp50 [V59,T28] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -76,14 +76,14 @@ ;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V66 tmp57 [V66,T19] ( 2, 8 ) ref -> x15 "field V08.key (fldOffset=0x0)" P-INDEP ; V67 tmp58 [V67,T11] ( 3, 12 ) int -> x14 "field V08.value (fldOffset=0x8)" P-INDEP
-; V68 tmp59 [V68,T57] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP -; V69 tmp60 [V69,T52] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP -; V70 tmp61 [V70,T58] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V71 tmp62 [V71,T53] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
+; V68 tmp59 [V68,T58] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP +; V69 tmp60 [V69,T53] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP +; V70 tmp61 [V70,T59] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V71 tmp62 [V71,T54] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
; V72 tmp63 [V72,T36] ( 2, 4 ) byref -> x2 "field V30._reference (fldOffset=0x0)" P-INDEP ; V73 tmp64 [V73,T41] ( 2, 4 ) int -> x3 "field V30._length (fldOffset=0x8)" P-INDEP
-; V74 tmp65 [V74,T59] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP -; V75 tmp66 [V75,T54] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
+; V74 tmp65 [V74,T60] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V75 tmp66 [V75,T55] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
;* V76 tmp67 [V76 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp68 [V77 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V78 tmp69 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP @@ -93,17 +93,18 @@ ;* V82 tmp73 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp74 [V83 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP ;* V84 tmp75 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "V60.[000..008)"
-; V85 tmp76 [V85,T55] ( 2, 2 ) int -> x0 "V60.[008..012)"
+; V85 tmp76 [V85,T56] ( 2, 2 ) int -> x0 "V60.[008..012)"
;* V86 tmp77 [V86 ] ( 0, 0 ) int -> zero-ref "V60.[012..016)" ;* V87 tmp78 [V87 ] ( 0, 0 ) int -> zero-ref "V60.[016..020)" ; V88 tmp79 [V88,T10] ( 3, 12 ) ref -> x0 "arr expr"
-; V89 cse0 [V89,T46] ( 3, 3 ) int -> x22 "CSE - moderate"
+; V89 cse0 [V89,T47] ( 3, 3 ) int -> x22 "CSE - moderate"
; V90 cse1 [V90,T29] ( 3, 6 ) ref -> x1 "CSE - moderate" ; V91 cse2 [V91,T45] ( 3, 3 ) ref -> x20 "CSE - moderate" ; V92 cse3 [V92,T30] ( 3, 6 ) long -> x20 "CSE - moderate" ; V93 cse4 [V93,T33] ( 2, 4.50) byref -> x24 hoist "CSE - moderate" ; V94 cse5 [V94,T21] ( 4, 6.50) int -> x23 hoist multi-def "CSE - moderate" ; V95 cse6 [V95,T31] ( 5, 5 ) byref -> x20 "CSE - moderate"
+; V96 cse7 [V96,T46] ( 3, 3 ) ref -> x14 "CSE - moderate"
; ; Lcl frame size = 80 @@ -581,7 +582,6 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { ; gcrRegs +[x14] ldr x15, [x14, #0x10] ; gcrRegs +[x15]
- ldr x14, [x19]
ldr w1, [x14, #0x38] ldr w19, [x19, #0x10] ; byrRegs -[x19] @@ -623,7 +623,7 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { str w19, [x20, #0x2C] mov x0, x20 ; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 34.00
+ ;; size=116 bbWeight=1 PerfScore 31.00
G_M2365_IG43: ; bbWeight=1, epilog, nogc, extend ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -652,7 +652,7 @@ G_M2365_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1380, prolog size 40, PerfScore 659.00, instruction count 345, allocated bytes for code 1380 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
+; Total bytes of code 1376, prolog size 40, PerfScore 656.00, instruction count 344, allocated bytes for code 1376 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
; ============================================================ Unwind Info: @@ -663,7 +663,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 345 (0x00159) Actual length = 1380 (0x000564)
+ Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.19%) : 6323.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 64 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T47] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T46] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T44] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T44] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x10 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -169,9 +169,9 @@ ;* V158 tmp133 [V158 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V159 tmp134 [V159 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V161 tmp136 [V161,T47] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V161 tmp136 [V161,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -182,37 +182,37 @@ ;* V171 tmp146 [V171 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V172 tmp147 [V172 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V174 tmp149 [V174,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V174 tmp149 [V174,T49] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
...

-8 (-0.15%) : 3031.dasm - System.Number:NumberToStringFormatushort (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

coreclr_tests.run.linux.arm64.checked.mch

-36 (-14.75%) : 248219.dasm - Program:M49() (FullOpts)

@@ -10,11 +10,12 @@ ; V00 loc0 [V00,T01] ( 4, 13 ) int -> x19 ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> x1 "arr expr" -; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> x0 "arr expr" -; V05 PSPSym [V05,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" -; V06 cse0 [V06,T03] ( 3, 12 ) int -> x0 "CSE - aggressive" -; V07 cse1 [V07,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x0 "arr expr" +;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref "arr expr" +; V05 PSPSym [V05,T06] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" +; V06 cse0 [V06,T02] ( 3, 12 ) byref -> x0 "CSE - aggressive" +; V07 cse1 [V07,T03] ( 2, 8 ) ref -> x0 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -34,7 +35,7 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; gcr arg pop 0 cmp w0, #0
- ble G_M37813_IG08
+ ble G_M37813_IG06
;; size=32 bbWeight=1 PerfScore 7.50 G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x20, #0xD1FFAB1E @@ -43,32 +44,7 @@ G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20]
- cbnz w0, G_M37813_IG06 - ;; size=8 bbWeight=4 PerfScore 16.00 -G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - ; gcrRegs +[x1] - ldr w2, [x1, #0x08] - cmp w2, #0 - bls G_M37813_IG13 - str wzr, [x1, #0x10] - ;; size=32 bbWeight=2 PerfScore 20.00 -G_M37813_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - cbz w0, G_M37813_IG09 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M37813_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - str wzr, [x20, #-0x08] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M37813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbnz w0, G_M37813_IG05
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -77,17 +53,28 @@ G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr w1, [x0, #0x08] cmp w1, #0 bls G_M37813_IG10
- ldr w1, [x20, #-0x08] - str w1, [x0, #0x10] - b G_M37813_IG11 - ;; size=40 bbWeight=4 PerfScore 56.00 -G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, x0, #16
; gcrRegs -[x0]
- bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - brk_unix #0 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs +[x0] + str wzr, [x0] + b G_M37813_IG07 + ;; size=48 bbWeight=4 PerfScore 62.00 +G_M37813_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + str wzr, [x20, #-0x08] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M37813_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M37813_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref + ; byrRegs +[x0] + ldr w1, [x20, #-0x08] + str w1, [x0] + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M37813_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 @@ -98,27 +85,27 @@ G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp w0, w19 bgt G_M37813_IG04 ;; size=32 bbWeight=4 PerfScore 30.00
-G_M37813_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M37813_IG08
+G_M37813_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M37813_IG06
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #48 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 20, PerfScore 142.25, instruction count 61, allocated bytes for code 244 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 124.25, instruction count 52, allocated bytes for code 208 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
; ============================================================ Unwind Info: @@ -129,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,4 +149,4 @@ Unwind Info: *************** EH table for Program:M49() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37813_IG09..G_M37813_IG11) handled by [G_M37813_IG14..END) (fault)
+EH#0: try [G_M37813_IG07..G_M37813_IG08) handled by [G_M37813_IG11..END) (fault)
-40 (-5.29%) : 197342.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -25,7 +25,7 @@ ; V13 tmp9 [V13,T08] ( 6, 12 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[int]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T00] ( 25,158.20) byref -> x11 "Inlining Arg"
+; V16 tmp12 [V16,T00] ( 21,154.20) byref -> x11 "Inlining Arg"
; V17 tmp13 [V17,T03] ( 8, 43 ) ref -> x1 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp15 [V19,T12] ( 3, 3 ) ref -> x15 single-def "field V14._list (fldOffset=0x0)" P-INDEP @@ -57,9 +57,9 @@ G_M48461_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M48461_IG25
+ bne G_M48461_IG24
ldr w0, [x19, #0x10]
- cbz w0, G_M48461_IG24
+ cbz w0, G_M48461_IG23
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 @@ -83,13 +83,13 @@ G_M48461_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; GC ptr vars +{V02} ;; size=4 bbWeight=1 PerfScore 1.00 G_M48461_IG04: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x0, G_M48461_IG13
+ cbz x0, G_M48461_IG12
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- bne G_M48461_IG13
+ bne G_M48461_IG12
b G_M48461_IG06 ;; size=32 bbWeight=1 PerfScore 8.00 G_M48461_IG05: ; bbWeight=9.90, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref @@ -104,11 +104,11 @@ G_M48461_IG06: ; bbWeight=10.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG11
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG12
+ bhs G_M48461_IG11
;; size=40 bbWeight=10.89 PerfScore 201.46 G_M48461_IG07: ; bbWeight=9.90, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz ldr x3, [x1, #0x08] @@ -155,19 +155,10 @@ G_M48461_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w22, w0 ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- b G_M48461_IG15
+ b G_M48461_IG14
;; size=36 bbWeight=0 PerfScore 0.00
-G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
; byrRegs +[x11]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.99 PerfScore 10.39 -G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -175,39 +166,26 @@ G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} add w1, w1, #1 str w1, [x11, #0x08] str wzr, [x11, #0x10]
- b G_M48461_IG21
+ b G_M48461_IG20
;; size=24 bbWeight=0.99 PerfScore 9.40
-G_M48461_IG13: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG12: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x11] ldr xzr, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- b G_M48461_IG16
+ b G_M48461_IG15
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG13: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w22, [x0, #0x18] ;; size=4 bbWeight=0.10 PerfScore 0.30
-G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add w20, w20, w22 ;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M48461_IG16: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG15: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x11, [x0] cmp x11, x21
- beq G_M48461_IG17 - movz x11, #80 - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M48461_IG10 - ldr x0, [fp, #0x10] // [V02 loc1] - ; gcrRegs +[x0] - b G_M48461_IG21 - ;; size=44 bbWeight=0.11 PerfScore 1.54 -G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ bne G_M48461_IG17
add x11, x0, #8 ; byrRegs +[x11] ldr x1, [x11] @@ -215,13 +193,13 @@ G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG19
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG20 - ;; size=40 bbWeight=0.11 PerfScore 2.04 -G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
+ bhs G_M48461_IG19 + ;; size=52 bbWeight=0.11 PerfScore 2.53 +G_M48461_IG16: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
ldr x3, [x1, #0x08] ; gcrRegs +[x3] ldr w2, [x11, #0x08] @@ -237,19 +215,27 @@ G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x ldr w1, [x11, #0x08] add w1, w1, #1 str w1, [x11, #0x08]
- b G_M48461_IG14
+ b G_M48461_IG13
;; size=48 bbWeight=0.10 PerfScore 2.05
-G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.01 PerfScore 0.11 -G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
+ ; byrRegs -[x11] + movz x11, #80 + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + cbnz w0, G_M48461_IG10 + ;; size=24 bbWeight=0.11 PerfScore 0.72 +G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc1] + ; gcrRegs +[x0] + b G_M48461_IG20 + ;; size=8 bbWeight=0.11 PerfScore 0.33 +G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref + ; byrRegs +[x11]
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -258,24 +244,24 @@ G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} str w1, [x11, #0x08] str wzr, [x11, #0x10] ;; size=20 bbWeight=0.01 PerfScore 0.09
-G_M48461_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG20: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x11] ldr x1, [x0] cmp x1, x21
- bne G_M48461_IG26
+ bne G_M48461_IG25
;; size=12 bbWeight=1 PerfScore 4.50
-G_M48461_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V02} mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M48461_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M48461_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -289,7 +275,7 @@ G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x0] b G_M48461_IG03 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M48461_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -302,7 +288,7 @@ G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 b G_M48461_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V02 V05} movz x11, #96 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -312,9 +298,9 @@ G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M48461_IG22
+ b G_M48461_IG21
;; size=24 bbWeight=0 PerfScore 0.00
-G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V05} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -322,16 +308,16 @@ G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 add x3, fp, #64 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00 ...

-12 (-4.55%) : 254992.dasm - Test.BB:TestEntryPoint() (FullOpts)

@@ -8,29 +8,28 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T08] ( 2, 0 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <<unknown class>>
+; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [fp+0x10] class-hnd exact EH-live single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2" ; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp3 [V04,T02] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]> ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp6 [V07,T09] ( 2, 0 ) float -> [fp+0x24] spill-single-def "bubbling QMark2" -; V08 tmp7 [V08,T06] ( 3, 0 ) ref -> x20 single-def "CASTCLASS eval op1" -; V09 tmp8 [V09,T07] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V10 tmp9 [V10,T05] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> -; V11 PSPSym [V11,T04] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V12 cse0 [V12,T01] ( 5, 24 ) ref -> x20 multi-def "CSE - aggressive" -; V13 cse1 [V13,T03] ( 5, 4 ) long -> x19 multi-def "CSE - aggressive"
+; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [fp+0x1C] spill-single-def "bubbling QMark2" +; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1" +; V09 tmp8 [V09,T06] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable" +; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> +; V11 PSPSym [V11,T03] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V12 cse0 [V12,T02] ( 5, 4 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + str x19, [sp, #0x28]
mov fp, sp
- add x0, sp, #64 - str x0, [fp, #0x28] // [V11 PSPSym]
+ add x0, sp, #48 + str x0, [fp, #0x20] // [V11 PSPSym]
;; size=20 bbWeight=1 PerfScore 4.00 G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x19, #0xD1FFAB1E @@ -41,10 +40,10 @@ G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V00 loc0]
+ str x0, [fp, #0x10] // [V00 loc0]
; GC ptr vars +{V00} ;; size=28 bbWeight=1 PerfScore 4.50
-G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] mov w0, #2 cmp w0, #3 @@ -52,19 +51,17 @@ G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000100 {V00}, gcrefRegs=000 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x20, [x0] - ; gcrRegs +[x20] - mov x1, x20
+ ldr x1, [x0]
; gcrRegs +[x1]
- cbz x1, G_M52695_IG07 - ;; size=36 bbWeight=8 PerfScore 64.00 -G_M52695_IG04: ; bbWeight=2, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M52695_IG03 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M52695_IG04: ; bbWeight=2, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1] add x2, x19, #0xD1FFAB1E cmp x0, x2 beq G_M52695_IG07 ;; size=16 bbWeight=2 PerfScore 10.00
-G_M52695_IG05: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x2 bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0] @@ -72,60 +69,53 @@ G_M52695_IG05: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} b G_M52695_IG07 ;; size=12 bbWeight=1 PerfScore 2.50 G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52695_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20] - cbz x20, G_M52695_IG03 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M52695_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc - ; gcrRegs -[x20]
+G_M52695_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; GC ptr vars -{V00}
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x19, [sp, #0x28] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc - stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x20] - add x3, fp, #64 - str x3, [sp, #0x18]
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M52695_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18] + add x3, fp, #48 + str x3, [sp, #0x10]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V08} - ldr x0, [fp, #0x18] // [V00 loc0]
+G_M52695_IG09: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00 V07} + ldr x0, [fp, #0x10] // [V00 loc0]
; gcrRegs +[x0] ldr s0, [x0, #0x10]
- str s0, [fp, #0x24] // [V07 tmp6]
+ str s0, [fp, #0x1C] // [V07 tmp6]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x20, [x0] - ; gcrRegs +[x20] - mov x0, x20 - ; gcrRegs +[x0] - cbz x0, G_M52695_IG11
ldr x1, [x0]
+ ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + cbz x0, G_M52695_IG10 + ldr x2, [x0]
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #0xD1FFAB1E LSL #32
- add x2, x19, #0xD1FFAB1E - cmp x1, x2 - beq G_M52695_IG11 - mov x0, x2
+ add x3, x19, #0xD1FFAB1E + cmp x2, x3 + beq G_M52695_IG10 + mov x0, x3
; gcrRegs -[x0]
- mov x1, x20 - ; gcrRegs +[x1] - ; GC ptr vars -{V00 V08}
+ ; GC ptr vars -{V00 V07}
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr s0, [fp, #0x24] // [V07 tmp6]
+ ;; size=72 bbWeight=0 PerfScore 0.00 +G_M52695_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr s0, [fp, #0x1C] // [V07 tmp6]
movz x1, #0xD1FFAB1E // code for Test.BB:Method1(float,double[]) movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -133,15 +123,15 @@ G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M52695_IG08]
+ adr x0, [G_M52695_IG07]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+G_M52695_IG11: ; bbWeight=0, funclet epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 20, PerfScore 96.00, instruction count 66, allocated bytes for code 264 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
+; Total bytes of code 252, prolog size 20, PerfScore 85.00, instruction count 63, allocated bytes for code 252 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
; ============================================================ Unwind Info: @@ -152,7 +142,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -160,8 +150,8 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end E4 end @@ -175,14 +165,14 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end *************** EH table for Test.BB:TestEntryPoint() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52695_IG03..G_M52695_IG08) handled by [G_M52695_IG09..END) (class: 1000008)
+EH#0: try [G_M52695_IG03..G_M52695_IG07) handled by [G_M52695_IG08..END) (class: 1000008)
+0 (0.00%) : 314976.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
@@ -9,43 +9,43 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T29] ( 4, 4 ) int -> x24 single-def
-; V01 arg1 [V01,T14] ( 4, 35 ) int -> x19 single-def -; V02 arg2 [V02,T16] ( 3, 34 ) int -> x21 single-def -; V03 arg3 [V03 ] ( 5, 354 ) int -> [fp+0x44] do-not-enreg[X] addr-exposed ld-addr-op single-def -; V04 arg4 [V04,T25] ( 4, 10 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> -; V05 arg5 [V05,T15] ( 3, 34 ) ref -> x20 class-hnd single-def <ReadyToRunJittedMethods> -; V06 arg6 [V06,T26] ( 7, 8.50) int -> x23 single-def -; V07 loc0 [V07,T23] ( 9, 16 ) ref -> [fp+0x20] class-hnd exact EH-live spill-single-def <System.Threading.AutoResetEvent>
+; V01 arg1 [V01,T23] ( 4, 7 ) int -> x21 single-def +; V02 arg2 [V02,T25] ( 3, 6 ) int -> x23 single-def +; V03 arg3 [V03 ] ( 5, 326 ) int -> [fp+0x44] do-not-enreg[X] addr-exposed ld-addr-op single-def +; V04 arg4 [V04,T21] ( 4, 10 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> +; V05 arg5 [V05,T24] ( 3, 6 ) ref -> x22 class-hnd single-def <ReadyToRunJittedMethods> +; V06 arg6 [V06,T22] ( 7, 8.50) int -> x20 single-def +; V07 loc0 [V07,T19] ( 9, 16 ) ref -> [fp+0x20] class-hnd exact EH-live spill-single-def <System.Threading.AutoResetEvent>
; V08 loc1 [V08,T07] ( 8, 125.50) ref -> x27 class-hnd exact single-def <<unknown class>>
-; V09 loc2 [V09 ] ( 4, 353 ) int -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op -; V10 loc3 [V10,T21] ( 3, 24 ) ubyte -> x23 -; V11 loc4 [V11,T22] ( 12, 21.04) int -> x28 -; V12 loc5 [V12,T10] ( 9, 142 ) int -> x24 -; V13 loc6 [V13,T17] ( 2, 36 ) ref -> x23 class-hnd <ProcessInfo> -; V14 loc7 [V14,T06] ( 4, 196 ) ref -> x26 class-hnd <ParallelRunner+ProcessSlot> -;* V15 loc8 [V15,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V09 loc2 [V09 ] ( 4, 325 ) int -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op +; V10 loc3 [V10,T17] ( 3, 24 ) ubyte -> x20 +; V11 loc4 [V11,T18] ( 12, 21.04) int -> x28 +; V12 loc5 [V12,T15] ( 9, 30 ) int -> x24 +; V13 loc6 [V13,T26] ( 2, 8 ) ref -> x20 class-hnd <ProcessInfo> +; V14 loc7 [V14,T06] ( 4, 168 ) ref -> x26 class-hnd <ParallelRunner+ProcessSlot> +;* V15 loc8 [V15,T14] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V16 loc9 [V16,T04] ( 5, 288 ) int -> x28 ; V17 loc10 [V17,T01] ( 5, 768 ) ref -> [fp+0x18] class-hnd spill-single-def <ParallelRunner+ProcessSlot> ;* V18 loc11 [V18,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V19 loc12 [V19,T12] ( 5, 72 ) int -> x24
+; V19 loc12 [V19,T11] ( 5, 72 ) int -> x24
; V20 loc13 [V20,T09] ( 4, 160 ) ref -> x19 class-hnd <ParallelRunner+ProcessSlot> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T31] ( 3, 6.00) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
-; V23 tmp2 [V23,T18] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
+; V23 tmp2 [V23,T13] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
; V24 tmp3 [V24 ] ( 1, 1.00) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V25 tmp4 [V25,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V26 tmp5 [V26,T00] ( 4,2048 ) ref -> x26 class-hnd "Inlining Arg" <ProcessRunner>
-;* V27 tmp6 [V27,T24] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V27 tmp6 [V27,T20] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V28 tmp7 [V28,T28] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V29 tmp8 [V29,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V30 tmp9 [V30,T02] ( 4, 512 ) ref -> x20 class-hnd "Inlining Arg" <ProcessRunner>
+;* V29 tmp8 [V29,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V30 tmp9 [V30,T02] ( 4, 512 ) ref -> x21 class-hnd "Inlining Arg" <ProcessRunner>
; V31 tmp10 [V31,T32] ( 6, 5 ) ref -> registers class-hnd exact "dup spill" <<unknown class>> ;* V32 tmp11 [V32 ] ( 0, 0 ) ref -> zero-ref
-; V33 tmp12 [V33,T20] ( 3, 24 ) ref -> x0 "arr expr"
+; V33 tmp12 [V33,T16] ( 3, 24 ) ref -> x0 "arr expr"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V35 PSPSym [V35,T33] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" ; V36 cse0 [V36,T03] ( 3, 384 ) ref -> x0 "CSE - aggressive"
-; V37 cse1 [V37,T11] ( 3, 96 ) ref -> x0 "CSE - aggressive"
+; V37 cse1 [V37,T10] ( 3, 96 ) ref -> x0 "CSE - aggressive"
; V38 cse2 [V38,T08] ( 9, 161.04) int -> [fp+0x2C] multi-def "CSE - aggressive" ; V39 cse3 [V39,T30] ( 4, 6 ) long -> x26 "CSE - moderate" ; @@ -64,15 +64,15 @@ G_M64833_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr str x7, [fp, #0x48] // [V35 PSPSym] str w3, [fp, #0x44] // [V03 arg3] mov w24, w0
- mov w19, w1 - mov w21, w2 - mov x22, x4
+ mov w21, w1 + mov w23, w2 + mov x19, x4 + ; gcrRegs +[x19] + mov x22, x5
; gcrRegs +[x22]
- mov x20, x5 - ; gcrRegs +[x20] - mov w23, w6
+ mov w20, w6
;; size=68 bbWeight=1.00 PerfScore 13.00
-G_M64833_IG02: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+G_M64833_IG02: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -96,8 +96,8 @@ G_M64833_IG02: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 str x25, [fp, #0x20] // [V07 loc0] ; GC ptr vars +{V07} ;; size=64 bbWeight=1.00 PerfScore 12.00
-G_M64833_IG03: ; bbWeight=1.00, gcVars=0000000000800000 {V07}, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw x1, w23
+G_M64833_IG03: ; bbWeight=1.00, gcVars=0000000000080000 {V07}, gcrefRegs=2480000 {x19 x22 x25}, byrefRegs=0000 {}, gcvars, byref, isz + sxtw x1, w20
movz x26, #0xD1FFAB1E movk x26, #0xD1FFAB1E LSL #16 movk x26, #0xD1FFAB1E LSL #32 @@ -108,17 +108,17 @@ G_M64833_IG03: ; bbWeight=1.00, gcVars=0000000000800000 {V07}, gcrefRegs= mov x27, x0 ; gcrRegs +[x27] mov w28, wzr
- cmp w23, #0
+ cmp w20, #0
ble G_M64833_IG06 ;; size=40 bbWeight=1.00 PerfScore 6.00
-G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=A480000 {x19 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w1, [x27, #0x08] str w1, [fp, #0x2C] // [V38 cse2]
- cmp w1, w23
+ cmp w1, w20
blt G_M64833_IG15 ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=A480000 {x19 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
sub x0, x26, #200 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -140,19 +140,19 @@ G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=A500000 {x20 x22 x25 x27}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w28, w28, #1
- cmp w28, w23
+ cmp w28, w20
blt G_M64833_IG05 ;; size=52 bbWeight=3.96 PerfScore 37.62
-G_M64833_IG06: ; bbWeight=1, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG06: ; bbWeight=1, gcrefRegs=A480000 {x19 x22 x25 x27}, byrefRegs=0000 {}, byref, isz
str w24, [fp, #0x38] // [V09 loc2]
- cmp w24, w19
+ cmp w24, w21
bge G_M64833_IG20 ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64833_IG07: ; bbWeight=4, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRegs=0000 {}, byref, isz - ldr w3, [x22, #0x10]
+G_M64833_IG07: ; bbWeight=4, gcrefRegs=A480000 {x19 x22 x25 x27}, byrefRegs=0000 {}, byref, isz + ldr w3, [x19, #0x10]
cmp w24, w3 bhs G_M64833_IG14
- ldr x0, [x22, #0x08]
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w24, w1 @@ -160,12 +160,12 @@ G_M64833_IG07: ; bbWeight=4, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRe add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x23, [x0, w24, UXTW #3] - ; gcrRegs +[x23]
+ ldr x20, [x0, w24, UXTW #3] + ; gcrRegs +[x20]
mov x26, xzr ; gcrRegs +[x26] ;; size=40 bbWeight=4 PerfScore 64.00
-G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG08: ; bbWeight=32, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] mov w28, wzr ldr w3, [x27, #0x08] @@ -173,7 +173,7 @@ G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} cmp w3, #0 ble G_M64833_IG11 ;; size=20 bbWeight=32 PerfScore 192.00
-G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG09: ; bbWeight=64, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add x0, x27, #16 ; byrRegs +[x0] ldr x4, [x0, w28, UXTW #3] @@ -185,17 +185,17 @@ G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} ; byrRegs -[x0] cbnz x0, G_M64833_IG16 ;; size=20 bbWeight=64 PerfScore 544.00
-G_M64833_IG10: ; bbWeight=128, gcVars=0000000000800002 {V07 V17}, gcrefRegs=AD00010 {x4 x20 x22 x23 x25 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M64833_IG10: ; bbWeight=128, gcVars=0000000000080002 {V07 V17}, gcrefRegs=A580010 {x4 x19 x20 x22 x25 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x26] mov x26, x4 ; gcrRegs +[x26] ;; size=4 bbWeight=128 PerfScore 64.00
-G_M64833_IG11: ; bbWeight=32, gcVars=0000000000800000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG11: ; bbWeight=32, gcVars=0000000000080000 {V07}, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] ; GC ptr vars -{V17} cbnz x26, G_M64833_IG19 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG12: ; bbWeight=8, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] mov w1, #200 @@ -212,7 +212,7 @@ G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, b G_M64833_IG08 ;; size=44 bbWeight=8 PerfScore 72.00 G_M64833_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22-x23 x25-x27]
+ ; gcrRegs -[x19-x20 x22 x25-x27]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -226,8 +226,8 @@ G_M64833_IG14: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64833_IG15: ; bbWeight=0.04, gcrefRegs=A500000 {x20 x22 x25 x27}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20 x22 x27]
+G_M64833_IG15: ; bbWeight=0.04, gcrefRegs=A480000 {x19 x22 x25 x27}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x19 x22 x27]
sub x0, x26, #200 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -252,13 +252,13 @@ G_M64833_IG15: ; bbWeight=0.04, gcrefRegs=A500000 {x20 x22 x25 x27}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w28, w28, #1
- cmp w28, w23
+ cmp w28, w20
str w3, [fp, #0x2C] // [V38 cse2] blt G_M64833_IG15 b G_M64833_IG06 ;; size=72 bbWeight=0.04 PerfScore 0.60
-G_M64833_IG16: ; bbWeight=256, gcVars=0000000000800002 {V07 V17}, gcrefRegs=ED00011 {x0 x4 x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x4 x23 x26]
+G_M64833_IG16: ; bbWeight=256, gcVars=0000000000080002 {V07 V17}, gcrefRegs=E580011 {x0 x4 x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0 x4 x20 x26]
; GC ptr vars +{V01 V17} add x1, fp, #56 // [V09 loc2] add x2, fp, #68 // [V03 arg3] @@ -298,7 +298,7 @@ G_M64833_IG16: ; bbWeight=256, gcVars=0000000000800002 {V07 V17}, gcrefRe ; gcrRegs +[x4] b G_M64833_IG10 ;; size=108 bbWeight=256 PerfScore 8448.00
-G_M64833_IG17: ; bbWeight=64, gcVars=0000000000800000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG17: ; bbWeight=64, gcVars=0000000000080000 {V07}, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4 x28] +[x26] ; GC ptr vars -{V01 V17} add w28, w28, #1 @@ -307,18 +307,18 @@ G_M64833_IG17: ; bbWeight=64, gcVars=0000000000800000 {V07}, gcrefRegs=ED str w5, [fp, #0x2C] // [V38 cse2] bgt G_M64833_IG09 ;; size=20 bbWeight=64 PerfScore 320.00
-G_M64833_IG18: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG18: ; bbWeight=32, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
b G_M64833_IG11 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG19: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG19: ; bbWeight=4, gcrefRegs=E580000 {x19 x20 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add w3, w24, #1 ...

+4 (+0.08%) : 219647.dasm - GenClass1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass1[System.Canon],GenClass1[System.__Canon],GenClass1[System.Canon]) (FullOpts)

@@ -15,20 +15,20 @@ ; V04 arg3 [V04,T56] ( 3, 6 ) ref -> x22 class-hnd single-def <GenClass`1[System.__Canon]> ; V05 loc0 [V05,T06] ( 7, 23 ) int -> x24 ; V06 loc1 [V06 ] (153,301.89) struct (40) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc2 [V07,T07] ( 7, 23 ) int -> x26
+; V07 loc2 [V07,T07] ( 7, 23 ) int -> x27
; V08 loc3 [V08,T08] ( 7, 23 ) int -> x25
-; V09 loc4 [V09,T09] ( 7, 23 ) int -> x26
+; V09 loc4 [V09,T09] ( 7, 23 ) int -> x27
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T38] ( 5, 12 ) ref -> x25 ;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref ; V13 tmp3 [V13,T34] ( 7, 12 ) ref -> x26
-; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x27
+; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x28
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref ; V16 tmp6 [V16,T35] ( 6, 12 ) ref -> x1
-; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x28
+; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x26
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref ; V19 tmp9 [V19,T36] ( 6, 12 ) ref -> x1
-; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x27
+; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x28
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref ; V22 tmp12 [V22,T37] ( 6, 12 ) ref -> x24 ;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -134,8 +134,8 @@ ;* V123 tmp113 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V124 tmp114 [V124,T25] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V125 tmp115 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V126 tmp116 [V126,T46] ( 3, 12 ) int -> x24 "Inlining Arg" -; V127 tmp117 [V127,T94] ( 2, 7.98) byref -> x21 "Inlining Arg"
+; V126 tmp116 [V126,T46] ( 3, 12 ) int -> x21 "Inlining Arg" +; V127 tmp117 [V127,T94] ( 2, 7.98) byref -> x26 "Inlining Arg"
;* V128 tmp118 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V129 tmp119 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V130 tmp120 [V130,T185] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -206,7 +206,7 @@ ; V195 tmp185 [V195,T29] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V196 tmp186 [V196 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V197 tmp187 [V197,T50] ( 3, 12 ) int -> x21 "Inlining Arg"
-; V198 tmp188 [V198,T98] ( 2, 7.98) byref -> x27 "Inlining Arg"
+; V198 tmp188 [V198,T98] ( 2, 7.98) byref -> x28 "Inlining Arg"
;* V199 tmp189 [V199 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V200 tmp190 [V200 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V201 tmp191 [V201,T189] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -273,7 +273,7 @@ ; V262 tmp252 [V262,T33] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V263 tmp253 [V263 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V264 tmp254 [V264,T54] ( 3, 12 ) int -> x20 "Inlining Arg"
-; V265 tmp255 [V265,T102] ( 2, 7.98) byref -> x28 "Inlining Arg"
+; V265 tmp255 [V265,T102] ( 2, 7.98) byref -> x26 "Inlining Arg"
;* V266 tmp256 [V266,T193] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V267 tmp257 [V267 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V268 tmp258 [V268 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -294,7 +294,7 @@ ;* V283 tmp273 [V283 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V284 tmp274 [V284 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V285 tmp275 [V285,T90] ( 2, 8 ) int -> x24 "Inlining Arg"
-; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x27 "Inlining Arg"
+; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x28 "Inlining Arg"
; V287 tmp277 [V287,T120] ( 3, 4 ) byref -> x26 "field V28._reference (fldOffset=0x0)" P-INDEP ; V288 tmp278 [V288,T128] ( 3, 4 ) int -> x27 "field V28._length (fldOffset=0x8)" P-INDEP ;* V289 tmp279 [V289 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP @@ -351,8 +351,8 @@ ; V340 tmp330 [V340,T169] ( 2, 4 ) int -> x3 "field V111._length (fldOffset=0x8)" P-INDEP ;* V341 tmp331 [V341 ] ( 0, 0 ) byref -> zero-ref "field V112._reference (fldOffset=0x0)" P-INDEP ;* V342 tmp332 [V342 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x8)" P-INDEP
-; V343 tmp333 [V343,T122] ( 3, 4 ) byref -> x28 "field V122._reference (fldOffset=0x0)" P-INDEP -; V344 tmp334 [V344,T130] ( 3, 4 ) int -> x2 "field V122._length (fldOffset=0x8)" P-INDEP
+; V343 tmp333 [V343,T122] ( 3, 4 ) byref -> x2 "field V122._reference (fldOffset=0x0)" P-INDEP +; V344 tmp334 [V344,T130] ( 3, 4 ) int -> x3 "field V122._length (fldOffset=0x8)" P-INDEP
;* V345 tmp335 [V345 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP ;* V346 tmp336 [V346 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP ;* V347 tmp337 [V347 ] ( 0, 0 ) byref -> zero-ref "field V125._reference (fldOffset=0x0)" P-INDEP @@ -560,7 +560,7 @@ G_M13079_IG03: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 mov x25, x0 ; gcrRegs +[x25] str xzr, [fp, #0x10] // [V06 loc1]
- cbz w24, G_M13079_IG26
+ cbz w24, G_M13079_IG29
;; size=60 bbWeight=4 PerfScore 88.00 G_M13079_IG04: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -623,7 +623,7 @@ G_M13079_IG06: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ;; size=96 bbWeight=2 PerfScore 49.00 G_M13079_IG07: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #8
- blo G_M13079_IG16
+ blo G_M13079_IG19
;; size=8 bbWeight=2 PerfScore 3.00 G_M13079_IG08: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -673,7 +673,7 @@ G_M13079_IG09: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ;; size=108 bbWeight=2 PerfScore 54.00 G_M13079_IG10: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #3
- blo G_M13079_IG18
+ blo G_M13079_IG24
;; size=8 bbWeight=2 PerfScore 3.00 G_M13079_IG11: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -733,7 +733,7 @@ G_M13079_IG12: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ; gcrRegs -[x0-x1] ;; size=128 bbWeight=2 PerfScore 65.00 G_M13079_IG13: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz
- cbz w27, G_M13079_IG19
+ cbz w27, G_M13079_IG26
;; size=4 bbWeight=2 PerfScore 2.00 G_M13079_IG14: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -753,7 +753,7 @@ G_M13079_IG15: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe bhi G_M13079_IG104 ldr x27, [fp, #0x28] // [V06 loc1+0x18] ; byrRegs +[x27]
- tbz w26, #31, G_M13079_IG23
+ tbz w26, #31, G_M13079_IG16
movz x28, #0xD1FFAB1E movk x28, #0xD1FFAB1E LSL #16 movk x28, #0xD1FFAB1E LSL #32 @@ -767,25 +767,6 @@ G_M13079_IG15: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x28]
- b G_M13079_IG22 - ;; size=68 bbWeight=2 PerfScore 35.00 -G_M13079_IG16: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; gcrRegs -[x28] - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG09 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG17: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs +[x28] - ; byrRegs +[x27]
mov x0, x28 ; gcrRegs +[x0] mov x1, x28 @@ -796,35 +777,8 @@ G_M13079_IG17: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, by ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x28]
- b G_M13079_IG20 - ;; size=32 bbWeight=2 PerfScore 15.00 -G_M13079_IG18: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG12 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG19: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG15 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG20: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - ; byrRegs +[x27]
+ ;; size=92 bbWeight=2 PerfScore 46.00 +G_M13079_IG16: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz
mov x0, x27 ; byrRegs +[x0] sxtw w1, w26 @@ -838,43 +792,9 @@ G_M13079_IG20: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe stp xzr, xzr, [fp, #0x10] stp xzr, xzr, [fp, #0x20] str xzr, [fp, #0x30]
- cbz x1, G_M13079_IG30
+ cbz x1, G_M13079_IG18
;; size=36 bbWeight=2 PerfScore 17.00
-G_M13079_IG21: ; bbWeight=1.92, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M13079_IG29 - ;; size=4 bbWeight=1.92 PerfScore 1.92 -G_M13079_IG22: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs -[x1 x26] +[x28] - ; byrRegs +[x27] - mov x0, x28 - ; gcrRegs +[x0] - mov x1, x28 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x28] - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M13079_IG23: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - mov x0, x27 - ; byrRegs +[x0] - sxtw w1, w26 - bl <unknown method> - ; gcrRegs +[x0] - ; byrRegs -[x0 x27] - mov x26, x0 - ; gcrRegs +[x26] - ldr x1, [fp, #0x18] // [V06 loc1+0x08] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #0x10] - stp xzr, xzr, [fp, #0x20] - str xzr, [fp, #0x30] - cbz x1, G_M13079_IG25 - ;; size=36 bbWeight=2 PerfScore 17.00 -G_M13079_IG24: ; bbWeight=1.92, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
+G_M13079_IG17: ; bbWeight=1.92, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -890,37 +810,29 @@ G_M13079_IG24: ; bbWeight=1.92, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26 blr x3 ; gcrRegs -[x0-x1] ;; size=44 bbWeight=1.92 PerfScore 25.93
-G_M13079_IG25: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - b G_M13079_IG30
+G_M13079_IG18: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref + b G_M13079_IG27
;; size=4 bbWeight=2 PerfScore 2.00
-G_M13079_IG26: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M13079_IG19: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x26]
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #13 - bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS - movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
...

+4 (+0.10%) : 316461.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<>cDisplayClass21+<<TESTMultipleConnectPortsSuspend>b1>d:MoveNext():this (FullOpts)

@@ -427,7 +427,7 @@ G_M18877_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 ; gcr arg pop 0
- cbz x0, G_M18877_IG51
+ cbz x0, G_M18877_IG86
;; size=140 bbWeight=4 PerfScore 158.00 G_M18877_IG05: ; bbWeight=4.00, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref add x22, x0, #16 @@ -444,7 +444,7 @@ G_M18877_IG06: ; bbWeight=4, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs ; gcrRegs -[x0] ldr w1, [fp, #0x58] // [V08 loc7+0x20] cmp w0, w1
- bhi G_M18877_IG50
+ bhi G_M18877_IG85
ldr x1, [fp, #0x50] // [V08 loc7+0x18] ; byrRegs +[x1] ubfiz x2, x0, #1, #32 @@ -505,7 +505,7 @@ G_M18877_IG09: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldr w22, [fp, #0x48] // [V08 loc7+0x10] ldr w0, [fp, #0x58] // [V08 loc7+0x20] cmp w22, w0
- bhi G_M18877_IG50
+ bhi G_M18877_IG85
ldr x23, [fp, #0x50] // [V08 loc7+0x18] ; byrRegs +[x23] tbz w22, #31, G_M18877_IG10 @@ -587,11 +587,11 @@ G_M18877_IG12: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 sxtw w2, w1 ldr w3, [x0, #0x10] cmp w2, w3
- bhs G_M18877_IG45
+ bhs G_M18877_IG87
ldr x0, [x0, #0x08] ldr w3, [x0, #0x08] cmp w2, w3
- bhs G_M18877_IG46
+ bhs G_M18877_IG83
ubfiz x2, x2, #4, #32 add x2, x2, #16 ldr x0, [x0, x2] @@ -695,19 +695,10 @@ G_M18877_IG16: ; bbWeight=8.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { and w1, w1, w2 mov w2, #0xD1FFAB1E cmp w1, w2
- beq G_M18877_IG18
+ bne G_M18877_IG46
;; size=32 bbWeight=8.00 PerfScore 68.00
-G_M18877_IG17: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=200000 {x21}, byref - mov w1, wzr - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+G_M18877_IG17: ; bbWeight=8.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
- ; gcr arg pop 0 - ;; size=24 bbWeight=0.00 PerfScore 0.02 -G_M18877_IG18: ; bbWeight=8.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr x20, [fp, #0x30] // [V215 tmp200] ; gcrRegs +[x20] add x0, x20, #52 @@ -718,9 +709,9 @@ G_M18877_IG18: ; bbWeight=8.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { and w0, w0, w1 mov w1, #0xD1FFAB1E cmp w0, w1
- beq G_M18877_IG20
+ beq G_M18877_IG19
;; size=32 bbWeight=8.00 PerfScore 68.00
-G_M18877_IG19: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M18877_IG18: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -737,7 +728,7 @@ G_M18877_IG19: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=48 bbWeight=4 PerfScore 36.00
-G_M18877_IG20: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M18877_IG19: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
ldr x20, [x20, #0x38] mov x0, x20 ; gcrRegs +[x0] @@ -756,10 +747,10 @@ G_M18877_IG20: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ; GC ptr vars +{V11} str wzr, [fp, #0x28] // [V12 loc11] ;; size=48 bbWeight=8 PerfScore 140.00
-G_M18877_IG21: ; bbWeight=8, gcVars=00000000000000020000000000000010 {V00 V11}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M18877_IG20: ; bbWeight=8, gcVars=00000000000000020000000000000010 {V00 V11}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs -[x0-x1] ldrb w1, [fp, #0x28] // [V12 loc11]
- cbnz w1, G_M18877_IG25
+ cbnz w1, G_M18877_IG24
add x1, fp, #40 // [V12 loc11] ldr x0, [fp, #0x18] // [V11 loc10] ; gcrRegs +[x0] @@ -767,9 +758,9 @@ G_M18877_IG21: ; bbWeight=8, gcVars=00000000000000020000000000000010 {V00 ; gcrRegs -[x0] ; gcr arg pop 0 ldrb w0, [fp, #0x28] // [V12 loc11]
- cbnz w0, G_M18877_IG23
+ cbnz w0, G_M18877_IG22
;; size=28 bbWeight=8 PerfScore 76.00
-G_M18877_IG22: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref
+G_M18877_IG21: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref
movz x24, #0xD1FFAB1E movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 @@ -785,7 +776,7 @@ G_M18877_IG22: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=20 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=40 bbWeight=4 PerfScore 32.00
-G_M18877_IG23: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
+G_M18877_IG22: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
ldr x1, [x19, #0x10] ; gcrRegs +[x1] ldr x0, [x1, #0x18] @@ -798,9 +789,9 @@ G_M18877_IG23: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=20 ; gcrRegs +[x3] ldr w1, [x3, #0x08] cmp w1, w2
- bls G_M18877_IG26
+ bls G_M18877_IG25
;; size=36 bbWeight=8 PerfScore 144.00
-G_M18877_IG24: ; bbWeight=3.67, gcrefRegs=580009 {x0 x3 x19 x20 x22}, byrefRegs=200000 {x21}, byref
+G_M18877_IG23: ; bbWeight=3.67, gcrefRegs=580009 {x0 x3 x19 x20 x22}, byrefRegs=200000 {x21}, byref
add w1, w2, #1 str w1, [x0, #0x10] sxtw x1, w2 @@ -810,9 +801,9 @@ G_M18877_IG24: ; bbWeight=3.67, gcrefRegs=580009 {x0 x3 x19 x20 x22}, byr bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2-x3] ; gcr arg pop 0
- b G_M18877_IG27
+ b G_M18877_IG26
;; size=28 bbWeight=3.67 PerfScore 18.35
-G_M18877_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+G_M18877_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x19-x20 x22] movz x0, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() movk x0, #0xD1FFAB1E LSL #16 @@ -822,7 +813,7 @@ G_M18877_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M18877_IG26: ; bbWeight=0.33, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=200000 {x21}, byref
+G_M18877_IG25: ; bbWeight=0.33, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x0 x19-x20 x22] mov x1, x22 ; gcrRegs +[x1] @@ -834,13 +825,13 @@ G_M18877_IG26: ; bbWeight=0.33, gcrefRegs=580001 {x0 x19 x20 x22}, byrefR ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=24 bbWeight=0.33 PerfScore 1.98
-G_M18877_IG27: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
+G_M18877_IG26: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [fp, #0x64] // [V01 loc0]
- tbz w0, #31, G_M18877_IG29
+ tbz w0, #31, G_M18877_IG28
;; size=8 bbWeight=8 PerfScore 24.00
-G_M18877_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
+G_M18877_IG27: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
ldrb w0, [fp, #0x28] // [V12 loc11]
- cbz w0, G_M18877_IG29
+ cbz w0, G_M18877_IG28
ldr x0, [fp, #0x18] // [V11 loc10] ; gcrRegs +[x0] ; GC ptr vars -{V11} @@ -848,7 +839,7 @@ G_M18877_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=20 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=4 PerfScore 24.00
-G_M18877_IG29: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
+G_M18877_IG28: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -868,14 +859,14 @@ G_M18877_IG29: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=20 ldr x2, [x2] blr x2 ; gcr arg pop 0
- cbz x0, G_M18877_IG44
+ cbz x0, G_M18877_IG45
;; size=64 bbWeight=8 PerfScore 132.00
-G_M18877_IG30: ; bbWeight=4.00, gcrefRegs=1D80001 {x0 x19 x20 x22 x23 x24}, byrefRegs=200000 {x21}, byref
+G_M18877_IG29: ; bbWeight=4.00, gcrefRegs=1D80001 {x0 x19 x20 x22 x23 x24}, byrefRegs=200000 {x21}, byref
add x25, x0, #16 ; byrRegs +[x25] ldr w26, [x0, #0x08] ;; size=8 bbWeight=4.00 PerfScore 14.00
-G_M18877_IG31: ; bbWeight=8, gcrefRegs=1D80001 {x0 x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref, isz
+G_M18877_IG30: ; bbWeight=8, gcrefRegs=1D80001 {x0 x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref, isz
stp xzr, x0, [fp, #0x38] // [V08 loc7], [V08 loc7+0x08] str wzr, [fp, #0x48] // [V08 loc7+0x10] strb wzr, [fp, #0x4C] // [V08 loc7+0x14] @@ -885,15 +876,15 @@ G_M18877_IG31: ; bbWeight=8, gcrefRegs=1D80001 {x0 x19 x20 x22 x23 x24}, ; gcrRegs -[x0] ldr w1, [fp, #0x58] // [V08 loc7+0x20] cmp w0, w1
- bhi G_M18877_IG50
+ bhi G_M18877_IG85
ldr x2, [fp, #0x50] // [V08 loc7+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 add x25, x2, x3 sub w26, w1, w0
- tbz w26, #31, G_M18877_IG33
+ tbz w26, #31, G_M18877_IG32
;; size=56 bbWeight=8 PerfScore 124.00
-G_M18877_IG32: ; bbWeight=4, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref
+G_M18877_IG31: ; bbWeight=4, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref
; byrRegs -[x2] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -910,11 +901,11 @@ G_M18877_IG32: ; bbWeight=4, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ; gcrRegs -[x1 x27] ; gcr arg pop 0 ;; size=40 bbWeight=4 PerfScore 32.00
-G_M18877_IG33: ; bbWeight=8, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref, isz
+G_M18877_IG32: ; bbWeight=8, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref, isz
cmp w26, #7
- blo G_M18877_IG52
+ blo G_M18877_IG88
;; size=8 bbWeight=8 PerfScore 12.00
-G_M18877_IG34: ; bbWeight=3.98, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref
+G_M18877_IG33: ; bbWeight=3.98, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=2200000 {x21 x25}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -926,7 +917,7 @@ G_M18877_IG34: ; bbWeight=3.98, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, add w0, w0, #7 str w0, [fp, #0x48] // [V08 loc7+0x10] ;; size=40 bbWeight=3.98 PerfScore 51.80
-G_M18877_IG35: ; bbWeight=8, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
+G_M18877_IG34: ; bbWeight=8, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x25] ldr w1, [x21, #0x10] add x0, fp, #56 // [V08 loc7] @@ -939,16 +930,16 @@ G_M18877_IG35: ; bbWeight=8, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ldr w0, [fp, #0x48] // [V08 loc7+0x10] ldr w1, [fp, #0x58] // [V08 loc7+0x20] cmp w0, w1
- bhi G_M18877_IG50
+ bhi G_M18877_IG85
ldr x2, [fp, #0x50] // [V08 loc7+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 add x25, x2, x3 ; byrRegs +[x25] ...

libraries.crossgen2.linux.arm64.checked.mch

-20 (-11.11%) : 264288.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,27 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T01] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T00] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T01] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T00] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T02] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V05 PSPSym [V05,T03] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V05 PSPSym [V05,T03] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V05 PSPSym]
+ str x2, [fp, #0x18] // [V05 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -52,12 +51,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=60 bbWeight=8 PerfScore 168.00
+ ;; size=56 bbWeight=8 PerfScore 164.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -68,35 +64,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=24 bbWeight=4 PerfScore 24.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=32 bbWeight=8 PerfScore 64.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 32, PerfScore 261.00, instruction count 45, allocated bytes for code 180 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 160, prolog size 28, PerfScore 271.00, instruction count 40, allocated bytes for code 160 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +98,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,31 +106,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-24 (-4.65%) : 37409.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
@@ -9,10 +9,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -20,14 +20,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x3 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x11 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x3 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x11 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -41,30 +41,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x11 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -80,27 +80,27 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 tmp64 [V71,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V72 PSPSym [V72,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V73 cse0 [V73,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V74 cse1 [V74,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 tmp64 [V71,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V72 PSPSym [V72,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V73 cse0 [V73,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse1 [V74,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V75 cse2 [V75,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V72 PSPSym]
+ str x2, [fp, #0x38] // [V72 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -115,9 +115,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -127,9 +127,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x11, xzr ; byrRegs +[x11] @@ -156,15 +156,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0801 {x0 x1 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=36 bbWeight=4 PerfScore 36.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -196,13 +196,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -218,9 +214,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=56 bbWeight=8 PerfScore 168.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -236,9 +232,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 blr x12 ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=40 bbWeight=1 PerfScore 9.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -249,31 +245,29 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] blr x1 ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ...

-24 (-2.86%) : 35537.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)

@@ -9,74 +9,75 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> x1 "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T22] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T24] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T26] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T24] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T23] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T28] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T26] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T25] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T25] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T21] ( 2, 4 ) int -> x2 "argument with side effect"
+;* V41 tmp32 [V41,T29] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T27] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T23] ( 2, 4 ) int -> x2 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V46 PSPSym [V46,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V47 cse0 [V47,T09] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V48 cse1 [V48,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
+; V46 PSPSym [V46,T30] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V47 cse0 [V47,T13] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V48 cse1 [V48,T09] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V49 cse2 [V49,T14] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V50 cse3 [V50,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - stp x23, x24, [sp, #0x58] - str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- add x3, sp, #112 - str x3, [fp, #0x30] // [V46 PSPSym] - str x0, [fp, #0x20] // [V00 arg0]
+ add x3, sp, #96 + str x3, [fp, #0x28] // [V46 PSPSym] + str x0, [fp, #0x18] // [V00 arg0]
; GC ptr vars +{V00} mov w19, w1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 8.00 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr @@ -96,7 +97,7 @@ G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 20.00 G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] ldr w1, [x0, #0x10] cmp w1, #0 @@ -118,7 +119,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 25.50 G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- str wzr, [fp, #0x2C] // [V03 loc0]
+ str wzr, [fp, #0x24] // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -127,7 +128,7 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
ldr w22, [x0, #0x10] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,11 +169,11 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=132 bbWeight=1 PerfScore 46.00 G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref str w22, [x21, #0x1C]
- str x21, [fp, #0x18] // [V04 loc1]
+ str x21, [fp, #0x10] // [V04 loc1]
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref - ldr x0, [fp, #0x20] // [V00 arg0]
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x22, x0 ; gcrRegs +[x22] @@ -232,12 +233,12 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=56 bbWeight=4 PerfScore 92.00 G_M12834_IG09: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG12
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG11
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG13
+ bhs G_M12834_IG12
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w11, [x1, #0x08] @@ -269,12 +270,8 @@ G_M12834_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG11 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov x2, x20 @@ -286,50 +283,48 @@ G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x20] ; gcr arg pop 0
- str w0, [fp, #0x2C] // [V03 loc0]
+ str w0, [fp, #0x24] // [V03 loc0]
;; size=32 bbWeight=8 PerfScore 60.00
-G_M12834_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V46 PSPSym] - bl G_M12834_IG18
+G_M12834_IG13: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x28] // [V46 PSPSym] + bl G_M12834_IG17
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG15: ; bbWeight=1, nogc, extend
+G_M12834_IG14: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0]
+ ldr w0, [fp, #0x24] // [V03 loc0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x68] - ldp x23, x24, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x70
+G_M12834_IG16: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M12834_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48] - add x3, fp, #112 - str x3, [sp, #0x10] - ;; size=28 bbWeight=1 PerfScore 6.50 -G_M12834_IG19: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + add x3, fp, #96 + str x3, [sp, #0x18] + ;; size=24 bbWeight=1 PerfScore 5.50 +G_M12834_IG18: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0] - cbnz w0, G_M12834_IG24 - ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr w0, [fp, #0x24] // [V03 loc0] + cbnz w0, G_M12834_IG23 + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] ...

+0 (0.00%) : 258545.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)

@@ -10,36 +10,36 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T26] ( 4, 4 ) int -> x24 single-def
-; V01 arg1 [V01,T14] ( 4, 35 ) int -> x19 single-def -; V02 arg2 [V02,T16] ( 3, 34 ) int -> x21 single-def -; V03 arg3 [V03 ] ( 5, 354 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def -; V04 arg4 [V04,T24] ( 3, 6 ) ref -> x23 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> -; V05 arg5 [V05,T15] ( 3, 34 ) ref -> x20 class-hnd single-def <ReadyToRunJittedMethods> -; V06 arg6 [V06,T23] ( 7, 8.50) int -> x22 single-def -; V07 loc0 [V07,T22] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
+; V01 arg1 [V01,T20] ( 4, 7 ) int -> x20 single-def +; V02 arg2 [V02,T23] ( 3, 6 ) int -> x23 single-def +; V03 arg3 [V03 ] ( 5, 326 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def +; V04 arg4 [V04,T21] ( 3, 6 ) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> +; V05 arg5 [V05,T22] ( 3, 6 ) ref -> x22 class-hnd single-def <ReadyToRunJittedMethods> +; V06 arg6 [V06,T19] ( 7, 8.50) int -> x19 single-def +; V07 loc0 [V07,T18] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
; V08 loc1 [V08,T07] ( 8, 125.50) ref -> x26 class-hnd exact single-def <<unknown class>>
-; V09 loc2 [V09 ] ( 4, 353 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op -; V10 loc3 [V10,T20] ( 3, 24 ) ubyte -> x22 -; V11 loc4 [V11,T21] ( 12, 21.04) int -> x27 -; V12 loc5 [V12,T10] ( 7, 134 ) int -> x24 -; V13 loc6 [V13,T17] ( 2, 36 ) ref -> x22 class-hnd <ProcessInfo> -; V14 loc7 [V14,T06] ( 4, 196 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> -;* V15 loc8 [V15,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V09 loc2 [V09 ] ( 4, 325 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op +; V10 loc3 [V10,T15] ( 3, 24 ) ubyte -> x19 +; V11 loc4 [V11,T17] ( 12, 21.04) int -> x27 +; V12 loc5 [V12,T16] ( 7, 22 ) int -> x24 +; V13 loc6 [V13,T24] ( 2, 8 ) ref -> x19 class-hnd <ProcessInfo> +; V14 loc7 [V14,T06] ( 4, 168 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> +;* V15 loc8 [V15,T14] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V16 loc9 [V16,T04] ( 5, 288 ) int -> x28 ; V17 loc10 [V17,T01] ( 5, 768 ) ref -> [fp+0x10] class-hnd spill-single-def <ParallelRunner+ProcessSlot> ;* V18 loc11 [V18,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V19 loc12 [V19,T12] ( 5, 72 ) int -> x24
+; V19 loc12 [V19,T11] ( 5, 72 ) int -> x24
; V20 loc13 [V20,T09] ( 4, 160 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T27] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
-; V23 tmp2 [V23,T18] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
+; V23 tmp2 [V23,T13] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
;* V24 tmp3 [V24,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp4 [V25,T00] ( 4,2048 ) ref -> x27 class-hnd "Inlining Arg" <ProcessRunner>
-;* V26 tmp5 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x19 class-hnd "Inlining Arg" <ProcessRunner>
+;* V26 tmp5 [V26,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x20 class-hnd "Inlining Arg" <ProcessRunner>
; V28 PSPSym [V28,T28] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T03] ( 3, 384 ) ref -> x0 "CSE - aggressive"
-; V30 cse1 [V30,T11] ( 3, 96 ) ref -> x0 "CSE - aggressive"
+; V30 cse1 [V30,T10] ( 3, 96 ) ref -> x0 "CSE - aggressive"
; V31 cse2 [V31,T08] ( 9, 161.04) int -> [fp+0x24] multi-def "CSE - aggressive" ; ; Lcl frame size = 48 @@ -57,15 +57,15 @@ G_M64833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x7, [fp, #0x38] // [V28 PSPSym] str w3, [fp, #0x34] // [V03 arg3] mov w24, w0
- mov w19, w1 - mov w21, w2 - mov x23, x4 - ; gcrRegs +[x23] - mov x20, x5 - ; gcrRegs +[x20] - mov w22, w6
+ mov w20, w1 + mov w23, w2 + mov x21, x4 + ; gcrRegs +[x21] + mov x22, x5 + ; gcrRegs +[x22] + mov w19, w6
;; size=68 bbWeight=1 PerfScore 13.00
-G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+G_M64833_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -84,8 +84,8 @@ G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 { str x25, [fp, #0x18] // [V07 loc0] ; GC ptr vars +{V07} ;; size=44 bbWeight=1 PerfScore 12.00
-G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw x0, w22
+G_M64833_IG03: ; bbWeight=1, gcVars=0000000000040000 {V07}, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=0000 {}, gcvars, byref, isz + sxtw x0, w19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -95,16 +95,16 @@ G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=290 mov x26, x0 ; gcrRegs +[x26] mov w27, wzr
- cmp w22, #0
+ cmp w19, #0
ble G_M64833_IG06 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w28, [x26, #0x08]
- cmp w28, w22
+ cmp w28, w19
blt G_M64833_IG14 ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -134,16 +134,16 @@ G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG05 ;; size=84 bbWeight=3.96 PerfScore 83.16
-G_M64833_IG06: ; bbWeight=1, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG06: ; bbWeight=1, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
str w24, [fp, #0x28] // [V09 loc2]
- cmp w24, w19
+ cmp w24, w20
bge G_M64833_IG19 ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref - mov x0, x23
+G_M64833_IG07: ; bbWeight=4, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref + mov x0, x21
; gcrRegs +[x0] mov w1, w24 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -152,12 +152,12 @@ G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRe ldr x2, [x11] blr x2 ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x19, x0 + ; gcrRegs +[x19]
mov x27, xzr ; gcrRegs +[x27] ;; size=36 bbWeight=4 PerfScore 40.00
-G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG08: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov w28, wzr ldr w0, [x26, #0x08] @@ -166,7 +166,7 @@ G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} cmp w3, #0 ble G_M64833_IG11 ;; size=24 bbWeight=32 PerfScore 208.00
-G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG09: ; bbWeight=64, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add x0, x26, #16 ; byrRegs +[x0] ldr x4, [x0, w28, UXTW #3] @@ -178,17 +178,17 @@ G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} ; byrRegs -[x0] cbnz x0, G_M64833_IG15 ;; size=20 bbWeight=64 PerfScore 544.00
-G_M64833_IG10: ; bbWeight=128, gcVars=0000000000400002 {V07 V17}, gcrefRegs=6D00010 {x4 x20 x22 x23 x25 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M64833_IG10: ; bbWeight=128, gcVars=0000000000040002 {V07 V17}, gcrefRegs=6680010 {x4 x19 x21 x22 x25 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x27] mov x27, x4 ; gcrRegs +[x27] ;; size=4 bbWeight=128 PerfScore 64.00
-G_M64833_IG11: ; bbWeight=32, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG11: ; bbWeight=32, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] ; GC ptr vars -{V17} cbnz x27, G_M64833_IG18 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG12: ; bbWeight=8, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -201,15 +201,15 @@ G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, b G_M64833_IG08 ;; size=28 bbWeight=8 PerfScore 56.00 G_M64833_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22-x23 x25-x27]
+ ; gcrRegs -[x19 x21-x22 x25-x27]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] blr x0 ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20 x23 x25-x26]
+G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x21-x22 x25-x26]
adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -241,12 +241,12 @@ G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG14 b G_M64833_IG06 ;; size=96 bbWeight=0.04 PerfScore 0.94
-G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRegs=ED00011 {x0 x4 x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x4 x22 x27]
+G_M64833_IG15: ; bbWeight=256, gcVars=0000000000040002 {V07 V17}, gcrefRegs=E680011 {x0 x4 x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0 x4 x19 x27]
; GC ptr vars +{V01 V17} add x2, fp, #52 // [V03 arg3] add x1, fp, #40 // [V09 loc2] @@ -283,7 +283,7 @@ G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRe ; gcrRegs +[x4] b G_M64833_IG10 ;; size=96 bbWeight=256 PerfScore 8064.00
-G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG16: ; bbWeight=64, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4 x28] +[x27] ; GC ptr vars -{V01 V17} add w28, w28, #1 @@ -292,33 +292,33 @@ G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED str w2, [fp, #0x24] // [V31 cse2] bgt G_M64833_IG09 ;; size=20 bbWeight=64 PerfScore 320.00
-G_M64833_IG17: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG17: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
b G_M64833_IG11 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG18: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG18: ; bbWeight=4, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add w3, w24, #1 mov x0, x27 ; gcrRegs +[x0] ldr w6, [fp, #0x34] // [V03 arg3]
- mov x1, x22
+ mov x1, x19
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x22
; gcrRegs +[x2]
- mov w4, w21
+ mov w4, w23
ldr w5, [fp, #0x28] // [V09 loc2] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x7, [x11] ...

+8 (+0.09%) : 37010.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

@@ -23,9 +23,9 @@ ;* V11 loc10 [V11 ] ( 0, 0 ) int -> zero-ref ptr ;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr <System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo> ; V13 loc12 [V13,T63] ( 5, 14 ) ref -> x24 class-hnd <System.String>
-; V14 loc13 [V14,T90] ( 3, 8 ) ubyte -> x25 -; V15 loc14 [V15,T82] ( 4, 10 ) ref -> x26 class-hnd <System.String> -; V16 loc15 [V16,T87] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
+; V14 loc13 [V14,T89] ( 3, 8 ) ubyte -> x25 +; V15 loc14 [V15,T81] ( 4, 10 ) ref -> x26 class-hnd <System.String> +; V16 loc15 [V16,T86] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
; V17 loc16 [V17,T148] ( 2, 4 ) int -> x24 ld-addr-op ;* V18 loc17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ptr <System.Collections.Generic.List`1[int]> ;* V19 loc18 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> @@ -34,7 +34,7 @@ ; V22 loc21 [V22,T23] ( 7, 28 ) ref -> x21 class-hnd <System.Type> ; V23 loc22 [V23,T58] ( 3, 16 ) ubyte -> x22 ; V24 loc23 [V24,T51] ( 7, 16 ) ref -> x23 class-hnd <System.String>
-; V25 loc24 [V25,T92] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
+; V25 loc24 [V25,T91] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
; V26 loc25 [V26,T59] ( 3, 16 ) ubyte -> x25 ; V27 loc26 [V27,T32] ( 3, 24 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]> ; V28 loc27 [V28,T06] ( 5, 68 ) int -> x26 @@ -50,22 +50,22 @@ ;* V38 loc37 [V38 ] ( 0, 0 ) long -> zero-ref ld-addr-op ptr ; V39 loc38 [V39 ] ( 2, 4 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op ptr ;* V40 loc39 [V40 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V41 loc40 [V41,T83] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> -; V42 loc41 [V42,T48] ( 5, 17 ) int -> x22
+; V41 loc40 [V41,T82] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V42 loc41 [V42,T49] ( 5, 17 ) int -> x22
; V43 loc42 [V43,T64] ( 5, 14 ) ref -> x23 class-hnd exact <System.String>
-; V44 loc43 [V44,T84] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
+; V44 loc43 [V44,T83] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
;# V45 OutArgs [V45 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V46 tmp1 [V46 ] ( 1, 1 ) struct (32) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V47 tmp2 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V48 tmp3 [V48,T106] ( 4, 6 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V49 tmp4 [V49 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V50 tmp5 [V50,T80] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V50 tmp5 [V50,T79] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
; V51 tmp6 [V51,T70] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V52 tmp7 [V52 ] ( 0, 0 ) ref -> zero-ref ptr
-; V53 tmp8 [V53,T38] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> -; V54 tmp9 [V54,T39] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V53 tmp8 [V53,T39] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> +; V54 tmp9 [V54,T40] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V55 tmp10 [V55 ] ( 0, 0 ) ref -> zero-ref ptr
-; V56 tmp11 [V56,T45] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V56 tmp11 [V56,T46] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V57 tmp12 [V57 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V58 tmp13 [V58,T107] ( 4, 6 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V59 tmp14 [V59 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -116,18 +116,18 @@ ; V104 tmp59 [V104,T126] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ulong]> ; V105 tmp60 [V105,T71] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V106 tmp61 [V106 ] ( 0, 0 ) ref -> zero-ref ptr
-; V107 tmp62 [V107,T40] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V107 tmp62 [V107,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
;* V108 tmp63 [V108 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[ushort]> ;* V109 tmp64 [V109 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V110 tmp65 [V110,T14] ( 8, 32 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V111 tmp66 [V111 ] ( 0, 0 ) ref -> zero-ref ptr ;* V112 tmp67 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "impAppendStmt" <System.Text.StringBuilder> ;* V113 tmp68 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp69 [V114,T46] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V114 tmp69 [V114,T47] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V115 tmp70 [V115 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V116 tmp71 [V116,T136] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V117 tmp72 [V117 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V118 tmp73 [V118,T88] ( 3, 8 ) ref -> x23
+; V118 tmp73 [V118,T87] ( 3, 8 ) ref -> x23
; V119 tmp74 [V119,T11] ( 8, 40 ) ref -> x24 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V120 tmp75 [V120 ] ( 0, 0 ) ref -> zero-ref ptr ;* V121 tmp76 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "non-inline candidate call" <System.Text.StringBuilder> @@ -156,10 +156,10 @@ ; V144 tmp99 [V144,T127] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]> ; V145 tmp100 [V145,T73] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V146 tmp101 [V146 ] ( 0, 0 ) ref -> zero-ref ptr
-; V147 tmp102 [V147,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V147 tmp102 [V147,T42] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
; V148 tmp103 [V148,T53] ( 4, 16 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V149 tmp104 [V149 ] ( 0, 0 ) ref -> zero-ref ptr
-; V150 tmp105 [V150,T47] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V150 tmp105 [V150,T48] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V151 tmp106 [V151 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V152 tmp107 [V152,T139] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V153 tmp108 [V153 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -175,8 +175,8 @@ ;* V163 tmp118 [V163 ] ( 0, 0 ) ref -> zero-ref ptr ;* V164 tmp119 [V164 ] ( 0, 0 ) ref -> zero-ref ;* V165 tmp120 [V165 ] ( 0, 0 ) ref -> zero-ref ptr
-; V166 tmp121 [V166,T81] ( 5, 10 ) ref -> x2 -; V167 tmp122 [V167,T42] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V166 tmp121 [V166,T80] ( 5, 10 ) ref -> x2 +; V167 tmp122 [V167,T43] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V168 tmp123 [V168 ] ( 0, 0 ) ref -> zero-ref ptr ; V169 tmp124 [V169,T74] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <<unknown class>> ; V170 tmp125 [V170,T75] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> @@ -186,7 +186,7 @@ ; V174 tmp129 [V174,T141] ( 4, 4 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V175 tmp130 [V175,T152] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V176 tmp131 [V176,T164] ( 2, 2 ) struct (40) [fp+0x60] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]>
-; V177 tmp132 [V177,T85] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V177 tmp132 [V177,T84] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V178 tmp133 [V178,T66] ( 4, 12 ) int -> x15 "Inline stloc first use temp" ; V179 tmp134 [V179,T165] ( 2, 2 ) struct (32) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]]> ;* V180 tmp135 [V180 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> @@ -195,7 +195,7 @@ ;* V183 tmp138 [V183 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V184 tmp139 [V184,T28] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V185 tmp140 [V185,T55] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V186 tmp141 [V186,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V186 tmp141 [V186,T96] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V187 tmp142 [V187 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V188 tmp143 [V188 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]> ;* V189 tmp144 [V189 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Type]> @@ -229,7 +229,7 @@ ;* V217 tmp172 [V217 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V218 tmp173 [V218,T29] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V219 tmp174 [V219,T57] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V220 tmp175 [V220,T98] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V220 tmp175 [V220,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V221 tmp176 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V222 tmp177 [V222 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ulong]> ; V223 tmp178 [V223,T30] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> @@ -239,10 +239,10 @@ ;* V227 tmp182 [V227 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V228 tmp183 [V228 ] ( 0, 0 ) int -> zero-ref ;* V229 tmp184 [V229 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V230 tmp185 [V230,T99] ( 2, 8 ) long -> x0 "Inlining Arg"
+; V230 tmp185 [V230,T98] ( 2, 8 ) long -> x0 "Inlining Arg"
;* V231 tmp186 [V231 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V232 tmp187 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V233 tmp188 [V233,T43] ( 5, 20 ) int -> x24 "Inlining Arg"
+; V233 tmp188 [V233,T44] ( 5, 20 ) int -> x24 "Inlining Arg"
;* V234 tmp189 [V234 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V235 tmp190 [V235 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V236 tmp191 [V236 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -255,7 +255,7 @@ ;* V243 tmp198 [V243 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V244 tmp199 [V244 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V245 tmp200 [V245 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V246 tmp201 [V246,T100] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V246 tmp201 [V246,T99] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V247 tmp202 [V247 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[ulong]> ;* V248 tmp203 [V248 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> ; V249 tmp204 [V249,T122] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -265,8 +265,8 @@ ;* V253 tmp208 [V253,T179] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V254 tmp209 [V254 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V255 tmp210 [V255 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V256 tmp211 [V256,T89] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP -; V257 tmp212 [V257,T91] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
+; V256 tmp211 [V256,T88] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP +; V257 tmp212 [V257,T90] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
; V258 tmp213 [V258,T27] ( 7, 24 ) ref -> x22 "field V10.value (fldOffset=0x0)" P-INDEP ; V259 tmp214 [V259,T123] ( 2, 6 ) int -> x23 "field V10.key (fldOffset=0x8)" P-INDEP ; V260 tmp215 [V260,T65] ( 4, 12.50) ref -> x21 single-def "field V19._list (fldOffset=0x0)" P-INDEP @@ -279,9 +279,9 @@ ; V267 tmp222 [V267 ] ( 3, 5 ) int -> [fp+0xAC] do-not-enreg[X] addr-exposed ptr "field V21._version (fldOffset=0x14)" P-DEP ;* V268 tmp223 [V268 ] ( 0, 0 ) byref -> zero-ref ptr "field V33._reference (fldOffset=0x0)" P-INDEP ;* V269 tmp224 [V269 ] ( 0, 0 ) int -> zero-ref ptr "field V33._length (fldOffset=0x8)" P-INDEP
-; V270 tmp225 [V270,T49] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
+; V270 tmp225 [V270,T38] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
; V271 tmp226 [V271,T24] ( 6, 21 ) int -> x23 "field V34._index (fldOffset=0x8)" P-INDEP
-; V272 tmp227 [V272,T86] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
+; V272 tmp227 [V272,T85] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
; V273 tmp228 [V273,T68] ( 3, 8 ) int -> x24 "field V34._current (fldOffset=0x10)" P-INDEP ; V274 tmp229 [V274,T50] ( 4, 12.50) ref -> x21 single-def "field V37._list (fldOffset=0x0)" P-INDEP ; V275 tmp230 [V275,T69] ( 3, 8 ) long -> x24 "field V37._current (fldOffset=0x8)" P-INDEP @@ -360,7 +360,7 @@ ; V348 tmp303 [V348,T178] ( 2, 1 ) int -> x1 "V179.[012..016)" ; V349 tmp304 [V349,T77] ( 3, 12 ) byref -> x0 "BlockOp address local" ; V350 tmp305 [V350,T160] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V351 tmp306 [V351,T93] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V351 tmp306 [V351,T92] ( 2, 8 ) ref -> x0 "argument with side effect"
; V352 tmp307 [V352,T161] ( 2, 2 ) ref -> x1 single-def "argument with side effect" ; V353 tmp308 [V353,T33] ( 3, 24 ) ref -> x1 "arr expr" ; V354 tmp309 [V354,T62] ( 2, 16 ) ref -> x1 "argument with side effect" @@ -369,9 +369,9 @@ ; V357 tmp312 [V357,T18] ( 2, 32 ) ref -> x4 "argument with side effect" ; V358 tmp313 [V358,T19] ( 2, 32 ) ref -> [fp+0x18] spill-single-def ptr "argument with side effect" ; V359 tmp314 [V359,T20] ( 2, 32 ) ref -> x25 "argument with side effect"
-; V360 tmp315 [V360,T94] ( 2, 8 ) ref -> x0 "argument with side effect" -; V361 tmp316 [V361,T95] ( 2, 8 ) ref -> x3 "argument with side effect" -; V362 tmp317 [V362,T96] ( 2, 8 ) ref -> x22 "argument with side effect"
+; V360 tmp315 [V360,T93] ( 2, 8 ) ref -> x0 "argument with side effect" +; V361 tmp316 [V361,T94] ( 2, 8 ) ref -> x3 "argument with side effect" +; V362 tmp317 [V362,T95] ( 2, 8 ) ref -> x22 "argument with side effect"
; V363 tmp318 [V363,T146] ( 2, 4 ) ref -> x1 single-def "argument with side effect" ; V364 tmp319 [V364,T34] ( 3, 24 ) ref -> x1 "arr expr" ; V365 tmp320 [V365,T162] ( 2, 2 ) ref -> x1 single-def "argument with side effect" @@ -383,9 +383,9 @@ ; V371 cse1 [V371,T04] ( 18, 72 ) ref -> x0 multi-def "CSE - aggressive" ; V372 cse2 [V372,T130] ( 3, 5 ) long -> x22 "CSE - conservative" ; V373 cse3 [V373,T131] ( 3, 5 ) long -> x21 "CSE - conservative"
-; V374 cse4 [V374,T44] ( 3, 20 ) long -> x1 "CSE - moderate" -; V375 cse5 [V375,T78] ( 2, 8 ) int -> x1 "CSE - conservative" -; V376 cse6 [V376,T79] ( 2, 8 ) int -> x1 "CSE - conservative"
+; V374 cse4 [V374,T45] ( 3, 20 ) long -> x1 "CSE - moderate" +; V375 cse5 [V375,T100] ( 2, 8 ) int -> x1 "CSE - conservative" +; V376 cse6 [V376,T78] ( 2, 8 ) int -> x1 "CSE - conservative"
; V377 cse7 [V377,T36] ( 3, 24 ) int -> x27 "CSE - moderate" ; V378 cse8 [V378,T00] (149,220 ) long -> [fp+0x38] multi-def "CSE - aggressive" ; @@ -1802,6 +1802,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 str x0, [fp, #0x20] // [V356 tmp311] @@ -1889,7 +1890,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by blr x3 ; gcrRegs -[x0 x25] ; byrRegs -[x1]
- ;; size=260 bbWeight=8 PerfScore 684.00
+ ;; size=264 bbWeight=8 PerfScore 708.00
G_M21650_IG68: ; bbWeight=8, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=100000 {x20}, byref mov w25, #1 ;; size=4 bbWeight=8 PerfScore 4.00 @@ -1930,6 +1931,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 ; gcrRegs -[x21] @@ -2000,7 +2002,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 blr x3 ; gcrRegs -[x0 x21] ; byrRegs -[x1]
- ;; size=212 bbWeight=2 PerfScore 144.00
+ ;; size=216 bbWeight=2 PerfScore 150.00
G_M21650_IG73: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref, isz ldr x21, [x19, #0x38] ; gcrRegs +[x21] @@ -3761,7 +3763,7 @@ G_M21650_IG150: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8476, prolog size 80, PerfScore 5811.50, instruction count 2119, allocated bytes for code 8476 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
+; Total bytes of code 8484, prolog size 80, PerfScore 5841.50, instruction count 2121, allocated bytes for code 8484 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -3772,7 +3774,7 @@ Unwind Info: E bit : 0 ...

+12 (+0.54%) : 224464.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -9,54 +9,55 @@ ; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T15] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T16] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T07] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T13] ( 6, 19.50) int -> x22 single-def -; V03 arg3 [V03,T10] ( 8, 29.50) ubyte -> x20 single-def -; V04 arg4 [V04,T30] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T12] ( 4, 20 ) int -> x21 single-def -; V06 arg6 [V06,T31] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T32] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> -; V08 arg8 [V08,T40] ( 1, 1 ) ubyte -> [fp+0xD0] single-def -; V09 arg9 [V09,T16] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> -; V10 arg10 [V10,T33] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T28] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T14] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T27] ( 5, 5.50) ubyte -> [fp+0x7C] -; V14 loc3 [V14,T29] ( 3, 5 ) int -> x26 single-def
+; V02 arg2 [V02,T14] ( 6, 19.50) int -> x22 single-def +; V03 arg3 [V03,T13] ( 7, 21.50) ubyte -> x21 single-def +; V04 arg4 [V04,T31] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T12] ( 4, 20 ) int -> x20 single-def +; V06 arg6 [V06,T32] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T33] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> +; V08 arg8 [V08,T41] ( 1, 1 ) ubyte -> [fp+0xD0] single-def +; V09 arg9 [V09,T17] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> +; V10 arg10 [V10,T34] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T29] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T15] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T28] ( 5, 5.50) ubyte -> [fp+0x7C] +; V14 loc3 [V14,T30] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T11] ( 6, 24.50) int -> x27
-; V16 loc5 [V16,T02] ( 15, 82 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V16 loc5 [V16,T02] ( 15, 74 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V17 loc6 [V17,T08] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> ; V18 loc7 [V18,T09] ( 9, 32 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> ; V19 loc8 [V19,T00] ( 8, 84 ) int -> [fp+0x78] ; V20 loc9 [V20,T01] ( 8, 84 ) int -> [fp+0x74]
-;* V21 loc10 [V21,T37] ( 0, 0 ) int -> zero-ref -; V22 loc11 [V22,T06] ( 4, 50 ) int -> [fp+0x70]
+;* V21 loc10 [V21,T38] ( 0, 0 ) int -> zero-ref +; V22 loc11 [V22,T05] ( 4, 50 ) int -> [fp+0x70]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T17] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V28 tmp2 [V28,T19] ( 8, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T18] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V28 tmp2 [V28,T20] ( 8, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V29 tmp3 [V29 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V30 tmp4 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V31 tmp5 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V32 tmp6 [V32,T18] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V33 tmp7 [V33,T38] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V34 tmp8 [V34,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V35 tmp9 [V35,T34] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> -; V36 tmp10 [V36,T25] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V37 tmp11 [V37,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V38 tmp12 [V38,T36] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> -; V39 tmp13 [V39,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V32 tmp6 [V32,T19] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V33 tmp7 [V33,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V34 tmp8 [V34,T40] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V35 tmp9 [V35,T35] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> +; V36 tmp10 [V36,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V37 tmp11 [V37,T27] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V38 tmp12 [V38,T37] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> +; V39 tmp13 [V39,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V40 tmp14 [V40,T03] ( 2, 64 ) ref -> x1 "argument with side effect" ; V41 tmp15 [V41,T04] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V42 tmp16 [V42,T23] ( 2, 8 ) int -> x3 "argument with side effect" -; V43 tmp17 [V43,T24] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" -; V44 tmp18 [V44,T20] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V45 tmp19 [V45,T21] ( 2, 8 ) ref -> x0 "argument with side effect" -; V46 tmp20 [V46,T22] ( 2, 8 ) ref -> x0 "argument with side effect" -; V47 cse0 [V47,T05] ( 5, 52 ) int -> x4 multi-def "CSE - aggressive"
+; V42 tmp16 [V42,T24] ( 2, 8 ) int -> x3 "argument with side effect" +; V43 tmp17 [V43,T25] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" +; V44 tmp18 [V44,T21] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" +; V45 tmp19 [V45,T22] ( 2, 8 ) ref -> x0 "argument with side effect" +; V46 tmp20 [V46,T23] ( 2, 8 ) ref -> x0 "argument with side effect" +; V47 cse0 [V47,T10] ( 5, 28 ) int -> x4 multi-def "CSE - aggressive" +; V48 cse1 [V48,T06] ( 5, 44 ) int -> [fp+0x50] multi-def "CSE - aggressive"
; TEMP_01 ref -> [fp+0x18] ; ; Lcl frame size = 128 @@ -78,10 +79,10 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] mov w22, w2
- mov w20, w3
+ mov w21, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w21, w5
+ mov w20, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -96,7 +97,7 @@ G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 tst w0, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000020000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -167,7 +168,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x19] ; byrRegs -[x14] str w22, [x1, #0x48]
- strb w20, [x1, #0x4C]
+ strb w21, [x1, #0x4C]
mov w14, #1 strb w14, [x1, #0x4F] add x14, x1, #8 @@ -229,7 +230,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=11080000 {x19 x24 x28}, byrefRe ; GC ptr vars +{V11} mov x19, x25 ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000010004000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000020008000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x23, G_M30168_IG06 mov x0, x23 @@ -306,7 +307,7 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ; GC ptr vars +{V16} cbz x1, G_M30168_IG35 ;; size=36 bbWeight=4 PerfScore 34.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000000010004004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000000020008004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x2, [x1, #0x18] ; gcrRegs +[x2] @@ -349,7 +350,7 @@ G_M30168_IG10: ; bbWeight=2, gcrefRegs=11880100 {x8 x19 x23 x24 x28}, byr mov w13, wzr mov w14, #1 str w14, [fp, #0x70] // [V22 loc11]
- cmp w21, #0
+ cmp w20, #0
ble G_M30168_IG26 ;; size=40 bbWeight=2 PerfScore 21.00 G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz @@ -382,7 +383,9 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x6, fp, #104 // [V23 loc12] str x6, [sp, #0x08] // [V26 OutArgs+0x08] ldrb w6, [x9, #0x4C]
- uxtb w3, w20
+ uxtb w15, w21 + str w15, [fp, #0x50] // [V48 cse1] + mov w3, w15
add x7, fp, #96 // [V24 loc13] ldr x2, [fp, #0x40] // [V12 loc1] ; gcrRegs +[x2] @@ -394,8 +397,8 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x11, x11, [LOW RELOC #0xD1FFAB1E] mov x0, xzr ; gcrRegs +[x0]
- ldr x15, [x11] - blr x15
+ ldr xip0, [x11] + blr xip0
; gcrRegs -[x0-x2 x4-x5 x8-x9 x12] ldrb w0, [fp, #0x68] // [V23 loc12] ldrb w11, [fp, #0x60] // [V24 loc13] @@ -406,11 +409,11 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, ldr w1, [fp, #0x78] // [V19 loc8] cmp w1, w22 bne G_M30168_IG13
- ;; size=160 bbWeight=16 PerfScore 808.00
+ ;; size=168 bbWeight=16 PerfScore 832.00
G_M30168_IG12: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- tst w20, #255 - bne G_M30168_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00
+ ldr w2, [fp, #0x50] // [V48 cse1] + cbnz w2, G_M30168_IG14 + ;; size=8 bbWeight=8 PerfScore 24.00
G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz adds w1, w1, #1 bvs G_M30168_IG43 @@ -418,48 +421,48 @@ G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ldr w1, [fp, #0x78] // [V19 loc8] ;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG14: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2] - ldr w0, [x2, #0x48] - ldr w3, [fp, #0x74] // [V20 loc9] - cmp w3, w0
+ ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3] + ldr w0, [x3, #0x48] + ldr w4, [fp, #0x74] // [V20 loc9] + cmp w4, w0
bne G_M30168_IG17 ;; size=20 bbWeight=16 PerfScore 136.00
-G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - ldrb w0, [x2, #0x4C]
+G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x3, #0x4C]
cbnz w0, G_M30168_IG18 ;; size=8 bbWeight=8 PerfScore 32.00 G_M30168_IG16: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] - ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2]
+ ; gcrRegs -[x3] + ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3]
;; size=4 bbWeight=4 PerfScore 8.00
-G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - adds w3, w3, #1
+G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + adds w4, w4, #1
bvs G_M30168_IG43
- str w3, [fp, #0x74] // [V20 loc9] - ldr w3, [fp, #0x74] // [V20 loc9]
+ str w4, [fp, #0x74] // [V20 loc9] + ldr w4, [fp, #0x74] // [V20 loc9]
;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG18: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ ; gcrRegs -[x3]
ldr w0, [fp, #0x70] // [V22 loc11] adds w0, w0, #1 bvs G_M30168_IG43
- cmp w0, w21
+ cmp w0, w20
str w0, [fp, #0x70] // [V22 loc11] ble G_M30168_IG25 ;; size=24 bbWeight=16 PerfScore 96.00
-G_M30168_IG19: ; bbWeight=8, gcVars=0000000010004204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M30168_IG19: ; bbWeight=8, gcVars=0000000020008204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- stp w3, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
+ stp w4, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
;; size=4 bbWeight=8 PerfScore 8.00 G_M30168_IG20: ; bbWeight=2, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x4, [x11] - blr x4
+ ldr x2, [x11]
...

libraries.pmi.linux.arm64.checked.mch

-20 (-11.90%) : 261744.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T02] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> x0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -18,22 +18,21 @@ ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP
-; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V10 PSPSym]
+ str x2, [fp, #0x18] // [V10 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref str xzr, [x19, #0x08] ldr x0, [x20, #0x18] @@ -49,12 +48,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=44 bbWeight=8 PerfScore 112.00
+ ;; size=40 bbWeight=8 PerfScore 108.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -66,35 +62,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=36 bbWeight=8 PerfScore 68.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 32, PerfScore 207.00, instruction count 42, allocated bytes for code 168 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 219.00, instruction count 37, allocated bytes for code 148 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -113,31 +104,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-40 (-7.94%) : 198276.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
@@ -8,10 +8,10 @@ ; 4 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 10, 64.75) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
+; V00 arg0 [V00,T03] ( 9, 63.75) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
; V01 arg1 [V01,T11] ( 4, 18 ) byref -> x20 single-def
-; V02 arg2 [V02,T14] ( 3, 10 ) ref -> x21 class-hnd single-def <System.Object[]> -; V03 arg3 [V03,T15] ( 3, 10 ) ref -> x22 class-hnd single-def <System.String[]>
+; V02 arg2 [V02,T15] ( 3, 10 ) ref -> x21 class-hnd single-def <System.Object[]> +; V03 arg3 [V03,T16] ( 3, 10 ) ref -> x22 class-hnd single-def <System.String[]>
; V04 loc0 [V04,T22] ( 3, 2 ) ref -> x0 class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> ;* V05 loc1 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ; V06 loc2 [V06,T04] ( 10, 54.50) ref -> x26 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method> @@ -19,46 +19,47 @@ ;* V08 loc4 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method> ; V10 loc6 [V10,T08] ( 3, 24 ) ref -> x0 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V11 loc7 [V11 ] ( 2, 16 ) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 2, 16 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V14 tmp2 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V15 tmp3 [V15,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-;* V17 tmp5 [V17,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp5 [V17,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V19 tmp7 [V19,T21] ( 2, 3 ) ref -> x24 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V20 tmp8 [V20,T16] ( 2, 5.35) ref -> x26 "field V05._current (fldOffset=0x8)" P-INDEP -; V21 tmp9 [V21,T09] ( 6, 18.39) int -> x25 "field V05._index (fldOffset=0x10)" P-INDEP -; V22 tmp10 [V22,T17] ( 2, 9 ) int -> x23 single-def "field V05._version (fldOffset=0x14)" P-INDEP
+;* V19 tmp7 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V20 tmp8 [V20,T17] ( 2, 5.35) ref -> x26 "field V05._current (fldOffset=0x8)" P-INDEP +; V21 tmp9 [V21,T09] ( 6, 18.39) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP +; V22 tmp10 [V22,T18] ( 2, 9 ) int -> x23 single-def "field V05._version (fldOffset=0x14)" P-INDEP
;* V23 tmp11 [V23,T25] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
-; V24 tmp12 [V24,T00] ( 9, 77.39) ref -> [fp+0x18] "field V08._current (fldOffset=0x8)" P-INDEP -; V25 tmp13 [V25,T01] ( 6, 71.57) int -> [fp+0x24] "field V08._index (fldOffset=0x10)" P-INDEP -; V26 tmp14 [V26,T12] ( 2, 18 ) int -> x28 "field V08._version (fldOffset=0x14)" P-INDEP
+; V24 tmp12 [V24,T00] ( 9, 77.39) ref -> [fp+0x10] "field V08._current (fldOffset=0x8)" P-INDEP +; V25 tmp13 [V25,T01] ( 6, 71.57) int -> x28 "field V08._index (fldOffset=0x10)" P-INDEP +; V26 tmp14 [V26,T13] ( 2, 18 ) int -> x25 "field V08._version (fldOffset=0x14)" P-INDEP
; V27 tmp15 [V27,T23] ( 2, 2 ) ref -> x5 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V29 tmp17 [V29,T27] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP
+;* V29 tmp17 [V29,T28] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP
; V30 tmp18 [V30,T24] ( 2, 2 ) int -> x23 single-def "field V13._version (fldOffset=0x14)" P-INDEP
-; V31 tmp19 [V31,T19] ( 2, 4 ) ref -> x5 "field V14._list (fldOffset=0x0)" P-INDEP
+;* V31 tmp19 [V31,T26] ( 0, 0 ) ref -> zero-ref "field V14._list (fldOffset=0x0)" P-INDEP
;* V32 tmp20 [V32 ] ( 0, 0 ) ref -> zero-ref "field V14._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp21 [V33,T26] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP -; V34 tmp22 [V34,T20] ( 2, 4 ) int -> x28 "field V14._version (fldOffset=0x14)" P-INDEP
+;* V33 tmp21 [V33,T27] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP +; V34 tmp22 [V34,T20] ( 2, 4 ) int -> x25 "field V14._version (fldOffset=0x14)" P-INDEP
; V35 tmp23 [V35,T10] ( 3, 20.09) ref -> x5 "arr expr" ; V36 tmp24 [V36,T02] ( 3, 80.35) ref -> x5 "arr expr" ; V37 cse0 [V37,T05] ( 2, 32.01) int -> x5 "CSE - aggressive"
-; V38 cse1 [V38,T13] ( 2, 8.00) int -> x5 "CSE - aggressive"
+; V38 cse1 [V38,T14] ( 2, 8.00) int -> x5 "CSE - aggressive" +; V39 cse2 [V39,T12] ( 3, 18 ) int -> x25 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M47424_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp
- str xzr, [fp, #0x28] // [V11 loc7]
+ str xzr, [fp, #0x18] // [V11 loc7]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 @@ -72,55 +73,46 @@ G_M47424_IG02: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=10 mov x5, x19 ; gcrRegs +[x5] ldr w23, [x5, #0x14]
- mov x24, x19 - ; gcrRegs +[x24] - mov w25, wzr - b G_M47424_IG14 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M47424_IG03: ; bbWeight=2, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz
+ mov w24, wzr + b G_M47424_IG12 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M47424_IG03: ; bbWeight=2, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x5] +[x26] ldrb w5, [x26, #0x4D]
- cbnz w5, G_M47424_IG14
+ cbnz w5, G_M47424_IG12
ldrb w5, [x26, #0x4E]
- cbnz w5, G_M47424_IG14
+ cbnz w5, G_M47424_IG12
mov w27, #1
- mov x5, x24 - ; gcrRegs +[x5] - ldr w28, [x5, #0x14] - mov w7, wzr - b G_M47424_IG10 - ;; size=36 bbWeight=2 PerfScore 27.00 -G_M47424_IG04: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x5] +[x8] - ldrb w5, [x8, #0x4D] - ldr w7, [fp, #0x24] // [V25 tmp13] - cbnz w5, G_M47424_IG10 - ldrb w5, [x8, #0x4E] - cbnz w5, G_M47424_IG10 - ldr x5, [x8, #0x08]
+ mov w28, wzr + b G_M47424_IG08 + ;; size=28 bbWeight=2 PerfScore 20.00 +G_M47424_IG04: ; bbWeight=8, gcrefRegs=4680080 {x7 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs +[x7] + ldrb w5, [x7, #0x4D] + cbnz w5, G_M47424_IG08 + ldrb w5, [x7, #0x4E] + cbnz w5, G_M47424_IG08 + ldr x5, [x7, #0x08]
; gcrRegs +[x5] ldr x0, [x26, #0x08] ; gcrRegs +[x0] cmp x5, x0
- bne G_M47424_IG07 - ldrb w5, [x8, #0x4C]
+ bne G_M47424_IG05 + ldrb w5, [x7, #0x4C]
; gcrRegs -[x5] ldrb w0, [x26, #0x4C] ; gcrRegs -[x0] cmp w5, w0
- beq G_M47424_IG10 - ;; size=52 bbWeight=8 PerfScore 200.00 -G_M47424_IG05: ; bbWeight=4, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref - str w7, [fp, #0x24] // [V25 tmp13] - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M47424_IG06: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz - str wzr, [fp, #0x28] // [V11 loc7] - add x5, fp, #40 // [V11 loc7]
+ beq G_M47424_IG08 + ;; size=48 bbWeight=8 PerfScore 184.00 +G_M47424_IG05: ; bbWeight=8, gcrefRegs=4680080 {x7 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + str wzr, [fp, #0x18] // [V11 loc7] + add x5, fp, #24 // [V11 loc7]
mov x0, x26 ; gcrRegs +[x0]
- str x8, [fp, #0x18] // [V24 tmp12]
+ str x7, [fp, #0x10] // [V24 tmp12]
; GC ptr vars +{V24}
- mov x1, x8
+ mov x1, x7
; gcrRegs +[x1] mov x2, x21 ; gcrRegs +[x2] @@ -128,140 +120,131 @@ G_M47424_IG06: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, ; gcrRegs +[x3] mov w4, wzr mov w6, #1
- movz x9, #0xD1FFAB1E // code for <unknown method> - movk x9, #0xD1FFAB1E LSL #16 - movk x9, #0xD1FFAB1E LSL #32 - ldr x9, [x9] - blr x9 - ; gcrRegs -[x1-x3 x8]
+ movz x8, #0xD1FFAB1E // code for <unknown method> + movk x8, #0xD1FFAB1E LSL #16 + movk x8, #0xD1FFAB1E LSL #32 + ldr x8, [x8] + blr x8 + ; gcrRegs -[x1-x3 x7]
; gcr arg pop 0 cmp x0, x26
- bne G_M47424_IG08 - ldr x8, [fp, #0x18] // [V24 tmp12] - ; gcrRegs +[x8] - ldrb w0, [x8, #0x50]
+ bne G_M47424_IG06 + ldr x7, [fp, #0x10] // [V24 tmp12] + ; gcrRegs +[x7] + ldrb w0, [x7, #0x50]
; gcrRegs -[x0]
- ldr w7, [fp, #0x24] // [V25 tmp13] - cbnz w0, G_M47424_IG10
+ cbnz w0, G_M47424_IG08
mov w0, #1
- strb w0, [x8, #0x50] - b G_M47424_IG09 - ;; size=92 bbWeight=8 PerfScore 184.00 -G_M47424_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref - ; GC ptr vars -{V24} - str w7, [fp, #0x24] // [V25 tmp13] - b G_M47424_IG06 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M47424_IG08: ; bbWeight=8, gcVars=0000000000000001 {V24}, gcrefRegs=5680001 {x0 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs -[x8] +[x0] - ; GC ptr vars +{V00 V24}
+ strb w0, [x7, #0x50] + b G_M47424_IG07 + ;; size=88 bbWeight=8 PerfScore 168.00 +G_M47424_IG06: ; bbWeight=8, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs -[x7] +[x0]
mov w27, wzr
- ldr x8, [fp, #0x18] // [V24 tmp12] - ; gcrRegs +[x8] - cmp x0, x8 - ldr w7, [fp, #0x24] // [V25 tmp13] - bne G_M47424_IG10
+ ldr x7, [fp, #0x10] // [V24 tmp12] + ; gcrRegs +[x7] + cmp x0, x7 + bne G_M47424_IG08
ldrb w0, [x26, #0x50] ; gcrRegs -[x0]
- cbnz w0, G_M47424_IG10
+ cbnz w0, G_M47424_IG08
mov w0, #1 strb w0, [x26, #0x50]
- ;; size=36 bbWeight=8 PerfScore 92.00 -G_M47424_IG09: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs -[x8] - ; GC ptr vars -{V00 V24}
+ ;; size=32 bbWeight=8 PerfScore 76.00 +G_M47424_IG07: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz + ; gcrRegs -[x7] + ; GC ptr vars -{V24}
ldr w0, [x20] subs w0, w0, #1
- bvs G_M47424_IG20
+ bvs G_M47424_IG18
str w0, [x20] ;; size=16 bbWeight=8 PerfScore 44.00
-G_M47424_IG10: ; bbWeight=16, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz
+G_M47424_IG08: ; bbWeight=16, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz
ldr w5, [x19, #0x14]
- cmp w28, w5 - bne G_M47424_IG22 - ;; size=12 bbWeight=16 PerfScore 72.00 -G_M47424_IG11: ; bbWeight=16.01, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz - ldr w5, [x19, #0x10]
...

-16 (-4.12%) : 240700.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)

@@ -8,30 +8,31 @@ ; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T06] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T07] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> -; V03 loc0 [V03,T05] ( 4, 8.70) ubyte -> x22 -; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T07] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T08] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> +; V03 loc0 [V03,T06] ( 4, 8.70) ubyte -> x22 +; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T02] ( 4, 16.35) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP +; V14 tmp7 [V14,T04] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 18.39) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 9.65) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T13] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V21 tmp14 [V21,T02] ( 3, 20.09) ref -> x0 "arr expr" -; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T15] ( 3, 1.50) ref -> x1 "CSE - moderate"
+;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V21 tmp14 [V21,T01] ( 3, 20.09) ref -> x0 "arr expr" +; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T03] ( 2, 8.00) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -58,7 +59,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 str x0, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc2] cbnz w1, G_M52679_IG09 add x1, fp, #32 // [V05 loc2] @@ -90,19 +91,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14] cmp w23, w0
- bne G_M52679_IG10
+ bne G_M52679_IG11
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG14
+ bhs G_M52679_IG12
;; size=12 bbWeight=4.00 PerfScore 18.01 G_M52679_IG08: ; bbWeight=3.35, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG12
+ bhs G_M52679_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,21 +136,11 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG10: ; bbWeight=0.65, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w23, w0 - bne G_M52679_IG13 - ;; size=12 bbWeight=0.65 PerfScore 2.93 -G_M52679_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M52679_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -158,11 +149,11 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG16
+ cbz w0, G_M52679_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -170,18 +161,18 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V14}
+G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V15}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -189,17 +180,17 @@ G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG19: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG20
+ cbz w0, G_M52679_IG18
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04 V15}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -207,7 +198,7 @@ G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 44, PerfScore 168.65, instruction count 97, allocated bytes for code 388 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 161.72, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -218,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -255,4 +246,4 @@ Unwind Info: *************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)
+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
+4 (+0.35%) : 180043.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
@@ -8,13 +8,13 @@ ; 3 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 5, 2 ) ref -> x21 class-hnd single-def <System.Reflection.MethodInfo>
+; V00 arg0 [V00,T20] ( 5, 2 ) ref -> x21 class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T11] ( 7, 8.21) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> ; V02 arg2 [V02,T04] ( 9, 27.26) byref -> x19 single-def
-; V03 arg3 [V03,T22] ( 4, 2 ) ref -> x22 class-hnd single-def <System.String>
+; V03 arg3 [V03,T21] ( 4, 2 ) ref -> x22 class-hnd single-def <System.String>
; V04 loc0 [V04,T05] ( 8, 29.22) ref -> x22 class-hnd <<unknown class>> ; V05 loc1 [V05,T02] ( 14, 50 ) int -> x23
-; V06 loc2 [V06,T19] ( 3, 4.96) int -> x25
+; V06 loc2 [V06,T18] ( 3, 4.96) int -> x25
; V07 loc3 [V07,T07] ( 11, 25.74) ref -> x26 ld-addr-op class-hnd <System.Linq.Expressions.Expression> ; V08 loc4 [V08,T10] ( 3, 11.88) ref -> x27 class-hnd <System.Reflection.ParameterInfo> ; V09 loc5 [V09,T03] ( 13, 30.05) ref -> x27 class-hnd <System.Type> @@ -22,10 +22,10 @@ ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V13 tmp2 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Linq.Expressions.Expression>
-; V14 tmp3 [V14,T25] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp3 [V14,T24] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
-; V17 tmp6 [V17,T23] ( 2, 3.96) int -> x0 "guarded devirt return temp"
+; V17 tmp6 [V17,T22] ( 2, 3.96) int -> x0 "guarded devirt return temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V20 tmp9 [V20,T13] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" @@ -33,11 +33,11 @@ ; V22 tmp11 [V22,T14] ( 2, 7.92) ubyte -> x0 "Inline return value spill temp" ;* V23 tmp12 [V23,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V24 tmp13 [V24,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V25 tmp14 [V25,T18] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" -; V26 tmp15 [V26,T24] ( 2, 3.96) ubyte -> x2 "Inline return value spill temp" -; V27 tmp16 [V27,T17] ( 4, 5.94) ubyte -> x2 "Inline return value spill temp"
+; V25 tmp14 [V25,T17] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" +; V26 tmp15 [V26,T23] ( 2, 3.96) ubyte -> x2 "Inline return value spill temp" +; V27 tmp16 [V27,T19] ( 4, 4.46) ubyte -> x2 "Inline return value spill temp"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V29 tmp18 [V29,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V29 tmp18 [V29,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> @@ -73,7 +73,7 @@ G_M61964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.50 G_M61964_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x20, #0x08]
- cbz w0, G_M61964_IG24
+ cbz w0, G_M61964_IG25
;; size=8 bbWeight=1 PerfScore 4.00 G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=80000 {x19}, byref, isz ldr w23, [x20, #0x08] @@ -88,7 +88,7 @@ G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs blr x1 ; gcrRegs -[x0] cmp w23, w0
- bne G_M61964_IG26
+ bne G_M61964_IG27
mov x22, xzr mov w23, wzr ldr w25, [x20, #0x08] @@ -149,7 +149,7 @@ G_M61964_IG06: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, bl <unknown method> ; gcrRegs -[x0] cmp w0, #16
- beq G_M61964_IG27
+ beq G_M61964_IG28
;; size=16 bbWeight=1.98 PerfScore 5.94 G_M61964_IG07: ; bbWeight=3.96, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz mov x0, x27 @@ -255,7 +255,7 @@ G_M61964_IG13: ; bbWeight=3.96, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ;; size=12 bbWeight=3.96 PerfScore 7.92 G_M61964_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs -[x20-x21]
- cbz x22, G_M61964_IG25
+ cbz x22, G_M61964_IG26
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -294,7 +294,7 @@ G_M61964_IG16: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=C70 ldr x1, [x1, #0x18] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M61964_IG27
+ cbnz w0, G_M61964_IG28
b G_M61964_IG07 ;; size=24 bbWeight=1.98 PerfScore 18.81 G_M61964_IG17: ; bbWeight=1.98, gcVars=0000000000000040 {V21}, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, gcvars, byref, isz @@ -333,21 +333,15 @@ G_M61964_IG18: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x28, x1
- beq G_M61964_IG19 - mov w2, wzr - b G_M61964_IG22 - ;; size=40 bbWeight=1.98 PerfScore 11.88 -G_M61964_IG19: ; bbWeight=1.98, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs +[x0]
+ bne G_M61964_IG22
cmp x27, x0
- bne G_M61964_IG21 - ;; size=8 bbWeight=1.98 PerfScore 2.97 -G_M61964_IG20: ; bbWeight=1.63, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x0]
+ bne G_M61964_IG20 + ;; size=40 bbWeight=1.98 PerfScore 11.88 +G_M61964_IG19: ; bbWeight=1.63, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
mov w2, #1
- b G_M61964_IG22
+ b G_M61964_IG21
;; size=8 bbWeight=1.63 PerfScore 2.45
-G_M61964_IG21: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
+G_M61964_IG20: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
; gcrRegs +[x0] mov x1, x27 ; gcrRegs +[x1] @@ -355,8 +349,8 @@ G_M61964_IG21: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27 ; gcrRegs -[x0-x1] sxtw w2, w0 ;; size=12 bbWeight=0.35 PerfScore 0.69
-G_M61964_IG22: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz - cbnz w2, G_M61964_IG23
+G_M61964_IG21: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz + cbnz w2, G_M61964_IG24
mov x0, x27 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E @@ -366,9 +360,16 @@ G_M61964_IG22: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ldr x2, [x2, #0x18] blr x2 ; gcrRegs -[x0]
- cbz w0, G_M61964_IG28
+ b G_M61964_IG23
;; size=36 bbWeight=1.98 PerfScore 21.78
+G_M61964_IG22: ; bbWeight=0.50, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref + mov w2, wzr + b G_M61964_IG21 + ;; size=8 bbWeight=0.50 PerfScore 0.74
G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz
+ cbz w0, G_M61964_IG29 + ;; size=4 bbWeight=1.98 PerfScore 1.98 +G_M61964_IG24: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz
mov x0, x27 ; gcrRegs +[x0] mov x1, x26 @@ -377,7 +378,7 @@ G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ldr x2, [x28, #0x08] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M61964_IG28
+ cbz w0, G_M61964_IG29
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Linq.Expressions.Expression:Quote(System.Linq.Expressions.Expression):System.Linq.Expressions.UnaryExpression @@ -390,7 +391,7 @@ G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ; gcrRegs +[x26] b G_M61964_IG08 ;; size=56 bbWeight=1.98 PerfScore 30.69
-G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0 x20 x26] ldr x0, [x19] ; gcrRegs +[x0] @@ -404,9 +405,9 @@ G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=800 ; gcrRegs -[x0] ; byrRegs -[x19] cmp w0, #0
- bgt G_M61964_IG29
+ bgt G_M61964_IG30
;; size=40 bbWeight=0.50 PerfScore 6.75
-G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61964_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x21-x22] ldp x27, x28, [sp, #0x60] ldp x25, x26, [sp, #0x50] @@ -416,7 +417,7 @@ G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x70 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M61964_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22] mov x0, x21 ; gcrRegs +[x0] @@ -431,7 +432,7 @@ G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61964_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -447,7 +448,7 @@ G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=48 bbWeight=0 PerfScore 0.00
-G_M61964_IG28: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0000 {}, byref
+G_M61964_IG29: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x21 x26-x27] mov x0, x26 ; gcrRegs +[x0] @@ -482,7 +483,7 @@ G_M61964_IG28: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0 bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=88 bbWeight=0 PerfScore 0.00
-G_M61964_IG29: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+G_M61964_IG30: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x21-x22] mov x0, x21 ; gcrRegs +[x0] @@ -499,7 +500,7 @@ G_M61964_IG29: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 { brk_unix #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1128, prolog size 28, PerfScore 800.26, instruction count 282, allocated bytes for code 1128 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
+; Total bytes of code 1132, prolog size 28, PerfScore 800.02, instruction count 283, allocated bytes for code 1132 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -510,7 +511,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 282 (0x0011a) Actual length = 1128 (0x000468)
+ Function Length : 283 (0x0011b) Actual length = 1132 (0x00046c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+0.45%) : 289556.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary2[System.String,System.Collections.Generic.HashSet1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)

@@ -8,18 +8,18 @@ ; 15 inlinees with PGO data; 35 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 11, 24.50) ref -> x20 class-hnd single-def <System.IO.TextWriter> -; V01 arg1 [V01,T17] ( 6, 26 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][]>
+; V00 arg0 [V00,T17] ( 11, 24.50) ref -> x20 class-hnd single-def <System.IO.TextWriter> +; V01 arg1 [V01,T16] ( 6, 26 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][]>
; V02 arg2 [V02,T39] ( 6, 8 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]> ; V03 loc0 [V03,T10] ( 6, 35.50) ref -> x22 class-hnd exact single-def <<unknown class>> ; V04 loc1 [V04,T38] ( 7, 10 ) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>> ;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <R2RTest.CompilerRunner> ; V06 loc3 [V06 ] ( 9, 72 ) struct (40) [fp+0x90] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Collections.Generic.HashSet`1[System.String]]> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.HashSet`1[System.String]]>
-; V08 loc5 [V08,T16] ( 4, 30.56) int -> x2 ld-addr-op
+; V08 loc5 [V08,T15] ( 4, 30.56) int -> x2 ld-addr-op
; V09 loc6 [V09,T41] ( 7, 9 ) ref -> [fp+0x28] class-hnd EH-live spill-single-def <<unknown class>> ; V10 loc7 [V10,T35] ( 3, 12 ) ref -> x27 class-hnd <R2RTest.CompilerRunner>
-; V11 loc8 [V11 ] ( 20, 71.99) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V11 loc8 [V11 ] ( 22, 67.99) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V12 loc9 [V12,T45] ( 2, 8 ) int -> x28 ld-addr-op ; V13 loc10 [V13,T42] ( 7, 9 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>> ; V14 loc11 [V14,T29] ( 3, 16 ) ref -> x26 class-hnd <System.String> @@ -80,7 +80,7 @@ ;* V69 tmp50 [V69 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V70 tmp51 [V70,T43] ( 2, 8 ) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.String> ;* V71 tmp52 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V72 tmp53 [V72,T14] ( 4, 32 ) int -> x27 "Inlining Arg"
+; V72 tmp53 [V72,T18] ( 6, 24.00) int -> x27 "Inlining Arg"
;* V73 tmp54 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V74 tmp55 [V74,T31] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V75 tmp56 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -145,7 +145,7 @@ ; V134 tmp115 [V134,T67] ( 2, 2 ) ref -> x0 single-def "argument with side effect" ; V135 tmp116 [V135,T08] ( 3, 48 ) int -> x0 "index expr" ; V136 tmp117 [V136,T07] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V137 tmp118 [V137,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
+; V137 tmp118 [V137,T14] ( 2, 32 ) ref -> x1 "argument with side effect"
; V138 PSPSym [V138,T70] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[V] "PSPSym" ;* V139 cse0 [V139,T71] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V140 cse1 [V140,T52] ( 3, 6.17) ref -> x26 hoist "CSE - conservative" @@ -552,7 +552,7 @@ G_M25794_IG27: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byr cmp w28, #2 blo G_M25794_IG35 ;; size=8 bbWeight=4 PerfScore 6.00
-G_M25794_IG28: ; bbWeight=1.99, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=8000000 {x27}, byref
+G_M25794_IG28: ; bbWeight=1.99, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=8000000 {x27}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -561,17 +561,17 @@ G_M25794_IG28: ; bbWeight=1.99, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, ldr w0, [fp, #0x78] // [V11 loc8+0x10] add w0, w0, #2 str w0, [fp, #0x78] // [V11 loc8+0x10]
- ;; size=32 bbWeight=1.99 PerfScore 17.93 -G_M25794_IG29: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x27]
ldr w27, [fp, #0x78] // [V11 loc8+0x10]
+ ; byrRegs -[x27]
ldr w0, [fp, #0x88] // [V11 loc8+0x20] cmp w27, w0 bhi G_M25794_IG36
+ ;; size=48 bbWeight=1.99 PerfScore 28.89 +G_M25794_IG29: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr x28, [fp, #0x80] // [V11 loc8+0x18] ; byrRegs +[x28] tbz w27, #31, G_M25794_IG31
- ;; size=24 bbWeight=4 PerfScore 34.00
+ ;; size=8 bbWeight=4 PerfScore 12.00
G_M25794_IG30: ; bbWeight=2, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=10000000 {x28}, byref movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 @@ -655,7 +655,7 @@ G_M25794_IG34: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x26] b G_M25794_IG38 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26] add x0, fp, #104 // [V11 loc8] movz x1, #0xD1FFAB1E @@ -667,8 +667,11 @@ G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M25794_IG29 - ;; size=40 bbWeight=0.01 PerfScore 0.07
+ ldr w27, [fp, #0x78] // [V11 loc8+0x10] + ldr w0, [fp, #0x88] // [V11 loc8+0x20] + cmp w27, w0 + bls G_M25794_IG29 + ;; size=52 bbWeight=0.01 PerfScore 0.11
G_M25794_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x22 x26] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() @@ -1233,7 +1236,7 @@ G_M25794_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2660, prolog size 72, PerfScore 2462.16, instruction count 665, allocated bytes for code 2660 (MethodHash=43809b3d) for method R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
+; Total bytes of code 2672, prolog size 72, PerfScore 2451.15, instruction count 668, allocated bytes for code 2672 (MethodHash=43809b3d) for method R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
; ============================================================ Unwind Info: @@ -1244,7 +1247,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 572 (0x0023c) Actual length = 2288 (0x0008f0)
+ Function Length : 575 (0x0023f) Actual length = 2300 (0x0008fc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+1.14%) : 198256.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,49 +8,49 @@ ; 6 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.38) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T36] ( 10, 5.46) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T35] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x25 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T37] ( 10, 5.46) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x25 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T49] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 9.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T28] ( 9, 8.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 9.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T29] ( 9, 8.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T27] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T54] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T55] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T58] ( 3, 1.46) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V44 tmp18 [V44,T51] ( 4, 1.92) int -> x2 single-def "Inline stloc first use temp" ; V45 tmp19 [V45,T59] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -58,27 +58,27 @@ ; V47 tmp21 [V47,T60] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V48 tmp22 [V48,T53] ( 4, 1.92) int -> x15 single-def "Inline stloc first use temp" ; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x4 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x6 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T56] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T57] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T46] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T47] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T47] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG40 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000002000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -145,7 +145,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= tbz w0, #0, G_M30168_IG58 ;; size=76 bbWeight=0.50 PerfScore 11.25 G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -155,7 +155,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG06
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -187,19 +187,19 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -242,11 +242,11 @@ G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG06: ; bbWeight=0.50, gcVars=0000001000080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG06: ; bbWeight=0.50, gcVars=0000002000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG08 mov x0, x24 @@ -318,18 +318,18 @@ G_M30168_IG09: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG39 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG10: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG10: ; bbWeight=2, gcVars=0000002000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -341,7 +341,7 @@ G_M30168_IG10: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 beq G_M30168_IG11
- ldr x1, [fp, #0x38] // [V16 loc5]
+ ldr x1, [fp, #0x30] // [V16 loc5]
...

libraries_tests.run.linux.arm64.Release.mch

-4 (-2.63%) : 66536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1-OSR)

@@ -37,64 +37,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M264_IG03: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0006 {x1 x2}, byref, isz ldr w4, [fp, #0x2C] // [V02 loc0] sub w4, w4, #1
- tbnz w4, #31, G_M264_IG06
+ tbnz w4, #31, G_M264_IG08
;; size=12 bbWeight=100 PerfScore 350.00 G_M264_IG04: ; bbWeight=98.76, gcrefRegs=0000 {}, byrefRegs=0006 {x1 x2}, byref, isz cmp w4, w0
- bhs G_M264_IG13
+ bhs G_M264_IG12
mov w5, w4 ldr w6, [x1, x5, LSL #2] cmp w4, w3
- bhs G_M264_IG13
+ bhs G_M264_IG12
ldr w7, [x2, x5, LSL #2] cmp w6, w7 str w4, [fp, #0x2C] // [V02 loc0] beq G_M264_IG03 ;; size=40 bbWeight=98.76 PerfScore 1185.12
-G_M264_IG05: ; bbWeight=1.60, gcrefRegs=0000 {}, byrefRegs=0006 {x1 x2}, byref - b G_M264_IG08 - ;; size=4 bbWeight=1.60 PerfScore 1.60 -G_M264_IG06: ; bbWeight=2.83, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x1-x2] - mov w0, wzr - ;; size=4 bbWeight=2.83 PerfScore 1.42 -G_M264_IG07: ; bbWeight=2.83, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - add sp, sp, #64 - ret lr - ;; size=12 bbWeight=2.83 PerfScore 7.08 -G_M264_IG08: ; bbWeight=1.60, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0006 {x1 x2}, gcvars, byref, isz - ; byrRegs +[x1-x2]
+G_M264_IG05: ; bbWeight=1.60, gcrefRegs=0000 {}, byrefRegs=0006 {x1 x2}, byref, isz
ldr w0, [x1, x5, LSL #2] ldr w1, [x2, x5, LSL #2] ; byrRegs -[x1] cmp w0, w1
- blo G_M264_IG11
+ blo G_M264_IG10
;; size=16 bbWeight=1.60 PerfScore 11.99
-G_M264_IG09: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x2] mov w0, #1 ;; size=4 bbWeight=0.97 PerfScore 0.48
-G_M264_IG10: ; bbWeight=0.97, epilog, nogc, extend
+G_M264_IG07: ; bbWeight=0.97, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 add sp, sp, #64 ret lr ;; size=12 bbWeight=0.97 PerfScore 2.41
-G_M264_IG11: ; bbWeight=0.68, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG08: ; bbWeight=1.23, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=1.23 PerfScore 0.62 +G_M264_IG09: ; bbWeight=1.23, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + add sp, sp, #64 + ret lr + ;; size=12 bbWeight=1.23 PerfScore 3.09 +G_M264_IG10: ; bbWeight=0.68, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movn w0, #0 ;; size=4 bbWeight=0.68 PerfScore 0.34
-G_M264_IG12: ; bbWeight=0.68, epilog, nogc, extend
+G_M264_IG11: ; bbWeight=0.68, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 add sp, sp, #64 ret lr ;; size=12 bbWeight=0.68 PerfScore 1.69
-G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 1571.63, instruction count 38, allocated bytes for code 152 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
+; Total bytes of code 148, prolog size 8, PerfScore 1565.24, instruction count 37, allocated bytes for code 148 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -105,7 +100,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-1.97%) : 4145.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -27,18 +27,18 @@ ; V15 tmp7 [V15,T08] ( 2, 9.70) int -> x0 "guarded devirt return temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup]> ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup]>
-; V18 tmp10 [V18,T17] ( 2, 5.93) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
+; V18 tmp10 [V18,T17] ( 2, 5.93) ref -> x23 class-hnd exact "impAppendStmt" <System.String>
; V19 tmp11 [V19,T07] ( 3, 13.33) ref -> x1 class-hnd "Inline return value spill temp" <System.String>
-; V20 tmp12 [V20,T01] ( 4, 29.63) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V21 tmp13 [V21,T00] ( 10, 29.68) byref -> x21 "Inlining Arg"
+; V20 tmp12 [V20,T00] ( 4, 29.63) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V21 tmp13 [V21,T01] ( 9, 28.80) byref -> x21 "Inlining Arg"
; V22 tmp14 [V22,T14] ( 4, 6.55) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V24 tmp16 [V24,T12] ( 3, 7.83) ref -> x14 "arr expr" ; V25 tmp17 [V25,T13] ( 3, 7.83) int -> x15 "index expr" ; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" ; V27 cse0 [V27,T21] ( 3, 4.80) int -> x15 "CSE - moderate"
-; V28 cse1 [V28,T18] ( 4, 5.68) ref -> x23 "CSE - moderate" -; V29 rat0 [V29,T19] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V28 cse1 [V28,T19] ( 3, 5.24) ref -> x23 "CSE - moderate" +; V29 rat0 [V29,T18] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
; V30 rat1 [V30,T03] ( 3, 23.04) long -> x1 "spilling expr" ; V31 rat2 [V31,T04] ( 3, 18.43) long -> x11 "fgMakeTemp is creating a new local variable" ; @@ -63,11 +63,11 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M62024_IG02: ; bbWeight=1, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz ; GC ptr vars +{V06 V24}
- cbz x21, G_M62024_IG34 - cbz x19, G_M62024_IG35
+ cbz x21, G_M62024_IG33 + cbz x19, G_M62024_IG34
ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG25
+ cbz x11, G_M62024_IG24
;; size=20 bbWeight=1 PerfScore 9.00 G_M62024_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21 @@ -113,8 +113,8 @@ G_M62024_IG07: ; bbWeight=4.11, gcrefRegs=80000 {x19}, byrefRegs=400000 { G_M62024_IG08: ; bbWeight=1.48, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- ldr x21, [x24, #0x08] - ; gcrRegs +[x21]
+ ldr x23, [x24, #0x08] + ; gcrRegs +[x23]
ldr x0, [x0, #0x28] add x1, x0, #8 ; byrRegs +[x1] @@ -123,7 +123,7 @@ G_M62024_IG08: ; bbWeight=1.48, gcrefRegs=1080000 {x19 x24}, byrefRegs=40 ; byrRegs -[x1] cbz x1, G_M62024_IG11 ;; size=24 bbWeight=1.48 PerfScore 20.00
-G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1880001 {x0 x19 x23 x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -136,7 +136,7 @@ G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byref b G_M62024_IG12 ;; size=28 bbWeight=5.93 PerfScore 41.48 G_M62024_IG10: ; bbWeight=1.48, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x0-x1 x21 x24]
+ ; gcrRegs -[x0-x1 x23-x24]
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -146,14 +146,14 @@ G_M62024_IG10: ; bbWeight=1.48, gcrefRegs=80000 {x19}, byrefRegs=400000 { mov x11, x0 b G_M62024_IG07 ;; size=28 bbWeight=1.48 PerfScore 6.67
-G_M62024_IG11: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x0 x21 x24]
+G_M62024_IG11: ; bbWeight=5.93, gcrefRegs=1880001 {x0 x19 x23 x24}, byrefRegs=400000 {x22}, byref + ; gcrRegs +[x0 x23-x24]
ldr x1, [x0, #0x18] ; gcrRegs +[x1] ;; size=4 bbWeight=5.93 PerfScore 17.78
-G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1280002 {x1 x19 x21 x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1880002 {x1 x19 x23 x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x0]
- mov x0, x21
+ mov x0, x23
; gcrRegs +[x0] mov w2, #5 movz x3, #0xD1FFAB1E // code for <unknown method> @@ -161,7 +161,7 @@ G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1280002 {x1 x19 x21 x24}, byref movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x0-x1 x21]
+ ; gcrRegs -[x0-x1 x23]
; gcr arg pop 0 b G_M62024_IG14 ;; size=32 bbWeight=1.48 PerfScore 11.11 @@ -176,7 +176,7 @@ G_M62024_IG13: ; bbWeight=2.63, gcrefRegs=1080000 {x19 x24}, byrefRegs=40 ; gcr arg pop 0 ;; size=16 bbWeight=2.63 PerfScore 19.75 G_M62024_IG14: ; bbWeight=4.11, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref, isz
- cbnz w0, G_M62024_IG24
+ cbnz w0, G_M62024_IG23
;; size=4 bbWeight=4.11 PerfScore 4.11 G_M62024_IG15: ; bbWeight=4.85, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x24] @@ -187,7 +187,7 @@ G_M62024_IG15: ; bbWeight=4.85, gcrefRegs=80000 {x19}, byrefRegs=400000 { movk x15, #0xD1FFAB1E LSL #16 movk x15, #0xD1FFAB1E LSL #32 cmp x14, x15
- bne G_M62024_IG22
+ bne G_M62024_IG21
;; size=28 bbWeight=4.85 PerfScore 38.82 G_M62024_IG16: ; bbWeight=1.75, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz add x21, x0, #8 @@ -199,11 +199,11 @@ G_M62024_IG16: ; bbWeight=1.75, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ldr w15, [x21, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M62024_IG20
+ bne G_M62024_IG19
ldr w15, [x21, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M62024_IG21
+ bhs G_M62024_IG20
;; size=44 bbWeight=1.75 PerfScore 33.19 G_M62024_IG17: ; bbWeight=1.31, gcrefRegs=84000 {x14 x19}, byrefRegs=600000 {x21 x22}, byref, isz ; gcrRegs -[x0 x23] @@ -240,22 +240,16 @@ G_M62024_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62024_IG20: ; bbWeight=0.44, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M62024_IG20: ; bbWeight=1.75, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref
; gcrRegs +[x23] ; byrRegs +[x21-x22]
- ldr w11, [x21, #0x14] - ldr w1, [x23, #0x14] - cmp w11, w1 - bne G_M62024_IG19 - ;; size=16 bbWeight=0.44 PerfScore 3.31 -G_M62024_IG21: ; bbWeight=1.75, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref
ldr w11, [x23, #0x10] add w11, w11, #1 str w11, [x21, #0x10] str xzr, [x21, #0x08]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=20 bbWeight=1.75 PerfScore 11.35
-G_M62024_IG22: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M62024_IG21: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x23] +[x0 x19] ; byrRegs -[x21] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -267,20 +261,20 @@ G_M62024_IG22: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ; gcr arg pop 0 cbnz w0, G_M62024_IG05 ;; size=24 bbWeight=4.85 PerfScore 31.54
-G_M62024_IG23: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M62024_IG24: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG23: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x24] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] mov w11, #1 strb w11, [x22] str x24, [fp, #0x10] // [V06 loc2]
- b G_M62024_IG30
+ b G_M62024_IG29
;; size=20 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG25: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG24: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x0 x24] +[x19 x21] ; GC ptr vars -{V04} mov x0, x20 @@ -292,7 +286,7 @@ G_M62024_IG25: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs= mov x11, x0 b G_M62024_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG26: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG25: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars -{V06} +{V04 V05} ldr x0, [fp, #0x18] // [V04 loc0] @@ -302,9 +296,9 @@ G_M62024_IG26: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs= movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x11, x1
- beq G_M62024_IG28
+ beq G_M62024_IG27
;; size=28 bbWeight=0.74 PerfScore 5.90
-G_M62024_IG27: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+G_M62024_IG26: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -314,41 +308,41 @@ G_M62024_IG27: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.38 PerfScore 2.07
-G_M62024_IG28: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG27: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG29: ; bbWeight=0.74, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.74, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.74 PerfScore 3.69
-G_M62024_IG30: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] ; byrRegs -[x22] ; GC ptr vars +{V04 V05 V06 V24} ldr x0, [fp, #0x28] // [V26 PSPSym] ; gcrRegs -[x0]
- bl G_M62024_IG36
+ bl G_M62024_IG35
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG31: ; bbWeight=0.26, nogc, extend
+G_M62024_IG30: ; bbWeight=0.26, nogc, extend
nop ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05 V24} ldr x0, [fp, #0x10] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG33: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG32: ; bbWeight=0.26, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.26 PerfScore 1.31
-G_M62024_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V06} ...

-16 (-1.97%) : 39426.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -27,18 +27,18 @@ ; V15 tmp7 [V15,T08] ( 2, 9.70) int -> x0 "guarded devirt return temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup]> ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup]>
-; V18 tmp10 [V18,T17] ( 2, 5.93) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
+; V18 tmp10 [V18,T17] ( 2, 5.93) ref -> x23 class-hnd exact "impAppendStmt" <System.String>
; V19 tmp11 [V19,T07] ( 3, 13.33) ref -> x1 class-hnd "Inline return value spill temp" <System.String>
-; V20 tmp12 [V20,T01] ( 4, 29.63) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V21 tmp13 [V21,T00] ( 10, 29.68) byref -> x21 "Inlining Arg"
+; V20 tmp12 [V20,T00] ( 4, 29.63) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V21 tmp13 [V21,T01] ( 9, 28.80) byref -> x21 "Inlining Arg"
; V22 tmp14 [V22,T14] ( 4, 6.55) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V24 tmp16 [V24,T12] ( 3, 7.83) ref -> x14 "arr expr" ; V25 tmp17 [V25,T13] ( 3, 7.83) int -> x15 "index expr" ; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" ; V27 cse0 [V27,T21] ( 3, 4.80) int -> x15 "CSE - moderate"
-; V28 cse1 [V28,T18] ( 4, 5.68) ref -> x23 "CSE - moderate" -; V29 rat0 [V29,T19] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V28 cse1 [V28,T19] ( 3, 5.24) ref -> x23 "CSE - moderate" +; V29 rat0 [V29,T18] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
; V30 rat1 [V30,T03] ( 3, 23.04) long -> x1 "spilling expr" ; V31 rat2 [V31,T04] ( 3, 18.43) long -> x11 "fgMakeTemp is creating a new local variable" ; @@ -63,11 +63,11 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M62024_IG02: ; bbWeight=1, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz ; GC ptr vars +{V06 V24}
- cbz x21, G_M62024_IG34 - cbz x19, G_M62024_IG35
+ cbz x21, G_M62024_IG33 + cbz x19, G_M62024_IG34
ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG25
+ cbz x11, G_M62024_IG24
;; size=20 bbWeight=1 PerfScore 9.00 G_M62024_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21 @@ -113,8 +113,8 @@ G_M62024_IG07: ; bbWeight=4.11, gcrefRegs=80000 {x19}, byrefRegs=400000 { G_M62024_IG08: ; bbWeight=1.48, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- ldr x21, [x24, #0x08] - ; gcrRegs +[x21]
+ ldr x23, [x24, #0x08] + ; gcrRegs +[x23]
ldr x0, [x0, #0x28] add x1, x0, #8 ; byrRegs +[x1] @@ -123,7 +123,7 @@ G_M62024_IG08: ; bbWeight=1.48, gcrefRegs=1080000 {x19 x24}, byrefRegs=40 ; byrRegs -[x1] cbz x1, G_M62024_IG11 ;; size=24 bbWeight=1.48 PerfScore 20.00
-G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1880001 {x0 x19 x23 x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -136,7 +136,7 @@ G_M62024_IG09: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byref b G_M62024_IG12 ;; size=28 bbWeight=5.93 PerfScore 41.48 G_M62024_IG10: ; bbWeight=1.48, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x0-x1 x21 x24]
+ ; gcrRegs -[x0-x1 x23-x24]
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -146,14 +146,14 @@ G_M62024_IG10: ; bbWeight=1.48, gcrefRegs=80000 {x19}, byrefRegs=400000 { mov x11, x0 b G_M62024_IG07 ;; size=28 bbWeight=1.48 PerfScore 6.67
-G_M62024_IG11: ; bbWeight=5.93, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x0 x21 x24]
+G_M62024_IG11: ; bbWeight=5.93, gcrefRegs=1880001 {x0 x19 x23 x24}, byrefRegs=400000 {x22}, byref + ; gcrRegs +[x0 x23-x24]
ldr x1, [x0, #0x18] ; gcrRegs +[x1] ;; size=4 bbWeight=5.93 PerfScore 17.78
-G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1280002 {x1 x19 x21 x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1880002 {x1 x19 x23 x24}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x0]
- mov x0, x21
+ mov x0, x23
; gcrRegs +[x0] mov w2, #5 movz x3, #0xD1FFAB1E // code for <unknown method> @@ -161,7 +161,7 @@ G_M62024_IG12: ; bbWeight=1.48, gcrefRegs=1280002 {x1 x19 x21 x24}, byref movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x0-x1 x21]
+ ; gcrRegs -[x0-x1 x23]
; gcr arg pop 0 b G_M62024_IG14 ;; size=32 bbWeight=1.48 PerfScore 11.11 @@ -176,7 +176,7 @@ G_M62024_IG13: ; bbWeight=2.63, gcrefRegs=1080000 {x19 x24}, byrefRegs=40 ; gcr arg pop 0 ;; size=16 bbWeight=2.63 PerfScore 19.75 G_M62024_IG14: ; bbWeight=4.11, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref, isz
- cbnz w0, G_M62024_IG24
+ cbnz w0, G_M62024_IG23
;; size=4 bbWeight=4.11 PerfScore 4.11 G_M62024_IG15: ; bbWeight=4.85, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x24] @@ -187,7 +187,7 @@ G_M62024_IG15: ; bbWeight=4.85, gcrefRegs=80000 {x19}, byrefRegs=400000 { movk x15, #0xD1FFAB1E LSL #16 movk x15, #0xD1FFAB1E LSL #32 cmp x14, x15
- bne G_M62024_IG22
+ bne G_M62024_IG21
;; size=28 bbWeight=4.85 PerfScore 38.82 G_M62024_IG16: ; bbWeight=1.75, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz add x21, x0, #8 @@ -199,11 +199,11 @@ G_M62024_IG16: ; bbWeight=1.75, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ldr w15, [x21, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M62024_IG20
+ bne G_M62024_IG19
ldr w15, [x21, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M62024_IG21
+ bhs G_M62024_IG20
;; size=44 bbWeight=1.75 PerfScore 33.19 G_M62024_IG17: ; bbWeight=1.31, gcrefRegs=84000 {x14 x19}, byrefRegs=600000 {x21 x22}, byref, isz ; gcrRegs -[x0 x23] @@ -240,22 +240,16 @@ G_M62024_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62024_IG20: ; bbWeight=0.44, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M62024_IG20: ; bbWeight=1.75, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref
; gcrRegs +[x23] ; byrRegs +[x21-x22]
- ldr w11, [x21, #0x14] - ldr w1, [x23, #0x14] - cmp w11, w1 - bne G_M62024_IG19 - ;; size=16 bbWeight=0.44 PerfScore 3.31 -G_M62024_IG21: ; bbWeight=1.75, gcrefRegs=800000 {x23}, byrefRegs=600000 {x21 x22}, byref
ldr w11, [x23, #0x10] add w11, w11, #1 str w11, [x21, #0x10] str xzr, [x21, #0x08]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=20 bbWeight=1.75 PerfScore 11.35
-G_M62024_IG22: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M62024_IG21: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x23] +[x0 x19] ; byrRegs -[x21] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -267,20 +261,20 @@ G_M62024_IG22: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ; gcr arg pop 0 cbnz w0, G_M62024_IG05 ;; size=24 bbWeight=4.85 PerfScore 31.54
-G_M62024_IG23: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M62024_IG24: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
+G_M62024_IG23: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x24] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] mov w11, #1 strb w11, [x22] str x24, [fp, #0x10] // [V06 loc2]
- b G_M62024_IG30
+ b G_M62024_IG29
;; size=20 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG25: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG24: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x0 x24] +[x19 x21] ; GC ptr vars -{V04} mov x0, x20 @@ -292,7 +286,7 @@ G_M62024_IG25: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs= mov x11, x0 b G_M62024_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG26: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG25: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars -{V06} +{V04 V05} ldr x0, [fp, #0x18] // [V04 loc0] @@ -302,9 +296,9 @@ G_M62024_IG26: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs= movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x11, x1
- beq G_M62024_IG28
+ beq G_M62024_IG27
;; size=28 bbWeight=0.74 PerfScore 5.90
-G_M62024_IG27: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+G_M62024_IG26: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -314,41 +308,41 @@ G_M62024_IG27: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.38 PerfScore 2.07
-G_M62024_IG28: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG27: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG29: ; bbWeight=0.74, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.74, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.74 PerfScore 3.69
-G_M62024_IG30: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] ; byrRegs -[x22] ; GC ptr vars +{V04 V05 V06 V24} ldr x0, [fp, #0x28] // [V26 PSPSym] ; gcrRegs -[x0]
- bl G_M62024_IG36
+ bl G_M62024_IG35
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG31: ; bbWeight=0.26, nogc, extend
+G_M62024_IG30: ; bbWeight=0.26, nogc, extend
nop ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05 V24} ldr x0, [fp, #0x10] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG33: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG32: ; bbWeight=0.26, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.26 PerfScore 1.31
-G_M62024_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V06} ...

-16 (-1.01%) : 4127.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)

@@ -8,75 +8,76 @@ ; 5 inlinees with PGO data; 21 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T34] ( 4, 1 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Object>
+; V00 loc0 [V00,T35] ( 4, 1 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Object>
; V01 loc1 [V01 ] ( 6, 2.50) ubyte -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V02 loc2 [V02,T10] ( 6, 15.83) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V02 loc2 [V02,T09] ( 6, 15.83) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc3 [V03,T08] ( 6, 17 ) ref -> x20 class-hnd <System.Diagnostics.Tracing.EventListener>
-; V04 loc4 [V04,T18] ( 4, 6.50) int -> x20
+; V04 loc4 [V04,T19] ( 4, 6.50) int -> x20
;* V05 loc5 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
-; V07 loc7 [V07,T13] ( 4, 8 ) ref -> x21 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
+; V07 loc7 [V07,T14] ( 4, 8 ) ref -> x21 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
; V08 loc8 [V08,T00] ( 10,442 ) ref -> x21 class-hnd <<unknown class>> ; V09 loc9 [V09 ] ( 7, 42 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]> ; V10 loc10 [V10,T01] ( 2,144 ) ref -> x28 class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T28] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp2 [V13,T30] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
+; V12 tmp1 [V12,T29] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp2 [V13,T31] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
;* V14 tmp3 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp5 [V16,T29] ( 2, 2 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V16 tmp5 [V16,T30] ( 2, 2 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
-; V20 tmp9 [V20,T24] ( 3, 4 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource> -; V21 tmp10 [V21,T12] ( 5, 8 ) long -> x0 "Inline stloc first use temp"
+; V20 tmp9 [V20,T25] ( 3, 4 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource> +; V21 tmp10 [V21,T13] ( 5, 8 ) long -> x0 "Inline stloc first use temp"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
-; V23 tmp12 [V23,T25] ( 3, 4 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
+; V23 tmp12 [V23,T26] ( 3, 4 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> ;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.EventSource>
-; V26 tmp15 [V26,T39] ( 3, 0 ) ref -> x26 class-hnd "updating class info" <System.ComAwareWeakReference>
+; V26 tmp15 [V26,T40] ( 3, 0 ) ref -> x26 class-hnd "updating class info" <System.ComAwareWeakReference>
;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp18 [V29,T40] ( 2, 0 ) ref -> x0 class-hnd "dup spill" <System.Object> -; V30 tmp19 [V30,T38] ( 4, 0 ) ref -> x0
+; V29 tmp18 [V29,T41] ( 2, 0 ) ref -> x0 class-hnd "dup spill" <System.Object> +; V30 tmp19 [V30,T39] ( 4, 0 ) ref -> x0
;* V31 tmp20 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp21 [V32,T03] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V35 tmp24 [V35,T14] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> -; V36 tmp25 [V36,T17] ( 4, 6.67) ref -> x1
+; V35 tmp24 [V35,T15] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> +; V36 tmp25 [V36,T18] ( 4, 6.67) ref -> x1
; V37 tmp26 [V37,T23] ( 4, 5.33) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>
-; V40 tmp29 [V40,T15] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
+; V40 tmp29 [V40,T16] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp32 [V43,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp32 [V43,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V45 tmp34 [V45,T09] ( 5, 12.50) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V46 tmp35 [V46,T11] ( 3, 6.99) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
+; V45 tmp34 [V45,T11] ( 4, 11.49) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V46 tmp35 [V46,T12] ( 3, 6.99) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
; V47 tmp36 [V47,T04] ( 6, 16.46) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V48 tmp37 [V48,T22] ( 3, 5.51) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V48 tmp37 [V48,T24] ( 2, 4.50) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V49 tmp38 [V49 ] ( 3, 20 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP ; V50 tmp39 [V50 ] ( 4, 36 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x8)" P-DEP ; V51 tmp40 [V51 ] ( 3, 20 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x10)" P-DEP ; V52 tmp41 [V52 ] ( 3, 20 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0x14)" P-DEP
-; V53 tmp42 [V53,T33] ( 3, 1.50) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V53 tmp42 [V53,T34] ( 3, 1.50) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V55 tmp44 [V55,T37] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V56 tmp45 [V56,T35] ( 2, 1 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V57 tmp46 [V57,T19] ( 3, 6 ) ref -> x0 "field V39._dictionary (fldOffset=0x0)" P-INDEP -;* V58 tmp47 [V58,T31] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP -;* V59 tmp48 [V59,T32] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP -; V60 tmp49 [V60,T27] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
+;* V55 tmp44 [V55,T38] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V56 tmp45 [V56,T36] ( 2, 1 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V57 tmp46 [V57,T20] ( 3, 6 ) ref -> x0 "field V39._dictionary (fldOffset=0x0)" P-INDEP +;* V58 tmp47 [V58,T32] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP +;* V59 tmp48 [V59,T33] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP +; V60 tmp49 [V60,T28] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
; V61 tmp50 [V61,T07] ( 3, 17.94) ref -> x0 "arr expr"
-; V62 PSPSym [V62,T36] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" -; V63 cse0 [V63,T02] ( 27,112.75) long -> registers hoist multi-def "CSE - aggressive" -; V64 cse1 [V64,T05] ( 3, 20 ) byref -> x25 "CSE - aggressive" -; V65 cse2 [V65,T06] ( 3, 20 ) long -> x27 "CSE - aggressive" -; V66 rat0 [V66,T26] ( 3, 4 ) long -> x1 "TLS field access" -; V67 rat1 [V67,T20] ( 3, 6 ) long -> x0 "TLS access" -; V68 rat2 [V68,T21] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
+; V62 PSPSym [V62,T37] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V63 cse0 [V63,T10] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V64 cse1 [V64,T02] ( 27,112.75) long -> registers hoist multi-def "CSE - aggressive" +; V65 cse2 [V65,T05] ( 3, 20 ) byref -> x25 "CSE - aggressive" +; V66 cse3 [V66,T06] ( 3, 20 ) long -> x27 "CSE - aggressive" +; V67 rat0 [V67,T27] ( 3, 4 ) long -> x1 "TLS field access" +; V68 rat1 [V68,T21] ( 3, 6 ) long -> x0 "TLS access" +; V69 rat2 [V69,T22] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
; ; Lcl frame size = 48 @@ -96,10 +97,10 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #2
- blt G_M15982_IG51
+ blt G_M15982_IG49
ldr x0, [x0, #0xD1FFAB1E] ldr x1, [x0, #0x10]
- cbz x1, G_M15982_IG51
+ cbz x1, G_M15982_IG49
;; size=28 bbWeight=1 PerfScore 12.50 G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x1, #0xD1FFAB1E] @@ -134,9 +135,9 @@ G_M15982_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; GC ptr vars +{V00} str wzr, [fp, #0x30] // [V01 loc1] ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M15982_IG07: ; bbWeight=0.50, gcVars=0000000400000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG07: ; bbWeight=0.50, gcVars=0000000800000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x30] // [V01 loc1]
- cbnz w1, G_M15982_IG46
+ cbnz w1, G_M15982_IG44
add x1, fp, #48 // [V01 loc1] bl <unknown method> ; gcrRegs -[x0] @@ -519,17 +520,17 @@ G_M15982_IG39: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { G_M15982_IG40: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x14] cmp w23, w0
- bne G_M15982_IG42
+ bne G_M15982_IG43
ldr w0, [x22, #0x10] cmp w24, w0
- bhs G_M15982_IG47
+ bhs G_M15982_IG45
;; size=24 bbWeight=4 PerfScore 36.00 G_M15982_IG41: ; bbWeight=2.99, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w24, w1
- bhs G_M15982_IG44
+ bhs G_M15982_IG42
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -538,22 +539,13 @@ G_M15982_IG41: ; bbWeight=2.99, gcrefRegs=480000 {x19 x22}, byrefRegs=000 add w24, w24, #1 b G_M15982_IG16 ;; size=32 bbWeight=2.99 PerfScore 37.37
-G_M15982_IG42: ; bbWeight=1.01, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19 x25]
+G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x22 x25]
; byrRegs -[x0]
- ldr w0, [x22, #0x14] - cmp w23, w0 - bne G_M15982_IG45 - ;; size=12 bbWeight=1.01 PerfScore 4.55 -G_M15982_IG43: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - b G_M15982_IG47 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M15982_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M15982_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -562,7 +554,7 @@ G_M15982_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M15982_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -571,7 +563,7 @@ G_M15982_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M15982_IG47: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG45: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x26, #0xD1FFAB1E movk x26, #0xD1FFAB1E LSL #16 movk x26, #0xD1FFAB1E LSL #32 @@ -579,9 +571,9 @@ G_M15982_IG47: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr bl CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M15982_IG48: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG46: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x30] // [V01 loc1]
- cbz w0, G_M15982_IG49
+ cbz w0, G_M15982_IG47
add x0, x26, #36 bl CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 @@ -592,7 +584,7 @@ G_M15982_IG48: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M15982_IG49: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG47: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, x26, #40 bl CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 @@ -600,7 +592,7 @@ G_M15982_IG49: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr bl CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M15982_IG50: ; bbWeight=0.50, epilog, nogc, extend
+G_M15982_IG48: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80] ldp x25, x26, [sp, #0x70] ldp x23, x24, [sp, #0x60] @@ -609,15 +601,15 @@ G_M15982_IG50: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M15982_IG51: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15982_IG49: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #2 bl CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; gcr arg pop 0 mov x1, x0 b G_M15982_IG03 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M15982_IG52: ; bbWeight=0, gcVars=0000000400000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V00}
+G_M15982_IG50: ; bbWeight=0, gcVars=0000000800000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V00 V35}
stp fp, lr, [sp, #-0x70]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] ...

-8 (-0.47%) : 940.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)

@@ -9,62 +9,62 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 18, 19.50) ref -> x19 this class-hnd single-def <System.Diagnostics.Tracing.EventSource>
-; V01 loc0 [V01,T47] ( 2, 2 ) ubyte -> x22
+; V01 loc0 [V01,T48] ( 2, 2 ) ubyte -> x22
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[ubyte]> ; V03 loc2 [V03,T05] ( 28, 21.50) ref -> x23 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
-; V04 loc3 [V04,T32] ( 4, 3.50) ref -> x24 class-hnd single-def <ubyte[]>
+; V04 loc3 [V04,T33] ( 4, 3.50) ref -> x24 class-hnd single-def <ubyte[]>
; V05 loc4 [V05,T25] ( 3, 4.50) int -> registers ; V06 loc5 [V06,T03] ( 10, 23.50) int -> x24 ; V07 loc6 [V07 ] ( 6, 5.50) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V08 loc7 [V08 ] ( 3, 3 ) ubyte -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc8 [V09,T41] ( 2, 2.50) ref -> x25 class-hnd exact <System.String>
+; V09 loc8 [V09,T42] ( 2, 2.50) ref -> x25 class-hnd exact <System.String>
; V10 loc9 [V10,T14] ( 5, 8.50) int -> x26 ; V11 loc10 [V11,T20] ( 3, 6 ) int -> x0 ;* V12 loc11 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>
-; V13 loc12 [V13,T27] ( 2, 4 ) ubyte -> x0
+; V13 loc12 [V13,T28] ( 2, 4 ) ubyte -> x0
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp2 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]> ;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V18 tmp4 [V18,T33] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]>
+; V18 tmp4 [V18,T34] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]>
; V19 tmp5 [V19,T06] ( 3, 18 ) ref -> x0 "spilling varStr"
-;* V20 tmp6 [V20,T30] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V20 tmp6 [V20,T31] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V21 tmp7 [V21 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V22 tmp8 [V22,T80] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V23 tmp9 [V23,T76] ( 2, 0 ) ref -> x20 class-hnd exact "non-inline candidate call" <System.String> -; V24 tmp10 [V24,T75] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V22 tmp8 [V22,T81] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V23 tmp9 [V23,T77] ( 2, 0 ) ref -> x20 class-hnd exact "non-inline candidate call" <System.String> +; V24 tmp10 [V24,T76] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V25 tmp11 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V26 tmp12 [V26 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V27 tmp13 [V27,T08] ( 4, 16 ) int -> x26 "impSpillLclRefs"
+; V27 tmp13 [V27,T07] ( 4, 16 ) int -> x26 "impSpillLclRefs"
;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp" ;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp" ;* V30 tmp16 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ; V31 tmp17 [V31,T24] ( 5, 7 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V32 tmp18 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp19 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp20 [V34,T36] ( 3, 3 ) int -> x26 "Inlining Arg" -; V35 tmp21 [V35,T44] ( 2, 2 ) byref -> x25 "Inlining Arg"
+; V34 tmp20 [V34,T37] ( 3, 3 ) int -> x26 "Inlining Arg" +; V35 tmp21 [V35,T45] ( 2, 2 ) byref -> x25 "Inlining Arg"
;* V36 tmp22 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp23 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp24 [V38 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp25 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> ;* V40 tmp26 [V40 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V41 tmp27 [V41,T57] ( 3, 1.42) ref -> x1 class-hnd "Inline stloc first use temp" <ubyte[]> -; V42 tmp28 [V42,T51] ( 4, 1.85) int -> x0 "Inline stloc first use temp" -; V43 tmp29 [V43,T58] ( 3, 1.42) ref -> x0 class-hnd "Inline stloc first use temp" <ubyte[]> -; V44 tmp30 [V44,T52] ( 4, 1.85) int -> x1 "Inline stloc first use temp" -; V45 tmp31 [V45,T59] ( 3, 1.42) ref -> x0 class-hnd "Inline stloc first use temp" <ubyte[]> -; V46 tmp32 [V46,T53] ( 4, 1.85) int -> x2 "Inline stloc first use temp" -; V47 tmp33 [V47,T43] ( 3, 2 ) ubyte -> x1 "Inlining Arg"
+; V41 tmp27 [V41,T58] ( 3, 1.42) ref -> x1 class-hnd "Inline stloc first use temp" <ubyte[]> +; V42 tmp28 [V42,T52] ( 4, 1.85) int -> x0 "Inline stloc first use temp" +; V43 tmp29 [V43,T59] ( 3, 1.42) ref -> x0 class-hnd "Inline stloc first use temp" <ubyte[]> +; V44 tmp30 [V44,T53] ( 4, 1.85) int -> x1 "Inline stloc first use temp" +; V45 tmp31 [V45,T60] ( 3, 1.42) ref -> x0 class-hnd "Inline stloc first use temp" <ubyte[]> +; V46 tmp32 [V46,T54] ( 4, 1.85) int -> x2 "Inline stloc first use temp" +; V47 tmp33 [V47,T44] ( 3, 2 ) ubyte -> x1 "Inlining Arg"
;* V48 tmp34 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp35 [V49,T09] ( 4, 16 ) int -> x5 "Inlining Arg"
+; V49 tmp35 [V49,T08] ( 4, 16 ) int -> x5 "Inlining Arg"
;* V50 tmp36 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V51 tmp37 [V51 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ubyte]>
-;* V52 tmp38 [V52,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V52 tmp38 [V52,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V53 tmp39 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>
-; V54 tmp40 [V54,T31] ( 4, 3.81) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V54 tmp40 [V54,T32] ( 4, 3.81) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V55 tmp41 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V56 tmp42 [V56,T72] ( 3, 0.99) ubyte -> x0 "Inline return value spill temp"
+; V56 tmp42 [V56,T73] ( 3, 0.99) ubyte -> x0 "Inline return value spill temp"
;* V57 tmp43 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V58 tmp44 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V59 tmp45 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> @@ -72,42 +72,42 @@ ;* V61 tmp47 [V61 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V62 tmp48 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt" ;* V63 tmp49 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "spilling arg"
-; V64 tmp50 [V64,T42] ( 3, 2.47) long -> x2 "spilling arg" -; V65 tmp51 [V65,T50] ( 3, 1.97) int -> x0 "Grabbing temp for Qmark"
+; V64 tmp50 [V64,T43] ( 3, 2.47) long -> x2 "spilling arg" +; V65 tmp51 [V65,T51] ( 3, 1.97) int -> x0 "Grabbing temp for Qmark"
;* V66 tmp52 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V67 tmp53 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V68 tmp54 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V69 tmp55 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V70 tmp56 [V70,T67] ( 1, 1 ) byref -> x0 "field V02._reference (fldOffset=0x0)" P-INDEP -; V71 tmp57 [V71,T48] ( 2, 2 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V70 tmp56 [V70,T68] ( 1, 1 ) byref -> x0 "field V02._reference (fldOffset=0x0)" P-INDEP +; V71 tmp57 [V71,T49] ( 2, 2 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
; V72 tmp58 [V72 ] ( 4, 3 ) byref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP ; V73 tmp59 [V73 ] ( 4, 3 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V74 tmp60 [V74,T07] ( 4, 12.50) ref -> x23 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V74 tmp60 [V74,T10] ( 4, 12.50) ref -> x23 single-def "field V12._list (fldOffset=0x0)" P-INDEP
; V75 tmp61 [V75,T00] ( 6, 20.50) int -> x28 "field V12._index (fldOffset=0x8)" P-INDEP
-; V76 tmp62 [V76,T15] ( 3, 8.50) int -> x27 "field V12._version (fldOffset=0xc)" P-INDEP
+; V76 tmp62 [V76,T26] ( 2, 4.50) int -> x27 "field V12._version (fldOffset=0xc)" P-INDEP
; V77 tmp63 [V77,T13] ( 2, 6 ) ubyte -> [fp+0x2C] spill-single-def "field V12._current (fldOffset=0x10)" P-INDEP ;* V78 tmp64 [V78 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-DEP ;* V79 tmp65 [V79 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-DEP
-; V80 tmp66 [V80,T71] ( 3, 0.99) byref -> x0 "field V16._reference (fldOffset=0x0)" P-INDEP -; V81 tmp67 [V81,T61] ( 2, 1 ) int -> x1 "field V16._length (fldOffset=0x8)" P-INDEP
+; V80 tmp66 [V80,T72] ( 3, 0.99) byref -> x0 "field V16._reference (fldOffset=0x0)" P-INDEP +; V81 tmp67 [V81,T62] ( 2, 1 ) int -> x1 "field V16._length (fldOffset=0x8)" P-INDEP
;* V82 tmp68 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp69 [V83 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V84 tmp70 [V84,T26] ( 3, 4 ) byref -> x0 "field V21._reference (fldOffset=0x0)" P-INDEP -; V85 tmp71 [V85,T28] ( 2, 4 ) int -> x1 "field V21._length (fldOffset=0x8)" P-INDEP
+; V84 tmp70 [V84,T27] ( 3, 4 ) byref -> x0 "field V21._reference (fldOffset=0x0)" P-INDEP +; V85 tmp71 [V85,T29] ( 2, 4 ) int -> x1 "field V21._length (fldOffset=0x8)" P-INDEP
;* V86 tmp72 [V86 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP ;* V87 tmp73 [V87 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V88 tmp74 [V88,T60] ( 2, 1 ) byref -> x25 "field V32._reference (fldOffset=0x0)" P-INDEP -; V89 tmp75 [V89,T62] ( 2, 1 ) int -> x26 "field V32._length (fldOffset=0x8)" P-INDEP
+; V88 tmp74 [V88,T61] ( 2, 1 ) byref -> x25 "field V32._reference (fldOffset=0x0)" P-INDEP +; V89 tmp75 [V89,T63] ( 2, 1 ) int -> x26 "field V32._length (fldOffset=0x8)" P-INDEP
;* V90 tmp76 [V90 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V91 tmp77 [V91 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP ;* V92 tmp78 [V92 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp79 [V93 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-; V94 tmp80 [V94,T54] ( 3, 1.50) ref -> x23 single-def "field V51._list (fldOffset=0x0)" P-INDEP -;* V95 tmp81 [V95,T73] ( 0, 0 ) int -> zero-ref "field V51._index (fldOffset=0x8)" P-INDEP -; V96 tmp82 [V96,T63] ( 2, 1 ) int -> x27 "field V51._version (fldOffset=0xc)" P-INDEP
+; V94 tmp80 [V94,T55] ( 3, 1.50) ref -> x23 single-def "field V51._list (fldOffset=0x0)" P-INDEP +;* V95 tmp81 [V95,T74] ( 0, 0 ) int -> zero-ref "field V51._index (fldOffset=0x8)" P-INDEP +; V96 tmp82 [V96,T64] ( 2, 1 ) int -> x27 "field V51._version (fldOffset=0xc)" P-INDEP
;* V97 tmp83 [V97 ] ( 0, 0 ) ubyte -> zero-ref "field V51._current (fldOffset=0x10)" P-INDEP
-; V98 tmp84 [V98,T70] ( 4, 0.99) byref -> x3 "field V55._reference (fldOffset=0x0)" P-INDEP -; V99 tmp85 [V99,T56] ( 4, 1.49) int -> x4 "field V55._length (fldOffset=0x8)" P-INDEP
+; V98 tmp84 [V98,T71] ( 4, 0.99) byref -> x3 "field V55._reference (fldOffset=0x0)" P-INDEP +; V99 tmp85 [V99,T57] ( 4, 1.49) int -> x4 "field V55._length (fldOffset=0x8)" P-INDEP
;* V100 tmp86 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp87 [V101 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP ;* V102 tmp88 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V59._reference (fldOffset=0x0)" P-INDEP @@ -120,37 +120,38 @@ ;* V109 tmp95 [V109 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP ;* V110 tmp96 [V110 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-INDEP ;* V111 tmp97 [V111 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
-;* V112 tmp98 [V112,T49] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V112 tmp98 [V112,T50] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V113 tmp99 [V113,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V114 tmp100 [V114,T34] ( 3, 6 ) ref -> x0 "arr expr" -; V115 tmp101 [V115,T45] ( 2, 2 ) ref -> x3 "argument with side effect" -; V116 tmp102 [V116,T37] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ushort]> -; V117 tmp103 [V117,T77] ( 2, 0 ) ref -> x1 "argument with side effect" -; V118 tmp104 [V118,T78] ( 2, 0 ) ref -> x20 "argument with side effect" -; V119 tmp105 [V119,T79] ( 2, 0 ) ref -> x2 "argument with side effect" -; V120 tmp106 [V120,T35] ( 3, 3 ) ref -> x0 "arr expr"
+; V114 tmp100 [V114,T35] ( 3, 6 ) ref -> x0 "arr expr" +; V115 tmp101 [V115,T46] ( 2, 2 ) ref -> x3 "argument with side effect" +; V116 tmp102 [V116,T38] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ushort]> +; V117 tmp103 [V117,T78] ( 2, 0 ) ref -> x1 "argument with side effect" +; V118 tmp104 [V118,T79] ( 2, 0 ) ref -> x20 "argument with side effect" +; V119 tmp105 [V119,T80] ( 2, 0 ) ref -> x2 "argument with side effect" +; V120 tmp106 [V120,T36] ( 3, 3 ) ref -> x0 "arr expr"
; V121 tmp107 [V121,T11] ( 3, 12 ) ref -> x2 "arr expr"
-;* V122 tmp108 [V122,T29] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V122 tmp108 [V122,T30] ( 0, 0 ) ref -> zero-ref "arr expr"
; V123 tmp109 [V123,T02] ( 3, 24 ) ref -> x0 "arr expr"
-;* V124 tmp110 [V124,T68] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V125 PSPSym [V125,T69] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" -;* V126 cse0 [V126,T46] ( 0, 0 ) ref -> zero-ref "CSE - moderate" -;* V127 cse1 [V127,T39] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
+;* V124 tmp110 [V124,T69] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V125 PSPSym [V125,T70] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" +;* V126 cse0 [V126,T47] ( 0, 0 ) ref -> zero-ref "CSE - moderate" +;* V127 cse1 [V127,T40] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
; V128 cse2 [V128,T21] ( 3, 6 ) int -> x4 "CSE - moderate"
-; V129 cse3 [V129,T40] ( 3, 2.50) long -> x21 "CSE - moderate" -; V130 cse4 [V130,T64] ( 2, 1 ) int -> x2 "CSE - conservative" -; V131 cse5 [V131,T65] ( 2, 1 ) int -> x2 "CSE - conservative" -; V132 cse6 [V132,T66] ( 2, 1 ) int -> x3 "CSE - conservative" -; V133 cse7 [V133,T12] ( 3, 12 ) int -> x1 "CSE - aggressive" -; V134 cse8 [V134,T22] ( 3, 6 ) int -> x1 "CSE - moderate" -; V135 cse9 [V135,T17] ( 2, 4 ) ref -> x2 "CSE - moderate" -; V136 cse10 [V136,T55] ( 3, 1.50) int -> x0 "CSE - conservative" -; V137 cse11 [V137,T10] ( 14, 13.50) long -> x20 multi-def "CSE - aggressive" -; V138 cse12 [V138,T38] ( 3, 3 ) int -> x25 "CSE - moderate" -; V139 cse13 [V139,T18] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V140 cse14 [V140,T23] ( 3, 6 ) int -> x3 "CSE - moderate" -; V141 cse15 [V141,T19] ( 3, 6 ) byref -> x2 "CSE - moderate" -; V142 rat0 [V142,T74] ( 3, 1.48) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V129 cse3 [V129,T41] ( 3, 2.50) long -> x21 "CSE - moderate" +; V130 cse4 [V130,T65] ( 2, 1 ) int -> x2 "CSE - conservative" +; V131 cse5 [V131,T66] ( 2, 1 ) int -> x2 "CSE - conservative" +; V132 cse6 [V132,T67] ( 2, 1 ) int -> x3 "CSE - conservative" +; V133 cse7 [V133,T16] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V134 cse8 [V134,T12] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V135 cse9 [V135,T22] ( 3, 6 ) int -> x1 "CSE - moderate" +; V136 cse10 [V136,T17] ( 2, 4 ) ref -> x2 "CSE - moderate" +; V137 cse11 [V137,T56] ( 3, 1.50) int -> x0 "CSE - conservative" +; V138 cse12 [V138,T09] ( 14, 13.50) long -> x20 multi-def "CSE - aggressive" +; V139 cse13 [V139,T39] ( 3, 3 ) int -> x25 "CSE - moderate" +; V140 cse14 [V140,T18] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V141 cse15 [V141,T23] ( 3, 6 ) int -> x3 "CSE - moderate" +; V142 cse16 [V142,T19] ( 3, 6 ) byref -> x2 "CSE - moderate" +; V143 rat0 [V143,T75] ( 3, 1.48) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 64 @@ -193,7 +194,7 @@ G_M6771_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr ldr x0, [x19, #0x58] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M6771_IG33
+ cbz x0, G_M6771_IG32
;; size=60 bbWeight=1 PerfScore 19.00 G_M6771_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -234,7 +235,7 @@ G_M6771_IG04: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {} ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w24, w1
- bhs G_M6771_IG46
+ bhs G_M6771_IG45
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -258,19 +259,19 @@ G_M6771_IG05: ; bbWeight=1, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w24, w1
- bhs G_M6771_IG46
+ bhs G_M6771_IG45
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x0, [x0, w24, UXTW #3] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M6771_IG47
+ cbz x0, G_M6771_IG46
;; size=56 bbWeight=1 PerfScore 18.50 G_M6771_IG06: ; bbWeight=0.50, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref, isz ldr w1, [x0, #0x08] cmp w1, #4
- blo G_M6771_IG47
+ blo G_M6771_IG46
...

+12 (+0.19%) : 60169.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

@@ -169,7 +169,7 @@ ;* V156 tmp146 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]> ; V157 tmp147 [V157,T66] ( 4, 172.95) ubyte -> [fp+0x54] "Inline stloc first use temp" ; V158 tmp148 [V158,T72] ( 3, 86.52) ubyte -> [fp+0x50] "Inline stloc first use temp"
-; V159 tmp149 [V159,T68] ( 4, 172.83) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
+; V159 tmp149 [V159,T68] ( 4, 172.83) ref -> [fp+0x20] class-hnd exact "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
; V160 tmp150 [V160,T157] ( 2, 0 ) int -> [fp+0x4C] spill-single-def "impAppendStmt" ; V161 tmp151 [V161,T158] ( 2, 0 ) int -> [fp+0x48] spill-single-def "impAppendStmt" ; V162 tmp152 [V162,T159] ( 2, 0 ) int -> [fp+0x44] spill-single-def "impAppendStmt" @@ -209,7 +209,7 @@ ;* V196 tmp186 [V196 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V197 tmp187 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V198 tmp188 [V198,T150] ( 3, 0 ) ubyte -> x3 "Inline return value spill temp"
-; V199 tmp189 [V199,T95] ( 5, 0 ) ref -> [fp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V199 tmp189 [V199,T95] ( 5, 0 ) ref -> [fp+0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V200 tmp190 [V200,T93] ( 7, 0 ) int -> [fp+0x38] "Inline stloc first use temp" ; V201 tmp191 [V201,T99] ( 4, 0 ) int -> [fp+0x34] "Inline stloc first use temp" ; V202 tmp192 [V202,T162] ( 2, 0 ) int -> x0 "dup spill" @@ -219,7 +219,7 @@ ;* V206 tmp196 [V206 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V207 tmp197 [V207 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V208 tmp198 [V208,T151] ( 3, 0 ) ubyte -> [fp+0x28] "Inline stloc first use temp"
-; V209 tmp199 [V209,T92] ( 8, 0 ) ref -> [fp+0x18] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V209 tmp199 [V209,T92] ( 8, 0 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V210 tmp200 [V210,T104] ( 3, 0 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ; V211 tmp201 [V211,T96] ( 5, 0 ) int -> x0 "Inline stloc first use temp" ; V212 tmp202 [V212,T163] ( 2, 0 ) int -> x4 "Inlining Arg" @@ -436,7 +436,7 @@ G_M20288_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=48 bbWeight=0.01 PerfScore 0.13 G_M20288_IG02: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cmp w20, #4, LSL #12
- bge G_M20288_IG82
+ bge G_M20288_IG64
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -460,7 +460,7 @@ G_M20288_IG03: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg blr x2 ; gcr arg pop 0 str x0, [fp, #0xD1FFAB1E] // [V05 loc4+0x08]
- cbz x0, G_M20288_IG61
+ cbz x0, G_M20288_IG79
add x24, x0, #16 ; byrRegs +[x24] ldr w25, [x0, #0x08] @@ -474,7 +474,7 @@ G_M20288_IG04: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG83
+ bhi G_M20288_IG65
ldr x2, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -500,7 +500,7 @@ G_M20288_IG05: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe ; gcr arg pop 0 ;; size=40 bbWeight=399.96 PerfScore 3199.68 G_M20288_IG06: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref, isz
- cbz w25, G_M20288_IG62
+ cbz w25, G_M20288_IG80
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -512,13 +512,13 @@ G_M20288_IG06: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg sxtw w24, w20 ; byrRegs -[x24] ldrb w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x14]
- cbnz w0, G_M20288_IG63
+ cbnz w0, G_M20288_IG81
;; size=48 bbWeight=99.99 PerfScore 1349.86 G_M20288_IG07: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG83
+ bhi G_M20288_IG65
ldr x2, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -551,7 +551,7 @@ G_M20288_IG09: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr x0, [fp, #0xD1FFAB1E] // [V05 loc4] ; gcrRegs +[x0] sxtw w1, w24
- tbnz w1, #31, G_M20288_IG28
+ tbnz w1, #31, G_M20288_IG42
;; size=20 bbWeight=99.99 PerfScore 449.95 G_M20288_IG10: ; bbWeight=99.78, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref, isz ; gcrRegs -[x0] @@ -697,7 +697,7 @@ G_M20288_IG21: ; bbWeight=99.78, gcrefRegs=A80000 {x19 x21 x23}, byrefReg str xzr, [fp, #0x58] // [V77 tmp67] ;; size=4 bbWeight=99.78 PerfScore 99.78 G_M20288_IG22: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
- cbz w0, G_M20288_IG64
+ cbz w0, G_M20288_IG82
ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0x60] // [V39 tmp29] add w0, w0, w1 @@ -707,7 +707,7 @@ G_M20288_IG23: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG83
+ bhi G_M20288_IG65
ldr x2, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -734,7 +734,7 @@ G_M20288_IG24: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe ; gcr arg pop 0 ;; size=40 bbWeight=399.96 PerfScore 3199.68 G_M20288_IG25: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref, isz
- cbz w25, G_M20288_IG65
+ cbz w25, G_M20288_IG49
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -749,10 +749,10 @@ G_M20288_IG26: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w24, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w24, w0
- bhi G_M20288_IG83
+ bhi G_M20288_IG65
ldr x25, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x25]
- tbz w24, #31, G_M20288_IG41
+ tbz w24, #31, G_M20288_IG28
;; size=24 bbWeight=99.99 PerfScore 849.91 G_M20288_IG27: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref movz x26, #0xD1FFAB1E @@ -769,104 +769,124 @@ G_M20288_IG27: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe blr x2 ; gcrRegs -[x0-x1] +[x26] ; gcr arg pop 0
- b G_M20288_IG40 - ;; size=44 bbWeight=399.96 PerfScore 3599.64 -G_M20288_IG28: ; bbWeight=0.02, gcrefRegs=A80001 {x0 x19 x21 x23}, byrefRegs=8000000 {x27}, byref, isz - ; gcrRegs -[x26] +[x0] - ; byrRegs -[x25] +[x27] - cbnz x0, G_M20288_IG32 - ;; size=4 bbWeight=0.02 PerfScore 0.02 -G_M20288_IG29: ; bbWeight=0.02, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=8000000 {x27}, byref
+ mov x0, x26 + ; gcrRegs +[x0] + mov x1, x26 + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1 x26] + ; gcr arg pop 0 + ;; size=68 bbWeight=399.96 PerfScore 5799.42 +G_M20288_IG28: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref, isz + mov x0, x25 + ; byrRegs +[x0] + sxtw w1, w24 + bl <unknown method> + ; gcrRegs +[x0] + ; byrRegs -[x0 x25] + ; gcr arg pop 0 + mov x24, x0 + ; gcrRegs +[x24] + ldr x25, [fp, #0xD1FFAB1E] // [V05 loc4+0x08] + ; gcrRegs +[x25] + stp xzr, xzr, [fp, #0xD1FFAB1E] + stp xzr, xzr, [fp, #0xD1FFAB1E] + str xzr, [fp, #0xD1FFAB1E] + cbz x25, G_M20288_IG35 + ;; size=36 bbWeight=99.99 PerfScore 849.91 +G_M20288_IG29: ; bbWeight=96.02, gcrefRegs=3A80000 {x19 x21 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- movz x0, #0xD1FFAB1E // code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
+ mov x26, x21 + ; gcrRegs +[x26] + ldr w0, [x25, #0x08] + sub w0, w0, #1 + orr w0, w0, #15 + clz w0, w0 + eor w0, w0, #31 + sub w27, w0, #3 + movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0] - blr x0 - ; gcrRegs +[x0]
+ mov w1, #15 + bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS + ; byrRegs +[x0]
; gcr arg pop 0
- mov x25, x0 - ; gcrRegs +[x25] - ;; size=24 bbWeight=0.02 PerfScore 0.10 -G_M20288_IG30: ; bbWeight=0.02, gcrefRegs=2A80000 {x19 x21 x23 x25}, byrefRegs=8000000 {x27}, byref, isz - ; gcrRegs -[x0] - ldrsb wzr, [x25] - mov w0, #1 - movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ ldr x28, [x0] + ; gcrRegs +[x28] + cbz x28, G_M20288_IG40 + ;; size=56 bbWeight=96.02 PerfScore 1248.23 +G_M20288_IG30: ; bbWeight=86.52, gcrefRegs=17A80000 {x19 x21 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0] + mov w2, wzr + mov w3, #1 + str w3, [fp, #0x50] // [V158 tmp148] + ldr w0, [x28, #0x08] + cmp w0, w27 + bls G_M20288_IG34 + ;; size=24 bbWeight=86.52 PerfScore 562.38 +G_M20288_IG31: ; bbWeight=86.43, gcrefRegs=17A80000 {x19 x21 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz + mov w2, #1 + str w2, [fp, #0x54] // [V157 tmp147] + ldr w4, [x25, #0x08] + str w4, [fp, #0x40] // [V184 tmp174] + mov w0, #16 + lsl w5, w0, w27 + str w5, [fp, #0x3C] // [V195 tmp185] + tbz w5, #31, G_M20288_IG33 + ;; size=32 bbWeight=86.43 PerfScore 734.68 +G_M20288_IG32: ; bbWeight=345.73, gcrefRegs=17A80000 {x19 x21 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + mov x6, x0 + ; gcrRegs +[x6] + mov x1, x6 + ; gcrRegs +[x1] + movz x6, #0xD1FFAB1E // code for <unknown method> + ; gcrRegs -[x6] + movk x6, #0xD1FFAB1E LSL #16 + movk x6, #0xD1FFAB1E LSL #32 + ldr x6, [x6] + blr x6 + ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x0, [x25, #0x28] - ; gcrRegs +[x0] - cbnz x0, G_M20288_IG33 - ;; size=36 bbWeight=0.02 PerfScore 0.29 -G_M20288_IG31: ; bbWeight=0.36, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=8000000 {x27}, byref - ; gcrRegs -[x0 x25] - mov x26, xzr - ; byrRegs +[x26] - mov w25, wzr
...

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-20 (-11.90%) : 148024.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T02] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> x0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -18,22 +18,21 @@ ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP
-; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V10 PSPSym]
+ str x2, [fp, #0x18] // [V10 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref str xzr, [x19, #0x08] ldr x0, [x20, #0x18] @@ -49,12 +48,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=44 bbWeight=8 PerfScore 112.00
+ ;; size=40 bbWeight=8 PerfScore 108.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -66,35 +62,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=36 bbWeight=8 PerfScore 68.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 32, PerfScore 207.00, instruction count 42, allocated bytes for code 168 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 219.00, instruction count 37, allocated bytes for code 148 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -113,31 +104,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-16 (-4.12%) : 538.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
@@ -8,30 +8,31 @@ ; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T06] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T07] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> -; V03 loc0 [V03,T05] ( 4, 8.70) ubyte -> x22 -; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T07] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T08] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> +; V03 loc0 [V03,T06] ( 4, 8.70) ubyte -> x22 +; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T02] ( 4, 16.35) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP +; V14 tmp7 [V14,T04] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 18.39) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 9.65) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T13] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V21 tmp14 [V21,T02] ( 3, 20.09) ref -> x0 "arr expr" -; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T15] ( 3, 1.50) ref -> x1 "CSE - moderate"
+;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V21 tmp14 [V21,T01] ( 3, 20.09) ref -> x0 "arr expr" +; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T03] ( 2, 8.00) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -58,7 +59,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 str x0, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc2] cbnz w1, G_M52679_IG09 add x1, fp, #32 // [V05 loc2] @@ -90,19 +91,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14] cmp w23, w0
- bne G_M52679_IG10
+ bne G_M52679_IG11
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG14
+ bhs G_M52679_IG12
;; size=12 bbWeight=4.00 PerfScore 18.01 G_M52679_IG08: ; bbWeight=3.35, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG12
+ bhs G_M52679_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,21 +136,11 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG10: ; bbWeight=0.65, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w23, w0 - bne G_M52679_IG13 - ;; size=12 bbWeight=0.65 PerfScore 2.93 -G_M52679_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M52679_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -158,11 +149,11 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG16
+ cbz w0, G_M52679_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -170,18 +161,18 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V14}
+G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V15}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -189,17 +180,17 @@ G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG19: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG20
+ cbz w0, G_M52679_IG18
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04 V15}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -207,7 +198,7 @@ G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 44, PerfScore 168.65, instruction count 97, allocated bytes for code 388 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 161.72, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -218,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -255,4 +246,4 @@ Unwind Info: *************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)
+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
-16 (-4.12%) : 217783.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
@@ -8,7 +8,7 @@ ; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01 ] ( 3, 5 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Numerics.BigInteger> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Numerics.BigInteger> ; V03 loc2 [V03,T06] ( 3, 6 ) ref -> x19 class-hnd exact single-def <System.String> @@ -50,10 +50,10 @@ ;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "field V12._sign (fldOffset=0x8)" P-DEP ; V40 tmp34 [V40 ] ( 3, 10 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V14._bits (fldOffset=0x0)" P-DEP ; V41 tmp35 [V41 ] ( 3, 10 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V14._sign (fldOffset=0x8)" P-DEP
-; V42 tmp36 [V42,T12] ( 3, 4 ) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP -; V43 tmp37 [V43,T14] ( 3, 4 ) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP -; V44 tmp38 [V44,T13] ( 3, 4 ) byref -> x4 "field V19._reference (fldOffset=0x0)" P-INDEP -; V45 tmp39 [V45,T15] ( 3, 4 ) int -> x6 "field V19._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T11] ( 3, 5.07) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP +; V43 tmp37 [V43,T12] ( 3, 5.07) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP +; V44 tmp38 [V44,T14] ( 3, 4 ) byref -> x3 "field V19._reference (fldOffset=0x0)" P-INDEP +; V45 tmp39 [V45,T15] ( 3, 4 ) int -> x4 "field V19._length (fldOffset=0x8)" P-INDEP
; V46 tmp40 [V46 ] ( 3, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V22._bits (fldOffset=0x0)" P-DEP ; V47 tmp41 [V47 ] ( 3, 10 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V22._sign (fldOffset=0x8)" P-DEP ;* V48 tmp42 [V48 ] ( 0, 0 ) ref -> zero-ref "field V23._bits (fldOffset=0x0)" P-DEP @@ -108,7 +108,7 @@ G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x23, [fp, #0x38] // [V24 tmp18] ; gcrRegs +[x23] ldr w5, [fp, #0x40] // [V25 tmp19]
- cbnz x0, G_M64460_IG06
+ cbnz x0, G_M64460_IG08
cbnz x23, G_M64460_IG05 stp xzr, xzr, [fp, #0x28] smull x1, w2, w5 @@ -126,52 +126,43 @@ G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr w25, [fp, #0x30] // [V41 tmp35] b G_M64460_IG11 ;; size=60 bbWeight=2 PerfScore 40.00
-G_M64460_IG05: ; bbWeight=0.93, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M64460_IG05: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x24] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- mov w3, w1 - mov x1, x0 - ; byrRegs +[x1] - b G_M64460_IG07 - ;; size=20 bbWeight=0.93 PerfScore 2.80 -G_M64460_IG06: ; bbWeight=1.07, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ; byrRegs -[x0-x1]
+ ;; size=8 bbWeight=2 PerfScore 2.00 +G_M64460_IG06: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M64460_IG09 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M64460_IG07: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref + ; gcrRegs -[x23] + mov x3, xzr + ; byrRegs +[x3] + mov w4, wzr + b G_M64460_IG10 + ;; size=12 bbWeight=0.93 PerfScore 1.87 +G_M64460_IG08: ; bbWeight=1.07, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x23] + ; byrRegs -[x0 x3]
add x1, x0, #16 ; byrRegs +[x1] ldr w0, [x0, #0x08] ; gcrRegs -[x0] sxtw w3, w0
- ;; size=12 bbWeight=1.07 PerfScore 4.27 -G_M64460_IG07: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref, isz - cbnz x23, G_M64460_IG09 - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M64460_IG08: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref - ; gcrRegs -[x23] - mov x4, xzr - ; byrRegs +[x4] - mov w6, wzr - b G_M64460_IG10 - ;; size=12 bbWeight=0.93 PerfScore 1.87 -G_M64460_IG09: ; bbWeight=1.07, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref - ; gcrRegs +[x23] - ; byrRegs -[x4] - add x4, x23, #16 - ; byrRegs +[x4] - ldr w6, [x23, #0x08] - ;; size=8 bbWeight=1.07 PerfScore 3.74 -G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4}, byref - ; gcrRegs -[x23]
mov x0, x1 ; byrRegs +[x0] mov w1, w3 ; byrRegs -[x1]
- mov x3, x4
+ b G_M64460_IG06 + ;; size=24 bbWeight=1.07 PerfScore 6.40 +G_M64460_IG09: ; bbWeight=1.07, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref + add x3, x23, #16
; byrRegs +[x3]
- mov w4, w6 - ; byrRegs -[x4]
+ ldr w4, [x23, #0x08] + ;; size=8 bbWeight=1.07 PerfScore 3.74 +G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref + ; gcrRegs -[x23]
movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 movk x6, #0xD1FFAB1E LSL #32 @@ -183,7 +174,7 @@ G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4 mov x24, x0 ; gcrRegs +[x24] mov w25, w1
- ;; size=44 bbWeight=2 PerfScore 17.00
+ ;; size=28 bbWeight=2 PerfScore 13.00
G_M64460_IG11: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] stp xzr, xzr, [fp, #0x18] @@ -228,7 +219,7 @@ G_M64460_IG14: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 388, prolog size 44, PerfScore 167.67, instruction count 97, allocated bytes for code 388 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 165.00, instruction count 93, allocated bytes for code 372 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +230,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+1.14%) : 53391.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T31] ( 4, 4 ) ref -> x20 class-hnd <Microsoft.Extensions.Logging.LogValuesFormatter> ; V02 loc1 [V02,T06] ( 6, 21 ) int -> x19 ; V03 loc2 [V03 ] ( 1, 4 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.Logging.FormattedLogValues>
-; V04 loc3 [V04 ] ( 18, 63.99) struct (40) [fp+0x70] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 loc3 [V04 ] ( 20, 59.99) struct (40) [fp+0x70] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.Extensions.Logging.FormattedLogValues> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 3, 24 ) ref -> x23 class-hnd exact "dup spill" <<unknown class>> @@ -50,7 +50,7 @@ ;* V39 tmp33 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V40 tmp34 [V40,T15] ( 2, 8 ) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.String> ;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V42 tmp36 [V42,T02] ( 4, 32 ) int -> x21 "Inlining Arg"
+; V42 tmp36 [V42,T02] ( 6, 24.00) int -> x21 "Inlining Arg"
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V44 tmp38 [V44,T08] ( 2, 16 ) byref -> x22 "Inlining Arg" ;* V45 tmp39 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -165,7 +165,7 @@ G_M64132_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 ldr w0, [fp, #0x80] // [V04 loc3+0x10] ldr w1, [fp, #0x90] // [V04 loc3+0x20] cmp w0, w1
- bhi G_M64132_IG20
+ bhi G_M64132_IG17
ldr x2, [fp, #0x88] // [V04 loc3+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -192,9 +192,9 @@ G_M64132_IG06: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 ;; size=40 bbWeight=2 PerfScore 16.00 G_M64132_IG07: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w22, #3
- blo G_M64132_IG11
+ blo G_M64132_IG16
;; size=8 bbWeight=4 PerfScore 6.00
-G_M64132_IG08: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+G_M64132_IG08: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -205,17 +205,17 @@ G_M64132_IG08: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 ldr w0, [fp, #0x80] // [V04 loc3+0x10] add w0, w0, #3 str w0, [fp, #0x80] // [V04 loc3+0x10]
- ;; size=40 bbWeight=1.99 PerfScore 25.90 -G_M64132_IG09: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x21]
ldr w21, [fp, #0x80] // [V04 loc3+0x10]
+ ; byrRegs -[x21]
ldr w0, [fp, #0x90] // [V04 loc3+0x20] cmp w21, w0
- bhi G_M64132_IG20
+ bhi G_M64132_IG17 + ;; size=56 bbWeight=1.99 PerfScore 36.86 +G_M64132_IG09: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x22, [fp, #0x88] // [V04 loc3+0x18] ; byrRegs +[x22]
- tbz w21, #31, G_M64132_IG13 - ;; size=24 bbWeight=4 PerfScore 34.00
+ tbz w21, #31, G_M64132_IG11 + ;; size=8 bbWeight=4 PerfScore 12.00
G_M64132_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref movz x23, #0xD1FFAB1E movk x23, #0xD1FFAB1E LSL #16 @@ -230,25 +230,6 @@ G_M64132_IG10: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x23]
- b G_M64132_IG12 - ;; size=44 bbWeight=2 PerfScore 18.00 -G_M64132_IG11: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] - ; byrRegs -[x22] - add x0, fp, #112 // [V04 loc3] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M64132_IG09 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M64132_IG12: ; bbWeight=2, gcrefRegs=900000 {x20 x23}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x23] - ; byrRegs +[x22]
mov x0, x23 ; gcrRegs +[x0] mov x1, x23 @@ -259,8 +240,8 @@ G_M64132_IG12: ; bbWeight=2, gcrefRegs=900000 {x20 x23}, byrefRegs=400000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x23]
- ;; size=28 bbWeight=2 PerfScore 13.00 -G_M64132_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=68 bbWeight=2 PerfScore 29.00 +G_M64132_IG11: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
mov x0, x22 ; byrRegs +[x0] sxtw w1, w21 @@ -274,9 +255,9 @@ G_M64132_IG13: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 stp xzr, xzr, [fp, #0x70] stp xzr, xzr, [fp, #0x80] str xzr, [fp, #0x90]
- cbz x1, G_M64132_IG15
+ cbz x1, G_M64132_IG13
;; size=36 bbWeight=4 PerfScore 34.00
-G_M64132_IG14: ; bbWeight=1.92, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
+G_M64132_IG12: ; bbWeight=1.92, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x20 ; gcrRegs +[x0] @@ -288,7 +269,7 @@ G_M64132_IG14: ; bbWeight=1.92, gcrefRegs=300002 {x1 x20 x21}, byrefRegs= blr x3 ; gcrRegs -[x0-x1] ;; size=28 bbWeight=1.92 PerfScore 12.48
-G_M64132_IG15: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M64132_IG13: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32 @@ -328,7 +309,7 @@ G_M64132_IG15: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { cmp w19, #0xD1FFAB1E blt G_M64132_IG03 ;; size=108 bbWeight=4 PerfScore 76.00
-G_M64132_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64132_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] mov x0, x22 mov x1, #1 @@ -475,15 +456,40 @@ G_M64132_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp x20, x2 beq G_M64132_IG19 ;; size=380 bbWeight=1 PerfScore 77.00
-G_M64132_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M64132_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0xD0] ldp x21, x22, [sp, #0xC0] ldp x19, x20, [sp, #0xB0] ldp fp, lr, [sp], #0xE0 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M64132_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M64132_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2]
+ add x0, fp, #112 // [V04 loc3] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ldr w21, [fp, #0x80] // [V04 loc3+0x10] + ldr w0, [fp, #0x90] // [V04 loc3+0x20] + cmp w21, w0 + bls G_M64132_IG09 + ;; size=52 bbWeight=0.01 PerfScore 0.11 +G_M64132_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M64132_IG18: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20]
mov x21, xzr ; byrRegs +[x21] mov w22, wzr @@ -500,17 +506,10 @@ G_M64132_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] bl CORINFO_HELP_THROW ; gcrRegs -[x0]
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M64132_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0
brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1052, prolog size 48, PerfScore 461.96, instruction count 263, allocated bytes for code 1052 (MethodHash=f538057b) for method Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
+; Total bytes of code 1064, prolog size 48, PerfScore 448.95, instruction count 266, allocated bytes for code 1064 (MethodHash=f538057b) for method Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
; ============================================================ Unwind Info: @@ -521,7 +520,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 263 (0x00107) Actual length = 1052 (0x00041c)
+ Function Length : 266 (0x0010a) Actual length = 1064 (0x000428)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+1.24%) : 58162.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,49 +8,49 @@ ; 6 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.38) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T36] ( 10, 5.46) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T35] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x26 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T37] ( 10, 5.46) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T49] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 9.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T28] ( 9, 8.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 9.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T29] ( 9, 8.92) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T27] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T54] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T55] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T58] ( 3, 1.46) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V44 tmp18 [V44,T51] ( 4, 1.92) int -> x2 single-def "Inline stloc first use temp" ; V45 tmp19 [V45,T59] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -58,27 +58,27 @@ ; V47 tmp21 [V47,T60] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V48 tmp22 [V48,T53] ( 4, 1.92) int -> x15 single-def "Inline stloc first use temp" ; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x1 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T56] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T57] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T46] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T47] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T47] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000002000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -138,7 +138,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcr arg pop 0 cmp w0, #8 bne G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -148,7 +148,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -180,19 +180,19 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -235,11 +235,11 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000001000080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000002000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG06 mov x0, x24 @@ -301,18 +301,18 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG35 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000002000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -324,7 +324,7 @@ G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 beq G_M30168_IG09
- ldr x1, [fp, #0x38] // [V16 loc5]
+ ldr x1, [fp, #0x30] // [V16 loc5]
...

+16 (+1.38%) : 206385.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)

@@ -55,7 +55,7 @@ ;* V44 tmp35 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]> ;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]> ; V46 tmp37 [V46 ] ( 6,128.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V47 tmp38 [V47,T18] ( 8, 24.00) int -> x24 "Inline return value spill temp"
+; V47 tmp38 [V47,T18] ( 8, 24.00) int -> x25 "Inline return value spill temp"
; V48 tmp39 [V48,T04] ( 2, 64 ) long -> x0 "impAppendStmt" ; V49 tmp40 [V49,T14] ( 2, 32.00) long -> x0 "impAppendStmt" ; V50 tmp41 [V50,T37] ( 3, 16.00) int -> x24 "Inline stloc first use temp" @@ -84,10 +84,10 @@ ;* V73 tmp64 [V73 ] ( 0, 0 ) int -> zero-ref "field V23._sign (fldOffset=0x8)" P-DEP ; V74 tmp65 [V74 ] ( 3, 40 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V25._bits (fldOffset=0x0)" P-DEP ; V75 tmp66 [V75 ] ( 3, 40 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V25._sign (fldOffset=0x8)" P-DEP
-; V76 tmp67 [V76,T29] ( 3, 16 ) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP -; V77 tmp68 [V77,T33] ( 3, 16 ) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP -; V78 tmp69 [V78,T30] ( 3, 16 ) byref -> x3 "field V30._reference (fldOffset=0x0)" P-INDEP -; V79 tmp70 [V79,T34] ( 3, 16 ) int -> x4 "field V30._length (fldOffset=0x8)" P-INDEP
+; V76 tmp67 [V76,T29] ( 3, 20.27) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP +; V77 tmp68 [V77,T31] ( 3, 20.27) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP +; V78 tmp69 [V78,T33] ( 3, 16 ) byref -> x3 "field V30._reference (fldOffset=0x0)" P-INDEP +; V79 tmp70 [V79,T35] ( 3, 16 ) int -> x4 "field V30._length (fldOffset=0x8)" P-INDEP
; V80 tmp71 [V80,T20] ( 3, 24 ) ref -> x25 "field V32._bits (fldOffset=0x0)" P-INDEP ; V81 tmp72 [V81,T24] ( 3, 24 ) int -> x26 "field V32._sign (fldOffset=0x8)" P-INDEP ; V82 tmp73 [V82,T17] ( 4, 24.54) ref -> x24 "field V33._bits (fldOffset=0x0)" P-INDEP @@ -102,9 +102,9 @@ ;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "field V37._sign (fldOffset=0x8)" P-DEP ; V92 tmp83 [V92 ] ( 3, 40 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V39._bits (fldOffset=0x0)" P-DEP ; V93 tmp84 [V93 ] ( 3, 40 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V39._sign (fldOffset=0x8)" P-DEP
-; V94 tmp85 [V94,T31] ( 3, 16 ) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP -; V95 tmp86 [V95,T35] ( 3, 16 ) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP -; V96 tmp87 [V96,T32] ( 3, 16 ) byref -> x3 "field V44._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp85 [V94,T30] ( 3, 20.27) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP +; V95 tmp86 [V95,T32] ( 3, 20.27) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP +; V96 tmp87 [V96,T34] ( 3, 16 ) byref -> x3 "field V44._reference (fldOffset=0x0)" P-INDEP
; V97 tmp88 [V97,T36] ( 3, 16 ) int -> x4 "field V44._length (fldOffset=0x8)" P-INDEP ; V98 tmp89 [V98 ] ( 4, 56.00) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V46._flags (fldOffset=0x0)" P-DEP ; V99 tmp90 [V99 ] ( 3, 64.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V46._hi32 (fldOffset=0x4)" P-DEP @@ -154,7 +154,7 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w20, wzr ldr w21, [x19, #0x08] cmp w21, #0
- ble G_M48799_IG31
+ ble G_M48799_IG37
;; size=48 bbWeight=1 PerfScore 12.00 G_M48799_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -167,7 +167,7 @@ G_M48799_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr w1, [x1, #0x08] ; gcrRegs -[x1] cmp w20, w1
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ldr x1, [fp, #0xA8] // [V01 loc1] ; gcrRegs +[x1] mov w0, #24 @@ -198,7 +198,7 @@ G_M48799_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, b ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w22, w0
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ldr x0, [fp, #0xA8] // [V01 loc1] ; gcrRegs +[x0] mov x2, #24 @@ -221,7 +221,7 @@ G_M48799_IG08: ; bbWeight=16, isz, extend ; byrRegs -[x1] sub w23, w1, w0 cmp w23, #0
- ble G_M48799_IG17
+ ble G_M48799_IG20
;; size=20 bbWeight=16 PerfScore 80.00 G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x24, [fp, #0x60] // [V14 tmp5+0x08] @@ -233,7 +233,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x1, [x1] ; gcrRegs +[x1] cmp w23, #60
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ubfiz x0, x23, #4, #32 add x0, x0, #16 add x1, x1, x0 @@ -242,7 +242,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x23, [x1] ; gcrRegs +[x23] ldr w5, [x1, #0x08]
- cbnz x24, G_M48799_IG11
+ cbnz x24, G_M48799_IG13
cbnz x23, G_M48799_IG10 stp xzr, xzr, [fp, #0x38] smull x1, w2, w5 @@ -258,41 +258,66 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x1, [fp, #0x38] // [V74 tmp65] ; gcrRegs +[x1] ldr w2, [fp, #0x40] // [V75 tmp66]
- b G_M48799_IG16
+ b G_M48799_IG19
;; size=104 bbWeight=8 PerfScore 272.00
-G_M48799_IG10: ; bbWeight=3.73, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M48799_IG10: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- b G_M48799_IG12 - ;; size=12 bbWeight=3.73 PerfScore 7.46 -G_M48799_IG11: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref - ; gcrRegs +[x24] - ; byrRegs -[x0] - add x0, x24, #16 - ; byrRegs +[x0] - ldr w1, [x24, #0x08] - ;; size=8 bbWeight=4.27 PerfScore 14.94 -G_M48799_IG12: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz - ; gcrRegs -[x24] - cbnz x23, G_M48799_IG14
+ ;; size=8 bbWeight=8 PerfScore 8.00 +G_M48799_IG11: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M48799_IG17
;; size=4 bbWeight=8 PerfScore 8.00
-G_M48799_IG13: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
+G_M48799_IG12: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
; gcrRegs -[x23] mov x3, xzr ; byrRegs +[x3] mov w4, wzr
- b G_M48799_IG15
+ b G_M48799_IG18
;; size=12 bbWeight=3.73 PerfScore 7.46
-G_M48799_IG14: ; bbWeight=4.27, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref
+G_M48799_IG13: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref + ; gcrRegs +[x23-x24] + ; byrRegs -[x0 x3] + add x0, x24, #16 + ; byrRegs +[x0] + ldr w1, [x24, #0x08] + b G_M48799_IG11 + ;; size=12 bbWeight=4.27 PerfScore 19.21 +G_M48799_IG14: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23-x24] + ; byrRegs -[x0] + ldp x1, x2, [fp, #0x60] // [V14 tmp5+0x08], [V14 tmp5+0x10] + ; gcrRegs +[x1] + add x0, fp, #136 // [V04 loc4+0x08] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x1] + ; gcr arg pop 0 + sxtw w23, w0 + ;; size=32 bbWeight=8 PerfScore 76.00 +G_M48799_IG15: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr q16, [fp, #0x70] // [V06 loc6] + str q16, [fp, #0x18] // [V46 tmp37] + ldr x0, [fp, #0x20] // [V100 tmp91] + ldr w1, [fp, #0x1C] // [V99 tmp90] + orr x0, x0, x1 + cbnz x0, G_M48799_IG35 + ;; size=24 bbWeight=16 PerfScore 136.00 +G_M48799_IG16: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M48799_IG32 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M48799_IG17: ; bbWeight=4.27, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x23]
- ; byrRegs -[x3]
+ ; byrRegs +[x0]
add x3, x23, #16 ; byrRegs +[x3] ldr w4, [x23, #0x08] ;; size=8 bbWeight=4.27 PerfScore 14.94
-G_M48799_IG15: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref
+G_M48799_IG18: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref
; gcrRegs -[x23] movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 @@ -306,7 +331,7 @@ G_M48799_IG15: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 mov x1, x0 ; gcrRegs +[x1] ;; size=28 bbWeight=8 PerfScore 52.00
-G_M48799_IG16: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M48799_IG19: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add x0, fp, #136 // [V04 loc4+0x08] movz x3, #0xD1FFAB1E // code for <unknown method> @@ -317,10 +342,10 @@ G_M48799_IG16: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x1] ; gcr arg pop 0 sxtw w23, w0
- b G_M48799_IG26
+ b G_M48799_IG15
;; size=32 bbWeight=8 PerfScore 60.00
-G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - tbz w23, #31, G_M48799_IG25
+G_M48799_IG20: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + tbz w23, #31, G_M48799_IG14
ldr x24, [fp, #0x88] // [V04 loc4+0x08] ; gcrRegs +[x24] ldr w2, [fp, #0x90] // [V04 loc4+0x10] @@ -331,7 +356,7 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] neg w0, w23 cmp w0, #60
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
neg w0, w23 ubfiz x0, x0, #4, #32 add x0, x0, #16 @@ -341,8 +366,8 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x23, [x1] ; gcrRegs +[x23] ldr w5, [x1, #0x08]
- cbnz x24, G_M48799_IG19 - cbnz x23, G_M48799_IG18
+ cbnz x24, G_M48799_IG24 + cbnz x23, G_M48799_IG21
stp xzr, xzr, [fp, #0x28] smull x1, w2, w5 ; byrRegs -[x1] @@ -357,41 +382,65 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x25, [fp, #0x28] // [V92 tmp83] ; gcrRegs +[x25] ldr w26, [fp, #0x30] // [V93 tmp84]
- b G_M48799_IG24
+ b G_M48799_IG31
;; size=116 bbWeight=8 PerfScore 288.00
-G_M48799_IG18: ; bbWeight=3.73, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M48799_IG21: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x25] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- b G_M48799_IG20 - ;; size=12 bbWeight=3.73 PerfScore 7.46 -G_M48799_IG19: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref - ; gcrRegs +[x24] - ; byrRegs -[x0] - add x0, x24, #16 - ; byrRegs +[x0] - ldr w1, [x24, #0x08] - ;; size=8 bbWeight=4.27 PerfScore 14.94 -G_M48799_IG20: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz - ; gcrRegs -[x24] - cbnz x23, G_M48799_IG22
+ ;; size=8 bbWeight=8 PerfScore 8.00 +G_M48799_IG22: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M48799_IG29
;; size=4 bbWeight=8 PerfScore 8.00
-G_M48799_IG21: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
...

realworld.run.linux.arm64.checked.mch

-12 (-2.73%) : 30569.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)

@@ -8,34 +8,35 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> -; V01 loc0 [V01,T09] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T19] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V00 arg0 [V00,T09] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> +; V01 loc0 [V01,T10] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T20] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V03 loc2 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V04 loc3 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x21 single-def
+; V06 tmp1 [V06,T11] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x21 single-def
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp4 [V09,T11] ( 4, 3.50) ref -> x2 -; V10 tmp5 [V10,T07] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp6 [V11,T15] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V09 tmp4 [V09,T12] ( 4, 3.50) ref -> x2 +; V10 tmp5 [V10,T08] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V11 tmp6 [V11,T16] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp9 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V16 tmp11 [V16,T02] ( 4, 17 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V17 tmp12 [V17,T04] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V17 tmp12 [V17,T03] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V18 tmp13 [V18,T00] ( 6, 21 ) int -> x1 "field V04._index (fldOffset=0x10)" P-INDEP
-; V19 tmp14 [V19,T05] ( 3, 13 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V20 tmp15 [V20,T13] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T06] ( 2, 9 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V20 tmp15 [V20,T14] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V22 tmp17 [V22,T17] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP -; V23 tmp18 [V23,T16] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+;* V22 tmp17 [V22,T18] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP +; V23 tmp18 [V23,T17] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V24 tmp19 [V24,T01] ( 3, 24 ) ref -> x2 "arr expr"
-; V25 PSPSym [V25,T18] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V26 cse0 [V26,T03] ( 3, 20 ) int -> x2 "CSE - aggressive" -; V27 cse1 [V27,T12] ( 4, 3 ) long -> x20 "CSE - aggressive"
+; V25 PSPSym [V25,T19] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V26 cse0 [V26,T05] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V27 cse1 [V27,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V28 cse2 [V28,T13] ( 4, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -108,7 +109,7 @@ G_M45525_IG04: ; bbWeight=1, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=000 ; GC ptr vars +{V02} str wzr, [fp, #0x18] // [V03 loc2] ;; size=40 bbWeight=1 PerfScore 9.00
-G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG05: ; bbWeight=1, gcVars=0000000000100000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldrb w1, [fp, #0x18] // [V03 loc2] cbnz w1, G_M45525_IG08 @@ -131,17 +132,17 @@ G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=800 G_M45525_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x14] cmp w0, w2
- bne G_M45525_IG09
+ bne G_M45525_IG10
;; size=12 bbWeight=8 PerfScore 36.00 G_M45525_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x10] cmp w1, w2
- bhs G_M45525_IG12
+ bhs G_M45525_IG11
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w1, w3
- bhs G_M45525_IG10
+ bhs G_M45525_IG09
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -168,16 +169,11 @@ G_M45525_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp w0, w2 - bne G_M45525_IG11 - b G_M45525_IG12 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -186,11 +182,11 @@ G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M45525_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG14
+ cbz w0, G_M45525_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V02} @@ -198,38 +194,38 @@ G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45525_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M45525_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M45525_IG15: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V19}
+G_M45525_IG14: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V20}
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] add x3, fp, #64 str x3, [sp, #0x10] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M45525_IG16: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG15: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG17
+ cbz w0, G_M45525_IG16
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V02 V19}
+ ; GC ptr vars -{V02 V20}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M45525_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M45525_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 32, PerfScore 199.00, instruction count 110, allocated bytes for code 440 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
+; Total bytes of code 428, prolog size 32, PerfScore 189.00, instruction count 107, allocated bytes for code 428 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +236,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -275,4 +271,4 @@ Unwind Info: *************** EH table for System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M45525_IG05..G_M45525_IG12) handled by [G_M45525_IG15..END) (fault)
+EH#0: try [G_M45525_IG05..G_M45525_IG11) handled by [G_M45525_IG14..END) (fault)
-12 (-2.00%) : 6196.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
@@ -10,8 +10,8 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -20,20 +20,21 @@ ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp3 [V11,T05] ( 3, 12 ) ref -> x24 class-hnd "Inlining Arg" <System.AggregateException>
-;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp6 [V14,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V15 tmp7 [V15,T03] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V14 tmp6 [V14,T04] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V15 tmp7 [V15,T02] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V17 tmp9 [V17,T07] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V17 tmp9 [V17,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V18 tmp10 [V18,T14] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V21 tmp13 [V21,T14] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp12 [V20,T18] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V21 tmp13 [V21,T15] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V23 PSPSym [V23,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T06] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V25 cse1 [V25,T04] ( 4, 14 ) byref -> x25 "CSE - aggressive"
+; V23 PSPSym [V23,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V25 cse1 [V25,T06] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse2 [V26,T03] ( 4, 14 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -64,7 +65,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x1] ldapr x21, [x1] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG13
+ cbz x21, G_M37406_IG12
;; size=40 bbWeight=1 PerfScore 11.00 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x1] @@ -72,7 +73,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x18] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x18] // [V04 loc2] cbnz w1, G_M37406_IG07 add x1, fp, #24 // [V04 loc2] @@ -92,17 +93,17 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs= mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M37406_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG08
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG11
+ bhs G_M37406_IG10
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M37406_IG09
+ bhs G_M37406_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -200,18 +201,11 @@ G_M37406_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cmp w22, w24 - bne G_M37406_IG10 - b G_M37406_IG11 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M37406_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -220,10 +214,10 @@ G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19] ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG12
+ cbz w0, G_M37406_IG11
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -231,12 +225,12 @@ G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M37406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #40 ; byrRegs +[x0] stlr xzr, [x0] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M37406_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -246,8 +240,8 @@ G_M37406_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG14: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03 V16}
+G_M37406_IG13: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03 V17}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -256,17 +250,17 @@ G_M37406_IG14: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37406_IG15: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG14: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG16
+ cbz w0, G_M37406_IG15
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V03 V16}
+ ; GC ptr vars -{V03 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -275,7 +269,7 @@ G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 40, PerfScore 282.75, instruction count 150, allocated bytes for code 600 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 588, prolog size 40, PerfScore 272.75, instruction count 147, allocated bytes for code 588 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -286,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 130 (0x00082) Actual length = 520 (0x000208)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -325,4 +319,4 @@ Unwind Info: *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG11) handled by [G_M37406_IG14..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG10) handled by [G_M37406_IG13..END) (fault)
-8 (-1.82%) : 15671.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
@@ -10,62 +10,63 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> x19 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> x20 single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> x2 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> x21 "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x28] + stp x21, x22, [sp, #0x38] + str x23, [sp, #0x48]
mov fp, sp
- add x2, sp, #96 - str x2, [fp, #0x28] // [V24 PSPSym]
+ add x2, sp, #80 + str x2, [fp, #0x20] // [V24 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.00 G_M53769_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- str x19, [fp, #0x18] // [V02 loc0]
+ str x19, [fp, #0x10] // [V02 loc0]
; GC ptr vars +{V02}
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1]
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1]
cbnz w1, G_M53769_IG06
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x20] // [V03 loc1]
+ ldrb w0, [fp, #0x18] // [V03 loc1]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -74,7 +75,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180 ; gcr arg pop 0 ldr x21, [x19, #0x08] ; gcrRegs +[x21]
- cbz x21, G_M53769_IG12
+ cbz x21, G_M53769_IG11
;; size=52 bbWeight=1 PerfScore 16.50 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x1, x21 @@ -85,24 +86,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M53769_IG11
+ cbz x0, G_M53769_IG10
mov x21, x0 ldr w22, [x21, #0x14] mov w23, wzr ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M53769_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M53769_IG07
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M53769_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M53769_IG08
+ bhs G_M53769_IG07
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M53769_IG09
+ bhs G_M53769_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -133,21 +134,17 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- cmp w22, w24 - bne G_M53769_IG10 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08]
- b G_M53769_IG12
+ b G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 8.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -156,7 +153,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21] mov x2, x21 ; gcrRegs +[x2] @@ -177,56 +174,56 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs blr x3 ; gcrRegs -[x0-x2 x20-x21] ; gcr arg pop 0
- b G_M53769_IG08
+ b G_M53769_IG07
;; size=60 bbWeight=0.50 PerfScore 6.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG14
+ ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0] ; GC ptr vars -{V02} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x60
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M53769_IG15: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16} - stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - add x3, fp, #96 - str x3, [sp, #0x18]
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M53769_IG14: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17} + stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38] + add x3, fp, #80 + str x3, [sp, #0x10]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG17 - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG16 + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50
+G_M53769_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 36, PerfScore 171.75, instruction count 110, allocated bytes for code 440 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
+; Total bytes of code 432, prolog size 36, PerfScore 166.75, instruction count 108, allocated bytes for code 432 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
...

-4 (-0.18%) : 2260.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 64 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T49] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T48] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T46] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T46] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x12 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -171,7 +171,7 @@ ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V161 tmp136 [V161,T44] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -184,35 +184,35 @@ ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V174 tmp149 [V174,T45] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
+ add w1, w27, #1 + sxtw w26, w1 + cmp w27, w24
bhs G_M9731_IG73
- ldrh w1, [x23, w25, UXTW #2] - sxtw w25, w1
...

-8 (-0.15%) : 1191.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

+16 (+1.44%) : 11781.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 13 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T20] ( 7, 196 ) ref -> x20 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T00] ( 16,1249 ) ref -> x21 class-hnd single-def <<unknown class>>
+; V00 loc0 [V00,T21] ( 7, 196 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T00] ( 15,1121 ) ref -> x21 class-hnd single-def <<unknown class>>
; V02 loc2 [V02,T05] ( 9, 641 ) ref -> x22 class-hnd single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 8, 392 ) int -> registers
-; V04 loc4 [V04,T36] ( 2, 0 ) ref -> [fp+0x20] class-hnd exact EH-live single-def <<unknown class>> -; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V06 loc6 [V06,T23] ( 2, 192 ) long -> x23 -; V07 loc7 [V07,T26] ( 3, 80 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> -; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
+; V04 loc4 [V04,T37] ( 2, 0 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <<unknown class>> +; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op +; V06 loc6 [V06,T24] ( 2, 192 ) long -> x23 +; V07 loc7 [V07,T27] ( 3, 80 ) ref -> [fp+0x10] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> +; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T01] ( 11,1088 ) int -> x25 ; V10 loc10 [V10,T07] ( 5, 448 ) ref -> x1 class-hnd exact <System.Threading.TimerQueue> ; V11 loc11 [V11,T10] ( 4, 384 ) long -> x26 @@ -24,62 +24,64 @@ ;* V13 loc13 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]> ;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T34] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
+; V16 tmp1 [V16,T35] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V18 tmp3 [V18,T29] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V19 tmp4 [V19,T18] ( 2, 256 ) ubyte -> x0 "Inlining Arg" -; V20 tmp5 [V20,T21] ( 3, 192 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> -; V21 tmp6 [V21,T14] ( 4, 256 ) int -> x15 "Inline stloc first use temp" -; V22 tmp7 [V22,T16] ( 2, 256 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
+;* V18 tmp3 [V18,T30] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V19 tmp4 [V19,T19] ( 2, 256 ) ubyte -> x0 "Inlining Arg" +; V20 tmp5 [V20,T22] ( 3, 192 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> +; V21 tmp6 [V21,T15] ( 4, 256 ) int -> x15 "Inline stloc first use temp" +; V22 tmp7 [V22,T17] ( 2, 256 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
-;* V24 tmp9 [V24,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp9 [V24,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V26 tmp11 [V26,T13] ( 3, 272 ) int -> x2 "Inline stloc first use temp" -;* V27 tmp12 [V27,T32] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP -; V28 tmp13 [V28,T12] ( 2, 192 ) ref -> x26 "field V13._current (fldOffset=0x8)" P-INDEP
+; V26 tmp11 [V26,T14] ( 3, 272 ) int -> x2 "Inline stloc first use temp" +;* V27 tmp12 [V27,T33] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP +; V28 tmp13 [V28,T13] ( 2, 192 ) ref -> x27 "field V13._current (fldOffset=0x8)" P-INDEP
; V29 tmp14 [V29,T02] ( 6, 656 ) int -> x25 "field V13._index (fldOffset=0x10)" P-INDEP
-; V30 tmp15 [V30,T24] ( 2, 144 ) int -> x23 "field V13._version (fldOffset=0x14)" P-INDEP -; V31 tmp16 [V31,T30] ( 2, 32 ) ref -> x0 "field V23._list (fldOffset=0x0)" P-INDEP
+; V30 tmp15 [V30,T25] ( 2, 144 ) int -> x23 "field V13._version (fldOffset=0x14)" P-INDEP +; V31 tmp16 [V31,T31] ( 2, 32 ) ref -> x0 "field V23._list (fldOffset=0x0)" P-INDEP
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp18 [V33,T33] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP -; V34 tmp19 [V34,T31] ( 2, 32 ) int -> x23 "field V23._version (fldOffset=0x14)" P-INDEP -; V35 tmp20 [V35,T37] ( 2, 0 ) ref -> x2 "argument with side effect"
+;* V33 tmp18 [V33,T34] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP +; V34 tmp19 [V34,T32] ( 2, 32 ) int -> x23 "field V23._version (fldOffset=0x14)" P-INDEP +; V35 tmp20 [V35,T38] ( 2, 0 ) ref -> x2 "argument with side effect"
; V36 tmp21 [V36,T03] ( 3, 768 ) ref -> x14 "arr expr" ; V37 tmp22 [V37,T11] ( 3, 384 ) ref -> x2 "arr expr" ; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> x0 "arr expr"
-; V39 tmp24 [V39,T17] ( 2, 256 ) ref -> x0 "argument with side effect" -; V40 PSPSym [V40,T35] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" -; V41 cse0 [V41,T06] ( 3, 384 ) int -> x2 "CSE - aggressive" -; V42 cse1 [V42,T15] ( 4, 256 ) int -> x0 "CSE - moderate" -; V43 cse2 [V43,T22] ( 3, 192 ) ref -> x1 "CSE - moderate" -; V44 cse3 [V44,T27] ( 5, 68 ) long -> x19 "CSE - moderate" -; V45 cse4 [V45,T25] ( 2, 128 ) int -> x12 "CSE - moderate" -; V46 cse5 [V46,T28] ( 6, 51 ) ref -> x1 multi-def "CSE - moderate"
+; V39 tmp24 [V39,T18] ( 2, 256 ) ref -> x0 "argument with side effect" +; V40 PSPSym [V40,T36] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V41 cse0 [V41,T12] ( 3, 384 ) int -> x26 "CSE - aggressive" +; V42 cse1 [V42,T06] ( 3, 384 ) int -> x2 "CSE - aggressive" +; V43 cse2 [V43,T16] ( 4, 256 ) int -> x0 "CSE - moderate" +; V44 cse3 [V44,T23] ( 3, 192 ) ref -> x1 "CSE - moderate" +; V45 cse4 [V45,T28] ( 5, 68 ) long -> x19 "CSE - moderate" +; V46 cse5 [V46,T26] ( 2, 128 ) int -> x12 "CSE - moderate" +; V47 cse6 [V47,T29] ( 6, 51 ) ref -> x1 multi-def "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M45973_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70]
+ stp x19, x20, [sp, #0x38] + stp x21, x22, [sp, #0x48] + stp x23, x24, [sp, #0x58] + stp x25, x26, [sp, #0x68] + str x27, [sp, #0x78]
mov fp, sp add x0, sp, #128
- str x0, [fp, #0x38] // [V40 PSPSym] - ;; size=32 bbWeight=1 PerfScore 7.00
+ str x0, [fp, #0x30] // [V40 PSPSym] + ;; size=36 bbWeight=1 PerfScore 8.00
G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #0xD1FFAB1E LSL #32 ldp x21, x20, [x19, #0xD1FFAB1E] ; gcrRegs +[x20-x21]
- str x20, [fp, #0x20] // [V04 loc4]
+ str x20, [fp, #0x18] // [V04 loc4]
; GC ptr vars +{V04}
- str wzr, [fp, #0x30] // [V05 loc5]
+ str wzr, [fp, #0x28] // [V05 loc5]
;; size=24 bbWeight=1 PerfScore 7.50
-G_M45973_IG03: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x30] // [V05 loc5]
+G_M45973_IG03: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x28] // [V05 loc5]
cbz w1, G_M45973_IG05 ;; size=8 bbWeight=1 PerfScore 3.00 G_M45973_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -94,13 +96,13 @@ G_M45973_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M45973_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20-x21]
- add x1, fp, #48 // [V05 loc5]
+ add x1, fp, #40 // [V05 loc5]
mov x0, x20 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x30] // [V05 loc5]
+ ldrb w0, [fp, #0x28] // [V05 loc5]
cbnz w0, G_M45973_IG06 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -121,7 +123,7 @@ G_M45973_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ;; size=4 bbWeight=1 PerfScore 3.00 G_M45973_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V04}
- ldrb w0, [fp, #0x30] // [V05 loc5]
+ ldrb w0, [fp, #0x28] // [V05 loc5]
cbz w0, G_M45973_IG08 mov x0, x20 ; gcrRegs +[x0] @@ -153,20 +155,20 @@ G_M45973_IG09: ; bbWeight=64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0 mov x23, x0 movn w1, #0xD1FFAB1E LSL #16 sxtw w24, w1
- str x20, [fp, #0x18] // [V07 loc7]
+ str x20, [fp, #0x10] // [V07 loc7]
; GC ptr vars +{V07}
- str wzr, [fp, #0x28] // [V08 loc8]
+ str wzr, [fp, #0x20] // [V08 loc8]
;; size=72 bbWeight=64 PerfScore 896.00
-G_M45973_IG10: ; bbWeight=64, gcVars=0000000004000000 {V07}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x28] // [V08 loc8]
+G_M45973_IG10: ; bbWeight=64, gcVars=0000000008000000 {V07}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x20] // [V08 loc8]
cbnz w1, G_M45973_IG23
- add x1, fp, #40 // [V08 loc8]
+ add x1, fp, #32 // [V08 loc8]
mov x0, x20 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x28] // [V08 loc8]
+ ldrb w0, [fp, #0x20] // [V08 loc8]
cbnz w0, G_M45973_IG12 ;; size=28 bbWeight=64 PerfScore 512.00 G_M45973_IG11: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref @@ -328,11 +330,11 @@ G_M45973_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M45973_IG24: ; bbWeight=64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20-x22]
- ldrb w0, [fp, #0x28] // [V08 loc8]
+ ldrb w0, [fp, #0x20] // [V08 loc8]
cbz w0, G_M45973_IG26 ;; size=8 bbWeight=64 PerfScore 192.00 G_M45973_IG25: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V07 loc7]
+ ldr x0, [fp, #0x10] // [V07 loc7]
; gcrRegs +[x0] ; GC ptr vars -{V07} bl <unknown method> @@ -351,18 +353,18 @@ G_M45973_IG27: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0 mov w25, wzr b G_M45973_IG30 ;; size=16 bbWeight=16 PerfScore 80.00
-G_M45973_IG28: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x26]
+G_M45973_IG28: ; bbWeight=64, gcrefRegs=8700000 {x20 x21 x22 x27}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] +[x27]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0] tbz w0, #0, G_M45973_IG36 ;; size=20 bbWeight=64 PerfScore 352.00
-G_M45973_IG29: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M45973_IG29: ; bbWeight=64, gcrefRegs=8700000 {x20 x21 x22 x27}, byrefRegs=0000 {}, byref
ldr x0, [x19] ; gcrRegs +[x0]
- mov x1, x26
+ mov x1, x27
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this movk x2, #0xD1FFAB1E LSL #16 @@ -370,12 +372,12 @@ G_M45973_IG29: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefR ldr x2, [x2] ldr wzr, [x0] blr x2
- ; gcrRegs -[x0-x1 x26]
+ ; gcrRegs -[x0-x1 x27]
; gcr arg pop 0 ;; size=32 bbWeight=64 PerfScore 768.00 G_M45973_IG30: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x14] - cmp w23, w0
+ ldr w26, [x21, #0x14] + cmp w23, w26
bne G_M45973_IG38 ldr w2, [x21, #0x10] cmp w25, w2 @@ -388,20 +390,19 @@ G_M45973_IG30: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs= add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x26, [x0, w25, UXTW #3] - ; gcrRegs +[x26]
+ ldr x27, [x0, w25, UXTW #3] + ; gcrRegs +[x27]
add w25, w25, #1 b G_M45973_IG28 ;; size=56 bbWeight=128 PerfScore 2752.00 G_M45973_IG31: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x26]
+ ; gcrRegs -[x27]
; byrRegs -[x0]
- ldr w0, [x21, #0x14] - add w0, w0, #1
+ add w0, w26, #1
stp wzr, w0, [x21, #0x10] cmp w2, #0 ble G_M45973_IG33
- ;; size=20 bbWeight=128 PerfScore 768.00
+ ;; size=16 bbWeight=128 PerfScore 384.00
...

smoke_tests.nativeaot.linux.arm64.checked.mch

-24 (-6.45%) : 5986.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,23 +78,23 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V72 cse1 [V72,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse2 [V73,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40]
mov fp, sp
- str xzr, [fp, #0x28] // [V02 loc0]
+ str xzr, [fp, #0x20] // [V02 loc0]
mov x19, x0 mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #24 // [V37 tmp30]
+ add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -103,9 +103,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -115,9 +115,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x28] // [V38 tmp31]
+ ldr x0, [fp, #0x20] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x30] // [V39 tmp32]
+ ldr w1, [fp, #0x28] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -140,15 +140,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 bl <unknown method> ; byrRegs -[x0-x1 x3] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=24 bbWeight=4 PerfScore 20.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -174,13 +174,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #40 // [V02 loc0]
+ add x0, fp, #32 // [V02 loc0]
bl <unknown method> ; gcrRegs +[x0] ; gcr arg pop 0 @@ -193,9 +189,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=44 bbWeight=8 PerfScore 136.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -208,9 +204,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -218,26 +214,24 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #24 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x18] blr x1 @@ -245,42 +239,39 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG14]
+ adr x0, [G_M19804_IG13]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend - ldr x23, [sp, #0x38]
...

-24 (-3.95%) : 13944.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)

@@ -7,72 +7,73 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x20] class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> x1 "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T23] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T25] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T27] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T25] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T24] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T29] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T27] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T26] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T28] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T26] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T22] ( 2, 4 ) int -> x2 "argument with side effect"
+;* V41 tmp32 [V41,T30] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T28] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T24] ( 2, 4 ) int -> x2 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V46 cse0 [V46,T09] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V47 cse1 [V47,T10] ( 2, 16 ) int -> x0 "CSE - aggressive" -; V48 rat0 [V48,T21] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable"
+; V46 cse0 [V46,T13] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V47 cse1 [V47,T09] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V48 cse2 [V48,T14] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V49 cse3 [V49,T10] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V50 rat0 [V50,T23] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- str x0, [fp, #0x18] // [V00 arg0]
+ str x0, [fp, #0x20] // [V00 arg0]
; GC ptr vars +{V00} mov w19, w1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.50 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 6.50 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -87,7 +88,7 @@ G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100 ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 4.00 G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V00 arg0]
+ ldr x0, [fp, #0x20] // [V00 arg0]
; gcrRegs +[x0] ldr w1, [x0, #0x10] cmp w1, #0 @@ -104,7 +105,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 9.50 G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- str wzr, [fp, #0x24] // [V03 loc0]
+ str wzr, [fp, #0x2C] // [V03 loc0]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Threading.Tasks.Task+SetOnCountdownMres add x0, x0, [LOW RELOC #0xD1FFAB1E] bl CORINFO_HELP_NEWSFAST @@ -112,12 +113,12 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- ldr x0, [fp, #0x18] // [V00 arg0]
+ ldr x0, [fp, #0x20] // [V00 arg0]
ldr w22, [x0, #0x10] adrp x23, [HIGH RELOC #0xD1FFAB1E] add x23, x23, [LOW RELOC #0xD1FFAB1E] ldr x2, [x23, #-0x08]
- cbnz x2, G_M12834_IG19
+ cbnz x2, G_M12834_IG18
;; size=44 bbWeight=1 PerfScore 13.50 G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -142,11 +143,11 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ;; size=44 bbWeight=1 PerfScore 9.50 G_M12834_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref str w22, [x21, #0x1C]
- str x21, [fp, #0x10] // [V04 loc1]
+ str x21, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG07: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref - ldr x0, [fp, #0x18] // [V00 arg0]
+G_M12834_IG07: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ldr x0, [fp, #0x20] // [V00 arg0]
; gcrRegs +[x0] mov x22, x0 ; gcrRegs +[x22] @@ -193,12 +194,12 @@ G_M12834_IG09: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=28 bbWeight=4 PerfScore 28.00 G_M12834_IG10: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG13
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG12
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG14
+ bhs G_M12834_IG13
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w2, [x1, #0x08] @@ -224,12 +225,8 @@ G_M12834_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG12 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG14: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov w1, w19 @@ -238,29 +235,28 @@ G_M12834_IG14: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { bl <unknown method> ; gcrRegs -[x0 x2 x20] ; gcr arg pop 0
- str w0, [fp, #0x24] // [V03 loc0]
+ str w0, [fp, #0x2C] // [V03 loc0]
;; size=20 bbWeight=8 PerfScore 28.00
-G_M12834_IG15: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M12834_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
mov x0, sp
- bl G_M12834_IG20
+ bl G_M12834_IG19
;; size=8 bbWeight=1 PerfScore 1.50
-G_M12834_IG16: ; bbWeight=1, nogc, extend
+G_M12834_IG15: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04}
- ldr w0, [fp, #0x24] // [V03 loc0]
+ ldr w0, [fp, #0x2C] // [V03 loc0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG18: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12834_IG19: ; bbWeight=0, gcVars=0000000000020000 {V00}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M12834_IG18: ; bbWeight=0, gcVars=0000000000040000 {V00}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20-x21] ; GC ptr vars +{V00} bl CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE @@ -268,28 +264,27 @@ G_M12834_IG19: ; bbWeight=0, gcVars=0000000000020000 {V00}, gcrefRegs=300 ; gcr arg pop 0 b G_M12834_IG05 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M12834_IG20: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M12834_IG19: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[x20-x21] ; byrRegs -[x0] ; GC ptr vars +{V04}
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48] - ;; size=20 bbWeight=1 PerfScore 5.00 -G_M12834_IG21: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldr w0, [fp, #0x24] // [V03 loc0] - cbnz w0, G_M12834_IG26 - ldr x0, [fp, #0x18] // [V00 arg0]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30] + ;; size=16 bbWeight=1 PerfScore 4.00 +G_M12834_IG20: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...

-8 (-1.82%) : 13524.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)

@@ -9,9 +9,9 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd exact single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd exact single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>> -; V04 loc2 [V04,T14] ( 3, 1 ) ubyte -> [fp+0x24] do-not-enreg[Z] ld-addr-op EH-live
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd exact single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>> +; V04 loc2 [V04,T15] ( 3, 1 ) ubyte -> [fp+0x24] do-not-enreg[Z] ld-addr-op EH-live
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ; V07 loc5 [V07,T11] ( 3, 6 ) ref -> x24 class-hnd exact <<unknown class>> @@ -28,19 +28,20 @@ ; V18 tmp10 [V18,T04] ( 3, 12 ) ref -> x24 class-hnd exact "Inlining Arg" <<unknown class>> ;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp13 [V21,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V21 tmp13 [V21,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ; V23 tmp15 [V23,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V24 tmp16 [V24,T03] ( 3, 8 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP ; V25 tmp17 [V25,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V26 tmp18 [V26,T06] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V27 tmp19 [V27,T13] ( 3, 1.50) ref -> x21 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V26 tmp18 [V26,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V27 tmp19 [V27,T14] ( 3, 1.50) ref -> x21 single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V29 tmp21 [V29,T17] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP -; V30 tmp22 [V30,T15] ( 2, 1 ) int -> x22 "field V12._version (fldOffset=0x14)" P-INDEP
+;* V29 tmp21 [V29,T18] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP +; V30 tmp22 [V30,T16] ( 2, 1 ) int -> x22 "field V12._version (fldOffset=0x14)" P-INDEP
; V31 tmp23 [V31,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V32 cse0 [V32,T05] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V33 cse1 [V33,T07] ( 4, 8 ) byref -> x25 "CSE - aggressive"
+; V32 cse0 [V32,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V33 cse1 [V33,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V34 cse2 [V34,T06] ( 4, 8 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -75,7 +76,7 @@ G_M37406_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x0] ldar x21, [x0] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG16
+ cbz x21, G_M37406_IG15
;; size=12 bbWeight=1 PerfScore 4.50 G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x0] @@ -83,7 +84,7 @@ G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x24] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG06: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M37406_IG06: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
mov x0, x21 ; gcrRegs +[x0] bl <unknown method> @@ -175,12 +176,12 @@ G_M37406_IG10: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 ;; size=16 bbWeight=2 PerfScore 5.00 G_M37406_IG11: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG14
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG13
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG15
+ bhs G_M37406_IG14
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -205,12 +206,8 @@ G_M37406_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37406_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- cmp w22, w24 - bne G_M37406_IG13 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M37406_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -221,7 +218,7 @@ G_M37406_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; byrRegs +[x0] stlr xzr, [x0] ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M37406_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -231,7 +228,7 @@ G_M37406_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M37406_IG16: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03} stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] @@ -239,9 +236,9 @@ G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 stp x23, x24, [sp, #0x38] str x25, [sp, #0x48] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M37406_IG18: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG17: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w0, [fp, #0x24] // [V04 loc2]
- cbz w0, G_M37406_IG19
+ cbz w0, G_M37406_IG18
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -249,7 +246,7 @@ G_M37406_IG18: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -258,7 +255,7 @@ G_M37406_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 32, PerfScore 199.50, instruction count 110, allocated bytes for code 440 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 432, prolog size 32, PerfScore 193.50, instruction count 108, allocated bytes for code 432 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Cfi Info: @@ -290,4 +287,4 @@ Cfi Info: CodeOffset: 0x14 Op: RelOffset DwarfReg:0x19 Offset:0x48 *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG06..G_M37406_IG15) handled by [G_M37406_IG17..END) (fault)
+EH#0: try [G_M37406_IG06..G_M37406_IG14) handled by [G_M37406_IG16..END) (fault)
+0 (0.00%) : 3319.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
@@ -7,71 +7,71 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 4, 68 ) ref -> x21 class-hnd exact single-def <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> -; V01 arg1 [V01,T19] ( 4, 68 ) ref -> x22 class-hnd exact single-def <Internal.NativeFormat.NativeReader>
+; V00 arg0 [V00,T19] ( 4, 68 ) ref -> x21 class-hnd exact single-def <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> +; V01 arg1 [V01,T20] ( 4, 68 ) ref -> x22 class-hnd exact single-def <Internal.NativeFormat.NativeReader>
; V02 arg2 [V02,T00] ( 26,515 ) byref -> x19 single-def
-; V03 arg3 [V03,T30] ( 4, 20 ) byref -> x24 single-def -; V04 arg4 [V04,T43] ( 5, 4.50) ref -> x26 class-hnd exact single-def <Internal.TypeSystem.InstantiatedMethod>
+; V03 arg3 [V03,T31] ( 4, 20 ) byref -> x24 single-def +; V04 arg4 [V04,T44] ( 5, 4.50) ref -> x26 class-hnd exact single-def <Internal.TypeSystem.InstantiatedMethod>
; V05 arg5 [V05,T15] ( 7, 99 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
-; V06 arg6 [V06,T20] ( 3, 66 ) ubyte -> x23 single-def -; V07 arg7 [V07,T32] ( 3, 18 ) ubyte -> x25 single-def -; V08 loc0 [V08,T47] ( 3, 6 ) int -> x27 single-def -; V09 loc1 [V09,T22] ( 4, 66 ) ref -> x28 class-hnd exact single-def <<unknown class>> -; V10 loc2 [V10,T13] ( 4,129 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> -; V11 loc3 [V11,T39] ( 4, 13 ) int -> [fp+0xCC] -; V12 loc4 [V12,T38] ( 6, 14 ) int -> [fp+0xC8] spill-single-def -; V13 loc5 [V13,T42] ( 4, 7 ) ref -> [fp+0x28] class-hnd exact <Internal.Runtime.CompilerServices.MethodNameAndSignature>
+; V06 arg6 [V06,T21] ( 3, 66 ) ubyte -> x23 single-def +; V07 arg7 [V07,T33] ( 3, 18 ) ubyte -> x25 single-def +; V08 loc0 [V08,T48] ( 3, 6 ) int -> x27 single-def +; V09 loc1 [V09,T23] ( 4, 66 ) ref -> x28 class-hnd exact single-def <<unknown class>> +; V10 loc2 [V10,T16] ( 4, 97 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> +; V11 loc3 [V11,T40] ( 4, 13 ) int -> [fp+0xCC] +; V12 loc4 [V12,T39] ( 6, 14 ) int -> [fp+0xC8] spill-single-def +; V13 loc5 [V13,T43] ( 4, 7 ) ref -> [fp+0x28] class-hnd exact <Internal.Runtime.CompilerServices.MethodNameAndSignature>
;* V14 loc6 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
-; V15 loc7 [V15,T33] ( 3, 20 ) ubyte -> [fp+0xC4] -; V16 loc8 [V16,T29] ( 3, 24 ) int -> [fp+0xC0] spill-single-def -; V17 loc9 [V17,T25] ( 4, 52 ) int -> [fp+0xBC]
+; V15 loc7 [V15,T34] ( 3, 20 ) ubyte -> [fp+0xC4] +; V16 loc8 [V16,T30] ( 3, 24 ) int -> [fp+0xC0] spill-single-def +; V17 loc9 [V17,T26] ( 4, 52 ) int -> [fp+0xBC]
;* V18 loc10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
-; V19 loc11 [V19,T12] ( 5,160 ) int -> [fp+0xB8] spill-single-def
+; V19 loc11 [V19,T11] ( 5,160 ) int -> [fp+0xB8] spill-single-def
;* V20 loc12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle> ; V21 loc13 [V21,T08] ( 4,200 ) int -> [fp+0xB4] ; V22 loc14 [V22,T09] ( 4,200 ) int -> [fp+0xB0] ; V23 loc15 [V23 ] ( 3,192 ) struct (16) [fp+0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Internal.NativeFormat.NativeParser> ; V24 loc16 [V24,T04] ( 5,320 ) ref -> [fp+0x20] class-hnd exact spill-single-def <Internal.Runtime.TypeLoader.NativeLayoutInfoLoadContext>
-; V25 loc17 [V25,T11] ( 11,179 ) ref -> [fp+0x18] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> -; V26 loc18 [V26,T35] ( 7, 18.50) ref -> x22 class-hnd <Internal.TypeSystem.DefType> -; V27 loc19 [V27,T49] ( 3, 5 ) ref -> x20 class-hnd <Internal.TypeSystem.DefType[]> -; V28 loc20 [V28,T36] ( 5, 16.50) int -> x24 -; V29 loc21 [V29,T28] ( 6, 24 ) ref -> x27 class-hnd <Internal.TypeSystem.DefType> -; V30 loc22 [V30,T31] ( 3, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.DefType[]> -; V31 loc23 [V31,T21] ( 5, 66 ) int -> [fp+0x9C]
+; V25 loc17 [V25,T12] ( 11,147 ) ref -> [fp+0x18] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> +; V26 loc18 [V26,T36] ( 7, 18.50) ref -> x22 class-hnd <Internal.TypeSystem.DefType> +; V27 loc19 [V27,T50] ( 3, 5 ) ref -> x20 class-hnd <Internal.TypeSystem.DefType[]> +; V28 loc20 [V28,T37] ( 5, 16.50) int -> x24 +; V29 loc21 [V29,T29] ( 6, 24 ) ref -> x27 class-hnd <Internal.TypeSystem.DefType> +; V30 loc22 [V30,T32] ( 3, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.DefType[]> +; V31 loc23 [V31,T22] ( 5, 66 ) int -> [fp+0x9C]
;* V32 loc24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.DefType> ;# V33 OutArgs [V33 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V34 tmp1 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Internal.Runtime.TypeLoader.NativeLayoutInfoLoadContext> ; V35 tmp2 [V35,T06] ( 2,256 ) ref -> x0 class-hnd exact "impAppendStmt" <Internal.Runtime.TypeLoader.ModuleList> ;* V36 tmp3 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.Runtime.TypeManagerHandle>
-; V37 tmp4 [V37,T55] ( 3, 2.25) ref -> x1 "CASTCLASS eval op1" -; V38 tmp5 [V38,T63] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V39 tmp6 [V39,T52] ( 5, 3.75) ref -> x22 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V37 tmp4 [V37,T56] ( 3, 2.25) ref -> x1 "CASTCLASS eval op1" +; V38 tmp5 [V38,T64] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V39 tmp6 [V39,T53] ( 5, 3.75) ref -> x22 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
;* V40 tmp7 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.TypeSystem.Instantiation>
-; V41 tmp8 [V41,T56] ( 3, 2 ) ref -> x1 "CASTCLASS eval op1" -; V42 tmp9 [V42,T64] ( 3, 1 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V43 tmp10 [V43,T53] ( 4, 3.50) ref -> x0 class-hnd exact "spilling QMark2" <Internal.TypeSystem.InstantiatedMethod> -; V44 tmp11 [V44,T54] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" -; V45 tmp12 [V45,T57] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType> -; V46 tmp13 [V46,T67] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V47 tmp14 [V47,T68] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V41 tmp8 [V41,T57] ( 3, 2 ) ref -> x1 "CASTCLASS eval op1" +; V42 tmp9 [V42,T65] ( 3, 1 ) long -> x3 "fgMakeTemp is creating a new local variable" +; V43 tmp10 [V43,T54] ( 4, 3.50) ref -> x0 class-hnd exact "spilling QMark2" <Internal.TypeSystem.InstantiatedMethod> +; V44 tmp11 [V44,T55] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V45 tmp12 [V45,T58] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType> +; V46 tmp13 [V46,T68] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V47 tmp14 [V47,T69] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V48 tmp15 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.Runtime.TypeManagerHandle> ; V49 tmp16 [V49 ] ( 2, 2 ) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V50 tmp17 [V50,T59] ( 4, 1.50) ref -> registers "guarded devirt return temp" -; V51 tmp18 [V51,T48] ( 6, 5.66) ref -> x0 single-def "guarded devirt arg temp"
+; V50 tmp17 [V50,T60] ( 4, 1.50) ref -> registers "guarded devirt return temp" +; V51 tmp18 [V51,T49] ( 6, 5.66) ref -> x0 single-def "guarded devirt arg temp"
;* V52 tmp19 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType> ;* V53 tmp20 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedMethod> ;* V54 tmp21 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.NoMetadata.RuntimeMethodDesc> ; V55 tmp22 [V55 ] ( 3, 12 ) int -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V56 tmp23 [V56 ] ( 3, 6 ) int -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V57 tmp24 [V57,T41] ( 2, 8 ) int -> x1 "Inlining Arg"
+; V57 tmp24 [V57,T42] ( 2, 8 ) int -> x1 "Inlining Arg"
;* V58 tmp25 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V59 tmp26 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ;* V60 tmp27 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V61 tmp28 [V61,T40] ( 2, 8 ) byref -> x0 "Inlining Arg"
+; V61 tmp28 [V61,T41] ( 2, 8 ) byref -> x0 "Inlining Arg"
; V62 tmp29 [V62 ] ( 3, 12 ) int -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V63 tmp30 [V63 ] ( 3, 48 ) int -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V64 tmp31 [V64,T24] ( 2, 64 ) int -> x1 "Inlining Arg"
+; V64 tmp31 [V64,T25] ( 2, 64 ) int -> x1 "Inlining Arg"
;* V65 tmp32 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V66 tmp33 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V67 tmp34 [V67 ] ( 3, 48 ) int -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" @@ -84,52 +84,53 @@ ; V74 tmp41 [V74,T10] ( 3,192 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V75 tmp42 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V76 tmp43 [V76,T05] ( 3,256 ) ref -> x1 "CASTCLASS eval op1"
-; V77 tmp44 [V77,T23] ( 3, 64 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V77 tmp44 [V77,T24] ( 3, 64 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V78 tmp45 [V78,T01] ( 4,416 ) ref -> x15 class-hnd exact "spilling QMark2" <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> ;* V79 tmp46 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V80 tmp47 [V80,T58] ( 2, 2 ) byref -> x0 "Inlining Arg"
+; V80 tmp47 [V80,T59] ( 2, 2 ) byref -> x0 "Inlining Arg"
;* V81 tmp48 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-;* V82 tmp49 [V82,T66] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V82 tmp49 [V82,T67] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V83 tmp50 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <Internal.TypeSystem.Instantiation> ;* V84 tmp51 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc> ;* V85 tmp52 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V86 tmp53 [V86,T60] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V86 tmp53 [V86,T61] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V87 tmp54 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc> ;* V88 tmp55 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V89 tmp56 [V89,T44] ( 3, 6 ) ref -> x23 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V89 tmp56 [V89,T45] ( 3, 6 ) ref -> x23 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V90 tmp57 [V90 ] ( 0, 0 ) int -> zero-ref ;* V91 tmp58 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V92 tmp59 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V93 tmp60 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp61 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V95 tmp62 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V96 tmp63 [V96,T37] ( 7, 13.50) long -> [fp+0x50] "field V14._value (fldOffset=0x0)" P-INDEP
+; V96 tmp63 [V96,T38] ( 7, 13.50) long -> [fp+0x50] "field V14._value (fldOffset=0x0)" P-INDEP
;* V97 tmp64 [V97 ] ( 0, 0 ) long -> zero-ref "field V18._value (fldOffset=0x0)" P-INDEP
-; V98 tmp65 [V98,T26] ( 6, 41 ) long -> x3 "field V20._value (fldOffset=0x0)" P-INDEP
+; V98 tmp65 [V98,T27] ( 6, 41 ) long -> x3 "field V20._value (fldOffset=0x0)" P-INDEP
; V99 tmp66 [V99 ] ( 2,128 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V23._reader (fldOffset=0x0)" P-DEP ; V100 tmp67 [V100 ] ( 2,128 ) int -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V23._offset (fldOffset=0x8)" P-DEP
-; V101 tmp68 [V101,T14] ( 2,128 ) long -> x1 "field V36._handleValue (fldOffset=0x0)" P-INDEP
+; V101 tmp68 [V101,T13] ( 2,128 ) long -> x1 "field V36._handleValue (fldOffset=0x0)" P-INDEP
;* V102 tmp69 [V102 ] ( 0, 0 ) ref -> zero-ref "field V40._genericParameters (fldOffset=0x0)" P-INDEP ;* V103 tmp70 [V103 ] ( 0, 0 ) long -> zero-ref "field V48._handleValue (fldOffset=0x0)" P-INDEP
-; V104 tmp71 [V104,T51] ( 2, 4 ) long -> x5 "field V59._value (fldOffset=0x0)" P-INDEP
+; V104 tmp71 [V104,T52] ( 2, 4 ) long -> x5 "field V59._value (fldOffset=0x0)" P-INDEP
;* V105 tmp72 [V105 ] ( 0, 0 ) long -> zero-ref "field V60._value (fldOffset=0x0)" P-INDEP
-; V106 tmp73 [V106,T27] ( 2, 32 ) long -> [fp+0x48] spill-single-def "field V66._value (fldOffset=0x0)" P-INDEP
+; V106 tmp73 [V106,T28] ( 2, 32 ) long -> [fp+0x48] spill-single-def "field V66._value (fldOffset=0x0)" P-INDEP
;* V107 tmp74 [V107 ] ( 0, 0 ) long -> zero-ref "field V69._value (fldOffset=0x0)" P-INDEP ;* V108 tmp75 [V108 ] ( 0, 0 ) long -> zero-ref "field V79._value (fldOffset=0x0)" P-INDEP ;* V109 tmp76 [V109 ] ( 0, 0 ) long -> zero-ref "field V81._value (fldOffset=0x0)" P-INDEP
-; V110 tmp77 [V110,T65] ( 2, 1 ) ref -> x0 "field V83._genericParameters (fldOffset=0x0)" P-INDEP
+; V110 tmp77 [V110,T66] ( 2, 1 ) ref -> x0 "field V83._genericParameters (fldOffset=0x0)" P-INDEP
;* V111 tmp78 [V111 ] ( 0, 0 ) long -> zero-ref "field V85._value (fldOffset=0x0)" P-INDEP ;* V112 tmp79 [V112 ] ( 0, 0 ) long -> zero-ref "field V88._value (fldOffset=0x0)" P-INDEP
-; V113 tmp80 [V113,T45] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp80 [V113,T46] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V114 tmp81 [V114,T02] ( 3,384 ) ref -> [fp+0x10] spill-single-def "arr expr" ; V115 tmp82 [V115,T03] ( 3,384 ) int -> x0 "index expr"
-; V116 tmp83 [V116,T16] ( 3, 96 ) ref -> x0 "argument with side effect" -; V117 cse0 [V117,T62] ( 3, 1.50) int -> x0 "CSE - moderate" -; V118 cse1 [V118,T46] ( 3, 6 ) ref -> x23 "CSE - moderate" -; V119 cse2 [V119,T61] ( 3, 1.50) ref -> x23 "CSE - moderate" -; V120 cse3 [V120,T17] ( 3, 96 ) long -> [fp+0x40] spill-single-def "CSE - moderate" -; V121 cse4 [V121,T34] ( 3, 20 ) int -> [fp+0x3C] spill-single-def "CSE - moderate" -; V122 cse5 [V122,T50] ( 3, 5 ) int -> x25 "CSE - moderate"
+; V116 tmp83 [V116,T17] ( 3, 96 ) ref -> x0 "argument with side effect" +; V117 cse0 [V117,T63] ( 3, 1.50) int -> x0 "CSE - moderate" +; V118 cse1 [V118,T47] ( 3, 6 ) ref -> x23 "CSE - moderate" +; V119 cse2 [V119,T62] ( 3, 1.50) ref -> x23 "CSE - moderate" +; V120 cse3 [V120,T18] ( 3, 96 ) long -> [fp+0x40] spill-single-def "CSE - moderate" +; V121 cse4 [V121,T14] ( 2,128 ) int -> x0 "CSE - aggressive" +; V122 cse5 [V122,T35] ( 3, 20 ) int -> [fp+0x3C] spill-single-def "CSE - moderate" +; V123 cse6 [V123,T51] ( 3, 5 ) int -> x25 "CSE - moderate"
; ; Lcl frame size = 192 @@ -221,7 +222,7 @@ G_M18606_IG07: ; bbWeight=1, gcrefRegs=14700002 {x1 x20 x21 x22 x26 x28}, str wzr, [fp, #0xCC] // [V11 loc3] cbz w27, G_M18606_IG26 ;; size=12 bbWeight=1 PerfScore 3.00
-G_M18606_IG08: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V10}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG08: ; bbWeight=4, gcVars=00000000000000000000000000010000 {V10}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; gcrRegs -[x1] str wzr, [fp, #0x88] // [V55 tmp22] ldr x0, [x19] @@ -278,7 +279,7 @@ G_M18606_IG09: ; bbWeight=2, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, by str w4, [fp, #0xC4] // [V15 loc7] b G_M18606_IG11 ;; size=104 bbWeight=2 PerfScore 64.00
-G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000002000 {V10}, gcrefRegs=14700010 {x4 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref
+G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000010000 {V10}, gcrefRegs=14700010 {x4 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref
; gcrRegs +[x4] ; GC ptr vars -{V13} mov w0, #1 @@ -287,7 +288,7 @@ G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000002000 {V10 str x4, [fp, #0x28] // [V13 loc5] ; GC ptr vars +{V13} ;; size=16 bbWeight=2 PerfScore 7.00
-G_M18606_IG11: ; bbWeight=4, gcVars=00000000000000000000040000002000 {V10 V13}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG11: ; bbWeight=4, gcVars=00000000000000000000080000010000 {V10 V13}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; gcrRegs -[x4] str wzr, [fp, #0x78] // [V62 tmp29] ldr x0, [x19] @@ -399,7 +400,7 @@ G_M18606_IG17: ; bbWeight=64, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, b ldr x0, [x0, #-0x08] cbnz x0, G_M18606_IG53 ;; size=72 bbWeight=64 PerfScore 1568.00
-G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000040000002010 {V10 V13 V24}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000080000010010 {V10 V13 V24}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -429,7 +430,7 @@ G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000040000002010 {V1 ; gcrRegs +[x15] cbz x15, G_M18606_IG20 ;; size=76 bbWeight=64 PerfScore 2272.00
-G_M18606_IG19: ; bbWeight=16, gcVars=00000000000000000000040000002010 {V10 V13 V24}, gcrefRegs=14708002 {x1 x15 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG19: ; bbWeight=16, gcVars=00000000000000000000080000010010 {V10 V13 V24}, gcrefRegs=14708002 {x1 x15 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; byrRegs -[x14] ; GC ptr vars -{V114} ldr x14, [x15] @@ -478,11 +479,11 @@ G_M18606_IG20: ; bbWeight=64, gcrefRegs=14708000 {x15 x20 x21 x22 x26 x28 ; gcrRegs +[x2] str x2, [fp, #0x18] // [V25 loc17] ; GC ptr vars +{V25}
- tst w23, #255 - bne G_M18606_IG22 - ;; size=84 bbWeight=64 PerfScore 1344.00 -G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000040000002800 {V10 V13 V25}, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+ uxtb w0, w23
; gcrRegs -[x0]
+ cbnz w0, G_M18606_IG22 + ;; size=84 bbWeight=64 PerfScore 1344.00 +G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000080000011000 {V10 V13 V25}, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
ldr x0, [fp, #0x30] // [V10 loc2] ; gcrRegs +[x0] mov x1, x2 @@ -494,7 +495,7 @@ G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000040000002800 {V1 cbnz w0, G_M18606_IG28 b G_M18606_IG23 ;; size=28 bbWeight=32 PerfScore 368.00
-G_M18606_IG22: ; bbWeight=64, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M18606_IG22: ; bbWeight=32, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, byref, isz
...

+0 (0.00%) : 5036.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Create(System.Reflection.Runtime.BindingFlagSupport.MemberPolicies1[System.Canon],System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.String,ubyte):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon] (FullOpts)

No diffs found?

+0 (0.00%) : 12296.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo):System.Reflection.MemberInfo:this (FullOpts)

No diffs found?

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 19 19 0 0 -164 +0
benchmarks.run_pgo.linux.arm64.checked.mch 78 27 50 1 -516 +688
benchmarks.run_tiered.linux.arm64.checked.mch 10 10 0 0 -80 +0
coreclr_tests.run.linux.arm64.checked.mch 46 42 2 2 -756 +8
libraries.crossgen2.linux.arm64.checked.mch 26 23 2 1 -236 +20
libraries.pmi.linux.arm64.checked.mch 158 146 5 7 -2,364 +52
libraries_tests.run.linux.arm64.Release.mch 60 59 1 0 -1,040 +12
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 220 187 13 20 -2,620 +100
realworld.run.linux.arm64.checked.mch 32 31 1 0 -332 +16
smoke_tests.nativeaot.linux.arm64.checked.mch 11 8 0 3 -88 +0
660 552 74 34 -8,196 +896

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 28,842 1,210 27,632 50 (0.17%) 50 (0.17%)
benchmarks.run_pgo.linux.arm64.checked.mch 125,945 51,761 74,184 54 (0.04%) 54 (0.04%)
benchmarks.run_tiered.linux.arm64.checked.mch 57,979 43,144 14,835 47 (0.08%) 47 (0.08%)
coreclr_tests.run.linux.arm64.checked.mch 393,725 185,167 208,558 148 (0.04%) 148 (0.04%)
libraries.crossgen2.linux.arm64.checked.mch 264,907 15 264,892 1 (0.00%) 1 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,798 6 295,792 72 (0.02%) 74 (0.03%)
libraries_tests.run.linux.arm64.Release.mch 88,388 65,551 22,837 9 (0.01%) 9 (0.01%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 302,974 21,620 281,354 2,285 (0.75%) 2,287 (0.75%)
realworld.run.linux.arm64.checked.mch 33,408 163 33,245 10 (0.03%) 10 (0.03%)
smoke_tests.nativeaot.linux.arm64.checked.mch 18,940 7 18,933 114 (0.60%) 114 (0.60%)
1,610,906 368,644 1,242,262 2,790 (0.17%) 2,794 (0.17%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13063852 (overridden on cmd)
Total bytes of diff: 13063688 (overridden on cmd)
Total bytes of delta: -164 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 3782.dasm (-4.92 % of base)
         -12 : 14829.dasm (-0.60 % of base)
         -12 : 69.dasm (-1.06 % of base)
         -12 : 1338.dasm (-1.44 % of base)
         -12 : 6839.dasm (-1.94 % of base)
         -12 : 7204.dasm (-0.35 % of base)
          -8 : 1187.dasm (-0.15 % of base)
          -8 : 12313.dasm (-0.34 % of base)
          -8 : 12036.dasm (-0.15 % of base)
          -8 : 1563.dasm (-0.33 % of base)
          -8 : 21225.dasm (-0.60 % of base)
          -8 : 2495.dasm (-0.90 % of base)
          -8 : 6652.dasm (-1.82 % of base)
          -4 : 2217.dasm (-0.19 % of base)
          -4 : 2770.dasm (-0.62 % of base)
          -4 : 10007.dasm (-0.29 % of base)
          -4 : 15521.dasm (-0.04 % of base)
          -4 : 23173.dasm (-0.43 % of base)
          -4 : 2799.dasm (-0.39 % of base)

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

Top method improvements (bytes):
         -24 (-4.92 % of base) : 3782.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-0.35 % of base) : 7204.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
         -12 (-1.44 % of base) : 1338.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.60 % of base) : 14829.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -12 (-1.94 % of base) : 6839.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-0.15 % of base) : 12036.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-0.60 % of base) : 21225.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -8 (-0.34 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -8 (-1.82 % of base) : 6652.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -8 (-0.33 % of base) : 1563.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -8 (-0.15 % of base) : 1187.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-0.90 % of base) : 2495.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.62 % of base) : 2770.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-0.43 % of base) : 23173.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.19 % of base) : 2217.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -4 (-0.04 % of base) : 15521.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 10007.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.39 % of base) : 2799.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 3782.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.94 % of base) : 6839.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 6652.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-1.44 % of base) : 1338.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.90 % of base) : 2495.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.62 % of base) : 2770.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.60 % of base) : 21225.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -12 (-0.60 % of base) : 14829.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -4 (-0.43 % of base) : 23173.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.39 % of base) : 2799.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
         -12 (-0.35 % of base) : 7204.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -8 (-0.34 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -8 (-0.33 % of base) : 1563.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 10007.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.19 % of base) : 2217.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.15 % of base) : 12036.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-0.15 % of base) : 1187.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.04 % of base) : 15521.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


benchmarks.run_pgo.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 65248792 (overridden on cmd)
Total bytes of diff: 65248964 (overridden on cmd)
Total bytes of delta: 172 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          48 : 106509.dasm (1.50 % of base)
          36 : 25717.dasm (1.12 % of base)
          32 : 75015.dasm (1.01 % of base)
          28 : 44358.dasm (0.83 % of base)
          28 : 60605.dasm (0.47 % of base)
          28 : 8490.dasm (0.87 % of base)
          28 : 94622.dasm (0.83 % of base)
          20 : 30058.dasm (0.63 % of base)
          20 : 68336.dasm (0.63 % of base)
          20 : 114346.dasm (0.58 % of base)
          16 : 104761.dasm (0.49 % of base)
          16 : 116682.dasm (0.48 % of base)
          16 : 80360.dasm (0.48 % of base)
          12 : 31968.dasm (0.61 % of base)
          12 : 48967.dasm (0.61 % of base)
          12 : 78395.dasm (0.61 % of base)
          12 : 79479.dasm (0.60 % of base)
          12 : 93518.dasm (0.61 % of base)
          12 : 98022.dasm (0.61 % of base)
          12 : 111857.dasm (0.61 % of base)

Top file improvements (bytes):
         -40 : 125707.dasm (-1.62 % of base)
         -40 : 84108.dasm (-2.17 % of base)
         -40 : 88282.dasm (-2.17 % of base)
         -40 : 94369.dasm (-1.80 % of base)
         -40 : 96304.dasm (-1.80 % of base)
         -40 : 98122.dasm (-1.67 % of base)
         -40 : 116786.dasm (-1.62 % of base)
         -20 : 105604.dasm (-2.87 % of base)
         -16 : 16952.dasm (-1.29 % of base)
         -16 : 20731.dasm (-1.29 % of base)
         -16 : 24887.dasm (-1.29 % of base)
         -16 : 47978.dasm (-1.29 % of base)
         -16 : 4942.dasm (-1.29 % of base)
         -16 : 60440.dasm (-1.29 % of base)
         -16 : 8235.dasm (-1.29 % of base)
         -16 : 85868.dasm (-1.29 % of base)
         -12 : 5815.dasm (-2.52 % of base)
         -12 : 66822.dasm (-0.95 % of base)
         -12 : 90403.dasm (-1.72 % of base)
         -12 : 9930.dasm (-1.30 % of base)

48 total files with Code Size differences (23 improved, 25 regressed), 1 unchanged.

Top method regressions (bytes):
          48 (1.50 % of base) : 106509.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.12 % of base) : 25717.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          32 (1.01 % of base) : 75015.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.83 % of base) : 44358.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.47 % of base) : 60605.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.87 % of base) : 8490.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.83 % of base) : 94622.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.63 % of base) : 30058.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.63 % of base) : 68336.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.58 % of base) : 114346.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          16 (0.49 % of base) : 104761.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          16 (0.48 % of base) : 116682.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          16 (0.48 % of base) : 80360.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          12 (0.61 % of base) : 31968.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 48967.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 78395.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.60 % of base) : 79479.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 93518.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 98022.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 111857.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (bytes):
         -40 (-2.17 % of base) : 88282.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-2.17 % of base) : 84108.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.67 % of base) : 98122.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.80 % of base) : 96304.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-1.80 % of base) : 94369.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 125707.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 116786.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -20 (-2.87 % of base) : 105604.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -16 (-1.29 % of base) : 16952.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 20731.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 24887.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 47978.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 4942.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 60440.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 8235.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 85868.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -12 (-0.36 % of base) : 110174.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
         -12 (-1.72 % of base) : 90403.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -12 (-2.52 % of base) : 5815.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-0.95 % of base) : 66822.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)

Top method regressions (percentages):
          48 (1.50 % of base) : 106509.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.12 % of base) : 25717.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          32 (1.01 % of base) : 75015.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.87 % of base) : 8490.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.83 % of base) : 94622.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.83 % of base) : 44358.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.63 % of base) : 30058.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.63 % of base) : 68336.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          12 (0.61 % of base) : 31968.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 48967.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 78395.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 93518.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 98022.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 111857.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 125220.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 110282.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 115031.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 116665.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 123459.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.60 % of base) : 79479.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (percentages):
          -4 (-3.23 % of base) : 110151.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -20 (-2.87 % of base) : 105604.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -12 (-2.52 % of base) : 5815.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -40 (-2.17 % of base) : 88282.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-2.17 % of base) : 84108.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.80 % of base) : 96304.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-1.80 % of base) : 94369.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -12 (-1.72 % of base) : 90403.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -40 (-1.67 % of base) : 98122.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 125707.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 116786.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -12 (-1.30 % of base) : 9930.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
         -16 (-1.29 % of base) : 16952.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 20731.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 24887.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 47978.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 4942.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 60440.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 8235.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 85868.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)


benchmarks.run_tiered.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 20463728 (overridden on cmd)
Total bytes of diff: 20463648 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 3296.dasm (-4.92 % of base)
         -12 : 1233.dasm (-1.06 % of base)
          -8 : 29008.dasm (-0.33 % of base)
          -8 : 3031.dasm (-0.15 % of base)
          -8 : 11528.dasm (-0.90 % of base)
          -4 : 51995.dasm (-0.29 % of base)
          -4 : 6323.dasm (-0.19 % of base)
          -4 : 18572.dasm (-0.60 % of base)
          -4 : 52538.dasm (-0.39 % of base)
          -4 : 47520.dasm (-0.43 % of base)

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

Top method improvements (bytes):
         -24 (-4.92 % of base) : 3296.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.06 % of base) : 1233.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.33 % of base) : 29008.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -8 (-0.15 % of base) : 3031.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -8 (-0.90 % of base) : 11528.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 18572.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 47520.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.19 % of base) : 6323.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -4 (-0.29 % of base) : 51995.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
          -4 (-0.39 % of base) : 52538.dasm - System.Threading.TimerQueue:TimerThread() (Tier1-OSR)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 3296.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.06 % of base) : 1233.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.90 % of base) : 11528.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 18572.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 47520.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.39 % of base) : 52538.dasm - System.Threading.TimerQueue:TimerThread() (Tier1-OSR)
          -8 (-0.33 % of base) : 29008.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -4 (-0.29 % of base) : 51995.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
          -4 (-0.19 % of base) : 6323.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 3031.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)

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


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 301233192 (overridden on cmd)
Total bytes of diff: 301232444 (overridden on cmd)
Total bytes of delta: -748 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 219647.dasm (0.08 % of base)
           4 : 316461.dasm (0.10 % of base)

Top file improvements (bytes):
         -60 : 293203.dasm (-0.63 % of base)
         -40 : 197342.dasm (-5.29 % of base)
         -36 : 314789.dasm (-0.65 % of base)
         -36 : 344150.dasm (-1.05 % of base)
         -36 : 315016.dasm (-0.96 % of base)
         -36 : 248219.dasm (-14.75 % of base)
         -28 : 314608.dasm (-0.85 % of base)
         -28 : 314886.dasm (-1.00 % of base)
         -28 : 314930.dasm (-1.86 % of base)
         -28 : 314160.dasm (-0.23 % of base)
         -24 : 314212.dasm (-0.55 % of base)
         -16 : 224044.dasm (-0.74 % of base)
         -16 : 316453.dasm (-0.51 % of base)
         -16 : 317399.dasm (-1.01 % of base)
         -16 : 216639.dasm (-1.57 % of base)
         -16 : 316447.dasm (-0.50 % of base)
         -16 : 294414.dasm (-0.33 % of base)
         -16 : 313828.dasm (-0.93 % of base)
         -16 : 314765.dasm (-0.66 % of base)
         -16 : 316476.dasm (-0.52 % of base)

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

Top method regressions (bytes):
           4 (0.08 % of base) : 219647.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
           4 (0.10 % of base) : 316461.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<>c__DisplayClass2_1+<<TEST_MultipleConnectPortsSuspend>b__1>d:MoveNext():this (FullOpts)

Top method improvements (bytes):
         -60 (-0.63 % of base) : 293203.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -40 (-5.29 % of base) : 197342.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -36 (-0.65 % of base) : 314789.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -36 (-14.75 % of base) : 248219.dasm - Program:M49() (FullOpts)
         -36 (-0.96 % of base) : 315016.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -36 (-1.05 % of base) : 344150.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -28 (-1.86 % of base) : 314930.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -28 (-0.85 % of base) : 314608.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -28 (-0.23 % of base) : 314160.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
         -28 (-1.00 % of base) : 314886.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -24 (-0.55 % of base) : 314212.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement):this (FullOpts)
         -16 (-0.33 % of base) : 294414.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (FullOpts)
         -16 (-0.66 % of base) : 314765.dasm - Microsoft.Build.BackEnd.TargetBuilder+<PushTargets>d__26:MoveNext():this (FullOpts)
         -16 (-1.57 % of base) : 216639.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ValidateBindArgument(System.Dynamic.DynamicMetaObject[],System.String) (FullOpts)
         -16 (-0.93 % of base) : 313828.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -16 (-0.74 % of base) : 224044.dasm - StackFrame:Validate(System.String,StackFrame[]) (FullOpts)
         -16 (-1.01 % of base) : 317399.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -16 (-0.52 % of base) : 316476.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_ConfigValidation>d__6:MoveNext():this (FullOpts)
         -16 (-0.50 % of base) : 316447.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsNoSuspend>d__1:MoveNext():this (FullOpts)
         -16 (-0.51 % of base) : 316453.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsSuspend>d__2:MoveNext():this (FullOpts)

Top method regressions (percentages):
           4 (0.10 % of base) : 316461.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<>c__DisplayClass2_1+<<TEST_MultipleConnectPortsSuspend>b__1>d:MoveNext():this (FullOpts)
           4 (0.08 % of base) : 219647.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)

Top method improvements (percentages):
         -36 (-14.75 % of base) : 248219.dasm - Program:M49() (FullOpts)
         -40 (-5.29 % of base) : 197342.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -12 (-4.55 % of base) : 254992.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -12 (-1.90 % of base) : 247696.dasm - Mutate:TestEntryPoint():int (FullOpts)
         -28 (-1.86 % of base) : 314930.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -16 (-1.57 % of base) : 216639.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ValidateBindArgument(System.Dynamic.DynamicMetaObject[],System.String) (FullOpts)
         -12 (-1.44 % of base) : 292738.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.35 % of base) : 311487.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.11 % of base) : 294688.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
         -12 (-1.06 % of base) : 292677.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -36 (-1.05 % of base) : 344150.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -12 (-1.03 % of base) : 311057.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -16 (-1.01 % of base) : 317399.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -28 (-1.00 % of base) : 314886.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -36 (-0.96 % of base) : 315016.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -12 (-0.95 % of base) : 294679.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
         -16 (-0.93 % of base) : 313828.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -12 (-0.89 % of base) : 471.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -12 (-0.88 % of base) : 314507.dasm - Microsoft.Build.BackEnd.Scheduler:DumpConfigurations():this (FullOpts)
         -28 (-0.85 % of base) : 314608.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)


libraries.crossgen2.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63764680 (overridden on cmd)
Total bytes of diff: 63764464 (overridden on cmd)
Total bytes of delta: -216 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 224464.dasm (0.54 % of base)
           8 : 37010.dasm (0.09 % of base)

Top file improvements (bytes):
         -24 : 37409.dasm (-4.65 % of base)
         -24 : 35537.dasm (-2.86 % of base)
         -20 : 264288.dasm (-11.11 % of base)
         -16 : 37996.dasm (-1.63 % of base)
         -12 : 27225.dasm (-1.52 % of base)
         -12 : 32397.dasm (-1.07 % of base)
         -12 : 228032.dasm (-0.55 % of base)
         -12 : 36871.dasm (-1.70 % of base)
         -12 : 207728.dasm (-0.55 % of base)
         -12 : 32395.dasm (-1.20 % of base)
         -12 : 37995.dasm (-2.40 % of base)
          -8 : 36603.dasm (-0.40 % of base)
          -8 : 234723.dasm (-0.95 % of base)
          -8 : 246925.dasm (-0.14 % of base)
          -8 : 36812.dasm (-1.05 % of base)
          -8 : 234718.dasm (-1.10 % of base)
          -4 : 204963.dasm (-0.07 % of base)
          -4 : 246857.dasm (-0.06 % of base)
          -4 : 37763.dasm (-0.34 % of base)
          -4 : 230443.dasm (-0.33 % of base)

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

Top method regressions (bytes):
          12 (0.54 % of base) : 224464.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 37010.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (bytes):
         -24 (-4.65 % of base) : 37409.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.86 % of base) : 35537.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -20 (-11.11 % of base) : 264288.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -16 (-1.63 % of base) : 37996.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-0.55 % of base) : 228032.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 207728.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-2.40 % of base) : 37995.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.20 % of base) : 32395.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.07 % of base) : 32397.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-1.52 % of base) : 27225.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.70 % of base) : 36871.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.05 % of base) : 36812.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.40 % of base) : 36603.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -8 (-0.14 % of base) : 246925.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-1.10 % of base) : 234718.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-0.95 % of base) : 234723.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.33 % of base) : 230443.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.09 % of base) : 252889.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.41 % of base) : 25639.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.17 % of base) : 32334.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)

Top method regressions (percentages):
          12 (0.54 % of base) : 224464.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 37010.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (percentages):
         -20 (-11.11 % of base) : 264288.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -24 (-4.65 % of base) : 37409.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.86 % of base) : 35537.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -12 (-2.40 % of base) : 37995.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.70 % of base) : 36871.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
         -16 (-1.63 % of base) : 37996.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-1.52 % of base) : 27225.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.20 % of base) : 32395.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.10 % of base) : 234718.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.07 % of base) : 32397.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-1.05 % of base) : 36812.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.95 % of base) : 234723.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 228032.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 207728.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -4 (-0.41 % of base) : 25639.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -8 (-0.40 % of base) : 36603.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -4 (-0.34 % of base) : 37763.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          -4 (-0.33 % of base) : 230443.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.17 % of base) : 32334.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.14 % of base) : 246925.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


libraries.pmi.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 76205836 (overridden on cmd)
Total bytes of diff: 76203524 (overridden on cmd)
Total bytes of delta: -2312 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 198256.dasm (1.14 % of base)
          12 : 289556.dasm (0.45 % of base)
           4 : 166358.dasm (0.14 % of base)
           4 : 168471.dasm (0.05 % of base)
           4 : 180043.dasm (0.35 % of base)

Top file improvements (bytes):
         -60 : 264107.dasm (-0.62 % of base)
         -52 : 15260.dasm (-0.66 % of base)
         -48 : 172239.dasm (-1.05 % of base)
         -40 : 143783.dasm (-1.03 % of base)
         -40 : 198276.dasm (-7.94 % of base)
         -40 : 206568.dasm (-0.70 % of base)
         -36 : 169460.dasm (-1.62 % of base)
         -36 : 177664.dasm (-1.62 % of base)
         -36 : 272017.dasm (-2.47 % of base)
         -36 : 289109.dasm (-1.85 % of base)
         -36 : 289550.dasm (-0.93 % of base)
         -32 : 246431.dasm (-1.79 % of base)
         -32 : 206574.dasm (-0.89 % of base)
         -28 : 201794.dasm (-0.95 % of base)
         -28 : 203989.dasm (-1.85 % of base)
         -28 : 172277.dasm (-1.59 % of base)
         -28 : 122005.dasm (-0.92 % of base)
         -28 : 201850.dasm (-2.29 % of base)
         -28 : 202827.dasm (-0.85 % of base)
         -28 : 276056.dasm (-2.70 % of base)

62 total files with Code Size differences (57 improved, 5 regressed), 7 unchanged.

Top method regressions (bytes):
          28 (1.14 % of base) : 198256.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (0.45 % of base) : 289556.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           4 (0.35 % of base) : 180043.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.05 % of base) : 168471.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           4 (0.14 % of base) : 166358.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)

Top method improvements (bytes):
         -60 (-0.62 % of base) : 264107.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -52 (-0.66 % of base) : 15260.dasm - Microsoft.CodeAnalysis.CommonCompiler:CompileAndEmit(Microsoft.CodeAnalysis.TouchedFileLogger,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],Microsoft.CodeAnalysis.AnalyzerConfigSet,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken,byref,byref,byref):this (FullOpts)
         -48 (-1.05 % of base) : 172239.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -40 (-0.70 % of base) : 206568.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -40 (-7.94 % of base) : 198276.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -40 (-1.03 % of base) : 143783.dasm - System.Data.DataTable:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
         -36 (-0.93 % of base) : 289550.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -36 (-1.85 % of base) : 289109.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -36 (-1.62 % of base) : 169460.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -36 (-1.62 % of base) : 177664.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -36 (-2.47 % of base) : 272017.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-0.89 % of base) : 206574.dasm - Microsoft.Build.BackEnd.TaskBuilder+<ExecuteBucket>d__19:MoveNext():this (FullOpts)
         -32 (-1.79 % of base) : 246431.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -28 (-2.70 % of base) : 276056.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -28 (-1.85 % of base) : 203989.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -28 (-0.85 % of base) : 202827.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -28 (-0.95 % of base) : 201794.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -28 (-2.29 % of base) : 201850.dasm - Microsoft.Build.Execution.BuildManager:OnThreadException(System.Exception):this (FullOpts)
         -28 (-0.92 % of base) : 122005.dasm - Microsoft.Diagnostics.Tracing.ZippedETLWriter:WriteArchive(int):ubyte:this (FullOpts)
         -28 (-0.96 % of base) : 280005.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)

Top method regressions (percentages):
          28 (1.14 % of base) : 198256.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (0.45 % of base) : 289556.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           4 (0.35 % of base) : 180043.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.14 % of base) : 166358.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           4 (0.05 % of base) : 168471.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (percentages):
         -20 (-11.90 % of base) : 261744.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -40 (-7.94 % of base) : 198276.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -16 (-4.12 % of base) : 240700.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -16 (-3.74 % of base) : 205742.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
         -12 (-3.57 % of base) : 289368.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -16 (-3.39 % of base) : 256944.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -16 (-3.20 % of base) : 203984.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
         -12 (-3.00 % of base) : 240699.dasm - Xunit.AggregateMessageSink:Dispose():this (FullOpts)
         -16 (-2.88 % of base) : 89471.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
         -28 (-2.70 % of base) : 276056.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -16 (-2.68 % of base) : 153590.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -12 (-2.68 % of base) : 261755.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
         -16 (-2.61 % of base) : 274714.dasm - System.Diagnostics.Metrics.AggregationManager:GetInstrumentState(System.Diagnostics.Metrics.Instrument):System.Diagnostics.Metrics.InstrumentState:this (FullOpts)
         -12 (-2.61 % of base) : 200943.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)
         -12 (-2.59 % of base) : 226767.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -24 (-2.55 % of base) : 233623.dasm - Microsoft.Build.Framework.NativeMethods:KillTree(int) (FullOpts)
         -16 (-2.55 % of base) : 226860.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.50 % of base) : 244617.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -36 (-2.47 % of base) : 272017.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -12 (-2.46 % of base) : 288184.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)


libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38230684 (overridden on cmd)
Total bytes of diff: 38229656 (overridden on cmd)
Total bytes of delta: -1028 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 60169.dasm (0.19 % of base)

Top file improvements (bytes):
         -20 : 10194.dasm (-1.84 % of base)
         -20 : 14817.dasm (-1.87 % of base)
         -20 : 22312.dasm (-1.93 % of base)
         -20 : 28713.dasm (-1.87 % of base)
         -20 : 31146.dasm (-1.93 % of base)
         -20 : 40721.dasm (-1.94 % of base)
         -20 : 13780.dasm (-1.93 % of base)
         -20 : 21746.dasm (-1.93 % of base)
         -20 : 22152.dasm (-1.93 % of base)
         -20 : 28161.dasm (-1.87 % of base)
         -20 : 34091.dasm (-1.85 % of base)
         -20 : 36032.dasm (-1.93 % of base)
         -20 : 14526.dasm (-1.94 % of base)
         -20 : 44418.dasm (-1.87 % of base)
         -20 : 48488.dasm (-1.93 % of base)
         -20 : 53399.dasm (-1.93 % of base)
         -20 : 53967.dasm (-1.87 % of base)
         -20 : 55146.dasm (-1.92 % of base)
         -20 : 56240.dasm (-1.93 % of base)
         -20 : 59731.dasm (-1.93 % of base)

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

Top method regressions (bytes):
          12 (0.19 % of base) : 60169.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

Top method improvements (bytes):
         -20 (-1.84 % of base) : 10194.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 14817.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 22312.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 28713.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 31146.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 40721.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 13780.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 21746.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 22152.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 28161.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.85 % of base) : 34091.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 36032.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 14526.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 44418.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 48488.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 53399.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 53967.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.92 % of base) : 55146.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 56240.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 59731.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method regressions (percentages):
          12 (0.19 % of base) : 60169.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

Top method improvements (percentages):
          -4 (-2.63 % of base) : 66536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1-OSR)
         -16 (-1.97 % of base) : 39426.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-1.97 % of base) : 14651.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-1.97 % of base) : 4145.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -20 (-1.94 % of base) : 40721.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 14526.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 83189.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 83365.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.94 % of base) : 87864.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 22312.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 31146.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 13780.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 21746.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 22152.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 36032.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 48488.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 53399.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 56240.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 59731.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 63817.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 161794580 (overridden on cmd)
Total bytes of diff: 161792060 (overridden on cmd)
Total bytes of delta: -2520 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 58162.dasm (1.24 % of base)
          16 : 206385.dasm (1.38 % of base)
          12 : 53391.dasm (1.14 % of base)
           8 : 229829.dasm (0.44 % of base)
           4 : 126505.dasm (0.49 % of base)
           4 : 165341.dasm (0.05 % of base)
           4 : 207016.dasm (0.33 % of base)
           4 : 207035.dasm (0.37 % of base)
           4 : 26223.dasm (0.35 % of base)
           4 : 206944.dasm (0.35 % of base)
           4 : 206947.dasm (0.37 % of base)
           4 : 207075.dasm (0.35 % of base)
           4 : 79292.dasm (0.48 % of base)

Top file improvements (bytes):
         -48 : 841.dasm (-1.05 % of base)
         -40 : 130035.dasm (-2.71 % of base)
         -40 : 130027.dasm (-2.90 % of base)
         -36 : 151236.dasm (-2.51 % of base)
         -36 : 151628.dasm (-2.51 % of base)
         -36 : 86627.dasm (-1.88 % of base)
         -32 : 121498.dasm (-1.10 % of base)
         -32 : 297197.dasm (-0.97 % of base)
         -32 : 294790.dasm (-1.08 % of base)
         -32 : 8035.dasm (-1.84 % of base)
         -32 : 87989.dasm (-1.64 % of base)
         -28 : 20300.dasm (-1.10 % of base)
         -28 : 296483.dasm (-1.18 % of base)
         -28 : 301841.dasm (-0.78 % of base)
         -28 : 3892.dasm (-1.63 % of base)
         -24 : 97877.dasm (-0.56 % of base)
         -24 : 143109.dasm (-1.05 % of base)
         -24 : 21923.dasm (-1.47 % of base)
         -24 : 219603.dasm (-0.94 % of base)
         -24 : 82713.dasm (-0.97 % of base)

54 total files with Code Size differences (41 improved, 13 regressed), 20 unchanged.

Top method regressions (bytes):
          28 (1.24 % of base) : 58162.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          16 (1.38 % of base) : 206385.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          12 (1.14 % of base) : 53391.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
           8 (0.44 % of base) : 229829.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
           4 (0.48 % of base) : 79292.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           4 (0.49 % of base) : 126505.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.35 % of base) : 26223.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.37 % of base) : 206947.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
           4 (0.37 % of base) : 207035.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
           4 (0.33 % of base) : 207016.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           4 (0.35 % of base) : 207075.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
           4 (0.35 % of base) : 206944.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           4 (0.05 % of base) : 165341.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (bytes):
         -48 (-1.05 % of base) : 841.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -40 (-2.71 % of base) : 130035.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -40 (-2.90 % of base) : 130027.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -36 (-1.88 % of base) : 86627.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -36 (-2.51 % of base) : 151236.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 151628.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-1.84 % of base) : 8035.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -32 (-1.64 % of base) : 87989.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -32 (-1.10 % of base) : 121498.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
         -32 (-1.08 % of base) : 294790.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
         -32 (-0.97 % of base) : 297197.dasm - System.Threading.Tasks.Dataflow.Tests.BatchBlockTests+<TestNonGreedyLostMessages>d__17:MoveNext():this (FullOpts)
         -28 (-1.10 % of base) : 20300.dasm - NuGet.Protocol.HttpSourceAuthenticationHandler+<SendAsync>d__9:MoveNext():this (FullOpts)
         -28 (-1.18 % of base) : 296483.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<BufferBlocksToBatchNonGreedyToAction>d__8:MoveNext():this (FullOpts)
         -28 (-0.78 % of base) : 301841.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         -28 (-1.63 % of base) : 3892.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -24 (-1.47 % of base) : 21923.dasm - NuGet.Packaging.Signing.SignedPackageArchiveUtility:GetPackageContentHash(System.IO.BinaryReader):System.String (FullOpts)
         -24 (-0.97 % of base) : 82713.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
         -24 (-0.56 % of base) : 97877.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<TestActivityCreationProperties>b__9_0():this (FullOpts)
         -24 (-0.94 % of base) : 219603.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
         -24 (-1.05 % of base) : 143109.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToNoMatch_string() (FullOpts)

Top method regressions (percentages):
          16 (1.38 % of base) : 206385.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          28 (1.24 % of base) : 58162.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (1.14 % of base) : 53391.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
           4 (0.49 % of base) : 126505.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.48 % of base) : 79292.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           8 (0.44 % of base) : 229829.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
           4 (0.37 % of base) : 207035.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
           4 (0.37 % of base) : 206947.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
           4 (0.35 % of base) : 26223.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.35 % of base) : 206944.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           4 (0.35 % of base) : 207075.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
           4 (0.33 % of base) : 207016.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           4 (0.05 % of base) : 165341.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (percentages):
         -20 (-11.90 % of base) : 148024.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -16 (-4.12 % of base) : 217783.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
         -16 (-4.12 % of base) : 538.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -12 (-3.57 % of base) : 33571.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -16 (-3.39 % of base) : 37372.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -40 (-2.90 % of base) : 130027.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -16 (-2.88 % of base) : 152204.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
         -16 (-2.78 % of base) : 220887.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
         -16 (-2.74 % of base) : 219767.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
         -40 (-2.71 % of base) : 130035.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -12 (-2.68 % of base) : 148050.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
         -16 (-2.63 % of base) : 219760.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountExceedingDefaultLimit_MemberData>d__18:MoveNext():ubyte:this (FullOpts)
         -12 (-2.59 % of base) : 145994.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-2.59 % of base) : 20305.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -16 (-2.55 % of base) : 146175.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.55 % of base) : 20396.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -36 (-2.51 % of base) : 151236.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 151628.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -16 (-2.50 % of base) : 213771.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-2.46 % of base) : 29272.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)


realworld.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15928884 (overridden on cmd)
Total bytes of diff: 15928568 (overridden on cmd)
Total bytes of delta: -316 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 11781.dasm (1.44 % of base)

Top file improvements (bytes):
         -52 : 15899.dasm (-8.33 % of base)
         -12 : 1342.dasm (-1.44 % of base)
         -12 : 30550.dasm (-1.60 % of base)
         -12 : 30582.dasm (-1.24 % of base)
         -12 : 31917.dasm (-0.26 % of base)
         -12 : 33293.dasm (-0.31 % of base)
         -12 : 33311.dasm (-0.54 % of base)
         -12 : 16286.dasm (-0.56 % of base)
         -12 : 30569.dasm (-2.73 % of base)
         -12 : 30595.dasm (-0.80 % of base)
         -12 : 32692.dasm (-1.45 % of base)
         -12 : 33273.dasm (-0.63 % of base)
         -12 : 6196.dasm (-2.00 % of base)
         -12 : 69.dasm (-1.06 % of base)
         -12 : 13129.dasm (-0.27 % of base)
          -8 : 1191.dasm (-0.15 % of base)
          -8 : 12467.dasm (-0.38 % of base)
          -8 : 15671.dasm (-1.82 % of base)
          -8 : 30678.dasm (-1.13 % of base)
          -8 : 33113.dasm (-0.83 % of base)

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

Top method regressions (bytes):
          16 (1.44 % of base) : 11781.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (bytes):
         -52 (-8.33 % of base) : 15899.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -12 (-0.56 % of base) : 16286.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
         -12 (-0.27 % of base) : 13129.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
         -12 (-0.80 % of base) : 30595.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
         -12 (-1.24 % of base) : 30582.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
         -12 (-0.63 % of base) : 33273.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -12 (-1.44 % of base) : 1342.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.54 % of base) : 33311.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
         -12 (-1.60 % of base) : 30550.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
         -12 (-2.73 % of base) : 30569.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -12 (-0.31 % of base) : 33293.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
         -12 (-1.45 % of base) : 32692.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -12 (-0.26 % of base) : 31917.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
         -12 (-2.00 % of base) : 6196.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.13 % of base) : 30678.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
          -8 (-0.38 % of base) : 12467.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadBigValues(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
          -8 (-1.49 % of base) : 30807.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-1.43 % of base) : 33248.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
          -8 (-0.50 % of base) : 33257.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)

Top method regressions (percentages):
          16 (1.44 % of base) : 11781.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -52 (-8.33 % of base) : 15899.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -12 (-2.73 % of base) : 30569.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -12 (-2.00 % of base) : 6196.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 15671.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-1.60 % of base) : 30550.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
          -8 (-1.49 % of base) : 30807.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.45 % of base) : 32692.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -12 (-1.44 % of base) : 1342.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.43 % of base) : 33248.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -12 (-1.24 % of base) : 30582.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
          -8 (-1.13 % of base) : 30678.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
         -12 (-1.06 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.96 % of base) : 32660.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
          -8 (-0.90 % of base) : 13726.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-0.83 % of base) : 33113.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -12 (-0.80 % of base) : 30595.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
          -8 (-0.68 % of base) : 32658.dasm - System.Management.Automation.Runspaces.LocalRunspace:StopOrDisconnectAllJobs():this (FullOpts)
          -4 (-0.63 % of base) : 5339.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -12 (-0.63 % of base) : 33273.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
          -4 (-0.60 % of base) : 33339.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)

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


smoke_tests.nativeaot.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

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

Detail diffs



Top file improvements (bytes):
         -24 : 13944.dasm (-3.95 % of base)
         -24 : 5986.dasm (-6.45 % of base)
          -8 : 6902.dasm (-1.55 % of base)
          -8 : 8281.dasm (-0.18 % of base)
          -8 : 13524.dasm (-1.82 % of base)
          -8 : 15182.dasm (-1.02 % of base)
          -4 : 15538.dasm (-0.18 % of base)
          -4 : 14385.dasm (-0.46 % of base)

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

Top method improvements (bytes):
         -24 (-6.45 % of base) : 5986.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-3.95 % of base) : 13944.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-1.55 % of base) : 6902.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-1.02 % of base) : 15182.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -8 (-0.18 % of base) : 8281.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-1.82 % of base) : 13524.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -4 (-0.18 % of base) : 15538.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -4 (-0.46 % of base) : 14385.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -24 (-6.45 % of base) : 5986.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-3.95 % of base) : 13944.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-1.82 % of base) : 13524.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.55 % of base) : 6902.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-1.02 % of base) : 15182.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -4 (-0.46 % of base) : 14385.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          -4 (-0.18 % of base) : 15538.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.18 % of base) : 8281.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)

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



linux x64

Diffs are based on 1,621,200 contexts (360,162 MinOpts, 1,261,038 FullOpts).

MISSED contexts: base: 2,647 (0.16%), diff: 2,650 (0.16%)

Overall (-742 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 11,931,736 +97
benchmarks.run_pgo.linux.x64.checked.mch 57,208,438 +1,769
benchmarks.run_tiered.linux.x64.checked.mch 18,554,476 -48
coreclr_tests.run.linux.x64.checked.mch 247,130,491 -254
libraries.crossgen2.linux.x64.checked.mch 44,619,341 -85
libraries.pmi.linux.x64.checked.mch 60,391,350 -848
libraries_tests.run.linux.x64.Release.mch 31,730,283 -231
librariestestsnotieredcompilation.run.linux.x64.Release.mch 130,012,769 -961
realworld.run.linux.x64.checked.mch 13,219,489 -24
smoke_tests.nativeaot.linux.x64.checked.mch 4,228,743 -157

FullOpts (-742 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 11,762,034 +97
benchmarks.run_pgo.linux.x64.checked.mch 39,461,926 +1,769
benchmarks.run_tiered.linux.x64.checked.mch 3,498,730 -48
coreclr_tests.run.linux.x64.checked.mch 106,763,610 -254
libraries.crossgen2.linux.x64.checked.mch 44,618,143 -85
libraries.pmi.linux.x64.checked.mch 60,278,493 -848
libraries_tests.run.linux.x64.Release.mch 15,802,466 -231
librariestestsnotieredcompilation.run.linux.x64.Release.mch 119,428,914 -961
realworld.run.linux.x64.checked.mch 12,830,953 -24
smoke_tests.nativeaot.linux.x64.checked.mch 4,227,794 -157

Example diffs

benchmarks.run.linux.x64.checked.mch

-9 (-1.64%) : 2729.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

@@ -19,15 +19,15 @@ ; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> ; V10 loc5 [V10,T02] ( 12, 14.25) int -> [rbp-0x34]
-; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r15 class-hnd <System.Array> -; V12 loc7 [V12,T08] ( 4, 8 ) int -> r15
+; V11 loc6 [V11,T06] ( 5, 10 ) ref -> r15 class-hnd <System.Array> +; V12 loc7 [V12,T08] ( 4, 8 ) int -> rax
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T20] ( 2, 1 ) int -> r12 ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T17] ( 3, 1.50) int -> rax -; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs" -; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
+; V17 tmp4 [V17,T17] ( 3, 1.50) int -> rbx +; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rcx "impSpillLclRefs" +; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rcx class-hnd "impSpillLclRefs" <<unknown class>>
; V20 tmp7 [V20,T09] ( 2, 8 ) int -> rdx "impAppendStmt" ;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -35,7 +35,7 @@ ; V24 tmp11 [V24,T04] ( 3, 12 ) ref -> rax "arr expr" ; V25 tmp12 [V25,T05] ( 3, 12 ) int -> rcx "index expr" ; V26 PSPSym [V26,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T06] ( 4, 10.50) int -> r15 "CSE - aggressive"
+; V27 cse0 [V27,T07] ( 3, 10 ) int -> rax "CSE - aggressive"
; V28 cse1 [V28,T18] ( 3, 1.50) int -> rsi "CSE - moderate" ; V29 cse2 [V29,T19] ( 3, 1.50) int -> rax "CSE - moderate" ; @@ -150,14 +150,13 @@ G_M62513_IG10: ; bbWeight=1.75, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 jmp G_M62513_IG13 ;; size=10 bbWeight=1.75 PerfScore 3.94 G_M62513_IG11: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rdi+0x08] - ; gcrRegs +[rax] - dec r15d - mov dword ptr [rdi+0x14], r15d - cmp r15d, dword ptr [rax+0x08]
+ mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + dec eax + mov dword ptr [rdi+0x14], eax + cmp eax, dword ptr [rcx+0x08]
jae G_M62513_IG07
- mov ecx, r15d - mov r15, gword ptr [rax+8*rcx+0x10]
+ mov r15, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r15] test r15, r15 jne SHORT G_M62513_IG12 @@ -165,9 +164,9 @@ G_M62513_IG11: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rcx rsi rdi]
; gcr arg pop 0
- ;; size=60 bbWeight=2 PerfScore 28.50
+ ;; size=54 bbWeight=2 PerfScore 28.00
G_M62513_IG12: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -205,15 +204,15 @@ G_M62513_IG12: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, ; gcrRegs +[rdi] ;; size=90 bbWeight=2 PerfScore 62.00 G_M62513_IG13: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rdi+0x14] - test r15d, r15d - jle SHORT G_M62513_IG16 - mov eax, esi - lea esi, [rax-0x01] - mov dword ptr [rbp-0x34], esi
+ mov eax, dword ptr [rdi+0x14]
test eax, eax
+ jle SHORT G_M62513_IG16 + mov ecx, esi + lea esi, [rcx-0x01] + mov dword ptr [rbp-0x34], esi + test ecx, ecx
jg G_M62513_IG11
- ;; size=25 bbWeight=4 PerfScore 25.00
+ ;; size=23 bbWeight=4 PerfScore 25.00
G_M62513_IG14: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] jmp SHORT G_M62513_IG17 @@ -227,21 +226,20 @@ G_M62513_IG15: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr ;; size=9 bbWeight=1 PerfScore 4.00 G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14]
- test r15d, r15d - jg SHORT G_M62513_IG17 - xor eax, eax
+ xor ebx, ebx
jmp SHORT G_M62513_IG18
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov eax, r12d - sar eax, 31 - and eax, 3 - add eax, r12d - sar eax, 2 - add eax, dword ptr [rdi+0x18] - ;; size=18 bbWeight=0.50 PerfScore 2.38
+ mov ebx, r12d + sar ebx, 31 + and ebx, 3 + add ebx, r12d + sar ebx, 2 + add ebx, dword ptr [rdi+0x18] + mov rdi, gword ptr [rbp-0x40] + ;; size=22 bbWeight=0.50 PerfScore 2.88
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], ebx
;; size=3 bbWeight=0.50 PerfScore 0.50 G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref cmp byte ptr [rbp-0x30], 0 @@ -289,7 +287,7 @@ G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 549, prolog size 38, PerfScore 168.06, instruction count 158, allocated bytes for code 549 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 540, prolog size 38, PerfScore 167.44, instruction count 156, allocated bytes for code 540 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================ Unwind Info:

-4 (-1.08%) : 5597.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def
; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
; V19 tmp12 [V19,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" ;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -38,30 +38,30 @@ ;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V30 tmp23 [V30,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V30 tmp23 [V30,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp25 [V32,T23] ( 3, 17 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V33 tmp26 [V33,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V34 tmp27 [V34,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V32 tmp25 [V32,T24] ( 3, 17 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V33 tmp26 [V33,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V34 tmp27 [V34,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V35 tmp28 [V35 ] ( 3, 3 ) struct (16) [rbp-0x50] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" ; V36 tmp29 [V36 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP ; V37 tmp30 [V37 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
-; V38 tmp31 [V38,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V39 tmp32 [V39,T03] ( 4, 20 ) ref -> rdi "field V04._current (fldOffset=0x8)" P-INDEP
+; V38 tmp31 [V38,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V39 tmp32 [V39,T02] ( 4, 20 ) ref -> rdi "field V04._current (fldOffset=0x8)" P-INDEP
; V40 tmp33 [V40,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V41 tmp34 [V41,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V42 tmp35 [V42,T13] ( 2, 8 ) byref -> r12 "field V09._reference (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T15] ( 2, 8 ) int -> [rbp-0x54] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
+; V41 tmp34 [V41,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V42 tmp35 [V42,T14] ( 2, 8 ) byref -> r12 "field V09._reference (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T16] ( 2, 8 ) int -> [rbp-0x54] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V46 tmp39 [V46,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V48 tmp41 [V48,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V49 tmp42 [V49,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V48 tmp41 [V48,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V49 tmp42 [V49,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V50 tmp43 [V50,T11] ( 3, 12 ) byref -> rsi "field V14._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp44 [V51,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V52 tmp45 [V52,T14] ( 2, 8 ) byref -> rsi "field V15._reference (fldOffset=0x0)" P-INDEP -; V53 tmp46 [V53,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V51 tmp44 [V51,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V52 tmp45 [V52,T15] ( 2, 8 ) byref -> rsi "field V15._reference (fldOffset=0x0)" P-INDEP +; V53 tmp46 [V53,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP @@ -77,8 +77,9 @@ ;* V66 tmp59 [V66 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp60 [V67 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP ; V68 tmp61 [V68,T01] ( 3, 48 ) ref -> rdi "arr expr"
-; V69 PSPSym [V69,T27] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym" -; V70 cse0 [V70,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V69 PSPSym [V69,T28] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym" +; V70 cse0 [V70,T09] ( 2, 16 ) int -> rdi "CSE - moderate" +; V71 cse1 [V71,T04] ( 2, 16 ) int -> rdi "CSE - moderate"
; ; Lcl frame size = 72 @@ -111,7 +112,7 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov bword ptr [rbp-0x38], rax mov qword ptr [rbp-0x30], rdx cmp byte ptr [r15+0x08], 0
- je G_M19804_IG11
+ je G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -161,14 +162,15 @@ G_M19804_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 { ; byrRegs -[rsi rdi r12] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=23 bbWeight=4 PerfScore 32.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edi, dword ptr [rbx+0x14] + cmp r14d, edi + jne SHORT G_M19804_IG09 + mov edi, dword ptr [rbx+0x10] + cmp r13d, edi + jae SHORT G_M19804_IG10
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08] @@ -177,7 +179,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdi, gword ptr [rdi+8*rax+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rdi] call CORINFO_HELP_RNGCHKFAIL @@ -189,10 +191,6 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] lea rdi, [rbp-0x38] @@ -204,9 +202,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=28 bbWeight=8 PerfScore 132.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -218,9 +216,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=23 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -231,13 +229,13 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=13 bbWeight=1 PerfScore 3.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x50] call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 72 pop rbx pop r12 @@ -247,7 +245,7 @@ G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 @@ -260,7 +258,7 @@ G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr mov qword ptr [rsp], rbp lea rbp, [rbp+0x70] ;; size=22 bbWeight=0 PerfScore 0.00
-G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
mov rdi, rsi ; gcrRegs +[rdi] mov rax, qword ptr [rsi] @@ -273,9 +271,9 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 { call [<unknown method>] ; gcrRegs -[rax rdi] ; gcr arg pop 0
- lea rax, G_M19804_IG14
+ lea rax, G_M19804_IG13
;; size=29 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend
+G_M19804_IG17: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -286,7 +284,7 @@ G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 371, prolog size 35, PerfScore 424.50, instruction count 122, allocated bytes for code 371 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
+; Total bytes of code 367, prolog size 35, PerfScore 408.50, instruction count 121, allocated bytes for code 367 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
; ============================================================ Unwind Info: @@ -325,4 +323,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M19804_IG03..G_M19804_IG14) handled by [G_M19804_IG16..END) (class: 2000053)
+EH#0: try [G_M19804_IG03..G_M19804_IG13) handled by [G_M19804_IG15..END) (class: 2000053)
-4 (-0.92%) : 4299.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
@@ -10,8 +10,8 @@ ; ; V00 this [V00,T09] ( 3, 4 ) ref -> r15 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T08] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T11] ( 5, 3.50) ref -> r14 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T15] ( 3, 0.50) ref -> [rbp-0x38] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T12] ( 5, 3.50) ref -> r14 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [rbp-0x38] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -24,19 +24,20 @@ ; V13 tmp5 [V13,T04] ( 3, 12 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inlining Arg" <System.AggregateException> ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp8 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp8 [V16,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V18 tmp10 [V18,T03] ( 4, 12.50) ref -> r14 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V19 tmp11 [V19,T02] ( 5, 14 ) ref -> [rbp-0x50] "field V05._current (fldOffset=0x8)" P-INDEP ; V20 tmp12 [V20,T00] ( 6, 20.50) int -> r12 "field V05._index (fldOffset=0x10)" P-INDEP
-; V21 tmp13 [V21,T06] ( 3, 8.50) int -> r13 "field V05._version (fldOffset=0x14)" P-INDEP -; V22 tmp14 [V22,T12] ( 3, 1.50) ref -> r14 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V21 tmp13 [V21,T11] ( 2, 4.50) int -> r13 "field V05._version (fldOffset=0x14)" P-INDEP +; V22 tmp14 [V22,T13] ( 3, 1.50) ref -> r14 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V24 tmp16 [V24,T16] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V25 tmp17 [V25,T13] ( 2, 1 ) int -> r13 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V24 tmp16 [V24,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V25 tmp17 [V25,T14] ( 2, 1 ) int -> r13 "field V09._version (fldOffset=0x14)" P-INDEP
; V26 tmp18 [V26,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V27 PSPSym [V27,T14] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" -; V28 cse0 [V28,T05] ( 3, 12 ) int -> rax "CSE - aggressive"
+; V27 PSPSym [V27,T15] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" +; V28 cse0 [V28,T07] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V29 cse1 [V29,T05] ( 2, 8 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 56 @@ -64,7 +65,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov r14, gword ptr [rbx+0x28] ; gcrRegs +[r14] test r14, r14
- je G_M37406_IG16
+ je G_M37406_IG15
;; size=28 bbWeight=1 PerfScore 7.75 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov gword ptr [rbp-0x38], r14 @@ -72,7 +73,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 xor esi, esi mov dword ptr [rbp-0x30], esi ;; size=9 bbWeight=0.50 PerfScore 1.12
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000008000 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
cmp byte ptr [rbp-0x30], 0 jne G_M37406_IG10 lea rsi, [rbp-0x30] @@ -88,15 +89,16 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000008000 {V03}, gcrefRegs= xor r12d, r12d ;; size=40 bbWeight=0.50 PerfScore 5.50 G_M37406_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [r14+0x14] - cmp r13d, eax - jne G_M37406_IG11 - cmp r12d, dword ptr [r14+0x10] - jae G_M37406_IG14
+ mov edi, dword ptr [r14+0x14] + cmp r13d, edi + jne G_M37406_IG12 + mov edi, dword ptr [r14+0x10] + cmp r12d, edi + jae G_M37406_IG13
mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] cmp r12d, dword ptr [rdi+0x08]
- jae G_M37406_IG12
+ jae G_M37406_IG11
mov esi, r12d mov rax, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[rax] @@ -105,8 +107,8 @@ G_M37406_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars +{V19} test dword ptr [rax+0x34], 0xD1FFAB1E jne SHORT G_M37406_IG07
- ;; size=61 bbWeight=4 PerfScore 83.00 -G_M37406_IG06: ; bbWeight=2, gcVars=0000000000008004 {V03 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=64 bbWeight=4 PerfScore 80.00 +G_M37406_IG06: ; bbWeight=2, gcVars=0000000000010004 {V03 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -172,39 +174,32 @@ G_M37406_IG08: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs= ; gcr arg pop 0 jmp G_M37406_IG05 ;; size=19 bbWeight=2 PerfScore 11.50
-G_M37406_IG09: ; bbWeight=1, gcVars=0000000000008010 {V03 V13}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG09: ; bbWeight=1, gcVars=0000000000010010 {V03 V13}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V13} mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax] jmp SHORT G_M37406_IG08 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M37406_IG10: ; bbWeight=0, gcVars=0000000000008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M37406_IG10: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx r14-r15] ; GC ptr vars -{V13} call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M37406_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx] - cmp r13d, eax - jne SHORT G_M37406_IG13 - jmp SHORT G_M37406_IG14 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx]
+G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M37406_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] cmp byte ptr [rbp-0x30], 0
- je SHORT G_M37406_IG15
+ je SHORT G_M37406_IG14
mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] ; GC ptr vars -{V03} @@ -212,12 +207,12 @@ G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=15 bbWeight=0.50 PerfScore 2.50
-G_M37406_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rax, rax ; gcrRegs +[rax] mov gword ptr [rbx+0x28], rax ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M37406_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax rbx] add rsp, 56 pop rbx @@ -228,8 +223,8 @@ G_M37406_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M37406_IG17: ; bbWeight=0, gcVars=0000000000008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03}
+G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03 V16}
push rbp push r15 push r14 @@ -241,20 +236,20 @@ G_M37406_IG17: ; bbWeight=0, gcVars=0000000000008000 {V03}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x60] ;; size=22 bbWeight=0 PerfScore 0.00
-G_M37406_IG18: ; bbWeight=0, gcVars=0000000000008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M37406_IG19
+ je SHORT G_M37406_IG18
mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi]
- ; GC ptr vars -{V03}
+ ; GC ptr vars -{V03 V16}
call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M37406_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M37406_IG20: ; bbWeight=0, funclet epilog, nogc, extend
+G_M37406_IG19: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -265,7 +260,7 @@ G_M37406_IG20: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 437, prolog size 29, PerfScore 213.00, instruction count 123, allocated bytes for code 437 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 433, prolog size 29, PerfScore 197.00, instruction count 121, allocated bytes for code 433 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -304,4 +299,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG14) handled by [G_M37406_IG17..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG13) handled by [G_M37406_IG16..END) (fault)
+3 (+2.36%) : 9016.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
@@ -8,27 +8,28 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 3.50) ref -> rdi this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> -; V01 arg1 [V01,T06] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T08] ( 4, 3.50) ref -> rdi this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> +; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Runtime.Serialization.StreamingContext> ;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V05 tmp1 [V05,T12] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ;* V07 tmp3 [V07,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V09 tmp5 [V09,T08] ( 2, 3 ) ref -> r15 single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP -; V10 tmp6 [V10,T09] ( 2, 3 ) int -> r14 single-def "field V02._state (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T09] ( 2, 3 ) ref -> r15 single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP +; V10 tmp6 [V10,T10] ( 2, 3 ) int -> r14 single-def "field V02._state (fldOffset=0x8)" P-INDEP
; V11 tmp7 [V11,T02] ( 4, 12.50) ref -> r13 single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V12 tmp8 [V12,T03] ( 3, 8 ) ref -> rax "field V03._current (fldOffset=0x8)" P-INDEP ; V13 tmp9 [V13,T00] ( 6, 20.50) int -> [rbp-0x2C] "field V03._index (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 4.50) int -> r12 single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V15 tmp11 [V15,T12] ( 3, 1.50) ref -> r13 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 4.50) int -> r12 single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V15 tmp11 [V15,T13] ( 3, 1.50) ref -> r13 single-def "field V06._list (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp13 [V17,T14] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP -; V18 tmp14 [V18,T13] ( 2, 1 ) int -> r12 single-def "field V06._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp13 [V17,T15] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP +; V18 tmp14 [V18,T14] ( 2, 1 ) int -> r12 single-def "field V06._version (fldOffset=0x14)" P-INDEP
; V19 tmp15 [V19,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V20 cse0 [V20,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V20 cse0 [V20,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V21 cse1 [V21,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,7 +74,8 @@ G_M62978_IG04: ; bbWeight=2, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs= mov edx, dword ptr [rbp-0x2C] ;; size=19 bbWeight=2 PerfScore 13.50 G_M62978_IG05: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- cmp r12d, dword ptr [r13+0x14]
+ mov ecx, dword ptr [r13+0x14] + cmp r12d, ecx
jne SHORT G_M62978_IG08 mov ecx, dword ptr [r13+0x10] cmp edx, ecx @@ -88,7 +90,7 @@ G_M62978_IG05: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 inc edx mov dword ptr [rbp-0x2C], edx jmp SHORT G_M62978_IG04
- ;; size=37 bbWeight=4 PerfScore 75.00
+ ;; size=40 bbWeight=4 PerfScore 72.00
G_M62978_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rcx rbx r13 r15] add rsp, 8 @@ -108,7 +110,7 @@ G_M62978_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 127, prolog size 16, PerfScore 120.88, instruction count 47, allocated bytes for code 127 (MethodHash=063809fd) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
+; Total bytes of code 130, prolog size 16, PerfScore 117.88, instruction count 48, allocated bytes for code 130 (MethodHash=063809fd) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.52%) : 9637.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)

@@ -8,26 +8,27 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
; V02 loc0 [V02 ] ( 3, 7 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
-;* V08 tmp3 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp3 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V10 tmp5 [V10,T02] ( 4, 17 ) ref -> r15 single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T04] ( 2, 6 ) ref -> rdi "field V03._current (fldOffset=0x8)" P-INDEP
+; V11 tmp6 [V11,T05] ( 2, 6 ) ref -> rdi "field V03._current (fldOffset=0x8)" P-INDEP
; V12 tmp7 [V12,T00] ( 6, 21 ) int -> r13 "field V03._index (fldOffset=0x10)" P-INDEP
-; V13 tmp8 [V13,T05] ( 2, 9 ) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP -; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T06] ( 2, 9 ) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP +; V14 tmp9 [V14,T11] ( 3, 3 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._current (fldOffset=0x8)" P-INDEP
-;* V16 tmp11 [V16,T12] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP -; V17 tmp12 [V17,T11] ( 2, 2 ) int -> r14 "field V07._version (fldOffset=0x14)" P-INDEP
+;* V16 tmp11 [V16,T13] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP +; V17 tmp12 [V17,T12] ( 2, 2 ) int -> r14 "field V07._version (fldOffset=0x14)" P-INDEP
; V18 tmp13 [V18,T01] ( 3, 24 ) ref -> rsi "arr expr"
-; V19 cse0 [V19,T03] ( 2, 8 ) int -> rsi "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 8 ) int -> rsi "CSE - aggressive" +; V20 cse1 [V20,T03] ( 2, 16 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -65,9 +66,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 ; gcrRegs -[rdx rdi] ;; size=15 bbWeight=2 PerfScore 13.50 G_M38703_IG05: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov esi, dword ptr [r15+0x14] + cmp r14d, esi
jne SHORT G_M38703_IG10
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M38703_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [r15+0x10] cmp r13d, esi @@ -103,7 +105,7 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 17, PerfScore 133.00, instruction count 41, allocated bytes for code 119 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
+; Total bytes of code 122, prolog size 17, PerfScore 127.00, instruction count 42, allocated bytes for code 122 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.94%) : 5814.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> -; V01 arg1 [V01,T07] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
+; V00 this [V00,T07] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> +; V01 arg1 [V01,T08] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -19,13 +19,14 @@ ; V08 tmp4 [V08,T02] ( 4, 12.50) ref -> r15 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V09 tmp5 [V09,T03] ( 3, 8 ) ref -> rax "field V02._current (fldOffset=0x8)" P-INDEP ; V10 tmp6 [V10,T00] ( 6, 20.50) int -> r13 "field V02._index (fldOffset=0x10)" P-INDEP
-; V11 tmp7 [V11,T08] ( 2, 4.50) int -> r14 "field V02._version (fldOffset=0x14)" P-INDEP -; V12 tmp8 [V12,T09] ( 3, 1.50) ref -> r15 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T09] ( 2, 4.50) int -> r14 "field V02._version (fldOffset=0x14)" P-INDEP +; V12 tmp8 [V12,T10] ( 3, 1.50) ref -> r15 single-def "field V05._list (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._current (fldOffset=0x8)" P-INDEP
-;* V14 tmp10 [V14,T11] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP -; V15 tmp11 [V15,T10] ( 2, 1 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+;* V14 tmp10 [V14,T12] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP +; V15 tmp11 [V15,T11] ( 2, 1 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V16 tmp12 [V16,T01] ( 3, 24 ) ref -> rsi "arr expr"
-; V17 cse0 [V17,T04] ( 2, 8 ) int -> rsi "CSE - aggressive"
+; V17 cse0 [V17,T06] ( 2, 8 ) int -> rsi "CSE - aggressive" +; V18 cse1 [V18,T04] ( 2, 8 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -61,7 +62,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 ; gcrRegs -[rax rsi rdi] ;; size=10 bbWeight=2 PerfScore 10.50 G_M37225_IG05: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov esi, dword ptr [r15+0x14] + cmp r14d, esi
jne SHORT G_M37225_IG08 mov esi, dword ptr [r15+0x10] cmp r13d, esi @@ -75,7 +77,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] inc r13d jmp SHORT G_M37225_IG04
- ;; size=38 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M37225_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rbx rsi r15] pop rbx @@ -93,7 +95,7 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 13, PerfScore 104.75, instruction count 37, allocated bytes for code 102 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
+; Total bytes of code 105, prolog size 13, PerfScore 101.75, instruction count 38, allocated bytes for code 105 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.linux.x64.checked.mch

-17 (-3.18%) : 103078.dasm - System.Linq.Enumerable:CountSystem.__Canon:int (Tier1)

@@ -25,7 +25,7 @@ ; V13 tmp7 [V13,T09] ( 2, 156.11) int -> rax "guarded devirt return temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V16 tmp10 [V16,T00] ( 12,1096.74) byref -> r14 "Inlining Arg"
+; V16 tmp10 [V16,T00] ( 10,1092.77) byref -> r14 "Inlining Arg"
; V17 tmp11 [V17,T07] ( 4, 311.23) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T01] ( 3, 462.38) ref -> rdi "arr expr" @@ -56,14 +56,14 @@ G_M54795_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=34 bbWeight=1 PerfScore 8.50 G_M54795_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref test r14, r14
- je G_M54795_IG24
+ je G_M54795_IG23
test rbx, rbx
- je G_M54795_IG25
+ je G_M54795_IG24
xor r13d, r13d mov rdi, qword ptr [r15+0x38] mov r11, qword ptr [rdi+0x10] test r11, r11
- je G_M54795_IG20
+ je G_M54795_IG19
;; size=38 bbWeight=1 PerfScore 8.00 G_M54795_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref mov rdi, r14 @@ -135,10 +135,10 @@ G_M54795_IG10: ; bbWeight=78.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 ; gcrRegs +[rdi] mov esi, dword ptr [r14+0x14] cmp esi, dword ptr [rdi+0x14]
- jne SHORT G_M54795_IG18
+ jne SHORT G_M54795_IG17
mov esi, dword ptr [r14+0x10] cmp esi, dword ptr [rdi+0x10]
- jae SHORT G_M54795_IG19
+ jae SHORT G_M54795_IG18
;; size=40 bbWeight=78.06 PerfScore 1463.53 G_M54795_IG11: ; bbWeight=77.06, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz ; gcrRegs -[rax] @@ -173,7 +173,7 @@ G_M54795_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rbx] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- jmp SHORT G_M54795_IG21
+ jmp SHORT G_M54795_IG20
;; size=6 bbWeight=1 PerfScore 3.00 G_M54795_IG14: ; bbWeight=4.94, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx] @@ -199,16 +199,6 @@ G_M54795_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, ; byrRegs +[r14] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- mov edi, dword ptr [r14+0x14] - mov r11, gword ptr [r14] - ; gcrRegs +[r11] - cmp edi, dword ptr [r11+0x14] - jne SHORT G_M54795_IG17 - ;; size=17 bbWeight=0.99 PerfScore 8.93 -G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax]
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov edi, dword ptr [rdi+0x10] @@ -218,9 +208,9 @@ G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [r14+0x08], rdi
- jmp SHORT G_M54795_IG21
+ jmp SHORT G_M54795_IG20
;; size=24 bbWeight=0.99 PerfScore 9.42
-G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG19: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rbx r14] ; byrRegs -[r14] ; GC ptr vars -{V04} @@ -231,19 +221,19 @@ G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=400 mov r11, rax jmp G_M54795_IG03 ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG20: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rbx r14] +[rax] ; GC ptr vars +{V04} mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Product] cmp qword ptr [rax], rdi
- jne SHORT G_M54795_IG26
+ jne SHORT G_M54795_IG25
;; size=15 bbWeight=1 PerfScore 4.25
-G_M54795_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] ; GC ptr vars -{V04} mov eax, r13d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M54795_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop r13 @@ -252,19 +242,19 @@ G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75
-G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 17 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG25: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04} mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax] @@ -275,9 +265,9 @@ G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 call [r11]<unknown method> ; gcrRegs -[rax rdi] ; gcr arg pop 0
- jmp SHORT G_M54795_IG22
+ jmp SHORT G_M54795_IG21
;; size=22 bbWeight=0 PerfScore 0.00
-G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} push rbp push r15 @@ -289,14 +279,14 @@ G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x40] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x30], 0
- je SHORT G_M54795_IG29
+ je SHORT G_M54795_IG28
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Product] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax] cmp qword ptr [rax], rdi
- je SHORT G_M54795_IG29
+ je SHORT G_M54795_IG28
mov rdi, rax ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -305,10 +295,10 @@ G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 ; gcrRegs -[rax rdi] ; gcr arg pop 0 ;; size=42 bbWeight=0 PerfScore 0.00
-G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M54795_IG30: ; bbWeight=0, funclet epilog, nogc, extend
+G_M54795_IG29: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16 pop rbx pop r13 @@ -318,7 +308,7 @@ G_M54795_IG30: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 535, prolog size 34, PerfScore 5559.81, instruction count 151, allocated bytes for code 535 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
+; Total bytes of code 518, prolog size 34, PerfScore 5550.89, instruction count 146, allocated bytes for code 518 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -355,4 +345,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M54795_IG04..G_M54795_IG20) handled by [G_M54795_IG27..END) (fault)
+EH#0: try [G_M54795_IG04..G_M54795_IG19) handled by [G_M54795_IG26..END) (fault)
-10 (-1.72%) : 26433.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -9,7 +9,7 @@ ; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 21, 5.50) ref -> [rbp-0x40] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V00 this [V00,T00] ( 20, 5.50) ref -> [rbp-0x40] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V01 arg1 [V01,T02] ( 4, 2.50) int -> r15 single-def ; V02 arg2 [V02,T03] ( 3, 2 ) int -> r14 single-def ; V03 arg3 [V03,T01] ( 5, 2.50) int -> rbx single-def @@ -99,13 +99,13 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x14], 0
- je G_M62513_IG22
+ je G_M62513_IG21
cmp dword ptr [rdi+0x18], 0 jne SHORT G_M62513_IG10 ;; size=20 bbWeight=0.50 PerfScore 4.50 G_M62513_IG07: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov dword ptr [rdi+0x18], r15d
- jmp G_M62513_IG22
+ jmp G_M62513_IG21
;; size=9 bbWeight=0.25 PerfScore 0.75 G_M62513_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] @@ -128,7 +128,7 @@ G_M62513_IG10: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, sub r15d, dword ptr [rdi+0x18] cmp r15d, r12d jg SHORT G_M62513_IG14
- jmp G_M62513_IG22
+ jmp G_M62513_IG21
;; size=14 bbWeight=0.25 PerfScore 1.56 G_M62513_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -141,11 +141,9 @@ G_M62513_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=5 bbWeight=0 PerfScore 0.00 G_M62513_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x14], 0 - jg G_M62513_IG20
xor eax, eax
- jmp G_M62513_IG21 - ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M62513_IG20 + ;; size=7 bbWeight=0 PerfScore 0.00
G_M62513_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz mov rsi, 0xD1FFAB1E ; const ptr mov r15, gword ptr [rsi] @@ -241,20 +239,18 @@ G_M62513_IG19: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, mov dword ptr [rbp-0x34], esi test eax, eax jg G_M62513_IG17
- ;; size=26 bbWeight=0 PerfScore 0.00 -G_M62513_IG20: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15]
mov eax, r12d sar eax, 31 and eax, 3 add eax, r12d sar eax, 2 add eax, dword ptr [rdi+0x18]
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M62513_IG21: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=0 PerfScore 0.00 +G_M62513_IG20: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15]
mov dword ptr [rdi+0x18], eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x30], 0 je G_M62513_IG03 ; GC ptr vars -{V00} @@ -263,7 +259,7 @@ G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M62513_IG03 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG23: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG22: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00} push rbp push r15 @@ -276,9 +272,9 @@ G_M62513_IG23: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x50] ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62513_IG24: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG23: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M62513_IG25
+ je SHORT G_M62513_IG24
mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] ; GC ptr vars -{V00} @@ -286,10 +282,10 @@ G_M62513_IG24: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62513_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62513_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62513_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M62513_IG25: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -300,7 +296,7 @@ G_M62513_IG26: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 580, prolog size 38, PerfScore 30.19, instruction count 160, allocated bytes for code 580 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 570, prolog size 38, PerfScore 30.19, instruction count 158, allocated bytes for code 570 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info: @@ -339,4 +335,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG22) handled by [G_M62513_IG23..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG21) handled by [G_M62513_IG22..END) (fault)
-36 (-1.70%) : 92497.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
@@ -64,7 +64,7 @@ ; V51 tmp44 [V51,T05] ( 6, 297563.13) int -> r9 "Inline stloc first use temp" ; V52 tmp45 [V52,T03] ( 4, 396750.84) long -> rdi "impAppendStmt" ;* V53 tmp46 [V53,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V54 tmp47 [V54,T15] ( 25, 31294.89) byref -> r12 "Inlining Arg"
+; V54 tmp47 [V54,T15] ( 21, 31214.10) byref -> r12 "Inlining Arg"
; V55 tmp48 [V55,T20] ( 8, 6259.22) ref -> rax class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]> ; V56 tmp49 [V56,T37] ( 6, 300 ) ref -> rsi "field V40._list (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57,T44] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP @@ -120,11 +120,11 @@ G_M11746_IG03: ; bbWeight=20.00, gcVars=0000000000000000 {}, gcrefRegs=00 ;; size=18 bbWeight=20.00 PerfScore 70.02 G_M11746_IG04: ; bbWeight=20.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref test rbx, rbx
- je G_M11746_IG73
+ je G_M11746_IG71
;; size=9 bbWeight=20.00 PerfScore 25.01 G_M11746_IG05: ; bbWeight=80.02, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz test r13, r13
- je G_M11746_IG74
+ je G_M11746_IG72
mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -300,7 +300,7 @@ G_M11746_IG10: ; bbWeight=80.02, gcVars=0000000000000000 {}, gcrefRegs=20 G_M11746_IG11: ; bbWeight=20.00, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [r12], rax
- jne G_M11746_IG75
+ jne G_M11746_IG73
;; size=20 bbWeight=20.00 PerfScore 85.02 G_M11746_IG12: ; bbWeight=20.00, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz cmp dword ptr [r12+0x14], 0 @@ -361,12 +361,12 @@ G_M11746_IG17: ; bbWeight=20.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 G_M11746_IG18: ; bbWeight=21.14, gcVars=0000000001000000 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r13] cmp gword ptr [rbp+0x90], 0
- je G_M11746_IG44
+ je G_M11746_IG43
mov rdi, gword ptr [rbp+0x90] ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rdi], rsi
- jne G_M11746_IG44
+ jne G_M11746_IG43
jmp SHORT G_M11746_IG20 ;; size=42 bbWeight=21.14 PerfScore 216.65 G_M11746_IG19: ; bbWeight=79.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref @@ -385,7 +385,7 @@ G_M11746_IG20: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by G_M11746_IG21: ; bbWeight=79.19, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] cmp r12d, 2
- jne G_M11746_IG40
+ jne G_M11746_IG39
;; size=10 bbWeight=79.19 PerfScore 98.99 G_M11746_IG22: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref lea r12, bword ptr [r13+0x28] @@ -394,18 +394,18 @@ G_M11746_IG22: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=00 ; gcrRegs +[rax] mov edi, dword ptr [r12+0x14] cmp edi, dword ptr [rax+0x14]
- jne G_M11746_IG34
+ jne G_M11746_IG52
;; size=22 bbWeight=1554.11 PerfScore 13209.89 G_M11746_IG23: ; bbWeight=1554.11, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref mov ecx, dword ptr [r12+0x10] cmp ecx, dword ptr [rax+0x10]
- jae G_M11746_IG35
+ jae G_M11746_IG34
;; size=14 bbWeight=1554.11 PerfScore 9324.63 G_M11746_IG24: ; bbWeight=1534.31, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref mov rdx, gword ptr [rax+0x08] ; gcrRegs +[rdx] cmp ecx, dword ptr [rdx+0x08]
- jae G_M11746_IG51
+ jae G_M11746_IG50
mov edi, ecx mov rsi, gword ptr [rdx+8*rdi+0x10] ; gcrRegs +[rsi] @@ -422,7 +422,7 @@ G_M11746_IG24: ; bbWeight=1534.31, gcrefRegs=2009 {rax rbx r13}, byrefReg ; gcrRegs +[rax] mov rdi, 0xD1FFAB1E ; code for LinqBenchmarks+<>c:<Where01LinqQueryX>b__10_0(Product):ubyte:this cmp qword ptr [rax+0x18], rdi
- jne G_M11746_IG37
+ jne G_M11746_IG36
;; size=63 bbWeight=1534.31 PerfScore 32220.51 G_M11746_IG25: ; bbWeight=1534.31, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -517,19 +517,11 @@ G_M11746_IG32: ; bbWeight=98195.83, gcrefRegs=3008 {rbx r12 r13}, byrefRe jle G_M11746_IG22 ;; size=9 bbWeight=98195.83 PerfScore 122744.79 G_M11746_IG33: ; bbWeight=1534.31, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M11746_IG38
+ jmp SHORT G_M11746_IG37
;; size=2 bbWeight=1534.31 PerfScore 3068.62
-G_M11746_IG34: ; bbWeight=20.00, gcrefRegs=2008 {rbx r13}, byrefRegs=1000 {r12}, byref
+G_M11746_IG34: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=1000 {r12}, byref
; gcrRegs -[r12] ; byrRegs +[r12]
- mov edi, dword ptr [r12+0x14] - mov rsi, gword ptr [r12] - ; gcrRegs +[rsi] - cmp edi, dword ptr [rsi+0x14] - jne G_M11746_IG53 - ;; size=18 bbWeight=20.00 PerfScore 159.97 -G_M11746_IG35: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=1000 {r12}, byref - ; gcrRegs -[rsi]
mov rdi, gword ptr [r12] ; gcrRegs +[rdi] mov edi, dword ptr [rdi+0x10] @@ -540,14 +532,14 @@ G_M11746_IG35: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=10 ; gcrRegs +[rdi] mov gword ptr [r12+0x08], rdi ;; size=21 bbWeight=1554.11 PerfScore 10101.68
-G_M11746_IG36: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M11746_IG35: ; bbWeight=1554.11, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] ; byrRegs -[r12] mov gword ptr [r13+0x08], rdi mov dword ptr [r13+0x14], -1
- jmp SHORT G_M11746_IG40
+ jmp SHORT G_M11746_IG39
;; size=14 bbWeight=1554.11 PerfScore 6216.42
-G_M11746_IG37: ; bbWeight=1534.31, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
+G_M11746_IG36: ; bbWeight=1534.31, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs +[rax r12] mov rsi, r12 ; gcrRegs +[rsi] @@ -559,7 +551,7 @@ G_M11746_IG37: ; bbWeight=1534.31, gcrefRegs=3009 {rax rbx r12 r13}, byre test eax, eax je G_M11746_IG22 ;; size=18 bbWeight=1534.31 PerfScore 9973.01
-G_M11746_IG38: ; bbWeight=1534.31, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+G_M11746_IG37: ; bbWeight=1534.31, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [r13+0x08] ; byrRegs +[rdi] mov rsi, r12 @@ -569,7 +561,7 @@ G_M11746_IG38: ; bbWeight=1534.31, gcrefRegs=3008 {rbx r12 r13}, byrefReg ; byrRegs -[rdi] jmp G_M11746_IG19 ;; size=17 bbWeight=1534.31 PerfScore 5753.66
-G_M11746_IG39: ; bbWeight=15.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M11746_IG38: ; bbWeight=15.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs +[r13] mov r12, gword ptr [r13+0x30] ; gcrRegs +[r12] @@ -577,66 +569,66 @@ G_M11746_IG39: ; bbWeight=15.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 ; gcrRegs +[rax] mov rsi, 0xD1FFAB1E ; function address cmp qword ptr [rax+0x18], rsi
- jne G_M11746_IG62 - jmp G_M11746_IG49
+ jne G_M11746_IG61 + jmp G_M11746_IG48
;; size=33 bbWeight=15.50 PerfScore 158.86
-G_M11746_IG40: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG39: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r12-r13] xor r12d, r12d jne G_M11746_IG19 ;; size=9 bbWeight=99 PerfScore 123.75
-G_M11746_IG41: ; bbWeight=19.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - jmp G_M11746_IG69
+G_M11746_IG40: ; bbWeight=19.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M11746_IG67
;; size=5 bbWeight=19.99 PerfScore 39.99
-G_M11746_IG42: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG41: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0x90] ; gcrRegs +[rdi] mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rdi], rax
- jne G_M11746_IG52
+ jne G_M11746_IG51
;; size=26 bbWeight=0.80 PerfScore 4.20
-G_M11746_IG43: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG42: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] inc r15d ;; size=3 bbWeight=0.80 PerfScore 0.20
-G_M11746_IG44: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG43: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0x90] ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rdi], rsi
- jne G_M11746_IG54
+ jne G_M11746_IG53
mov r13, gword ptr [rbp+0x90] ; gcrRegs +[r13] mov rdi, gword ptr [rbp+0x90] mov r12d, dword ptr [rdi+0x14] cmp r12d, 1
- je G_M11746_IG55
+ je G_M11746_IG54
;; size=54 bbWeight=1.00 PerfScore 10.50
-G_M11746_IG45: ; bbWeight=0.80, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M11746_IG44: ; bbWeight=0.80, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] cmp r12d, 2
- jne G_M11746_IG67
+ jne G_M11746_IG65
;; size=10 bbWeight=0.80 PerfScore 1.00
-G_M11746_IG46: ; bbWeight=15.70, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M11746_IG45: ; bbWeight=15.70, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
lea r12, bword ptr [r13+0x28] ; byrRegs +[r12] mov rax, gword ptr [r12] ; gcrRegs +[rax] mov edi, dword ptr [r12+0x14] cmp edi, dword ptr [rax+0x14]
- jne G_M11746_IG63
+ jne G_M11746_IG52
;; size=22 bbWeight=15.70 PerfScore 133.43
-G_M11746_IG47: ; bbWeight=15.70, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref
+G_M11746_IG46: ; bbWeight=15.70, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref
mov edi, dword ptr [r12+0x10] cmp edi, dword ptr [rax+0x10]
- jae G_M11746_IG64
+ jae G_M11746_IG62
;; size=14 bbWeight=15.70 PerfScore 94.19
-G_M11746_IG48: ; bbWeight=15.50, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref
+G_M11746_IG47: ; bbWeight=15.50, gcrefRegs=2009 {rax rbx r13}, byrefRegs=1000 {r12}, byref
mov rdx, gword ptr [rax+0x08] ; gcrRegs +[rdx] mov ecx, dword ptr [r12+0x10] cmp ecx, dword ptr [rdx+0x08]
- jae G_M11746_IG51
+ jae G_M11746_IG50
mov edi, ecx mov rsi, gword ptr [rdx+8*rdi+0x10] ; gcrRegs +[rsi] @@ -646,15 +638,15 @@ G_M11746_IG48: ; bbWeight=15.50, gcrefRegs=2009 {rax rbx r13}, byrefRegs= ; gcrRegs -[rax rdx rsi] ; byrRegs -[rdi] inc dword ptr [r12+0x10]
- jmp G_M11746_IG39
+ jmp G_M11746_IG38
;; size=45 bbWeight=15.50 PerfScore 259.56
-G_M11746_IG49: ; bbWeight=15.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
+G_M11746_IG48: ; bbWeight=15.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r12] ; byrRegs -[r12] cmp dword ptr [r12+0x1C], 0
- jle SHORT G_M11746_IG46
+ jle SHORT G_M11746_IG45
;; size=8 bbWeight=15.50 PerfScore 61.99
-G_M11746_IG50: ; bbWeight=991.88, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+G_M11746_IG49: ; bbWeight=991.88, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [r12+0x20] mov edx, dword ptr [r12+0x24] ...

+31 (+1.62%) : 32006.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T14] ( 11, 374.94) ref -> r15 class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T29] ( 8, 238.97) ref -> r13 class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 473.57) ref -> [rbp+0x60] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T17] ( 5, 366.22) ref -> r14 class-hnd <System.Object>
+; V03 loc3 [V03,T17] ( 6, 366.22) ref -> r14 class-hnd <System.Object>
; V04 loc4 [V04,T01] ( 13, 735.91) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T43] ( 2, 91.56) int -> [rbp+0x4C] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -116,7 +116,7 @@ ; V103 tmp92 [V103,T00] ( 8,1098.67) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool> ;* V104 tmp93 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V105 tmp94 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V106 tmp95 [V106,T10] ( 3, 457.77) ref -> rdi class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V106 tmp95 [V106,T10] ( 5, 457.77) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V107 tmp96 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V108 tmp97 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V109 tmp98 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -213,7 +213,7 @@ G_M63069_IG09: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR cmp byte ptr [rbx+0x38], 0 jne G_M63069_IG69 ;; size=10 bbWeight=91.55 PerfScore 366.22
-G_M63069_IG10: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG10: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
call <unknown method> ; gcr arg pop 0 mov r12d, eax @@ -224,37 +224,32 @@ G_M63069_IG10: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; GC ptr vars +{V103} test r14, r14 je G_M63069_IG70
- ;; size=34 bbWeight=91.55 PerfScore 526.44 -G_M63069_IG11: ; bbWeight=91.55, gcVars=0000000000000001 {V103}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, r14 - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M63069_IG13 - ;; size=8 bbWeight=91.55 PerfScore 137.33 -G_M63069_IG12: ; bbWeight=45.78, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rsi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rdi], rsi
+ mov rcx, r14 + ; gcrRegs +[rcx] + test rcx, rcx
je SHORT G_M63069_IG14
+ ;; size=42 bbWeight=91.55 PerfScore 663.77 +G_M63069_IG11: ; bbWeight=45.78, gcVars=0000000000000001 {V103}, gcrefRegs=E00B {rax rcx rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rcx], rdi + jne SHORT G_M63069_IG13
;; size=15 bbWeight=45.78 PerfScore 194.55
-G_M63069_IG13: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ; gcr arg pop 0 - ;; size=26 bbWeight=91.55 PerfScore 320.44 -G_M63069_IG14: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG12: ; bbWeight=91.55, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
mov edi, dword ptr [r14+0x20] inc edi
- je G_M63069_IG82
+ je G_M63069_IG84
mov dword ptr [r14+0x20], edi jmp G_M63069_IG53 ;; size=21 bbWeight=91.55 PerfScore 572.22
+G_M63069_IG13: ; bbWeight=22.89, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG71 + ;; size=5 bbWeight=22.89 PerfScore 45.78 +G_M63069_IG14: ; bbWeight=45.78, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG71 + ;; size=5 bbWeight=45.78 PerfScore 91.55
G_M63069_IG15: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
; GC ptr vars -{V103} cmp gword ptr [rbp+0x60], 0 jne G_M63069_IG46 @@ -266,12 +261,12 @@ G_M63069_IG16: ; bbWeight=94.03, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs +[rdi] mov esi, dword ptr [rdi+0x14] cmp esi, dword ptr [rdi+0x18]
- jl G_M63069_IG71
+ jl G_M63069_IG73
xor r12, r12 ; gcrRegs +[r12] mov gword ptr [rbp-0x30], r12 cmp gword ptr [rbp-0x30], 0
- jne G_M63069_IG72
+ jne G_M63069_IG74
;; size=41 bbWeight=94.03 PerfScore 1528.05 G_M63069_IG17: ; bbWeight=94.03, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r12] @@ -280,7 +275,7 @@ G_M63069_IG17: ; bbWeight=94.03, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ;; size=7 bbWeight=94.03 PerfScore 376.13 G_M63069_IG18: ; bbWeight=94.43, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref cmp dword ptr [r15+0x30], 0
- jne G_M63069_IG73
+ jne G_M63069_IG75
;; size=11 bbWeight=94.43 PerfScore 377.73 G_M63069_IG19: ; bbWeight=94.03, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov r12, gword ptr [r15+0x08] @@ -350,7 +345,7 @@ G_M63069_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=E00 ; gcrRegs -[rax rdi] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG72
+ jne G_M63069_IG74
;; size=36 bbWeight=0.09 PerfScore 1.22 G_M63069_IG24: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x68] @@ -371,7 +366,7 @@ G_M63069_IG25: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=F00 ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG72
+ jne G_M63069_IG74
;; size=21 bbWeight=0.09 PerfScore 0.47 G_M63069_IG26: ; bbWeight=0.09, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov byte ptr [r13+0x3C], 0 @@ -404,7 +399,7 @@ G_M63069_IG29: ; bbWeight=25.39, gcrefRegs=F00E {rcx rdx rbx r12 r13 r14 G_M63069_IG30: ; bbWeight=0.00, gcrefRegs=F00C {rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] test edi, edi
- jne G_M63069_IG74
+ jne G_M63069_IG76
;; size=8 bbWeight=0.00 PerfScore 0.00 G_M63069_IG31: ; bbWeight=0.00, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx] @@ -428,7 +423,7 @@ G_M63069_IG32: ; bbWeight=94.03, gcVars=0000000000000000 {}, gcrefRegs=F0 ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG72
+ jne G_M63069_IG74
;; size=21 bbWeight=94.03 PerfScore 470.17 G_M63069_IG33: ; bbWeight=25.40, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M63069_IG37 @@ -441,7 +436,7 @@ G_M63069_IG34: ; bbWeight=71.30, gcVars=0000000000001010 {V73 V75}, gcref ; gcrRegs +[rdi] mov gword ptr [rbp-0x30], rdi cmp byte ptr [rcx+0x1C], 0
- jne G_M63069_IG72
+ jne G_M63069_IG74
;; size=19 bbWeight=71.30 PerfScore 499.07 G_M63069_IG35: ; bbWeight=72.08, gcVars=0000000000001000 {V75}, gcrefRegs=E00C {rdx rbx r13 r14 r15}, byrefRegs=0400 {r10}, gcvars, byref ; gcrRegs -[rcx rdi] @@ -451,7 +446,7 @@ G_M63069_IG35: ; bbWeight=72.08, gcVars=0000000000001000 {V75}, gcrefRegs mov gword ptr [rdx+r9+0x10], rcx add eax, r8d mov dword ptr [r10+0x08], eax
- jmp G_M63069_IG72
+ jmp G_M63069_IG74
;; size=19 bbWeight=72.08 PerfScore 324.35 G_M63069_IG36: ; bbWeight=21.96, gcVars=0000000000000010 {V73}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rcx rdx] +[r12] @@ -498,7 +493,7 @@ G_M63069_IG37: ; bbWeight=25.40, gcVars=0000000000000000 {}, gcrefRegs=E0 ; gcrRegs +[r8] mov esi, dword ptr [r8+0x08] test esi, esi
- jle G_M63069_IG75
+ jle G_M63069_IG77
;; size=107 bbWeight=25.40 PerfScore 660.51 G_M63069_IG38: ; bbWeight=25.40, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz lea r9d, [rsi-0x01] @@ -521,7 +516,7 @@ G_M63069_IG39: ; bbWeight=75.59, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, G_M63069_IG40: ; bbWeight=50.76, gcrefRegs=E18A {rcx rbx rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref mov eax, dword ptr [rdi+0x14] cmp eax, dword ptr [rdi+0x18]
- jl G_M63069_IG76
+ jl G_M63069_IG78
;; size=12 bbWeight=50.76 PerfScore 304.58 G_M63069_IG41: ; bbWeight=75.59, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] @@ -553,7 +548,7 @@ G_M63069_IG45: ; bbWeight=94.03, gcrefRegs=F008 {rbx r12 r13 r14 r15}, by G_M63069_IG46: ; bbWeight=92.34, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi r12] cmp byte ptr [r15+0x34], 0
- jne G_M63069_IG77
+ jne G_M63069_IG79
;; size=11 bbWeight=92.34 PerfScore 369.36 G_M63069_IG47: ; bbWeight=92.25, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov r12, gword ptr [rbp+0x60] @@ -565,7 +560,7 @@ G_M63069_IG47: ; bbWeight=92.25, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG78
+ je G_M63069_IG80
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Buffers.Tests.RentReturnArrayPoolTests`1+<SingleSerial>d__21[ubyte]] cmp qword ptr [rax], rdi jne SHORT G_M63069_IG49 @@ -609,7 +604,7 @@ G_M63069_IG51: ; bbWeight=92.25, gcrefRegs=E088 {rbx rdi r13 r14 r15}, by ; gcrRegs -[rax] mov gword ptr [rbx+0x08], rax test rdi, rdi
- jne G_M63069_IG79
+ jne G_M63069_IG81
;; size=13 bbWeight=92.25 PerfScore 207.56 G_M63069_IG52: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -618,17 +613,16 @@ G_M63069_IG52: ; bbWeight=91.55, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR call rax ; gcr arg pop 0 cmp dword ptr [rax+0x10], 4
- jl G_M63069_IG81
+ jl G_M63069_IG83
mov rax, qword ptr [rax+0x18] mov rax, qword ptr [rax+0x20] test rax, rax
- je G_M63069_IG81
+ je G_M63069_IG83
jmp G_M63069_IG05 ;; size=54 bbWeight=91.55 PerfScore 1350.43
-G_M63069_IG53: ; bbWeight=91.55, gcVars=0000000000000001 {V103}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V103} - mov rax, gword ptr [rbp-0x80]
+G_M63069_IG53: ; bbWeight=91.55, gcVars=0000000000000001 {V103}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
+ ; GC ptr vars +{V00 V103}
mov dword ptr [rax+0xE0], r12d mov edi, dword ptr [rax+0x124] mov ecx, r12d @@ -637,7 +631,7 @@ G_M63069_IG53: ; bbWeight=91.55, gcVars=0000000000000001 {V103}, gcrefReg sub edx, edi cmp ecx, edx jb SHORT G_M63069_IG56
- ;; size=34 bbWeight=91.55 PerfScore 732.44
+ ;; size=30 bbWeight=91.55 PerfScore 640.88
G_M63069_IG54: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rax+0xA0] mov qword ptr [rbp-0x50], rdi @@ -699,7 +693,7 @@ G_M63069_IG60: ; bbWeight=7.66, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[rax rbx r13-r14] ; GC ptr vars -{V00 V103} cmp byte ptr [rbp+0x28], 0
- jne G_M63069_IG83
+ jne G_M63069_IG85
jmp G_M63069_IG03 ;; size=15 bbWeight=7.66 PerfScore 38.29 G_M63069_IG61: ; bbWeight=0.00, gcVars=0000000000000001 {V103}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz @@ -795,19 +789,42 @@ G_M63069_IG69: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; gcr arg pop 0 jmp G_M63069_IG10 ;; size=14 bbWeight=0 PerfScore 0.00 ...

+31 (+1.80%) : 41251.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T11] ( 11, 375.85) ref -> r15 class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T21] ( 8, 231.61) ref -> r13 class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 476.18) ref -> [rbp+0x60] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T13] ( 5, 369.84) ref -> r14 class-hnd <System.Object>
+; V03 loc3 [V03,T13] ( 6, 369.84) ref -> r14 class-hnd <System.Object>
; V04 loc4 [V04,T01] ( 13, 748.78) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T34] ( 2, 92.46) int -> [rbp+0x4C] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -98,7 +98,7 @@ ; V85 tmp74 [V85,T00] ( 8,1109.54) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool> ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V88 tmp77 [V88,T08] ( 3, 462.30) ref -> rdi class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V88 tmp77 [V88,T08] ( 5, 462.30) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V89 tmp78 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V90 tmp79 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V91 tmp80 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -191,7 +191,7 @@ G_M63069_IG09: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR cmp byte ptr [rbx+0x38], 0 jne G_M63069_IG60 ;; size=10 bbWeight=92.46 PerfScore 369.84
-G_M63069_IG10: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG10: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
call <unknown method> ; gcr arg pop 0 mov r12d, eax @@ -202,37 +202,32 @@ G_M63069_IG10: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; GC ptr vars +{V85} test r14, r14 je G_M63069_IG61
- ;; size=34 bbWeight=92.46 PerfScore 531.64 -G_M63069_IG11: ; bbWeight=92.46, gcVars=0000000000000001 {V85}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, r14 - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M63069_IG13 - ;; size=8 bbWeight=92.46 PerfScore 138.69 -G_M63069_IG12: ; bbWeight=46.23, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rsi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rdi], rsi
+ mov rcx, r14 + ; gcrRegs +[rcx] + test rcx, rcx
je SHORT G_M63069_IG14
+ ;; size=42 bbWeight=92.46 PerfScore 670.33 +G_M63069_IG11: ; bbWeight=46.23, gcVars=0000000000000001 {V85}, gcrefRegs=E00B {rax rcx rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rcx], rdi + jne SHORT G_M63069_IG13
;; size=15 bbWeight=46.23 PerfScore 196.48
-G_M63069_IG13: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ; gcr arg pop 0 - ;; size=26 bbWeight=92.46 PerfScore 323.61 -G_M63069_IG14: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG12: ; bbWeight=92.46, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
mov edi, dword ptr [r14+0x20] inc edi
- je G_M63069_IG72
+ je G_M63069_IG74
mov dword ptr [r14+0x20], edi jmp G_M63069_IG44 ;; size=21 bbWeight=92.46 PerfScore 577.87
+G_M63069_IG13: ; bbWeight=23.11, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG62 + ;; size=5 bbWeight=23.11 PerfScore 46.23 +G_M63069_IG14: ; bbWeight=46.23, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG62 + ;; size=5 bbWeight=46.23 PerfScore 92.46
G_M63069_IG15: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
; GC ptr vars -{V85} cmp gword ptr [rbp+0x60], 0 jne G_M63069_IG38 @@ -244,12 +239,12 @@ G_M63069_IG16: ; bbWeight=93.31, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs +[rdi] mov esi, dword ptr [rdi+0x14] cmp esi, dword ptr [rdi+0x18]
- jl G_M63069_IG62
+ jl G_M63069_IG64
xor r12, r12 ; gcrRegs +[r12] mov gword ptr [rbp-0x30], r12 cmp gword ptr [rbp-0x30], 0
- jne G_M63069_IG63
+ jne G_M63069_IG65
;; size=41 bbWeight=93.31 PerfScore 1516.26 G_M63069_IG17: ; bbWeight=93.31, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r12] @@ -258,7 +253,7 @@ G_M63069_IG17: ; bbWeight=93.31, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ;; size=7 bbWeight=93.31 PerfScore 373.23 G_M63069_IG18: ; bbWeight=94.76, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref cmp dword ptr [r15+0x30], 0
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=11 bbWeight=94.76 PerfScore 379.03 G_M63069_IG19: ; bbWeight=93.31, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov r12, gword ptr [r15+0x08] @@ -275,7 +270,7 @@ G_M63069_IG19: ; bbWeight=93.31, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs -[rax rdi] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG63
+ jne G_M63069_IG65
;; size=36 bbWeight=93.31 PerfScore 1213.01 G_M63069_IG20: ; bbWeight=17.29, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x68] @@ -301,7 +296,7 @@ G_M63069_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=E00 ; gcrRegs -[rax rdi] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG63
+ jne G_M63069_IG65
;; size=36 bbWeight=0.09 PerfScore 1.21 G_M63069_IG22: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x60] @@ -322,7 +317,7 @@ G_M63069_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=F00 ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG63
+ jne G_M63069_IG65
;; size=21 bbWeight=0.09 PerfScore 0.47 G_M63069_IG24: ; bbWeight=0.09, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov byte ptr [r13+0x3C], 0 @@ -357,7 +352,7 @@ G_M63069_IG29: ; bbWeight=93.31, gcrefRegs=F008 {rbx r12 r13 r14 r15}, by ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG63
+ jne G_M63069_IG65
;; size=21 bbWeight=93.31 PerfScore 466.54 G_M63069_IG30: ; bbWeight=22.45, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rax, gword ptr [r13+0x30] @@ -391,7 +386,7 @@ G_M63069_IG30: ; bbWeight=22.45, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR mov r9d, dword ptr [r8+0x08] mov esi, r9d test esi, esi
- jle G_M63069_IG65
+ jle G_M63069_IG67
;; size=110 bbWeight=22.45 PerfScore 589.21 G_M63069_IG31: ; bbWeight=22.45, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz lea r10d, [rsi-0x01] @@ -414,7 +409,7 @@ G_M63069_IG32: ; bbWeight=68.59, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, G_M63069_IG33: ; bbWeight=44.92, gcrefRegs=E18A {rcx rbx rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref mov eax, dword ptr [rdi+0x14] cmp eax, dword ptr [rdi+0x18]
- jl G_M63069_IG66
+ jl G_M63069_IG68
;; size=12 bbWeight=44.92 PerfScore 269.53 G_M63069_IG34: ; bbWeight=68.59, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -441,7 +436,7 @@ G_M63069_IG37: ; bbWeight=93.31, gcrefRegs=F008 {rbx r12 r13 r14 r15}, by G_M63069_IG38: ; bbWeight=94.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi r12] cmp byte ptr [r15+0x34], 0
- jne G_M63069_IG67
+ jne G_M63069_IG69
;; size=11 bbWeight=94.37 PerfScore 377.49 G_M63069_IG39: ; bbWeight=94.28, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov r12, gword ptr [rbp+0x60] @@ -453,7 +448,7 @@ G_M63069_IG39: ; bbWeight=94.28, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG68
+ je G_M63069_IG70
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Buffers.Tests.RentReturnArrayPoolTests`1+<SingleSerial>d__21[System.Object]] cmp qword ptr [rax], rdi jne SHORT G_M63069_IG40 @@ -492,7 +487,7 @@ G_M63069_IG42: ; bbWeight=94.28, gcrefRegs=E088 {rbx rdi r13 r14 r15}, by ; gcrRegs -[rax] mov gword ptr [rbx+0x08], rax test rdi, rdi
- jne G_M63069_IG69
+ jne G_M63069_IG71
;; size=13 bbWeight=94.28 PerfScore 212.13 G_M63069_IG43: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -501,17 +496,16 @@ G_M63069_IG43: ; bbWeight=92.46, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR call rax ; gcr arg pop 0 cmp dword ptr [rax+0x10], 4
- jl G_M63069_IG71
+ jl G_M63069_IG73
mov rax, qword ptr [rax+0x18] mov rax, qword ptr [rax+0x20] test rax, rax
- je G_M63069_IG71
+ je G_M63069_IG73
jmp G_M63069_IG05 ;; size=54 bbWeight=92.46 PerfScore 1363.78
-G_M63069_IG44: ; bbWeight=92.46, gcVars=0000000000000001 {V85}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V85} - mov rax, gword ptr [rbp-0x70]
+G_M63069_IG44: ; bbWeight=92.46, gcVars=0000000000000001 {V85}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
+ ; GC ptr vars +{V00 V85}
mov dword ptr [rax+0xE0], r12d mov edi, dword ptr [rax+0x124] mov ecx, r12d @@ -520,7 +514,7 @@ G_M63069_IG44: ; bbWeight=92.46, gcVars=0000000000000001 {V85}, gcrefRegs sub edx, edi cmp ecx, edx jb SHORT G_M63069_IG47
- ;; size=34 bbWeight=92.46 PerfScore 739.68
+ ;; size=30 bbWeight=92.46 PerfScore 647.22
G_M63069_IG45: ; bbWeight=0.01, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rax+0xA0] mov qword ptr [rbp-0x40], rdi @@ -582,7 +576,7 @@ G_M63069_IG51: ; bbWeight=5.63, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[rax rbx r13-r14] ; GC ptr vars -{V00 V85} cmp byte ptr [rbp+0x28], 0
- jne G_M63069_IG73
+ jne G_M63069_IG75
jmp G_M63069_IG03 ;; size=15 bbWeight=5.63 PerfScore 28.13 G_M63069_IG52: ; bbWeight=0.01, gcVars=0000000000000001 {V85}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz @@ -678,19 +672,42 @@ G_M63069_IG60: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; gcr arg pop 0 jmp G_M63069_IG10 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M63069_IG61: ; bbWeight=0, gcVars=0000000000000001 {V85}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M63069_IG61: ; bbWeight=0, gcVars=0000000000000001 {V85}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax]
; GC ptr vars +{V00 V85} mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] call [<unknown method>]
+ ; gcrRegs -[rax rsi rdi] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + test rcx, rcx + jne SHORT G_M63069_IG63 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M63069_IG62: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
...

+31 (+1.80%) : 85891.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T10] ( 11, 384.30) ref -> r15 class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T22] ( 8, 242.53) ref -> r13 class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 482.75) ref -> [rbp+0x60] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T11] ( 5, 381.48) ref -> r14 class-hnd <System.Object>
+; V03 loc3 [V03,T11] ( 6, 381.48) ref -> r14 class-hnd <System.Object>
; V04 loc4 [V04,T01] ( 13, 761.38) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T36] ( 2, 95.37) int -> [rbp+0x4C] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -95,7 +95,7 @@ ; V82 tmp71 [V82,T00] ( 8,1144.50) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool> ;* V83 tmp72 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V84 tmp73 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V85 tmp74 [V85,T08] ( 3, 476.86) ref -> rdi class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V85 tmp74 [V85,T08] ( 5, 476.86) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V86 tmp75 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp77 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -191,7 +191,7 @@ G_M63069_IG10: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR cmp byte ptr [rbx+0x38], 0 jne G_M63069_IG61 ;; size=10 bbWeight=95.37 PerfScore 381.48
-G_M63069_IG11: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG11: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
call <unknown method> ; gcr arg pop 0 mov r12d, eax @@ -202,37 +202,32 @@ G_M63069_IG11: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; GC ptr vars +{V82} test r14, r14 je G_M63069_IG62
- ;; size=34 bbWeight=95.37 PerfScore 548.38 -G_M63069_IG12: ; bbWeight=95.37, gcVars=0000000000000001 {V82}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, r14 - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M63069_IG14 - ;; size=8 bbWeight=95.37 PerfScore 143.06 -G_M63069_IG13: ; bbWeight=47.69, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rsi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rdi], rsi
+ mov rcx, r14 + ; gcrRegs +[rcx] + test rcx, rcx
je SHORT G_M63069_IG15
+ ;; size=42 bbWeight=95.37 PerfScore 691.44 +G_M63069_IG12: ; bbWeight=47.69, gcVars=0000000000000001 {V82}, gcrefRegs=E00B {rax rcx rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdi, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rcx], rdi + jne SHORT G_M63069_IG14
;; size=15 bbWeight=47.69 PerfScore 202.66
-G_M63069_IG14: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ; gcr arg pop 0 - ;; size=26 bbWeight=95.37 PerfScore 333.80 -G_M63069_IG15: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M63069_IG13: ; bbWeight=95.37, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
mov edi, dword ptr [r14+0x20] inc edi
- je G_M63069_IG73
+ je G_M63069_IG75
mov dword ptr [r14+0x20], edi jmp G_M63069_IG45 ;; size=21 bbWeight=95.37 PerfScore 596.07
+G_M63069_IG14: ; bbWeight=23.84, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG63 + ;; size=5 bbWeight=23.84 PerfScore 47.69 +G_M63069_IG15: ; bbWeight=47.69, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref + jmp G_M63069_IG63 + ;; size=5 bbWeight=47.69 PerfScore 95.37
G_M63069_IG16: ; bbWeight=100.00, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
; GC ptr vars -{V82} cmp gword ptr [rbp+0x60], 0 jne G_M63069_IG39 @@ -244,12 +239,12 @@ G_M63069_IG17: ; bbWeight=95.90, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs +[rdi] mov esi, dword ptr [rdi+0x14] cmp esi, dword ptr [rdi+0x18]
- jl G_M63069_IG63
+ jl G_M63069_IG65
xor r12, r12 ; gcrRegs +[r12] mov gword ptr [rbp-0x30], r12 cmp gword ptr [rbp-0x30], 0
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=41 bbWeight=95.90 PerfScore 1558.36 G_M63069_IG18: ; bbWeight=95.90, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r12] @@ -258,7 +253,7 @@ G_M63069_IG18: ; bbWeight=95.90, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ;; size=7 bbWeight=95.90 PerfScore 383.60 G_M63069_IG19: ; bbWeight=97.03, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref cmp dword ptr [r15+0x30], 0
- jne G_M63069_IG65
+ jne G_M63069_IG67
;; size=11 bbWeight=97.03 PerfScore 388.12 G_M63069_IG20: ; bbWeight=95.90, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov r12, gword ptr [r15+0x08] @@ -275,7 +270,7 @@ G_M63069_IG20: ; bbWeight=95.90, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs -[rax rdi] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=36 bbWeight=95.90 PerfScore 1246.69 G_M63069_IG21: ; bbWeight=18.91, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x68] @@ -301,7 +296,7 @@ G_M63069_IG22: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=E00 ; gcrRegs -[rax rdi] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=36 bbWeight=0.10 PerfScore 1.25 G_M63069_IG23: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x60] @@ -322,7 +317,7 @@ G_M63069_IG24: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=F00 ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=21 bbWeight=0.10 PerfScore 0.48 G_M63069_IG25: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov byte ptr [r13+0x3C], 0 @@ -357,7 +352,7 @@ G_M63069_IG30: ; bbWeight=95.90, gcrefRegs=F008 {rbx r12 r13 r14 r15}, by ; gcrRegs -[rdi r12] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG64
+ jne G_M63069_IG66
;; size=21 bbWeight=95.90 PerfScore 479.50 G_M63069_IG31: ; bbWeight=25.32, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rax, gword ptr [r13+0x30] @@ -391,7 +386,7 @@ G_M63069_IG31: ; bbWeight=25.32, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR mov r9d, dword ptr [r8+0x08] mov esi, r9d test esi, esi
- jle G_M63069_IG66
+ jle G_M63069_IG68
;; size=110 bbWeight=25.32 PerfScore 664.54 G_M63069_IG32: ; bbWeight=25.32, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz lea r10d, [rsi-0x01] @@ -414,7 +409,7 @@ G_M63069_IG33: ; bbWeight=74.73, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, G_M63069_IG34: ; bbWeight=50.45, gcrefRegs=E18A {rcx rbx rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref mov eax, dword ptr [rdi+0x14] cmp eax, dword ptr [rdi+0x18]
- jl G_M63069_IG67
+ jl G_M63069_IG69
;; size=12 bbWeight=50.45 PerfScore 302.69 G_M63069_IG35: ; bbWeight=74.73, gcrefRegs=E10A {rcx rbx r8 r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -441,7 +436,7 @@ G_M63069_IG38: ; bbWeight=95.90, gcrefRegs=F008 {rbx r12 r13 r14 r15}, by G_M63069_IG39: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi r12] cmp byte ptr [r15+0x34], 0
- jne G_M63069_IG68
+ jne G_M63069_IG70
;; size=11 bbWeight=95.37 PerfScore 381.48 G_M63069_IG40: ; bbWeight=94.58, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov r12, gword ptr [rbp+0x60] @@ -453,7 +448,7 @@ G_M63069_IG40: ; bbWeight=94.58, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG69
+ je G_M63069_IG71
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Threading.Tasks.Tests.Perf_AsyncMethods+<Yield>d__2] cmp qword ptr [rax], rdi jne SHORT G_M63069_IG41 @@ -492,7 +487,7 @@ G_M63069_IG43: ; bbWeight=95.37, gcrefRegs=E088 {rbx rdi r13 r14 r15}, by ; gcrRegs -[rax] mov gword ptr [rbx+0x08], rax test rdi, rdi
- jne G_M63069_IG70
+ jne G_M63069_IG72
;; size=13 bbWeight=95.37 PerfScore 214.59 G_M63069_IG44: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -501,17 +496,16 @@ G_M63069_IG44: ; bbWeight=95.37, gcrefRegs=E008 {rbx r13 r14 r15}, byrefR call rax ; gcr arg pop 0 cmp dword ptr [rax+0x10], 4
- jl G_M63069_IG72
+ jl G_M63069_IG74
mov rax, qword ptr [rax+0x18] mov rax, qword ptr [rax+0x20] test rax, rax
- je G_M63069_IG72
+ je G_M63069_IG74
jmp G_M63069_IG05 ;; size=54 bbWeight=95.37 PerfScore 1406.72
-G_M63069_IG45: ; bbWeight=95.37, gcVars=0000000000000001 {V82}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V82} - mov rax, gword ptr [rbp-0x70]
+G_M63069_IG45: ; bbWeight=95.37, gcVars=0000000000000001 {V82}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
+ ; GC ptr vars +{V00 V82}
mov dword ptr [rax+0xE0], r12d mov edi, dword ptr [rax+0x124] mov ecx, r12d @@ -520,7 +514,7 @@ G_M63069_IG45: ; bbWeight=95.37, gcVars=0000000000000001 {V82}, gcrefRegs sub edx, edi cmp ecx, edx jb SHORT G_M63069_IG48
- ;; size=34 bbWeight=95.37 PerfScore 762.97
+ ;; size=30 bbWeight=95.37 PerfScore 667.60
G_M63069_IG46: ; bbWeight=0.01, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rax+0xA0] mov qword ptr [rbp-0x40], rdi @@ -582,7 +576,7 @@ G_M63069_IG52: ; bbWeight=4.63, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[rax rbx r13-r14] ; GC ptr vars -{V00 V82} cmp byte ptr [rbp+0x28], 0
- jne G_M63069_IG74
+ jne G_M63069_IG76
jmp G_M63069_IG03 ;; size=15 bbWeight=4.63 PerfScore 23.14 G_M63069_IG53: ; bbWeight=0.01, gcVars=0000000000000001 {V82}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz @@ -678,19 +672,42 @@ G_M63069_IG61: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; gcr arg pop 0 jmp G_M63069_IG11 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M63069_IG62: ; bbWeight=0, gcVars=0000000000000001 {V82}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M63069_IG62: ; bbWeight=0, gcVars=0000000000000001 {V82}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax]
; GC ptr vars +{V00 V82} mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] call [<unknown method>]
+ ; gcrRegs -[rax rsi rdi] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + test rcx, rcx + jne SHORT G_M63069_IG64 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M63069_IG63: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
...

benchmarks.run_tiered.linux.x64.checked.mch

-9 (-2.66%) : 16857.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> rcx "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> rcx "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,28 +79,28 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> rdx "arr expr"
-; V71 PSPSym [V71,T27] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> rdx "CSE - moderate" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- sub rsp, 40
+ sub rsp, 48
lea rbp, [rsp+0x50] xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x50], rsp mov rbx, rdi mov r15, rsi
- ;; size=35 bbWeight=1 PerfScore 9.50
+ ;; size=33 bbWeight=1 PerfScore 8.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop @@ -110,10 +110,10 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort]] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x30], rdx
+ mov bword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x28], rdx
cmp byte ptr [r15+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] ; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0x38]
+ mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x28]
test rdx, rdx jne SHORT G_M19804_IG05 xor rax, rax @@ -151,14 +151,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0081 {rax rd ; byrRegs -[rax rsi rdi] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=22 bbWeight=4 PerfScore 25.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edx, dword ptr [rbx+0x14] + cmp r14d, edx + jne SHORT G_M19804_IG09 + mov edx, dword ptr [rbx+0x10] + cmp r13d, edx + jae SHORT G_M19804_IG10
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -167,7 +168,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx+8*rdi+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] call CORINFO_HELP_RNGCHKFAIL @@ -179,13 +180,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx]
- lea rdi, [rbp-0x38]
+ lea rdi, [rbp-0x30]
call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0 @@ -194,9 +191,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=28 bbWeight=8 PerfScore 132.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -208,9 +205,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=23 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -221,36 +218,34 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=13 bbWeight=1 PerfScore 3.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 48
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 push r14 push r13
- push r12
push rbx ...

-9 (-1.57%) : 21062.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)

@@ -19,15 +19,15 @@ ; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> ; V10 loc5 [V10,T02] ( 12, 14.25) int -> [rbp-0x34]
-; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r15 class-hnd <System.Array> -; V12 loc7 [V12,T08] ( 4, 8 ) int -> r15
+; V11 loc6 [V11,T06] ( 5, 10 ) ref -> r15 class-hnd <System.Array> +; V12 loc7 [V12,T08] ( 4, 8 ) int -> rax
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T21] ( 2, 1 ) int -> r12 ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T18] ( 3, 1.50) int -> rax -; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs" -; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
+; V17 tmp4 [V17,T18] ( 3, 1.50) int -> rbx +; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rcx "impSpillLclRefs" +; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rcx class-hnd "impSpillLclRefs" <<unknown class>>
; V20 tmp7 [V20,T09] ( 2, 8 ) int -> rdx "impAppendStmt" ; V21 tmp8 [V21,T17] ( 2, 2 ) ubyte -> rdi "Inlining Arg" ;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -36,7 +36,7 @@ ; V25 tmp12 [V25,T04] ( 3, 12 ) ref -> rax "arr expr" ; V26 tmp13 [V26,T05] ( 3, 12 ) int -> rcx "index expr" ; V27 PSPSym [V27,T22] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V28 cse0 [V28,T06] ( 4, 10.50) int -> r15 "CSE - aggressive"
+; V28 cse0 [V28,T07] ( 3, 10 ) int -> rax "CSE - aggressive"
; V29 cse1 [V29,T19] ( 3, 1.50) int -> rsi "CSE - moderate" ; V30 cse2 [V30,T20] ( 3, 1.50) int -> rax "CSE - moderate" ; @@ -160,14 +160,13 @@ G_M62513_IG11: ; bbWeight=1.75, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 jmp G_M62513_IG14 ;; size=10 bbWeight=1.75 PerfScore 3.94 G_M62513_IG12: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rdi+0x08] - ; gcrRegs +[rax] - dec r15d - mov dword ptr [rdi+0x14], r15d - cmp r15d, dword ptr [rax+0x08]
+ mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + dec eax + mov dword ptr [rdi+0x14], eax + cmp eax, dword ptr [rcx+0x08]
jae G_M62513_IG08
- mov ecx, r15d - mov r15, gword ptr [rax+8*rcx+0x10]
+ mov r15, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r15] test r15, r15 jne SHORT G_M62513_IG13 @@ -175,9 +174,9 @@ G_M62513_IG12: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rcx rsi rdi]
; gcr arg pop 0
- ;; size=60 bbWeight=2 PerfScore 28.50
+ ;; size=54 bbWeight=2 PerfScore 28.00
G_M62513_IG13: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -215,15 +214,15 @@ G_M62513_IG13: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, ; gcrRegs +[rdi] ;; size=90 bbWeight=2 PerfScore 62.00 G_M62513_IG14: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rdi+0x14] - test r15d, r15d - jle SHORT G_M62513_IG17 - mov eax, esi - lea esi, [rax-0x01] - mov dword ptr [rbp-0x34], esi
+ mov eax, dword ptr [rdi+0x14]
test eax, eax
+ jle SHORT G_M62513_IG17 + mov ecx, esi + lea esi, [rcx-0x01] + mov dword ptr [rbp-0x34], esi + test ecx, ecx
jg G_M62513_IG12
- ;; size=25 bbWeight=4 PerfScore 25.00
+ ;; size=23 bbWeight=4 PerfScore 25.00
G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] jmp SHORT G_M62513_IG18 @@ -237,21 +236,20 @@ G_M62513_IG16: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr ;; size=9 bbWeight=1 PerfScore 4.00 G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14]
- test r15d, r15d - jg SHORT G_M62513_IG18 - xor eax, eax
+ xor ebx, ebx
jmp SHORT G_M62513_IG19
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov eax, r12d - sar eax, 31 - and eax, 3 - add eax, r12d - sar eax, 2 - add eax, dword ptr [rdi+0x18] - ;; size=18 bbWeight=0.50 PerfScore 2.38
+ mov ebx, r12d + sar ebx, 31 + and ebx, 3 + add ebx, r12d + sar ebx, 2 + add ebx, dword ptr [rdi+0x18] + mov rdi, gword ptr [rbp-0x40] + ;; size=22 bbWeight=0.50 PerfScore 2.88
G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], ebx
;; size=3 bbWeight=0.50 PerfScore 0.50 G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref cmp byte ptr [rbp-0x30], 0 @@ -299,7 +297,7 @@ G_M62513_IG24: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 573, prolog size 38, PerfScore 168.94, instruction count 162, allocated bytes for code 573 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 564, prolog size 38, PerfScore 168.31, instruction count 160, allocated bytes for code 564 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info:

-15 (-0.80%) : 34707.dasm - System.Net.Security.SslStream+d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)

@@ -232,7 +232,7 @@ G_M55896_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, mov rdi, bword ptr [rbp-0x80] ; byrRegs +[rdi] mov r15d, dword ptr [rdi+0x10]
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=47 bbWeight=1 PerfScore 12.50 G_M55896_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; byrRegs -[rdi] @@ -363,7 +363,7 @@ G_M55896_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rax rsi] ; gcr arg pop 0
- jmp G_M55896_IG51
+ jmp G_M55896_IG52
;; size=56 bbWeight=1 PerfScore 14.75 G_M55896_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, nogc ; gcrRegs +[rbx] @@ -487,12 +487,12 @@ G_M55896_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8080 {rdi r1 ; gcrRegs -[rcx] sub ecx, dword ptr [rax+0x0C] cmp ecx, esi
- jge G_M55896_IG45
+ jge G_M55896_IG48
mov rdi, rax call [<unknown method>] ; byrRegs -[rax rdi r14-r15] ; gcr arg pop 0
- jmp G_M55896_IG45
+ jmp G_M55896_IG48
;; size=43 bbWeight=1 PerfScore 15.25 G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] @@ -507,7 +507,7 @@ G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, test rdx, rdx jne SHORT G_M55896_IG24 test esi, esi
- jne G_M55896_IG47
+ jne G_M55896_IG44
xor rdx, rdx mov gword ptr [rbp-0x78], rdx ;; size=36 bbWeight=4 PerfScore 41.00 @@ -522,7 +522,7 @@ G_M55896_IG23: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rd G_M55896_IG24: ; bbWeight=4, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0080 {rdi}, byref ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], esi
- jb G_M55896_IG47
+ jb G_M55896_IG44
mov gword ptr [rbp-0x78], rdx mov dword ptr [rbp-0x70], esi mov edx, dword ptr [rdx+0x08] @@ -646,7 +646,7 @@ G_M55896_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rax rsi] ; gcr arg pop 0
- jmp G_M55896_IG51
+ jmp G_M55896_IG52
;; size=58 bbWeight=1 PerfScore 14.50 G_M55896_IG31: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, nogc ; gcrRegs +[rbx] @@ -773,11 +773,11 @@ G_M55896_IG40: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr sub eax, dword ptr [rsi+0x08] sub eax, dword ptr [rbx+0x04] sub eax, dword ptr [rbx]
- jne G_M55896_IG48
+ jne G_M55896_IG45
xor r15d, r15d mov rdi, bword ptr [rbp-0x80] ; byrRegs +[rdi]
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=43 bbWeight=1 PerfScore 16.25 G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx] @@ -788,7 +788,7 @@ G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdi, bword ptr [rbp-0x80] ; byrRegs +[rdi] cmp dword ptr [rdi+0x10], 0xD1FFAB1E
- jne G_M55896_IG45
+ jne G_M55896_IG48
lea rsi, bword ptr [rbx+0x88] lea r14, bword ptr [rsi+0x10] ; byrRegs +[r14] @@ -803,7 +803,7 @@ G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr sub r8d, edx sub r8d, dword ptr [rsi] cmp r8d, 5
- jle G_M55896_IG45
+ jle G_M55896_IG48
lea rsi, bword ptr [rbx+0x88] mov r8, r14 ; byrRegs +[r8] @@ -813,37 +813,69 @@ G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr test r8, r8 jne SHORT G_M55896_IG42 or eax, ecx
- jne G_M55896_IG47
+ jne SHORT G_M55896_IG44
xor r15, r15 ; byrRegs +[r15] xor r13d, r13d jmp SHORT G_M55896_IG43
- ;; size=106 bbWeight=4 PerfScore 114.00 -G_M55896_IG42: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=4040 {rsi r14}, byref
+ ;; size=102 bbWeight=4 PerfScore 114.00 +G_M55896_IG42: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=4040 {rsi r14}, byref, isz
; byrRegs -[rdi r15] mov r9d, eax mov r10d, ecx add r9, r10 mov r10d, dword ptr [r8+0x08] cmp r9, r10
- ja G_M55896_IG47
+ ja SHORT G_M55896_IG44
mov eax, eax lea r15, bword ptr [r8+rax+0x10] ; byrRegs +[r15] mov r13d, ecx
- ;; size=32 bbWeight=4 PerfScore 22.00
+ ;; size=28 bbWeight=4 PerfScore 22.00
G_M55896_IG43: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C040 {rsi r14 r15}, byref, isz ; gcrRegs -[r8] add edx, dword ptr [rsi] cmp edx, r13d
- ja G_M55896_IG47
+ jbe SHORT G_M55896_IG46 + ;; size=7 bbWeight=4 PerfScore 17.00 +G_M55896_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi r14-r15] + call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M55896_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + call [<unknown method>] + ; gcr arg pop 0 + mov rsi, rax + ; gcrRegs +[rsi] + mov rdi, rbx + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rax rsi rdi] + ; gcr arg pop 0 + mov rdi, rbx + ; gcrRegs +[rdi] + call CORINFO_HELP_THROW + ; gcrRegs -[rbx rdi] + ; gcr arg pop 0 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M55896_IG46: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[r14-r15]
mov r12d, edx add r15, r12 sub r13d, edx
- jns SHORT G_M55896_IG44
+ jns SHORT G_M55896_IG47
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi]
- ; byrRegs -[rsi]
mov r12, rsi ; gcrRegs +[r12] mov rdi, r12 @@ -859,8 +891,8 @@ G_M55896_IG43: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C040 {rsi r1 call [<unknown method>] ; gcrRegs -[rsi rdi r12] ; gcr arg pop 0
- ;; size=59 bbWeight=4 PerfScore 54.00 -G_M55896_IG44: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
+ ;; size=48 bbWeight=4 PerfScore 37.00 +G_M55896_IG47: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
mov rsi, r15 ; byrRegs +[rsi] mov edx, r13d @@ -892,12 +924,12 @@ G_M55896_IG44: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1 ; gcrRegs -[rax] sub eax, dword ptr [rdi+0x0C] cmp eax, esi
- jge SHORT G_M55896_IG45
+ jge SHORT G_M55896_IG48
call [<unknown method>] ; byrRegs -[rdi r14] ; gcr arg pop 0 ;; size=76 bbWeight=4 PerfScore 129.00
-G_M55896_IG45: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M55896_IG48: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r15] lea rsi, bword ptr [rbx+0x88] ; byrRegs +[rsi] @@ -914,47 +946,16 @@ G_M55896_IG45: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp ecx, dword ptr [rdi+0x10] jl G_M55896_IG21 ;; size=38 bbWeight=8 PerfScore 138.00
-G_M55896_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M55896_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rbx] ; byrRegs -[rdx rsi r14] mov r15d, dword ptr [rdi+0x10]
- jmp SHORT G_M55896_IG49 - ;; size=6 bbWeight=1 PerfScore 4.00 -G_M55896_IG47: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M55896_IG48: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - call [<unknown method>] - ; gcr arg pop 0 - mov rsi, rax - ; gcrRegs +[rsi] - mov rdi, rbx - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rax rsi rdi] - ; gcr arg pop 0 - mov rdi, rbx - ; gcrRegs +[rdi] - call CORINFO_HELP_THROW - ; gcrRegs -[rbx rdi] - ; gcr arg pop 0 - int3 - ;; size=45 bbWeight=0 PerfScore 0.00 -G_M55896_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz - ; byrRegs +[rdi]
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M55896_IG50: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
mov dword ptr [rdi+0x08], -2 add rdi, 24 cmp gword ptr [rdi], 0
- jne SHORT G_M55896_IG50
+ jne SHORT G_M55896_IG51
mov dword ptr [rdi+0x08], r15d mov rsi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rsi] @@ -963,9 +964,9 @@ G_M55896_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr call CORINFO_HELP_CHECKED_ASSIGN_REF ...

+2 (+0.23%) : 45453.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)

@@ -8,30 +8,30 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T18] ( 4, 7 ) ref -> [rbp-0x88] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule>
+; V00 this [V00,T19] ( 4, 7 ) ref -> [rbp-0x88] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle> ; V02 arg2 [V02,T06] ( 3, 34 ) ref -> [rbp-0x90] class-hnd EH-live single-def <Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder>
-; V03 arg3 [V03,T19] ( 3, 6 ) int -> [rbp-0x14] EH-live single-def -; V04 loc0 [V04,T22] ( 4, 4 ) ref -> rax class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]>
+; V03 arg3 [V03,T20] ( 3, 6 ) int -> [rbp-0x14] EH-live single-def +; V04 loc0 [V04,T23] ( 4, 4 ) ref -> rax class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.CodeAnalysis.PEModule+AttributeInfo]> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.PEModule+AttributeInfo> ; V07 loc3 [V07 ] ( 6, 52 ) struct (32) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.BlobReader> ; V08 loc4 [V08 ] ( 3, 9 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V09 loc5 [V09,T14] ( 3, 12 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
+; V09 loc5 [V09,T15] ( 3, 12 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live
; V10 loc6 [V10,T05] ( 3, 40 ) ushort -> rbx ; V11 loc7 [V11,T01] ( 4,100 ) int -> r15 ; V12 loc8 [V12 ] ( 6,104 ) struct (40) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`4[System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant],ubyte,ubyte,ubyte]> ;* V13 loc9 [V13 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant]> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.TypedConstant> ;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V16 loc12 [V16,T30] ( 3, 0 ) ubyte -> rax -; V17 loc13 [V17,T24] ( 2, 2 ) ref -> rax class-hnd exact <System.String>
+; V16 loc12 [V16,T31] ( 3, 0 ) ubyte -> rax +; V17 loc13 [V17,T25] ( 2, 2 ) ref -> rax class-hnd exact <System.String>
; V18 OutArgs [V18 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V19 tmp1 [V19 ] ( 0, 0 ) ref -> zero-ref "inline UNBOX clone1"
-; V20 tmp2 [V20,T32] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" <System.Object> -; V21 tmp3 [V21,T28] ( 4, 0 ) ref -> rbx class-hnd "dup spill" <<unknown class>>
+; V20 tmp2 [V20,T33] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" <System.Object> +; V21 tmp3 [V21,T29] ( 4, 0 ) ref -> rbx class-hnd "dup spill" <<unknown class>>
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref
-; V23 tmp5 [V23,T31] ( 3, 0 ) int -> rax
+; V23 tmp5 [V23,T32] ( 3, 0 ) int -> rax
;* V24 tmp6 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ;* V25 tmp7 [V25 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.CodeAnalysis.PEModule+AttributeInfo]> ;* V26 tmp8 [V26 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -39,34 +39,35 @@ ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ; V29 tmp11 [V29,T00] ( 5,208 ) ref -> rsi "spilling varStr" ; V30 tmp12 [V30,T02] ( 2, 64 ) int -> rsi "spilling unroll qmark"
-; V31 tmp13 [V31,T29] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V31 tmp13 [V31,T30] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V32 tmp14 [V32,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V33 tmp15 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]>
-; V34 tmp16 [V34,T23] ( 2, 2 ) int -> [rbp-0x74] single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -; V35 tmp17 [V35,T15] ( 3, 12 ) int -> rsi "field V06.Handle (fldOffset=0x0)" P-INDEP
+; V34 tmp16 [V34,T24] ( 2, 2 ) int -> [rbp-0x74] single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +; V35 tmp17 [V35,T16] ( 3, 12 ) int -> rsi "field V06.Handle (fldOffset=0x0)" P-INDEP
;* V36 tmp18 [V36 ] ( 0, 0 ) ubyte -> zero-ref "field V06.SignatureIndex (fldOffset=0x4)" P-INDEP ;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref "field V14._type (fldOffset=0x0)" P-INDEP
-; V38 tmp20 [V38,T13] ( 4, 14 ) ref -> rbx "field V14._value (fldOffset=0x8)" P-INDEP -; V39 tmp21 [V39,T20] ( 2, 8 ) int -> rsi "field V14._kind (fldOffset=0x10)" P-INDEP
+; V38 tmp20 [V38,T14] ( 4, 14 ) ref -> rbx "field V14._value (fldOffset=0x8)" P-INDEP +; V39 tmp21 [V39,T21] ( 2, 8 ) int -> rsi "field V14._kind (fldOffset=0x10)" P-INDEP
; V40 tmp22 [V40,T08] ( 4, 24 ) ref -> [rbp-0x98] EH-live spill-single-def "V05.[000..008)" ; V41 tmp23 [V41,T03] ( 6, 41 ) int -> [rbp-0x78] do-not-enreg[Z] EH-live "V05.[008..012)"
-; V42 tmp24 [V42,T21] ( 2, 8 ) int -> [rbp-0x7C] EH-live spill-single-def "V05.[012..016)"
+; V42 tmp24 [V42,T22] ( 2, 8 ) int -> [rbp-0x7C] EH-live spill-single-def "V05.[012..016)"
; V43 tmp25 [V43,T10] ( 2, 12 ) int -> rsi "V05.[016..020)" ;* V44 tmp26 [V44 ] ( 0, 0 ) ubyte -> zero-ref "V05.[020..021)" ;* V45 tmp27 [V45 ] ( 0, 0 ) ref -> zero-ref "V13.[000..008)" ;* V46 tmp28 [V46 ] ( 0, 0 ) ref -> zero-ref single-def "V25.[000..008)" ;* V47 tmp29 [V47 ] ( 0, 0 ) int -> zero-ref single-def "V25.[008..012)"
-; V48 tmp30 [V48,T25] ( 2, 2 ) int -> rdx single-def "V25.[012..016)"
+; V48 tmp30 [V48,T26] ( 2, 2 ) int -> rdx single-def "V25.[012..016)"
;* V49 tmp31 [V49 ] ( 0, 0 ) int -> zero-ref single-def "V25.[016..020)" ;* V50 tmp32 [V50 ] ( 0, 0 ) ubyte -> zero-ref single-def "V25.[020..021)" ; V51 tmp33 [V51,T07] ( 2, 32 ) byref -> rdi "Spilling address for field-by-field copy" ; V52 tmp34 [V52,T04] ( 3, 48 ) ref -> rdi "arr expr"
-; V53 tmp35 [V53,T33] ( 2, 0 ) ref -> rsi "argument with side effect" -; V54 PSPSym [V54,T26] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" -; V55 cse0 [V55,T16] ( 3, 12 ) long -> rsi "CSE - moderate" -; V56 cse1 [V56,T09] ( 2, 16 ) int -> rdi "CSE - moderate" -; V57 cse2 [V57,T17] ( 3, 12 ) long -> rdi "CSE - moderate" -; V58 rat0 [V58,T27] ( 3, 96 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V53 tmp35 [V53,T34] ( 2, 0 ) ref -> rsi "argument with side effect" +; V54 PSPSym [V54,T27] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" +; V55 cse0 [V55,T17] ( 3, 12 ) long -> rsi "CSE - moderate" +; V56 cse1 [V56,T13] ( 2, 16 ) int -> rdi "CSE - moderate" +; V57 cse2 [V57,T09] ( 2, 16 ) int -> rdi "CSE - moderate" +; V58 cse3 [V58,T18] ( 3, 12 ) long -> rdi "CSE - moderate" +; V59 rat0 [V59,T28] ( 3, 96 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 176 @@ -91,7 +92,7 @@ G_M52237_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; GC ptr vars +{V02} mov dword ptr [rbp-0x14], ecx ;; size=75 bbWeight=1 PerfScore 17.33
-G_M52237_IG02: ; bbWeight=1, gcVars=0000000000040040 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52237_IG02: ; bbWeight=1, gcVars=0000000000080040 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdx, 0xD1FFAB1E ; box for <unknown class>:<unknown field> mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] @@ -142,7 +143,7 @@ G_M52237_IG04: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=12 bbWeight=1 PerfScore 2.75
-G_M52237_IG05: ; bbWeight=1, gcVars=0000000000040040 {V00 V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M52237_IG05: ; bbWeight=1, gcVars=0000000000080040 {V00 V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V02} mov edx, dword ptr [rax+0x14] mov gword ptr [rbp-0x98], rax @@ -152,7 +153,7 @@ G_M52237_IG05: ; bbWeight=1, gcVars=0000000000040040 {V00 V02}, gcrefRegs mov dword ptr [rbp-0x7C], edx jmp G_M52237_IG22 ;; size=23 bbWeight=1 PerfScore 7.25
-G_M52237_IG06: ; bbWeight=4, gcVars=0000000000040140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52237_IG06: ; bbWeight=4, gcVars=0000000000080140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] test esi, esi je G_M52237_IG22 @@ -318,13 +319,14 @@ G_M52237_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[rax] jmp SHORT G_M52237_IG23 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M52237_IG22: ; bbWeight=8, gcVars=0000000000040140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52237_IG22: ; bbWeight=8, gcVars=0000000000080140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars +{V00 V02 V40} mov rax, gword ptr [rbp-0x98] ; gcrRegs +[rax] mov edx, dword ptr [rbp-0x7C]
- cmp edx, dword ptr [rax+0x14]
+ mov edi, dword ptr [rax+0x14] + cmp edx, edi
jne SHORT G_M52237_IG25 mov edi, dword ptr [rax+0x10] cmp dword ptr [rbp-0x78], edi @@ -345,7 +347,7 @@ G_M52237_IG22: ; bbWeight=8, gcVars=0000000000040140 {V00 V02 V40}, gcref inc edi mov dword ptr [rbp-0x78], edi jmp G_M52237_IG06
- ;; size=69 bbWeight=8 PerfScore 218.00
+ ;; size=71 bbWeight=8 PerfScore 212.00
G_M52237_IG23: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc ; GC ptr vars -{V00 V02 V40} add rsp, 176 @@ -364,7 +366,7 @@ G_M52237_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M52237_IG26: ; bbWeight=0, gcVars=0000000000040140 {V00 V02 V40}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M52237_IG26: ; bbWeight=0, gcVars=0000000000080140 {V00 V02 V40}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs +[rsi] ; GC ptr vars +{V00 V02 V40} push rbp @@ -376,7 +378,7 @@ G_M52237_IG26: ; bbWeight=0, gcVars=0000000000040140 {V00 V02 V40}, gcref mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0xC0] ;; size=27 bbWeight=0 PerfScore 0.00
-G_M52237_IG27: ; bbWeight=0, gcVars=0000000000040140 {V00 V02 V40}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52237_IG27: ; bbWeight=0, gcVars=0000000000080140 {V00 V02 V40}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[rsi] +[rax] @@ -437,7 +439,7 @@ G_M52237_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0xC0] ;; size=27 bbWeight=0 PerfScore 0.00
-G_M52237_IG34: ; bbWeight=0, gcVars=0000000000040140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52237_IG34: ; bbWeight=0, gcVars=0000000000080140 {V00 V02 V40}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M52237_IG19 ;; size=7 bbWeight=0 PerfScore 0.00 G_M52237_IG35: ; bbWeight=0, funclet epilog, nogc, extend @@ -451,7 +453,7 @@ RWD00 dq 0070004F00730049h, 006E006F00690074h RWD16 dq 006900740070004Fh, 006C0061006E006Fh
-; Total bytes of code 871, prolog size 75, PerfScore 1179.33, instruction count 225, allocated bytes for code 871 (MethodHash=9e6933f2) for method Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
+; Total bytes of code 873, prolog size 75, PerfScore 1173.33, instruction count 226, allocated bytes for code 873 (MethodHash=9e6933f2) for method Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
; ============================================================ Unwind Info:

+3 (+1.00%) : 25014.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)

@@ -8,36 +8,37 @@ ; 0 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 9, 13 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> -; V01 arg1 [V01,T14] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object> -; V02 arg2 [V02,T10] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson>
+; V00 arg0 [V00,T04] ( 9, 13 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> +; V01 arg1 [V01,T15] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object> +; V02 arg2 [V02,T11] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract> ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T17] ( 2, 3 ) ref -> r13 class-hnd exact single-def <System.Xml.XmlDictionaryString>
+; V05 loc1 [V05,T18] ( 2, 3 ) ref -> r13 class-hnd exact single-def <System.Xml.XmlDictionaryString>
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T19] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V10 tmp2 [V10,T08] ( 6, 8.75) ref -> r14 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]>
+; V09 tmp1 [V09,T20] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" +; V10 tmp2 [V10,T09] ( 6, 8.75) ref -> r14 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]>
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-;* V13 tmp5 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp5 [V13,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V15 tmp7 [V15,T02] ( 4, 17 ) ref -> r14 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T00] ( 6, 21 ) int -> r12 "field V07._index (fldOffset=0x8)" P-INDEP
-; V17 tmp9 [V17,T07] ( 2, 9 ) int -> r15 single-def "field V07._version (fldOffset=0xc)" P-INDEP -; V18 tmp10 [V18,T06] ( 2, 6 ) int -> [rbp-0x2C] spill-single-def "field V07._current (fldOffset=0x10)" P-INDEP -; V19 tmp11 [V19,T16] ( 3, 3 ) ref -> r14 single-def "field V12._list (fldOffset=0x0)" P-INDEP -;* V20 tmp12 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP -; V21 tmp13 [V21,T18] ( 2, 2 ) int -> r15 single-def "field V12._version (fldOffset=0xc)" P-INDEP
+; V17 tmp9 [V17,T08] ( 2, 9 ) int -> r15 single-def "field V07._version (fldOffset=0xc)" P-INDEP +; V18 tmp10 [V18,T07] ( 2, 6 ) int -> [rbp-0x2C] spill-single-def "field V07._current (fldOffset=0x10)" P-INDEP +; V19 tmp11 [V19,T17] ( 3, 3 ) ref -> r14 single-def "field V12._list (fldOffset=0x0)" P-INDEP +;* V20 tmp12 [V20,T21] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP +; V21 tmp13 [V21,T19] ( 2, 2 ) int -> r15 single-def "field V12._version (fldOffset=0xc)" P-INDEP
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref single-def "field V12._current (fldOffset=0x10)" P-INDEP
-; V23 tmp15 [V23,T15] ( 2, 4 ) int -> rsi "argument with side effect" -; V24 tmp16 [V24,T11] ( 3, 6 ) ref -> rdi single-def "argument with side effect" -; V25 tmp17 [V25,T12] ( 3, 6 ) ref -> rdi single-def "argument with side effect" -; V26 tmp18 [V26,T13] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V23 tmp15 [V23,T16] ( 2, 4 ) int -> rsi "argument with side effect" +; V24 tmp16 [V24,T12] ( 3, 6 ) ref -> rdi single-def "argument with side effect" +; V25 tmp17 [V25,T13] ( 3, 6 ) ref -> rdi single-def "argument with side effect" +; V26 tmp18 [V26,T14] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
; V27 tmp19 [V27,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V28 tmp20 [V28,T04] ( 3, 12 ) ref -> rdi "argument with side effect" -; V29 cse0 [V29,T05] ( 2, 8 ) int -> rdi "CSE - moderate"
+; V28 tmp20 [V28,T05] ( 3, 12 ) ref -> rdi "argument with side effect" +; V29 cse0 [V29,T06] ( 2, 8 ) int -> rdi "CSE - moderate" +; V30 cse1 [V30,T03] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -148,9 +149,10 @@ G_M46963_IG06: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 ; gcrRegs -[rdi] ;; size=44 bbWeight=2 PerfScore 42.00 G_M46963_IG07: ; bbWeight=8, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
- cmp r15d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r15d, edi
jne SHORT G_M46963_IG11
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M46963_IG08: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [r14+0x10] cmp r12d, edi @@ -184,7 +186,7 @@ G_M46963_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 16, PerfScore 211.22, instruction count 86, allocated bytes for code 299 (MethodHash=8d85488c) for method (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
+; Total bytes of code 302, prolog size 16, PerfScore 205.22, instruction count 87, allocated bytes for code 302 (MethodHash=8d85488c) for method (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
; ============================================================ Unwind Info:

+3 (+1.26%) : 32551.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)

@@ -8,33 +8,34 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> -; V01 arg1 [V01,T13] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object> -; V02 arg2 [V02,T10] ( 5, 5 ) ref -> r15 class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> -; V03 arg3 [V03,T11] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
+; V00 arg0 [V00,T04] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> +; V01 arg1 [V01,T14] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object> +; V02 arg2 [V02,T11] ( 5, 5 ) ref -> r15 class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> +; V03 arg3 [V03,T12] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T15] ( 2, 3 ) ref -> r12 class-hnd single-def <System.Xml.XmlDictionaryString> -; V06 loc2 [V06,T16] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString>
+; V05 loc1 [V05,T16] ( 2, 3 ) ref -> r12 class-hnd single-def <System.Xml.XmlDictionaryString> +; V06 loc2 [V06,T17] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString>
;* V07 loc3 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc4 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V11 tmp2 [V11,T08] ( 6, 8.75) ref -> r13 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> -; V12 tmp3 [V12,T12] ( 3, 6 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
+; V10 tmp1 [V10,T19] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" +; V11 tmp2 [V11,T09] ( 6, 8.75) ref -> r13 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> +; V12 tmp3 [V12,T13] ( 3, 6 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-;* V14 tmp5 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp5 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V16 tmp7 [V16,T02] ( 4, 17 ) ref -> r13 single-def "field V08._list (fldOffset=0x0)" P-INDEP ; V17 tmp8 [V17,T00] ( 6, 21 ) int -> [rbp-0x30] "field V08._index (fldOffset=0x8)" P-INDEP
-; V18 tmp9 [V18,T07] ( 2, 9 ) int -> r15 single-def "field V08._version (fldOffset=0xc)" P-INDEP -; V19 tmp10 [V19,T06] ( 2, 6 ) int -> [rbp-0x34] spill-single-def "field V08._current (fldOffset=0x10)" P-INDEP -; V20 tmp11 [V20,T14] ( 3, 3 ) ref -> r13 single-def "field V13._list (fldOffset=0x0)" P-INDEP -;* V21 tmp12 [V21,T19] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP -; V22 tmp13 [V22,T17] ( 2, 2 ) int -> r15 single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V18 tmp9 [V18,T08] ( 2, 9 ) int -> r15 single-def "field V08._version (fldOffset=0xc)" P-INDEP +; V19 tmp10 [V19,T07] ( 2, 6 ) int -> [rbp-0x34] spill-single-def "field V08._current (fldOffset=0x10)" P-INDEP +; V20 tmp11 [V20,T15] ( 3, 3 ) ref -> r13 single-def "field V13._list (fldOffset=0x0)" P-INDEP +;* V21 tmp12 [V21,T20] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP +; V22 tmp13 [V22,T18] ( 2, 2 ) int -> r15 single-def "field V13._version (fldOffset=0xc)" P-INDEP
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V13._current (fldOffset=0x10)" P-INDEP ; V24 tmp15 [V24,T01] ( 3, 24 ) ref -> rsi "arr expr"
-; V25 tmp16 [V25,T04] ( 3, 12 ) ref -> rdi "argument with side effect" -; V26 cse0 [V26,T05] ( 2, 8 ) int -> rsi "CSE - moderate"
+; V25 tmp16 [V25,T05] ( 3, 12 ) ref -> rdi "argument with side effect" +; V26 cse0 [V26,T06] ( 2, 8 ) int -> rsi "CSE - moderate" +; V27 cse1 [V27,T03] ( 2, 16 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 24 @@ -127,9 +128,10 @@ G_M6012_IG06: ; bbWeight=2, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0 mov edi, dword ptr [rbp-0x30] ;; size=48 bbWeight=2 PerfScore 44.00 G_M6012_IG07: ; bbWeight=8, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- cmp r15d, dword ptr [r13+0x14]
+ mov esi, dword ptr [r13+0x14] + cmp r15d, esi
jne SHORT G_M6012_IG11
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M6012_IG08: ; bbWeight=4, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [r13+0x10] cmp edi, esi @@ -164,7 +166,7 @@ G_M6012_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 239, prolog size 19, PerfScore 190.97, instruction count 76, allocated bytes for code 239 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
+; Total bytes of code 242, prolog size 19, PerfScore 184.97, instruction count 77, allocated bytes for code 242 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-29 (-16.48%) : 324578.dasm - Program:M49() (FullOpts)

@@ -10,11 +10,12 @@ ; V00 loc0 [V00,T01] ( 4, 13 ) int -> rbx ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> rcx "arr expr" -; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> rax "arr expr" -; V05 PSPSym [V05,T05] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" -; V06 cse0 [V06,T03] ( 3, 12 ) int -> rax "CSE - aggressive" -; V07 cse1 [V07,T04] ( 2, 4.50) long -> r15 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> rax "arr expr" +;* V04 tmp2 [V04,T04] ( 0, 0 ) ref -> zero-ref "arr expr" +; V05 PSPSym [V05,T06] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" +; V06 cse0 [V06,T02] ( 3, 12 ) byref -> rax "CSE - aggressive" +; V07 cse1 [V07,T03] ( 2, 8 ) ref -> rax "CSE - aggressive" +; V08 cse2 [V08,T05] ( 2, 4.50) long -> r15 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -31,73 +32,60 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcr arg pop 0 test eax, eax
- jle SHORT G_M37813_IG08
+ jle SHORT G_M37813_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r15, 0xD1FFAB1E ; static handle ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r15] - test eax, eax - jne SHORT G_M37813_IG06 - ;; size=8 bbWeight=4 PerfScore 13.00 -G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - cmp dword ptr [rcx+0x08], 0 - jbe SHORT G_M37813_IG13 - xor edx, edx - mov dword ptr [rcx+0x10], edx - ;; size=24 bbWeight=2 PerfScore 15.00 -G_M37813_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - test eax, eax - je SHORT G_M37813_IG09 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M37813_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp byte ptr [r15], 0 + jne SHORT G_M37813_IG05 + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp dword ptr [rax+0x08], 0 + jbe SHORT G_M37813_IG10 + add rax, 16 + ; gcrRegs -[rax] + ; byrRegs +[rax] + xor ecx, ecx + mov dword ptr [rax], ecx + jmp SHORT G_M37813_IG07 + ;; size=35 bbWeight=4 PerfScore 55.00 +G_M37813_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[rax]
xor eax, eax mov dword ptr [(reloc)], eax ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M37813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37813_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 16 pop rbx pop r15 pop rbp ret ;; size=9 bbWeight=1 PerfScore 2.75
-G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rax] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], 0 - jbe SHORT G_M37813_IG10
+G_M37813_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref + ; byrRegs +[rax]
mov ecx, dword ptr [(reloc)] ; static handle
- mov dword ptr [rax+0x10], ecx - jmp SHORT G_M37813_IG11 - ;; size=30 bbWeight=4 PerfScore 45.00 -G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rax], ecx + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M37813_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax]
inc ebx call [<unknown method>] ; gcr arg pop 0 cmp eax, ebx jg SHORT G_M37813_IG04 ;; size=12 bbWeight=4 PerfScore 18.00
-G_M37813_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M37813_IG08
+G_M37813_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M37813_IG06
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15 push rbx @@ -106,7 +94,7 @@ G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp], rbp lea rbp, [rbp+0x20] ;; size=19 bbWeight=0 PerfScore 0.00
-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
add rsp, 16 pop rbx pop r15 @@ -114,7 +102,7 @@ G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 17, PerfScore 109.75, instruction count 57, allocated bytes for code 176 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
+; Total bytes of code 147, prolog size 17, PerfScore 98.75, instruction count 49, allocated bytes for code 147 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
; ============================================================ Unwind Info: @@ -147,4 +135,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for Program:M49() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37813_IG09..G_M37813_IG11) handled by [G_M37813_IG14..END) (fault)
+EH#0: try [G_M37813_IG07..G_M37813_IG08) handled by [G_M37813_IG11..END) (fault)
-35 (-6.18%) : 274305.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -25,7 +25,7 @@ ; V13 tmp9 [V13,T08] ( 6, 12 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[int]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T00] ( 24,158 ) byref -> r11 "Inlining Arg"
+; V16 tmp12 [V16,T00] ( 20,154 ) byref -> r11 "Inlining Arg"
; V17 tmp13 [V17,T03] ( 8, 43 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp15 [V19,T12] ( 3, 3 ) ref -> rsi single-def "field V14._list (fldOffset=0x0)" P-INDEP @@ -56,9 +56,9 @@ G_M48461_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r15d, r15d mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[int] cmp qword ptr [rbx], rdi
- jne G_M48461_IG26
+ jne G_M48461_IG24
cmp dword ptr [rbx+0x10], 0
- je G_M48461_IG25
+ je G_M48461_IG23
mov r14, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] mov rdi, r14 call CORINFO_HELP_NEWSFAST @@ -93,12 +93,12 @@ G_M48461_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=1 PerfScore 1.00 G_M48461_IG06: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz test rdi, rdi
- je G_M48461_IG17
+ je G_M48461_IG16
mov r14, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] cmp qword ptr [rdi], r14
- jne G_M48461_IG17
+ jne SHORT G_M48461_IG16
jmp SHORT G_M48461_IG08
- ;; size=30 bbWeight=1 PerfScore 7.50
+ ;; size=26 bbWeight=1 PerfScore 7.50
G_M48461_IG07: ; bbWeight=9.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov ebx, dword ptr [rdi+0x18] add r15d, ebx @@ -110,10 +110,10 @@ G_M48461_IG08: ; bbWeight=10.89, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rax] mov ecx, dword ptr [r11+0x0C] cmp ecx, dword ptr [rax+0x14]
- jne SHORT G_M48461_IG13
+ jne SHORT G_M48461_IG11
mov ecx, dword ptr [r11+0x08] cmp ecx, dword ptr [rax+0x10]
- jae SHORT G_M48461_IG14
+ jae SHORT G_M48461_IG13
;; size=25 bbWeight=10.89 PerfScore 157.91 G_M48461_IG09: ; bbWeight=9.90, gcrefRegs=0081 {rax rdi}, byrefRegs=0800 {r11}, byref, isz mov rdx, gword ptr [rax+0x08] @@ -149,83 +149,69 @@ G_M48461_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ebx, eax mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi]
- jmp SHORT G_M48461_IG16
+ jmp SHORT G_M48461_IG15
;; size=25 bbWeight=0 PerfScore 0.00 G_M48461_IG13: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11}, byref, isz ; byrRegs +[r11]
- mov ecx, dword ptr [r11+0x0C] - mov rax, gword ptr [r11] - ; gcrRegs +[rax] - cmp ecx, dword ptr [rax+0x14] - jne SHORT G_M48461_IG11 - ;; size=12 bbWeight=0.99 PerfScore 7.92 -G_M48461_IG14: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11}, byref - ; gcrRegs -[rax] - mov rax, gword ptr [r11] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x10] - ; gcrRegs -[rax]
+ mov rcx, gword ptr [r11] + ; gcrRegs +[rcx] + mov eax, dword ptr [rcx+0x10]
inc eax mov dword ptr [r11+0x08], eax xor eax, eax mov dword ptr [r11+0x10], eax
- jmp G_M48461_IG22 - ;; size=23 bbWeight=0.99 PerfScore 8.41 -G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M48461_IG20 + ;; size=20 bbWeight=0.99 PerfScore 8.41 +G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
; byrRegs -[r11] mov ebx, dword ptr [rdi+0x18] ;; size=3 bbWeight=0.10 PerfScore 0.20
-G_M48461_IG16: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
add r15d, ebx ;; size=3 bbWeight=0.10 PerfScore 0.03
-G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG16: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov r14, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] cmp qword ptr [rdi], r14
- je SHORT G_M48461_IG18 - mov r11, 0xD1FFAB1E ; function address - call [r11]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - jne SHORT G_M48461_IG12 - mov rdi, gword ptr [rbp-0x20] - ; gcrRegs +[rdi] - jmp SHORT G_M48461_IG22 - ;; size=38 bbWeight=0.11 PerfScore 1.29 -G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M48461_IG18
lea r11, bword ptr [rdi+0x08] ; byrRegs +[r11] mov rax, gword ptr [r11] ; gcrRegs +[rax] mov ecx, dword ptr [r11+0x0C] cmp ecx, dword ptr [rax+0x14]
- jne SHORT G_M48461_IG20
+ jne SHORT G_M48461_IG11
mov ecx, dword ptr [r11+0x08] cmp ecx, dword ptr [rax+0x10]
- jae SHORT G_M48461_IG21 - ;; size=25 bbWeight=0.11 PerfScore 1.60 -G_M48461_IG19: ; bbWeight=0.10, gcrefRegs=0081 {rax rdi}, byrefRegs=0800 {r11}, byref, isz
+ jae SHORT G_M48461_IG19 + ;; size=40 bbWeight=0.11 PerfScore 2.06 +G_M48461_IG17: ; bbWeight=0.10, gcrefRegs=0081 {rax rdi}, byrefRegs=0800 {r11}, byref, isz
mov rdx, gword ptr [rax+0x08] ; gcrRegs +[rdx] cmp ecx, dword ptr [rdx+0x08]
- jae G_M48461_IG10
+ jae SHORT G_M48461_IG10
mov eax, ecx ; gcrRegs -[rax] mov eax, dword ptr [rdx+4*rax+0x10] mov dword ptr [r11+0x10], eax inc dword ptr [r11+0x08]
- jmp SHORT G_M48461_IG15 - ;; size=29 bbWeight=0.10 PerfScore 1.43 -G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11}, byref
+ jmp SHORT G_M48461_IG14 + ;; size=25 bbWeight=0.10 PerfScore 1.43 +G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- mov eax, dword ptr [r11+0x0C] - mov rcx, gword ptr [r11] - ; gcrRegs +[rcx] - cmp eax, dword ptr [rcx+0x14] - jne G_M48461_IG11 - ;; size=16 bbWeight=0.01 PerfScore 0.08 -G_M48461_IG21: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11}, byref - ; gcrRegs -[rcx]
+ ; byrRegs -[r11] + mov r11, 0xD1FFAB1E ; function address + call [r11]<unknown method> + ; gcrRegs -[rdi] + ; gcr arg pop 0 + test eax, eax + jne G_M48461_IG12 + mov rdi, gword ptr [rbp-0x20] + ; gcrRegs +[rdi] + jmp SHORT G_M48461_IG20 + ;; size=27 bbWeight=0.11 PerfScore 0.83 +G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11}, byref + ; byrRegs +[r11]
mov rax, gword ptr [r11] ; gcrRegs +[rax] mov eax, dword ptr [rax+0x10] @@ -235,17 +221,17 @@ G_M48461_IG21: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0800 {r11 xor eax, eax mov dword ptr [r11+0x10], eax ;; size=18 bbWeight=0.01 PerfScore 0.07
-G_M48461_IG22: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG20: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r11] cmp qword ptr [rdi], r14
- jne SHORT G_M48461_IG27
+ jne SHORT G_M48461_IG25
;; size=5 bbWeight=1 PerfScore 4.00
-G_M48461_IG23: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] ; GC ptr vars -{V02} mov eax, r15d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M48461_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M48461_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx pop r14 @@ -253,7 +239,7 @@ G_M48461_IG24: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25
-G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E mov esi, 14 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -263,7 +249,7 @@ G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[r14] jmp G_M48461_IG04 ;; size=38 bbWeight=0 PerfScore 0.00
-G_M48461_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48461_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -275,7 +261,7 @@ G_M48461_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] jmp G_M48461_IG05 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars +{V02 V05} mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -283,9 +269,9 @@ G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=008 call [r11]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- jmp SHORT G_M48461_IG23
+ jmp SHORT G_M48461_IG21
;; size=15 bbWeight=0 PerfScore 0.00
-G_M48461_IG28: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V05} push rbp push r15 @@ -296,24 +282,24 @@ G_M48461_IG28: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x30] ;; size=18 bbWeight=0 PerfScore 0.00
-G_M48461_IG29: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x20], 0
- je SHORT G_M48461_IG30
+ je SHORT G_M48461_IG28
mov r14, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi] cmp qword ptr [rdi], r14
- je SHORT G_M48461_IG30
...

-11 (-5.05%) : 330467.dasm - Test.BB:TestEntryPoint() (FullOpts)

@@ -8,133 +8,122 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [rbp-0x18] class-hnd exact EH-live single-def <<unknown class>>
+; V00 loc0 [V00,T06] ( 2, 0 ) ref -> [rbp-0x10] class-hnd exact EH-live single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2" ; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp3 [V04,T02] ( 3, 10 ) long -> rdi "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 10 ) long -> rdi "fgMakeTemp is creating a new local variable"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]> ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [rbp-0x0C] spill-single-def "bubbling QMark2" -; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> rbx single-def "CASTCLASS eval op1" -; V09 tmp8 [V09,T06] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable" -; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> rdi class-hnd "spilling QMark2" <double[]> -; V11 PSPSym [V11,T03] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" -; V12 cse0 [V12,T01] ( 5, 24 ) ref -> rbx multi-def "CSE - aggressive"
+; V07 tmp6 [V07,T07] ( 2, 0 ) float -> [rbp-0x04] spill-single-def "bubbling QMark2" +; V08 tmp7 [V08,T04] ( 3, 0 ) ref -> rsi single-def "CASTCLASS eval op1" +; V09 tmp8 [V09,T05] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable" +; V10 tmp9 [V10,T03] ( 5, 0 ) ref -> rdi class-hnd "spilling QMark2" <double[]> +; V11 PSPSym [V11,T02] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - sub rsp, 24
+ sub rsp, 32
vzeroupper lea rbp, [rsp+0x20] mov qword ptr [rbp-0x20], rsp
- ;; size=18 bbWeight=1 PerfScore 4.75
+ ;; size=17 bbWeight=1 PerfScore 3.75
G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> mov esi, 2 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x18], rax
+ mov gword ptr [rbp-0x10], rax
; GC ptr vars +{V00} ;; size=24 bbWeight=1 PerfScore 2.50
-G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov edi, 2 cmp edi, 3 jbe SHORT G_M52695_IG06 mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rbx, gword ptr [rdi] - ; gcrRegs +[rbx] - mov rsi, rbx
+ mov rsi, gword ptr [rdi]
; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M52695_IG07 - ;; size=31 bbWeight=8 PerfScore 42.00 -G_M52695_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M52695_IG03 + ;; size=28 bbWeight=8 PerfScore 40.00 +G_M52695_IG04: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; double[] cmp qword ptr [rsi], rdi je SHORT G_M52695_IG07 ;; size=15 bbWeight=2 PerfScore 8.50
-G_M52695_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 jmp SHORT G_M52695_IG07 ;; size=7 bbWeight=1 PerfScore 3.00 G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M52695_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx] - test rbx, rbx - je SHORT G_M52695_IG03 - ;; size=5 bbWeight=8 PerfScore 10.00
+G_M52695_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=8 PerfScore 2.00
G_M52695_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[rbx]
; GC ptr vars -{V00}
- add rsp, 24 - pop rbx
+ add rsp, 32
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push rbp
- push rbx - push rax
+ sub rsp, 16
vzeroupper mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x20]
- ;; size=17 bbWeight=0 PerfScore 0.00 -G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V07} - mov rax, gword ptr [rbp-0x18]
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00} + mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax] vmovss xmm0, dword ptr [rax+0x10]
- vmovss dword ptr [rbp-0x0C], xmm0
+ vmovss dword ptr [rbp-0x04], xmm0
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rbx, gword ptr [rdi] - ; gcrRegs +[rbx] - mov rdi, rbx
+ mov rsi, gword ptr [rdi] + ; gcrRegs +[rsi] + mov rdi, rsi
; gcrRegs +[rdi] test rdi, rdi je SHORT G_M52695_IG11
- mov rsi, 0xD1FFAB1E ; double[] - cmp qword ptr [rdi], rsi
+ mov rax, 0xD1FFAB1E ; double[] + ; gcrRegs -[rax] + cmp qword ptr [rdi], rax
je SHORT G_M52695_IG11
- mov rdi, rsi
+ mov rdi, rax
; gcrRegs -[rdi]
- mov rsi, rbx - ; gcrRegs +[rsi] - ; GC ptr vars -{V00 V07}
+ ; GC ptr vars -{V00}
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[rbx rsi]
+ ; gcrRegs -[rsi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi]
- ;; size=64 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M52695_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]
- vmovss xmm0, dword ptr [rbp-0x0C]
+ vmovss xmm0, dword ptr [rbp-0x04]
call [Test.BB:Method1(float,double[])] ; gcrRegs -[rdi] ; gcr arg pop 0 lea rax, G_M52695_IG08 ;; size=18 bbWeight=0 PerfScore 0.00 G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 8 - pop rbx
+ add rsp, 16
pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 18, PerfScore 73.00, instruction count 59, allocated bytes for code 218 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
+; Total bytes of code 207, prolog size 17, PerfScore 61.50, instruction count 52, allocated bytes for code 207 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
; ============================================================ Unwind Info: @@ -142,26 +131,24 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for Test.BB:TestEntryPoint() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM

+3 (+1.18%) : 280276.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)

@@ -8,47 +8,48 @@ ; 0 inlinees with PGO data; 11 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T15] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Reflection.Metadata.Ecma335.MetadataBuilder>
+; V00 this [V00,T16] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Reflection.Metadata.Ecma335.MetadataBuilder>
; V01 arg1 [V01,T00] ( 13, 24 ) ref -> rbx class-hnd single-def <System.Reflection.Metadata.BlobBuilder>
-; V02 arg2 [V02,T13] ( 3, 4 ) ref -> r15 class-hnd single-def <System.Reflection.Metadata.Ecma335.MetadataSizes>
+; V02 arg2 [V02,T14] ( 3, 4 ) ref -> r15 class-hnd single-def <System.Reflection.Metadata.Ecma335.MetadataSizes>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow]> ;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T14] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow]>
+; V06 tmp1 [V06,T15] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow]> ;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.BlobHandle>
-; V09 tmp4 [V09,T11] ( 2, 8 ) ubyte -> rdi "Inlining Arg"
+; V09 tmp4 [V09,T12] ( 2, 8 ) ubyte -> rdi "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V13 tmp8 [V13,T04] ( 6, 12 ) int -> rcx "Inline stloc first use temp"
+; V13 tmp8 [V13,T05] ( 6, 12 ) int -> rcx "Inline stloc first use temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref ;* V16 tmp11 [V16 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref ;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref ;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V20 tmp15 [V20,T05] ( 6, 12 ) int -> rcx "Inline stloc first use temp"
+; V20 tmp15 [V20,T06] ( 6, 12 ) int -> rcx "Inline stloc first use temp"
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref ;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp20 [V25,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp20 [V25,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+StandaloneSigRow]> ;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04.Signature (fldOffset=0x0)" P-INDEP ;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ; V29 tmp24 [V29,T03] ( 4, 17 ) ref -> r14 single-def "V03.[000..008)" ; V30 tmp25 [V30,T01] ( 6, 21 ) int -> r12 "V03.[008..012)"
-; V31 tmp26 [V31,T10] ( 2, 9 ) int -> r13 "V03.[012..016)" -; V32 tmp27 [V32,T06] ( 3, 8 ) int -> [rbp-0x2C] spill-single-def "V03.[016..020)"
+; V31 tmp26 [V31,T11] ( 2, 9 ) int -> r13 "V03.[012..016)" +; V32 tmp27 [V32,T07] ( 3, 8 ) int -> [rbp-0x2C] spill-single-def "V03.[016..020)"
;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[000..008)" ;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "V07.[008..012)"
-; V35 tmp30 [V35,T16] ( 2, 2 ) int -> r13 "V07.[012..016)"
+; V35 tmp30 [V35,T17] ( 2, 2 ) int -> r13 "V07.[012..016)"
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "V07.[016..020)" ; V37 tmp32 [V37,T02] ( 3, 24 ) ref -> rdi "arr expr"
-; V38 tmp33 [V38,T07] ( 3, 12 ) ref -> rdx "arr expr" -; V39 tmp34 [V39,T08] ( 3, 12 ) ref -> rdi "arr expr" -; V40 cse0 [V40,T09] ( 2, 8 ) int -> rdi "CSE - moderate"
+; V38 tmp33 [V38,T08] ( 3, 12 ) ref -> rdx "arr expr" +; V39 tmp34 [V39,T09] ( 3, 12 ) ref -> rdi "arr expr" +; V40 cse0 [V40,T10] ( 2, 8 ) int -> rdi "CSE - moderate" +; V41 cse1 [V41,T04] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -143,9 +144,10 @@ G_M44565_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ;; size=24 bbWeight=2 PerfScore 19.50 G_M44565_IG07: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx]
- cmp r13d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r13d, edi
jne SHORT G_M44565_IG11
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M44565_IG08: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [r14+0x10] cmp r12d, edi @@ -181,7 +183,7 @@ G_M44565_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 22, PerfScore 224.75, instruction count 83, allocated bytes for code 255 (MethodHash=c4c051ea) for method System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
+; Total bytes of code 258, prolog size 22, PerfScore 218.75, instruction count 84, allocated bytes for code 258 (MethodHash=c4c051ea) for method System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
; ============================================================ Unwind Info:

+12 (+1.25%) : 293174.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)

@@ -8,13 +8,13 @@ ; 3 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T20] ( 5, 2 ) ref -> r14 class-hnd single-def <System.Reflection.MethodInfo>
+; V00 arg0 [V00,T19] ( 5, 2 ) ref -> r14 class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T10] ( 7, 8.21) ref -> r15 class-hnd single-def <System.Reflection.ParameterInfo[]> ; V02 arg2 [V02,T04] ( 9, 27.26) byref -> rbx single-def
-; V03 arg3 [V03,T21] ( 4, 2 ) ref -> r13 class-hnd single-def <System.String>
+; V03 arg3 [V03,T20] ( 4, 2 ) ref -> r13 class-hnd single-def <System.String>
; V04 loc0 [V04,T05] ( 8, 29.22) ref -> r13 class-hnd <<unknown class>> ; V05 loc1 [V05,T02] ( 14, 50 ) int -> r12
-; V06 loc2 [V06,T18] ( 3, 4.96) int -> [rbp-0x2C] spill-single-def
+; V06 loc2 [V06,T17] ( 3, 4.96) int -> [rbp-0x2C] spill-single-def
; V07 loc3 [V07,T07] ( 11, 25.74) ref -> [rbp-0x48] ld-addr-op class-hnd <System.Linq.Expressions.Expression> ; V08 loc4 [V08,T09] ( 3, 11.88) ref -> [rbp-0x50] class-hnd spill-single-def <System.Reflection.ParameterInfo> ; V09 loc5 [V09,T03] ( 13, 30.05) ref -> [rbp-0x58] class-hnd spill-single-def <System.Type> @@ -22,10 +22,10 @@ ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V13 tmp2 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Linq.Expressions.Expression>
-; V14 tmp3 [V14,T24] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp3 [V14,T23] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
-; V17 tmp6 [V17,T22] ( 2, 3.96) int -> rax "guarded devirt return temp"
+; V17 tmp6 [V17,T21] ( 2, 3.96) int -> rax "guarded devirt return temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V20 tmp9 [V20,T12] ( 2, 3.96) ubyte -> rax "Inline return value spill temp" @@ -33,11 +33,11 @@ ; V22 tmp11 [V22,T13] ( 2, 7.92) ubyte -> rax "Inline return value spill temp" ;* V23 tmp12 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V24 tmp13 [V24,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V25 tmp14 [V25,T17] ( 2, 3.96) ubyte -> rax "Inline return value spill temp" -; V26 tmp15 [V26,T23] ( 2, 3.96) ubyte -> rcx "Inline return value spill temp" -; V27 tmp16 [V27,T16] ( 4, 5.94) ubyte -> rcx "Inline return value spill temp"
+; V25 tmp14 [V25,T16] ( 2, 3.96) ubyte -> rax "Inline return value spill temp" +; V26 tmp15 [V26,T22] ( 2, 3.96) ubyte -> rcx "Inline return value spill temp" +; V27 tmp16 [V27,T18] ( 4, 4.46) ubyte -> rcx "Inline return value spill temp"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V29 tmp18 [V29,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V29 tmp18 [V29,T24] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> @@ -74,7 +74,7 @@ G_M61964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=31 bbWeight=1 PerfScore 7.75 G_M61964_IG02: ; bbWeight=1, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref cmp dword ptr [r15+0x08], 0
- je G_M61964_IG24
+ je G_M61964_IG26
;; size=11 bbWeight=1 PerfScore 4.00 G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref mov r12d, dword ptr [r15+0x08] @@ -85,7 +85,7 @@ G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0 call [r11]<unknown method> ; gcrRegs -[rdi] cmp r12d, eax
- jne G_M61964_IG26
+ jne G_M61964_IG28
xor r13, r13 xor r12d, r12d mov eax, dword ptr [r15+0x08] @@ -139,7 +139,7 @@ G_M61964_IG06: ; bbWeight=1.98, gcVars=0000000000000088 {V07 V09}, gcrefR call <unknown method> ; gcrRegs -[rax rdi] cmp eax, 16
- je G_M61964_IG27
+ je G_M61964_IG29
;; size=17 bbWeight=1.98 PerfScore 4.95 G_M61964_IG07: ; bbWeight=3.96, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref mov rdi, gword ptr [rbp-0x58] @@ -246,7 +246,7 @@ G_M61964_IG13: ; bbWeight=3.96, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0 G_M61964_IG14: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[r14-r15] test r13, r13
- je G_M61964_IG25
+ je G_M61964_IG27
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -289,7 +289,7 @@ G_M61964_IG16: ; bbWeight=1.98, gcVars=0000000000000088 {V07 V09}, gcrefR call [rdx+0x18]<unknown method> ; gcrRegs -[rax rdi] test eax, eax
- jne G_M61964_IG27
+ jne G_M61964_IG29
jmp G_M61964_IG07 ;; size=27 bbWeight=1.98 PerfScore 18.81 G_M61964_IG17: ; bbWeight=1.98, gcVars=00000000000000C8 {V07 V09 V21}, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz @@ -327,53 +327,65 @@ G_M61964_IG18: ; bbWeight=1.98, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0 ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rbp-0x40], rsi
- je SHORT G_M61964_IG19 - xor ecx, ecx - jmp SHORT G_M61964_IG22 - ;; size=30 bbWeight=1.98 PerfScore 11.38 -G_M61964_IG19: ; bbWeight=1.98, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne SHORT G_M61964_IG22
mov rdx, gword ptr [rbp-0x58] ; gcrRegs +[rdx] cmp rdx, rdi
- jne SHORT G_M61964_IG21 - ;; size=9 bbWeight=1.98 PerfScore 4.46 -G_M61964_IG20: ; bbWeight=1.63, gcrefRegs=E004 {rdx r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne SHORT G_M61964_IG20 + ;; size=35 bbWeight=1.98 PerfScore 11.38 +G_M61964_IG19: ; bbWeight=1.63, gcrefRegs=E004 {rdx r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdi] mov ecx, 1
- jmp SHORT G_M61964_IG22
+ jmp SHORT G_M61964_IG21
;; size=7 bbWeight=1.63 PerfScore 3.67
-G_M61964_IG21: ; bbWeight=0.35, gcrefRegs=E084 {rdx rdi r13 r14 r15}, byrefRegs=0008 {rbx}, byref
+G_M61964_IG20: ; bbWeight=0.35, gcrefRegs=E084 {rdx rdi r13 r14 r15}, byrefRegs=0008 {rbx}, byref
; gcrRegs +[rdi] mov rsi, rdx ; gcrRegs +[rsi] call <unknown method> ; gcrRegs -[rdx rsi rdi] mov ecx, eax
- ;; size=10 bbWeight=0.35 PerfScore 0.52 -G_M61964_IG22: ; bbWeight=1.98, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rdx, gword ptr [rbp-0x58] + ; gcrRegs +[rdx] + ;; size=14 bbWeight=0.35 PerfScore 0.87 +G_M61964_IG21: ; bbWeight=1.98, gcrefRegs=E004 {rdx r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
test ecx, ecx
- jne SHORT G_M61964_IG23 - mov rdi, gword ptr [rbp-0x58]
+ jne SHORT G_M61964_IG25 + mov rdi, rdx
; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rax, qword ptr [rbp-0x40] mov rax, qword ptr [rax+0xB8] call [rax+0x18]<unknown method>
- ; gcrRegs -[rsi rdi]
+ ; gcrRegs -[rdx rsi rdi] + jmp SHORT G_M61964_IG23 + ;; size=33 bbWeight=1.98 PerfScore 19.30 +G_M61964_IG22: ; bbWeight=0.49, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz + xor ecx, ecx + mov rdx, gword ptr [rbp-0x58] + ; gcrRegs +[rdx] + jmp SHORT G_M61964_IG21 + ;; size=8 bbWeight=0.49 PerfScore 1.61 +G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref + ; gcrRegs -[rdx]
test eax, eax
- je G_M61964_IG28 - ;; size=40 bbWeight=1.98 PerfScore 19.30 -G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, gword ptr [rbp-0x58]
+ je G_M61964_IG30 + ;; size=8 bbWeight=1.98 PerfScore 2.48 +G_M61964_IG24: ; bbWeight=0.99, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref + mov rdx, gword ptr [rbp-0x58] + ; gcrRegs +[rdx] + ;; size=4 bbWeight=0.99 PerfScore 0.99 +G_M61964_IG25: ; bbWeight=1.98, gcrefRegs=E004 {rdx r13 r14 r15}, byrefRegs=0008 {rbx}, byref, isz + mov rdi, rdx
; gcrRegs +[rdi] mov rsi, gword ptr [rbp-0x48] ; gcrRegs +[rsi]
- mov rdx, qword ptr [rbp-0x38] - call [rdx+0x08]<unknown method> - ; gcrRegs -[rsi rdi]
+ mov rax, qword ptr [rbp-0x38] + call [rax+0x08]<unknown method> + ; gcrRegs -[rdx rsi rdi]
test eax, eax
- je SHORT G_M61964_IG28
+ je SHORT G_M61964_IG30
mov rdi, gword ptr [rbp-0x48] ; gcrRegs +[rdi] ; GC ptr vars -{V07 V09} @@ -382,8 +394,8 @@ G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V07} jmp G_M61964_IG08
- ;; size=38 bbWeight=1.98 PerfScore 28.21 -G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
+ ;; size=37 bbWeight=1.98 PerfScore 26.73 +G_M61964_IG26: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax r15] ; GC ptr vars -{V07} mov rdi, gword ptr [rbx] @@ -394,9 +406,9 @@ G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 ; gcrRegs -[rdi] ; byrRegs -[rbx] test eax, eax
- jg G_M61964_IG29
+ jg G_M61964_IG31
;; size=28 bbWeight=0.50 PerfScore 4.25
-G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61964_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r13-r14] add rsp, 56 pop rbx @@ -407,7 +419,7 @@ G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M61964_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r13-r14] mov rdi, r14 ; gcrRegs +[rdi] @@ -420,7 +432,7 @@ G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=6000 { call CORINFO_HELP_THROW ; gcrRegs -[rax rdi] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61964_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0x301B mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -435,7 +447,7 @@ G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_THROW ; gcrRegs -[rax rdi] ;; size=40 bbWeight=0 PerfScore 0.00
-G_M61964_IG28: ; bbWeight=0, gcVars=0000000000000088 {V07 V09}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M61964_IG30: ; bbWeight=0, gcVars=0000000000000088 {V07 V09}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r14] ; GC ptr vars +{V03 V07 V09} mov rdi, gword ptr [rbp-0x48] @@ -467,7 +479,7 @@ G_M61964_IG28: ; bbWeight=0, gcVars=0000000000000088 {V07 V09}, gcrefRegs call CORINFO_HELP_THROW ; gcrRegs -[rax rdi] ;; size=67 bbWeight=0 PerfScore 0.00
-G_M61964_IG29: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M61964_IG31: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r13-r14] mov rdi, r14 ; gcrRegs +[rdi] @@ -482,7 +494,7 @@ G_M61964_IG29: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, int3 ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 962, prolog size 19, PerfScore 697.51, instruction count 245, allocated bytes for code 962 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
+; Total bytes of code 974, prolog size 19, PerfScore 696.99, instruction count 249, allocated bytes for code 974 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
; ============================================================ Unwind Info:

+3 (+1.26%) : 280069.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)

@@ -13,36 +13,37 @@ ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.Cci.MethodImplementation> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder>
-; V05 tmp2 [V05,T09] ( 2, 8 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder>
+; V05 tmp2 [V05,T10] ( 2, 8 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "impAppendStmt" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.EntityHandle> ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.EntityHandle> ;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <System.Reflection.Metadata.MethodImplementationHandle> ;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[Microsoft.Cci.MethodImplementation]>
-; V11 tmp8 [V11,T12] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Microsoft.Cci.MethodImplementation]>
+; V11 tmp8 [V11,T13] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Microsoft.Cci.MethodImplementation]>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Cci.MethodImplementation]>
-;* V13 tmp10 [V13,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp10 [V13,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.Cci.MethodImplementation]> ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref "field V02.ImplementingMethod (fldOffset=0x0)" P-INDEP ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref "field V02.ImplementedMethod (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T13] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "field V06._rowId (fldOffset=0x0)" P-INDEP -; V18 tmp15 [V18,T14] ( 2, 4 ) int -> r12 "field V07._vToken (fldOffset=0x0)" P-INDEP -; V19 tmp16 [V19,T15] ( 2, 4 ) int -> rcx "field V08._vToken (fldOffset=0x0)" P-INDEP
+; V17 tmp14 [V17,T14] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "field V06._rowId (fldOffset=0x0)" P-INDEP +; V18 tmp15 [V18,T15] ( 2, 4 ) int -> r12 "field V07._vToken (fldOffset=0x0)" P-INDEP +; V19 tmp16 [V19,T16] ( 2, 4 ) int -> rcx "field V08._vToken (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V09._rowId (fldOffset=0x0)" P-INDEP ; V21 tmp18 [V21,T04] ( 4, 17 ) ref -> r15 single-def "V01.[000..008)" ; V22 tmp19 [V22,T00] ( 6, 21 ) int -> r13 "V01.[008..012)"
-; V23 tmp20 [V23,T08] ( 2, 9 ) int -> r14 single-def "V01.[012..016)" -; V24 tmp21 [V24,T05] ( 3, 8 ) ref -> r12 "V01.[016..024)" -; V25 tmp22 [V25,T07] ( 2, 6 ) ref -> [rbp-0x40] spill-single-def "V01.[024..032)"
+; V23 tmp20 [V23,T09] ( 2, 9 ) int -> r14 single-def "V01.[012..016)" +; V24 tmp21 [V24,T06] ( 3, 8 ) ref -> r12 "V01.[016..024)" +; V25 tmp22 [V25,T08] ( 2, 6 ) ref -> [rbp-0x40] spill-single-def "V01.[024..032)"
;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "V12.[000..008)" ;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref single-def "V12.[008..012)"
-; V28 tmp25 [V28,T16] ( 2, 2 ) int -> r14 single-def "V12.[012..016)"
+; V28 tmp25 [V28,T17] ( 2, 2 ) int -> r14 single-def "V12.[012..016)"
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "V12.[016..024)" ;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "V12.[024..032)" ; V31 tmp28 [V31,T01] ( 3, 24 ) byref -> rdi "Spilling address for field-by-field copy" ; V32 tmp29 [V32,T02] ( 3, 24 ) ref -> rdi "arr expr"
-; V33 tmp30 [V33,T10] ( 2, 8 ) ref -> rsi "argument with side effect" -; V34 cse0 [V34,T06] ( 2, 8 ) int -> rdi "CSE - moderate"
+; V33 tmp30 [V33,T11] ( 2, 8 ) ref -> rsi "argument with side effect" +; V34 cse0 [V34,T07] ( 2, 8 ) int -> rdi "CSE - moderate" +; V35 cse1 [V35,T05] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 24 @@ -75,7 +76,7 @@ G_M16676_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r13d, r13d jmp SHORT G_M16676_IG04 ;; size=43 bbWeight=1 PerfScore 18.50
-G_M16676_IG03: ; bbWeight=2, gcVars=0000000000000080 {V25}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M16676_IG03: ; bbWeight=2, gcVars=0000000000000100 {V25}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r12] ; GC ptr vars +{V25} mov rcx, gword ptr [rbx+0x48] @@ -122,9 +123,10 @@ G_M16676_IG03: ; bbWeight=2, gcVars=0000000000000080 {V25}, gcrefRegs=900 ; gcrRegs -[rdi] ;; size=90 bbWeight=2 PerfScore 63.00 G_M16676_IG04: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov edi, dword ptr [r15+0x14] + cmp r14d, edi
jne SHORT G_M16676_IG08
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M16676_IG05: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [r15+0x10] cmp r13d, edi @@ -168,7 +170,7 @@ G_M16676_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 19, PerfScore 210.50, instruction count 70, allocated bytes for code 238 (MethodHash=1215bedb) for method Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
+; Total bytes of code 241, prolog size 19, PerfScore 204.50, instruction count 71, allocated bytes for code 241 (MethodHash=1215bedb) for method Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.linux.x64.checked.mch

-8 (-6.15%) : 243816.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,28 +8,27 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 14 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T01] ( 5, 22 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T00] ( 3, 24 ) ubyte -> r14
+; V00 this [V00,T01] ( 4, 18 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T00] ( 5, 26 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T02] ( 2, 16 ) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 PSPSym [V05,T03] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
lea rbp, [rsp+0x20] mov qword ptr [rbp-0x20], rsp mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=22 bbWeight=8 PerfScore 56.00
+ ;; size=23 bbWeight=8 PerfScore 42.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, rbx ; gcrRegs +[rdi] @@ -49,13 +48,11 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [r11]<unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- mov r14d, eax - ;; size=39 bbWeight=8 PerfScore 128.00
+ nop + ;; size=37 bbWeight=8 PerfScore 128.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d - jne SHORT G_M14120_IG05 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test eax, eax + jne SHORT G_M14120_IG04
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, rbx @@ -63,43 +60,37 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - test r14d, r14d - je SHORT G_M14120_IG02 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M14120_IG02 + ;; size=18 bbWeight=8 PerfScore 54.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r15]
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x20]
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - lea rax, G_M14120_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + lea rax, G_M14120_IG04
;; size=7 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 8
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 22, PerfScore 221.25, instruction count 48, allocated bytes for code 130 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 122, prolog size 23, PerfScore 226.75, instruction count 43, allocated bytes for code 122 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -107,14 +98,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: @@ -122,16 +112,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-9 (-2.62%) : 22496.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
@@ -9,10 +9,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -20,14 +20,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> rcx "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> rcx "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -41,30 +41,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -80,28 +80,28 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> rdx "arr expr"
-; V71 PSPSym [V71,T27] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> rdx "CSE - moderate" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- sub rsp, 40
+ sub rsp, 48
lea rbp, [rsp+0x50] xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x50], rsp mov rbx, rdi mov r15, rsi
- ;; size=35 bbWeight=1 PerfScore 9.50
+ ;; size=33 bbWeight=1 PerfScore 8.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
call [CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER] ; gcr arg pop 0 nop @@ -111,10 +111,10 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort]] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x30], rdx
+ mov bword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x28], rdx
cmp byte ptr [r15+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -124,9 +124,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] ; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0x38]
+ mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x28]
test rdx, rdx jne SHORT G_M19804_IG05 xor rax, rax @@ -152,14 +152,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0081 {rax rd ; byrRegs -[rax rsi rdi] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=22 bbWeight=4 PerfScore 25.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edx, dword ptr [rbx+0x14] + cmp r14d, edx + jne SHORT G_M19804_IG09 + mov edx, dword ptr [rbx+0x10] + cmp r13d, edx + jae SHORT G_M19804_IG10
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -168,7 +169,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx+8*rdi+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] call [CORINFO_HELP_RNGCHKFAIL] @@ -180,13 +181,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx]
- lea rdi, [rbp-0x38]
+ lea rdi, [rbp-0x30]
call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0 @@ -195,9 +192,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=28 bbWeight=8 PerfScore 132.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -209,9 +206,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=24 bbWeight=1 PerfScore 8.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -222,36 +219,34 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=13 bbWeight=1 PerfScore 3.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdi, [rbp-0x40]
call [CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT] ; gcr arg pop 0 nop ;; size=11 bbWeight=1 PerfScore 3.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 48
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 push r14 push r13
- push r12
push rbx ...

-6 (-1.86%) : 23057.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)

@@ -9,32 +9,33 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> -; V01 loc0 [V01,T15] ( 4, 1.50) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T11] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> +; V01 loc0 [V01,T16] ( 4, 1.50) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
; V02 loc1 [V02 ] ( 6, 5 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Tracing.DiagnosticCounter> ; V05 loc4 [V05,T06] ( 3, 10 ) ref -> rax class-hnd <<unknown class>>
-; V06 loc5 [V06,T08] ( 3, 6 ) ref -> rax class-hnd <<unknown class>> -; V07 loc6 [V07,T09] ( 3, 6 ) ref -> rax class-hnd <<unknown class>>
+; V06 loc5 [V06,T09] ( 3, 6 ) ref -> rax class-hnd <<unknown class>> +; V07 loc6 [V07,T10] ( 3, 6 ) ref -> rax class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T12] ( 2, 4 ) ubyte -> rdi "Inlining Arg" -; V10 tmp2 [V10,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V09 tmp1 [V09,T13] ( 2, 4 ) ubyte -> rdi "Inlining Arg" +; V10 tmp2 [V10,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T02] ( 4, 17 ) ref -> rbx single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T04] ( 4, 12 ) ref -> r13 "field V03._current (fldOffset=0x8)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 12 ) ref -> r13 "field V03._current (fldOffset=0x8)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 21 ) int -> r14 "field V03._index (fldOffset=0x10)" P-INDEP
-; V17 tmp9 [V17,T05] ( 3, 13 ) int -> r15 "field V03._version (fldOffset=0x14)" P-INDEP -; V18 tmp10 [V18,T13] ( 3, 3 ) ref -> rbx single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V17 tmp9 [V17,T07] ( 2, 9 ) int -> r15 "field V03._version (fldOffset=0x14)" P-INDEP +; V18 tmp10 [V18,T14] ( 3, 3 ) ref -> rbx single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V21 tmp13 [V21,T14] ( 2, 2 ) int -> r15 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp12 [V20,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V21 tmp13 [V21,T15] ( 2, 2 ) int -> r15 "field V11._version (fldOffset=0x14)" P-INDEP
; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V23 PSPSym [V23,T18] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T16] ( 3, 1.50) ref -> rsi "CSE - moderate" -; V25 cse1 [V25,T03] ( 3, 20 ) int -> r13 "CSE - aggressive"
+; V23 PSPSym [V23,T19] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T17] ( 3, 1.50) ref -> rsi "CSE - moderate" +; V25 cse1 [V25,T05] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V26 cse2 [V26,T04] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 32 @@ -61,7 +62,7 @@ G_M25759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor esi, esi mov dword ptr [rbp-0x28], esi ;; size=22 bbWeight=1 PerfScore 7.25
-G_M25759_IG03: ; bbWeight=1, gcVars=0000000000008000 {V01}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG03: ; bbWeight=1, gcVars=0000000000010000 {V01}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax] cmp byte ptr [rbp-0x28], 0 jne SHORT G_M25759_IG09 @@ -89,17 +90,18 @@ G_M25759_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d ;; size=11 bbWeight=1 PerfScore 4.25 G_M25759_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r13d, dword ptr [rbx+0x14] - cmp r15d, r13d - jne SHORT G_M25759_IG12 - ;; size=9 bbWeight=8 PerfScore 26.00
+ mov edi, dword ptr [rbx+0x14] + cmp r15d, edi + jne SHORT G_M25759_IG13 + ;; size=8 bbWeight=8 PerfScore 26.00
G_M25759_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M25759_IG15
+ mov edi, dword ptr [rbx+0x10] + cmp r14d, edi + jae SHORT G_M25759_IG14
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae SHORT G_M25759_IG13
+ jae SHORT G_M25759_IG12
mov eax, r14d mov r13, gword ptr [rdi+8*rax+0x10] ; gcrRegs +[r13] @@ -110,7 +112,7 @@ G_M25759_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 test rax, rax je SHORT G_M25759_IG10
- ;; size=41 bbWeight=4 PerfScore 68.00
+ ;; size=43 bbWeight=4 PerfScore 65.00
G_M25759_IG08: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r13] mov rdi, rax @@ -158,26 +160,21 @@ G_M25759_IG11: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp SHORT G_M25759_IG06 ;; size=25 bbWeight=2 PerfScore 19.50
-G_M25759_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- cmp r15d, r13d - jne SHORT G_M25759_IG14 - jmp SHORT G_M25759_IG15 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25759_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M25759_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x28], 0
- je SHORT G_M25759_IG17
+ je SHORT G_M25759_IG16
;; size=6 bbWeight=1 PerfScore 3.00
-G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x30] ; gcrRegs +[rdi] ; GC ptr vars -{V01} @@ -185,10 +182,10 @@ G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M25759_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M25759_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M25759_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop r13 @@ -197,8 +194,8 @@ G_M25759_IG18: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75
-G_M25759_IG19: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V01 V15}
+G_M25759_IG18: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V01 V16}
push rbp push r15 push r14 @@ -209,20 +206,20 @@ G_M25759_IG19: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x40] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M25759_IG20: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG19: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x28], 0
- je SHORT G_M25759_IG21
+ je SHORT G_M25759_IG20
mov rdi, gword ptr [rbp-0x30] ; gcrRegs +[rdi]
- ; GC ptr vars -{V01 V15}
+ ; GC ptr vars -{V01 V16}
call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25759_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M25759_IG22: ; bbWeight=0, funclet epilog, nogc, extend
+G_M25759_IG21: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16 pop rbx pop r13 @@ -232,7 +229,7 @@ G_M25759_IG22: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 322, prolog size 24, PerfScore 196.38, instruction count 101, allocated bytes for code 322 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 180.38, instruction count 99, allocated bytes for code 316 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
; ============================================================ Unwind Info: @@ -269,4 +266,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Diagnostics.Tracing.CounterGroup:ResetCounters():this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M25759_IG03..G_M25759_IG15) handled by [G_M25759_IG19..END) (fault)
+EH#0: try [G_M25759_IG03..G_M25759_IG14) handled by [G_M25759_IG18..END) (fault)
+3 (+0.59%) : 16624.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
@@ -9,26 +9,26 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T14] ( 8, 5.50) ref -> rbx class-hnd single-def <System.Object> -; V01 loc0 [V01,T24] ( 3, 1.50) ref -> r15 class-hnd single-def <System.Action> -; V02 loc1 [V02,T25] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>> -; V03 loc2 [V03,T26] ( 3, 1.50) ref -> rax class-hnd single-def <System.Threading.Tasks.Task> -; V04 loc3 [V04,T21] ( 4, 2 ) ref -> r14 class-hnd single-def <<unknown class>> -; V05 loc4 [V05,T27] ( 3, 1.50) ref -> r14 class-hnd single-def <<unknown class>> -; V06 loc5 [V06,T28] ( 3, 1.50) ref -> r14 class-hnd single-def <System.Delegate[]>
+; V00 arg0 [V00,T15] ( 8, 5.50) ref -> rbx class-hnd single-def <System.Object> +; V01 loc0 [V01,T25] ( 3, 1.50) ref -> r15 class-hnd single-def <System.Action> +; V02 loc1 [V02,T26] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>> +; V03 loc2 [V03,T27] ( 3, 1.50) ref -> rax class-hnd single-def <System.Threading.Tasks.Task> +; V04 loc3 [V04,T22] ( 4, 2 ) ref -> r14 class-hnd single-def <<unknown class>> +; V05 loc4 [V05,T28] ( 3, 1.50) ref -> r14 class-hnd single-def <<unknown class>> +; V06 loc5 [V06,T29] ( 3, 1.50) ref -> r14 class-hnd single-def <System.Delegate[]>
; V07 loc6 [V07,T01] ( 8, 52.50) ref -> rbx class-hnd exact single-def <<unknown class>> ;* V08 loc7 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Object]> ;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
-; V10 loc9 [V10,T15] ( 3, 6 ) ref -> r12 class-hnd <System.Delegate[]>
+; V10 loc9 [V10,T16] ( 3, 6 ) ref -> r12 class-hnd <System.Delegate[]>
; V11 loc10 [V11,T07] ( 3, 20 ) ref -> r12 class-hnd <System.Delegate[]> ; V12 loc11 [V12,T00] ( 5, 66 ) int -> [rbp-0x2C] ; V13 loc12 [V13,T02] ( 4, 48 ) ref -> rdx class-hnd <System.Delegate> ;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T17] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp2 [V16,T18] ( 3, 3 ) ref -> rbx class-hnd exact single-def "dup spill" <System.Delegate[]> -; V17 tmp3 [V17,T19] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V18 tmp4 [V18,T20] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Delegate[]> -; V19 tmp5 [V19,T22] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Action>
+; V15 tmp1 [V15,T18] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp2 [V16,T19] ( 3, 3 ) ref -> rbx class-hnd exact single-def "dup spill" <System.Delegate[]> +; V17 tmp3 [V17,T20] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V18 tmp4 [V18,T21] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Delegate[]> +; V19 tmp5 [V19,T23] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Action>
;* V20 tmp6 [V20 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Object]> ; V21 tmp7 [V21,T05] ( 3, 24 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Delegate[]> ; V22 tmp8 [V22,T03] ( 4, 32 ) int -> rsi "Inline stloc first use temp" @@ -38,15 +38,16 @@ ; V26 tmp12 [V26,T10] ( 4, 12.50) ref -> r14 single-def "field V08._list (fldOffset=0x0)" P-INDEP ; V27 tmp13 [V27,T12] ( 2, 6 ) ref -> rdi "field V08._current (fldOffset=0x8)" P-INDEP ; V28 tmp14 [V28,T04] ( 6, 20.50) int -> r13 "field V08._index (fldOffset=0x10)" P-INDEP
-; V29 tmp15 [V29,T16] ( 2, 4.50) int -> r15 "field V08._version (fldOffset=0x14)" P-INDEP -; V30 tmp16 [V30,T29] ( 3, 1.50) ref -> r14 single-def "field V20._list (fldOffset=0x0)" P-INDEP
+; V29 tmp15 [V29,T17] ( 2, 4.50) int -> r15 "field V08._version (fldOffset=0x14)" P-INDEP +; V30 tmp16 [V30,T30] ( 3, 1.50) ref -> r14 single-def "field V20._list (fldOffset=0x0)" P-INDEP
;* V31 tmp17 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._current (fldOffset=0x8)" P-INDEP
-;* V32 tmp18 [V32,T31] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x10)" P-INDEP -; V33 tmp19 [V33,T30] ( 2, 1 ) int -> r15 "field V20._version (fldOffset=0x14)" P-INDEP
+;* V32 tmp18 [V32,T32] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x10)" P-INDEP +; V33 tmp19 [V33,T31] ( 2, 1 ) int -> r15 "field V20._version (fldOffset=0x14)" P-INDEP
; V34 tmp20 [V34,T06] ( 3, 24 ) ref -> rdi "arr expr"
-; V35 tmp21 [V35,T23] ( 2, 2 ) long -> rdx "argument with side effect" -; V36 cse0 [V36,T11] ( 2, 8 ) int -> rdi "CSE - moderate" -; V37 cse1 [V37,T08] ( 3, 20 ) int -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V35 tmp21 [V35,T24] ( 2, 2 ) long -> rdx "argument with side effect" +; V36 cse0 [V36,T14] ( 2, 8 ) int -> rdi "CSE - moderate" +; V37 cse1 [V37,T11] ( 2, 8 ) int -> rdi "CSE - moderate" +; V38 cse2 [V38,T08] ( 3, 20 ) int -> [rbp-0x30] spill-single-def "CSE - moderate"
; ; Lcl frame size = 8 @@ -269,7 +270,8 @@ G_M37569_IG12: ; bbWeight=16, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=000 ;; size=12 bbWeight=16 PerfScore 56.00 G_M37569_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r12]
- cmp r15d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r15d, edi
jne SHORT G_M37569_IG20 mov edi, dword ptr [r14+0x10] cmp r13d, edi @@ -282,7 +284,7 @@ G_M37569_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, mov rdi, gword ptr [rdi+8*rax+0x10] inc r13d jmp G_M37569_IG08
- ;; size=41 bbWeight=4 PerfScore 71.00
+ ;; size=44 bbWeight=4 PerfScore 68.00
G_M37569_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi r14] mov rdi, rbx @@ -334,7 +336,7 @@ G_M37569_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 506, prolog size 19, PerfScore 456.88, instruction count 148, allocated bytes for code 506 (MethodHash=9db16d3e) for method System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
+; Total bytes of code 509, prolog size 19, PerfScore 453.88, instruction count 149, allocated bytes for code 509 (MethodHash=9db16d3e) for method System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
; ============================================================ Unwind Info:

+5 (+0.63%) : 22834.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

@@ -9,54 +9,55 @@ ; 0 inlinees with PGO data; 13 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T14] ( 8, 260 ) ref -> r15 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T00] ( 16,1249 ) ref -> r14 class-hnd single-def <<unknown class>>
+; V00 loc0 [V00,T15] ( 8, 260 ) ref -> r15 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T01] ( 15,1121 ) ref -> r14 class-hnd single-def <<unknown class>>
; V02 loc2 [V02,T05] ( 9, 641 ) ref -> rbx class-hnd single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 8, 392 ) int -> registers
-; V04 loc4 [V04,T38] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def <<unknown class>>
+; V04 loc4 [V04,T39] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def <<unknown class>>
; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V06 loc6 [V06,T25] ( 2, 192 ) long -> r13 -; V07 loc7 [V07,T28] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
+; V06 loc6 [V06,T26] ( 2, 192 ) long -> r13 +; V07 loc7 [V07,T29] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T01] ( 12,1152 ) int -> [rbp-0x3C]
+; V09 loc9 [V09,T00] ( 12,1152 ) int -> [rbp-0x3C]
; V10 loc10 [V10,T07] ( 5, 448 ) ref -> rsi class-hnd exact <System.Threading.TimerQueue> ; V11 loc11 [V11,T10] ( 4, 384 ) long -> rcx ; V12 loc12 [V12,T09] ( 6, 384 ) int -> [rbp-0x40] spill-single-def ;* V13 loc13 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]> ;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T36] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
+; V16 tmp1 [V16,T37] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V18 tmp3 [V18,T30] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V19 tmp4 [V19,T20] ( 2, 256 ) ubyte -> rdi "Inlining Arg" -; V20 tmp5 [V20,T22] ( 3, 192 ) ref -> rdi class-hnd exact "Inline stloc first use temp" <<unknown class>> -; V21 tmp6 [V21,T15] ( 4, 256 ) int -> rcx "Inline stloc first use temp" -; V22 tmp7 [V22,T17] ( 2, 256 ) ref -> rdx class-hnd exact "Inlining Arg" <System.Threading.TimerQueue>
+;* V18 tmp3 [V18,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V19 tmp4 [V19,T21] ( 2, 256 ) ubyte -> rdi "Inlining Arg" +; V20 tmp5 [V20,T23] ( 3, 192 ) ref -> rdi class-hnd exact "Inline stloc first use temp" <<unknown class>> +; V21 tmp6 [V21,T16] ( 4, 256 ) int -> rcx "Inline stloc first use temp" +; V22 tmp7 [V22,T18] ( 2, 256 ) ref -> rdx class-hnd exact "Inlining Arg" <System.Threading.TimerQueue>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
-;* V24 tmp9 [V24,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp9 [V24,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V26 tmp11 [V26,T13] ( 3, 272 ) int -> rdx "Inline stloc first use temp" -;* V27 tmp12 [V27,T33] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP -; V28 tmp13 [V28,T12] ( 2, 192 ) ref -> [rbp-0x60] spill-single-def "field V13._current (fldOffset=0x8)" P-INDEP
+; V26 tmp11 [V26,T14] ( 3, 272 ) int -> rdx "Inline stloc first use temp" +;* V27 tmp12 [V27,T34] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP +; V28 tmp13 [V28,T13] ( 2, 192 ) ref -> [rbp-0x60] spill-single-def "field V13._current (fldOffset=0x8)" P-INDEP
; V29 tmp14 [V29,T02] ( 6, 656 ) int -> [rbp-0x44] "field V13._index (fldOffset=0x10)" P-INDEP
-; V30 tmp15 [V30,T26] ( 2, 144 ) int -> r13 "field V13._version (fldOffset=0x14)" P-INDEP -; V31 tmp16 [V31,T31] ( 2, 32 ) ref -> rax "field V23._list (fldOffset=0x0)" P-INDEP
+; V30 tmp15 [V30,T27] ( 2, 144 ) int -> r13 "field V13._version (fldOffset=0x14)" P-INDEP +; V31 tmp16 [V31,T32] ( 2, 32 ) ref -> rax "field V23._list (fldOffset=0x0)" P-INDEP
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp18 [V33,T34] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP -; V34 tmp19 [V34,T32] ( 2, 32 ) int -> r13 "field V23._version (fldOffset=0x14)" P-INDEP
+;* V33 tmp18 [V33,T35] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP +; V34 tmp19 [V34,T33] ( 2, 32 ) int -> r13 "field V23._version (fldOffset=0x14)" P-INDEP
; V35 tmp20 [V35,T03] ( 3, 768 ) ref -> rdi "arr expr" ; V36 tmp21 [V36,T11] ( 3, 384 ) ref -> rdx "arr expr"
-; V37 tmp22 [V37,T18] ( 2, 256 ) ref -> rsi "arr expr"
+; V37 tmp22 [V37,T19] ( 2, 256 ) ref -> rsi "arr expr"
; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> rcx "arr expr"
-; V39 tmp24 [V39,T19] ( 2, 256 ) ref -> rdi "argument with side effect" -; V40 PSPSym [V40,T37] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym" -; V41 cse0 [V41,T35] ( 4, 4 ) byref -> rbx "CSE - moderate" -; V42 cse1 [V42,T29] ( 6, 51 ) ref -> rsi multi-def "CSE - moderate" -; V43 cse2 [V43,T06] ( 3, 384 ) int -> rdx "CSE - moderate" -; V44 cse3 [V44,T16] ( 4, 256 ) int -> rdi "CSE - moderate" -; V45 cse4 [V45,T23] ( 3, 192 ) ref -> rsi "CSE - moderate" -; V46 cse5 [V46,T27] ( 2, 128 ) int -> rdx "CSE - moderate" -; V47 cse6 [V47,T24] ( 3, 192 ) int -> r8 "CSE - moderate"
+; V39 tmp24 [V39,T20] ( 2, 256 ) ref -> rdi "argument with side effect" +; V40 PSPSym [V40,T38] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym" +; V41 cse0 [V41,T36] ( 4, 4 ) byref -> rbx "CSE - moderate" +; V42 cse1 [V42,T30] ( 6, 51 ) ref -> rsi multi-def "CSE - moderate" +; V43 cse2 [V43,T12] ( 3, 384 ) int -> rcx "CSE - moderate" +; V44 cse3 [V44,T06] ( 3, 384 ) int -> rdx "CSE - moderate" +; V45 cse4 [V45,T17] ( 4, 256 ) int -> rdi "CSE - moderate" +; V46 cse5 [V46,T24] ( 3, 192 ) ref -> rsi "CSE - moderate" +; V47 cse6 [V47,T28] ( 2, 128 ) int -> rdx "CSE - moderate" +; V48 cse7 [V48,T25] ( 3, 192 ) int -> r8 "CSE - moderate"
; ; Lcl frame size = 72 @@ -86,7 +87,7 @@ G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor esi, esi mov dword ptr [rbp-0x30], esi ;; size=32 bbWeight=1 PerfScore 9.50
-G_M45973_IG03: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+G_M45973_IG03: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; byrRegs -[rax] cmp byte ptr [rbp-0x30], 0 je SHORT G_M45973_IG05 @@ -160,7 +161,7 @@ G_M45973_IG09: ; bbWeight=64, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=000 xor esi, esi mov dword ptr [rbp-0x38], esi ;; size=56 bbWeight=64 PerfScore 912.00
-G_M45973_IG10: ; bbWeight=64, gcVars=0000000010000000 {V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG10: ; bbWeight=64, gcVars=0000000020000000 {V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x38], 0 jne G_M45973_IG24 lea rsi, [rbp-0x38] @@ -333,8 +334,8 @@ G_M45973_IG28: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=000 ; gcrRegs -[rax] jmp SHORT G_M45973_IG30 ;; size=11 bbWeight=16 PerfScore 72.00
-G_M45973_IG29: ; bbWeight=64, gcVars=0000000000001000 {V28}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V12 V28}
+G_M45973_IG29: ; bbWeight=64, gcVars=0000000000002000 {V28}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V28}
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0 @@ -343,7 +344,7 @@ G_M45973_IG29: ; bbWeight=64, gcVars=0000000000001000 {V28}, gcrefRegs=C0 mov rsi, gword ptr [rbp-0x60] ; gcrRegs +[rsi] cmp dword ptr [rdi], edi
- ; GC ptr vars -{V12 V28}
+ ; GC ptr vars -{V28}
call [System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this] ; gcrRegs -[rsi rdi] ; byrRegs -[rax] @@ -351,7 +352,8 @@ G_M45973_IG29: ; bbWeight=64, gcVars=0000000000001000 {V28}, gcrefRegs=C0 mov eax, dword ptr [rbp-0x44] ;; size=28 bbWeight=64 PerfScore 832.00 G_M45973_IG30: ; bbWeight=128, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r14+0x14]
+ mov ecx, dword ptr [r14+0x14] + cmp r13d, ecx
jne SHORT G_M45973_IG37 mov edx, dword ptr [r14+0x10] cmp eax, edx @@ -367,16 +369,17 @@ G_M45973_IG30: ; bbWeight=128, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=00 inc eax mov dword ptr [rbp-0x44], eax jmp SHORT G_M45973_IG29
- ;; size=41 bbWeight=128 PerfScore 2528.00
+ ;; size=44 bbWeight=128 PerfScore 2432.00
G_M45973_IG31: ; bbWeight=128, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] ; GC ptr vars -{V28}
- inc dword ptr [r14+0x14]
+ inc ecx + mov dword ptr [r14+0x14], ecx
xor edi, edi mov dword ptr [r14+0x10], edi test edx, edx jle SHORT G_M45973_IG33
- ;; size=14 bbWeight=128 PerfScore 704.00
+ ;; size=16 bbWeight=128 PerfScore 480.00
G_M45973_IG32: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] @@ -414,8 +417,8 @@ G_M45973_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M45973_IG38: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V38}
+G_M45973_IG38: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V39}
push rbp push r15 push r14 @@ -427,12 +430,12 @@ G_M45973_IG38: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x70] ;; size=22 bbWeight=0 PerfScore 0.00
-G_M45973_IG39: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG39: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0 je SHORT G_M45973_IG40 mov rdi, gword ptr [rbp-0x50] ; gcrRegs +[rdi]
- ; GC ptr vars -{V04 V38}
+ ; GC ptr vars -{V04 V39}
call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -450,8 +453,8 @@ G_M45973_IG41: ; bbWeight=0, funclet epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00
-G_M45973_IG42: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V07 V28}
+G_M45973_IG42: ; bbWeight=0, gcVars=0000000020000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V07 V29}
push rbp push r15 push r14 @@ -463,12 +466,12 @@ G_M45973_IG42: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=000 mov qword ptr [rsp], rbp lea rbp, [rbp+0x70] ;; size=22 bbWeight=0 PerfScore 0.00
-G_M45973_IG43: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG43: ; bbWeight=0, gcVars=0000000020000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x38], 0 je SHORT G_M45973_IG44 mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi]
- ; GC ptr vars -{V07 V28}
+ ; GC ptr vars -{V07 V29}
call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -487,7 +490,7 @@ G_M45973_IG45: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 795, prolog size 23, PerfScore 12939.75, instruction count 234, allocated bytes for code 795 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts)
+; Total bytes of code 800, prolog size 23, PerfScore 12619.75, instruction count 236, allocated bytes for code 800 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.50%) : 22669.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)

@@ -9,26 +9,27 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
; V02 loc0 [V02 ] ( 3, 7 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
-;* V08 tmp3 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp3 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V10 tmp5 [V10,T02] ( 4, 17 ) ref -> r15 single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T04] ( 2, 6 ) ref -> rdi "field V03._current (fldOffset=0x8)" P-INDEP
+; V11 tmp6 [V11,T05] ( 2, 6 ) ref -> rdi "field V03._current (fldOffset=0x8)" P-INDEP
; V12 tmp7 [V12,T00] ( 6, 21 ) int -> r13 "field V03._index (fldOffset=0x10)" P-INDEP
-; V13 tmp8 [V13,T05] ( 2, 9 ) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP -; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T06] ( 2, 9 ) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP +; V14 tmp9 [V14,T11] ( 3, 3 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._current (fldOffset=0x8)" P-INDEP
-;* V16 tmp11 [V16,T12] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP -; V17 tmp12 [V17,T11] ( 2, 2 ) int -> r14 "field V07._version (fldOffset=0x14)" P-INDEP
+;* V16 tmp11 [V16,T13] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP +; V17 tmp12 [V17,T12] ( 2, 2 ) int -> r14 "field V07._version (fldOffset=0x14)" P-INDEP
; V18 tmp13 [V18,T01] ( 3, 24 ) ref -> rsi "arr expr"
-; V19 cse0 [V19,T03] ( 2, 8 ) int -> rsi "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 8 ) int -> rsi "CSE - aggressive" +; V20 cse1 [V20,T03] ( 2, 16 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -66,9 +67,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 ; gcrRegs -[rdx rdi] ;; size=15 bbWeight=2 PerfScore 13.50 G_M38703_IG05: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov esi, dword ptr [r15+0x14] + cmp r14d, esi
jne SHORT G_M38703_IG10
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M38703_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [r15+0x10] cmp r13d, esi @@ -104,7 +106,7 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 17, PerfScore 133.00, instruction count 41, allocated bytes for code 120 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
+; Total bytes of code 123, prolog size 17, PerfScore 127.00, instruction count 42, allocated bytes for code 123 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-18 (-8.00%) : 292852.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessagesubyte (FullOpts)

@@ -8,76 +8,75 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 10 ) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte]> -; V01 arg1 [V01,T01] ( 5, 15 ) ref -> [rbp-0x38] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> -; V02 arg2 [V02,T07] ( 3, 2 ) byref -> [rbp-0x40] EH-live single-def
+; V00 arg0 [V00,T04] ( 4, 10 ) ref -> [rbp-0x28] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte]> +; V01 arg1 [V01,T00] ( 5, 19 ) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> +; V02 arg2 [V02,T07] ( 3, 2 ) byref -> [rbp-0x38] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x14] do-not-enreg[Z] EH-live -; V05 loc2 [V05 ] ( 6, 28 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x0C] do-not-enreg[Z] EH-live +; V05 loc2 [V05 ] ( 6, 32 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
+; V08 tmp1 [V08,T01] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader>
-; V10 tmp3 [V10,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
+; V10 tmp3 [V10,T02] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> ; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V13 tmp6 [V13,T06] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V14 tmp7 [V14,T00] ( 3, 24 ) ubyte -> r15 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V16 tmp9 [V16 ] ( 4, 20 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP -; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
+; V16 tmp9 [V16 ] ( 4, 24 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP +; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref "field V09._id (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) long -> zero-ref "field V11._id (fldOffset=0x0)" P-INDEP
-; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M8667_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push rbx
- sub rsp, 64 - lea rbp, [rsp+0x50]
+ sub rsp, 56 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x50], rsp - mov gword ptr [rbp-0x30], rdi
+ mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x40], rsp + mov gword ptr [rbp-0x28], rdi
; GC ptr vars +{V00}
- mov gword ptr [rbp-0x38], rsi
+ mov gword ptr [rbp-0x30], rsi
; GC ptr vars +{V01}
- mov bword ptr [rbp-0x40], rdx
+ mov bword ptr [rbp-0x38], rdx
; GC ptr vars +{V02} mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=38 bbWeight=1 PerfScore 9.25 -G_M8667_IG02: ; bbWeight=1, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=36 bbWeight=1 PerfScore 8.25 +G_M8667_IG02: ; bbWeight=1, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi] mov rax, gword ptr [rsi+0x10] ; gcrRegs +[rax] cmp byte ptr [rax], al xor eax, eax ; gcrRegs -[rax]
- mov dword ptr [rbp-0x14], eax
+ mov dword ptr [rbp-0x0C], eax
jmp SHORT G_M8667_IG05 ;; size=13 bbWeight=1 PerfScore 8.25 G_M8667_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi]
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rdx, rbx ; gcrRegs +[rdx]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdx rdi] ; gcr arg pop 0 test eax, eax je SHORT G_M8667_IG04
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rdx, rbx ; gcrRegs +[rdx]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdx rdi] @@ -86,64 +85,56 @@ G_M8667_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ;; size=53 bbWeight=4 PerfScore 50.00 G_M8667_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- mov esi, dword ptr [rbp-0x14]
+ mov esi, dword ptr [rbp-0x0C]
inc esi
- mov dword ptr [rbp-0x14], esi - mov rbx, gword ptr [rbp-0x30]
+ mov dword ptr [rbp-0x0C], esi + mov rbx, gword ptr [rbp-0x28]
; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi] ;; size=16 bbWeight=4 PerfScore 17.00 G_M8667_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rsi+0x08] ; gcrRegs +[rdi]
- lea rsi, [rbp-0x28]
+ lea rsi, [rbp-0x20]
; gcrRegs -[rsi] cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov r15d, eax - test r15d, r15d - je SHORT G_M8667_IG07 - ;; size=24 bbWeight=8 PerfScore 80.00 -G_M8667_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, gword ptr [rbp-0x38]
+ test eax, eax + je SHORT G_M8667_IG06 + mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi] mov rdi, gword ptr [rsi+0x10] ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x20]
cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=20 bbWeight=4 PerfScore 40.00 -G_M8667_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test r15d, r15d - jne SHORT G_M8667_IG03 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M8667_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ jmp SHORT G_M8667_IG03 + ;; size=42 bbWeight=8 PerfScore 174.00 +G_M8667_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[rbx] ; GC ptr vars -{V00 V01 V02}
- add rsp, 64
+ add rsp, 56
pop rbx
- pop r15
pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M8667_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M8667_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp
- push r15
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x50] - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M8667_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ lea rbp, [rbp+0x40] + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M8667_IG08: ; bbWeight=0, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V01 V02 V04}
- mov rdi, bword ptr [rbp-0x40]
+ mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi] xor edx, edx call [<unknown method>] @@ -152,15 +143,14 @@ G_M8667_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcrefR ; gcr arg pop 0 lea rax, G_M8667_IG04 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M8667_IG11: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 16
+G_M8667_IG09: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 8
pop rbx
- pop r15
pop rbp ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 225, prolog size 38, PerfScore 217.25, instruction count 70, allocated bytes for code 225 (MethodHash=12a5de24) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
+; Total bytes of code 207, prolog size 36, PerfScore 259.75, instruction count 64, allocated bytes for code 207 (MethodHash=12a5de24) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -168,29 +158,27 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M8667_IG03..G_M8667_IG04) handled by [G_M8667_IG09..END) (class: 1000022)
+EH#0: try [G_M8667_IG03..G_M8667_IG04) handled by [G_M8667_IG07..END) (class: 1000022)
-8 (-6.78%) : 276117.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> r14
+; V00 this [V00,T02] ( 4, 18 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> rdi class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -20,21 +20,20 @@ ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP ; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
lea rbp, [rsp+0x20] mov qword ptr [rbp-0x20], rsp mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=22 bbWeight=8 PerfScore 56.00
+ ;; size=23 bbWeight=8 PerfScore 42.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref xor rdi, rdi ; gcrRegs +[rdi] @@ -48,13 +47,11 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
- mov r14d, eax - ;; size=27 bbWeight=8 PerfScore 80.00
+ nop + ;; size=25 bbWeight=8 PerfScore 80.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d - jne SHORT G_M14120_IG05 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test eax, eax + jne SHORT G_M14120_IG04
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, rbx @@ -62,43 +59,37 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - test r14d, r14d - je SHORT G_M14120_IG02 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M14120_IG02 + ;; size=18 bbWeight=8 PerfScore 54.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r15]
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x20]
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - lea rax, G_M14120_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + lea rax, G_M14120_IG04
;; size=7 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 8
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 22, PerfScore 173.25, instruction count 45, allocated bytes for code 118 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 110, prolog size 23, PerfScore 178.75, instruction count 40, allocated bytes for code 110 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -106,14 +97,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: @@ -121,16 +111,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-25 (-4.58%) : 292745.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
@@ -9,72 +9,71 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 54 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]>
-; V01 loc0 [V01 ] ( 4, 28 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V01 loc0 [V01 ] ( 4, 32 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
; V02 loc1 [V02,T11] ( 3, 13 ) ubyte -> r15
-; V03 loc2 [V03 ] ( 2, 16 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
+; V03 loc2 [V03 ] ( 2, 16 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc3 [V04,T12] ( 2, 9 ) ubyte -> r14
-; V05 loc4 [V05,T07] ( 4, 21 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <<unknown class>> -; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc6 [V07,T09] ( 2, 16 ) ubyte -> rsi -; V08 loc7 [V08,T15] ( 3, 3 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live -; V09 loc8 [V09,T16] ( 4, 2 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>> -; V10 loc9 [V10 ] ( 6, 5 ) ubyte -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc4 [V05,T06] ( 4, 21 ) ref -> [rbp-0x50] do-not-enreg[Z] class-hnd EH-live <<unknown class>> +; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V07 loc6 [V07,T08] ( 2, 16 ) ubyte -> rsi +; V08 loc7 [V08,T15] ( 3, 3 ) ubyte -> [rbp-0x3C] do-not-enreg[Z] EH-live +; V09 loc8 [V09,T16] ( 4, 2 ) ref -> [rbp-0x58] class-hnd EH-live spill-single-def <<unknown class>> +; V10 loc9 [V10 ] ( 6, 5 ) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T08] ( 3, 16 ) int -> rsi
+; V12 tmp1 [V12,T07] ( 3, 16 ) int -> rsi
; V13 tmp2 [V13,T03] ( 2, 32 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]> ;* V14 tmp3 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> ; V15 tmp4 [V15,T13] ( 3, 6 ) ref -> rdi class-hnd single-def "dup spill" <System.Threading.Tasks.Dataflow.Internal.BoundingState> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V17 tmp6 [V17,T04] ( 2, 32 ) ubyte -> rdi "Inlining Arg" ; V18 tmp7 [V18,T01] ( 3, 48 ) ref -> rsi class-hnd "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.BoundingState>
-; V19 tmp8 [V19,T02] ( 3, 40 ) ref -> r14 class-hnd exact "Inlining Arg" <<unknown class>> -; V20 tmp9 [V20,T06] ( 3, 24 ) ubyte -> r13 "Inline stloc first use temp"
+; V19 tmp8 [V19,T02] ( 3, 48 ) ref -> r14 class-hnd exact "Inlining Arg" <<unknown class>> +; V20 tmp9 [V20,T09] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V23 tmp12 [V23,T14] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
-; V24 tmp13 [V24 ] ( 3, 20 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP -; V25 tmp14 [V25 ] ( 2, 16 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
+; V24 tmp13 [V24 ] ( 3, 24 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP +; V25 tmp14 [V25 ] ( 2, 16 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
;* V26 tmp15 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._id (fldOffset=0x0)" P-INDEP
-; V27 PSPSym [V27,T17] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V27 PSPSym [V27,T17] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V28 cse0 [V28,T05] ( 3, 24 ) ref -> rdi "CSE - aggressive" ; V29 cse1 [V29,T10] ( 6, 15 ) ref -> rsi multi-def "CSE - moderate" ;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M36191_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 80 - lea rbp, [rsp+0x70]
+ sub rsp, 72 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0x70], rsp
+ mov qword ptr [rbp-0x28], rax + mov qword ptr [rbp-0x60], rsp
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=30 bbWeight=8 PerfScore 66.00
+ ;; size=28 bbWeight=8 PerfScore 58.00
G_M36191_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rsi, gword ptr [rsi+0x10]
- mov gword ptr [rbp-0x58], rsi
+ mov gword ptr [rbp-0x50], rsi
; GC ptr vars +{V05} xor esi, esi ; gcrRegs -[rsi]
- mov dword ptr [rbp-0x40], esi
+ mov dword ptr [rbp-0x38], esi
;; size=17 bbWeight=8 PerfScore 50.00
-G_M36191_IG03: ; bbWeight=8, gcVars=0000000000000080 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x40], 0 - jne G_M36191_IG11 - lea rsi, [rbp-0x40] - mov rdi, gword ptr [rbp-0x58]
+G_M36191_IG03: ; bbWeight=8, gcVars=0000000000000040 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x38], 0 + jne G_M36191_IG10 + lea rsi, [rbp-0x38] + mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi] call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- movzx rdi, byte ptr [rbp-0x40]
+ movzx rdi, byte ptr [rbp-0x38]
test edi, edi jne SHORT G_M36191_IG05 ;; size=32 bbWeight=8 PerfScore 62.00 @@ -100,7 +99,7 @@ G_M36191_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rsi] mov eax, dword ptr [rsi+0x0C] cmp eax, dword ptr [rsi+0x08]
- jl SHORT G_M36191_IG12
+ jl SHORT G_M36191_IG08
;; size=28 bbWeight=8 PerfScore 108.00 G_M36191_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi] @@ -111,72 +110,66 @@ G_M36191_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, G_M36191_IG07: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz movzx rsi, sil cmp byte ptr [rbx+0x28], 0
- jne SHORT G_M36191_IG10
+ jne SHORT G_M36191_IG09
cmp byte ptr [rdi+0x48], 0
- jne SHORT G_M36191_IG10
+ jne SHORT G_M36191_IG09
test esi, esi
- je SHORT G_M36191_IG10
+ je SHORT G_M36191_IG09
mov rdi, gword ptr [rbx+0x20] mov r14, gword ptr [rdi+0x08] ; gcrRegs +[r14] mov rdi, gword ptr [r14+0x08]
- lea rsi, [rbp-0x30]
+ lea rsi, [rbp-0x28]
cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov r13d, eax - test r13d, r13d
+ test eax, eax
je SHORT G_M36191_IG09
- ;; size=52 bbWeight=8 PerfScore 188.00 -G_M36191_IG08: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r14+0x10] ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x30]
+ mov rsi, gword ptr [rbp-0x28]
; gcrRegs +[rsi] cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rsi rdi r14] ; gcr arg pop 0
- ;; size=16 bbWeight=4 PerfScore 36.00 -G_M36191_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test r13d, r13d - jne SHORT G_M36191_IG13 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M36191_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx]
+ jmp SHORT G_M36191_IG11 + ;; size=66 bbWeight=8 PerfScore 274.00 +G_M36191_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + mov esi, 1 + jmp SHORT G_M36191_IG07 + ;; size=7 bbWeight=4 PerfScore 9.00 +G_M36191_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rdi]
xor edi, edi
- mov dword ptr [rbp-0x44], edi - jmp SHORT G_M36191_IG17
+ mov dword ptr [rbp-0x3C], edi + jmp SHORT G_M36191_IG15
;; size=7 bbWeight=1 PerfScore 3.25
-G_M36191_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36191_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36191_IG12: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi] - mov esi, 1 - jmp SHORT G_M36191_IG07 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M36191_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - cmp byte ptr [rbp-0x40], 0 - je SHORT G_M36191_IG15
+G_M36191_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx] + cmp byte ptr [rbp-0x38], 0 + je SHORT G_M36191_IG13
;; size=6 bbWeight=8 PerfScore 24.00
-G_M36191_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rdi, gword ptr [rbp-0x58]
+G_M36191_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi] ; GC ptr vars -{V05} call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=9 bbWeight=4 PerfScore 8.00
-G_M36191_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rdi, gword ptr [rbp-0x30]
+G_M36191_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
- lea rcx, [rbp-0x38] - mov rsi, qword ptr [rbp-0x28]
+ lea rcx, [rbp-0x30] + mov rsi, qword ptr [rbp-0x20]
mov rdx, rbx ; gcrRegs +[rdx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -184,51 +177,51 @@ G_M36191_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx rdi] ; gcr arg pop 0 mov r14d, eax
- cmp byte ptr [rbp-0x38], 0
+ cmp byte ptr [rbp-0x30], 0
je G_M36191_IG02 ;; size=41 bbWeight=8 PerfScore 74.00
-G_M36191_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M36191_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rdi, gword ptr [rsi+0x10] ; gcrRegs +[rdi]
- mov gword ptr [rbp-0x60], rdi
+ mov gword ptr [rbp-0x58], rdi
; GC ptr vars +{V09} xor esi, esi ; gcrRegs -[rsi]
- mov dword ptr [rbp-0x50], esi - jmp SHORT G_M36191_IG19
+ mov dword ptr [rbp-0x48], esi + jmp SHORT G_M36191_IG17
;; size=19 bbWeight=1 PerfScore 8.25
-G_M36191_IG17: ; bbWeight=1, gcVars=0000000000000080 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36191_IG15: ; bbWeight=1, gcVars=0000000000000040 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi]
- ; GC ptr vars -{V09} +{V05 V07}
+ ; GC ptr vars -{V09} +{V05}
mov rdi, rsp
- call G_M36191_IG27
+ call G_M36191_IG25
;; size=8 bbWeight=1 PerfScore 1.25
-G_M36191_IG18: ; bbWeight=1, nogc, isz, extend - jmp SHORT G_M36191_IG25
+G_M36191_IG16: ; bbWeight=1, nogc, isz, extend + jmp SHORT G_M36191_IG23
;; size=2 bbWeight=1 PerfScore 2.00
-G_M36191_IG19: ; bbWeight=1, gcVars=0000000000010000 {V09}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
...

+6 (+1.97%) : 251718.dasm - System.Collections.ObjectModel.KeyedCollection2[System.__Canon,System.Nullable1[int]]:CreateDictionary():this (FullOpts)

@@ -8,43 +8,44 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 8, 10 ) ref -> rbx this class-hnd single-def <System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T06] ( 8, 10 ) ref -> rbx this class-hnd single-def <System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Nullable`1[int]]> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-; V03 loc2 [V03,T13] ( 3, 6 ) ref -> rax class-hnd <System.__Canon>
+; V03 loc2 [V03,T14] ( 3, 6 ) ref -> rax class-hnd <System.__Canon>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T14] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V05 tmp1 [V05,T15] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]>
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V08 tmp4 [V08,T19] ( 3, 4.25) ref -> rsi single-def "CASTCLASS eval op1" -; V09 tmp5 [V09,T24] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V10 tmp6 [V10,T11] ( 6, 8.75) ref -> r14 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Nullable`1[int]]>
+; V08 tmp4 [V08,T20] ( 3, 4.25) ref -> rsi single-def "CASTCLASS eval op1" +; V09 tmp5 [V09,T25] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" +; V10 tmp6 [V10,T12] ( 6, 8.75) ref -> r14 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Nullable`1[int]]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Nullable`1[int]]>
-; V12 tmp8 [V12,T06] ( 3, 12 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V12 tmp8 [V12,T07] ( 3, 12 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V14 tmp10 [V14,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp10 [V14,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Nullable`1[int]]>
-; V16 tmp12 [V16,T16] ( 3, 6 ) ubyte -> [rbp-0x34] "field V02.hasValue (fldOffset=0x0)" P-INDEP -; V17 tmp13 [V17,T22] ( 2, 4 ) int -> rsi "field V02.value (fldOffset=0x4)" P-INDEP
+; V16 tmp12 [V16,T17] ( 3, 6 ) ubyte -> [rbp-0x34] "field V02.hasValue (fldOffset=0x0)" P-INDEP +; V17 tmp13 [V17,T23] ( 2, 4 ) int -> rsi "field V02.value (fldOffset=0x4)" P-INDEP
; V18 tmp14 [V18,T04] ( 4, 17 ) ref -> r14 single-def "V01.[000..008)" ; V19 tmp15 [V19,T00] ( 6, 21 ) int -> r12 "V01.[008..012)"
-; V20 tmp16 [V20,T10] ( 2, 9 ) int -> r13 "V01.[012..016)" -; V21 tmp17 [V21,T08] ( 2, 6 ) ubyte -> rax "V01.[016..017)" -; V22 tmp18 [V22,T09] ( 2, 6 ) int -> rsi "V01.[020..024)"
+; V20 tmp16 [V20,T11] ( 2, 9 ) int -> r13 "V01.[012..016)" +; V21 tmp17 [V21,T09] ( 2, 6 ) ubyte -> rax "V01.[016..017)" +; V22 tmp18 [V22,T10] ( 2, 6 ) int -> rsi "V01.[020..024)"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "V11.[000..008)" ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "V11.[008..012)"
-; V25 tmp21 [V25,T23] ( 2, 2 ) int -> r13 "V11.[012..016)"
+; V25 tmp21 [V25,T24] ( 2, 2 ) int -> r13 "V11.[012..016)"
;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref "V11.[016..017)" ;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "V11.[020..024)" ; V28 tmp24 [V28,T01] ( 3, 24 ) byref -> rsi "Spilling address for field-by-field copy" ; V29 tmp25 [V29,T02] ( 3, 24 ) ref -> rsi "arr expr" ; V30 tmp26 [V30,T03] ( 5, 20 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V31 cse0 [V31,T07] ( 2, 8 ) int -> rsi "CSE - moderate" -; V32 cse1 [V32,T20] ( 3, 4 ) long -> r15 "CSE - moderate" -; V33 cse2 [V33,T15] ( 3, 6 ) ref -> rsi "CSE - moderate" -; V34 rat0 [V34,T18] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V35 rat1 [V35,T21] ( 3, 4 ) long -> rsi "runtime lookup" -; V36 rat2 [V36,T17] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V31 cse0 [V31,T08] ( 2, 8 ) int -> rsi "CSE - moderate" +; V32 cse1 [V32,T05] ( 2, 16 ) int -> rsi "CSE - aggressive" +; V33 cse2 [V33,T21] ( 3, 4 ) long -> r15 "CSE - moderate" +; V34 cse3 [V34,T16] ( 3, 6 ) ref -> rsi "CSE - moderate" +; V35 rat0 [V35,T19] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V36 rat1 [V36,T22] ( 3, 4 ) long -> rsi "runtime lookup" +; V37 rat2 [V37,T18] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 24 @@ -156,9 +157,10 @@ G_M64917_IG09: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, ; gcrRegs -[rsi rdi] ;; size=83 bbWeight=2 PerfScore 53.50 G_M64917_IG10: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r14+0x14]
+ mov esi, dword ptr [r14+0x14] + cmp r13d, esi
jne SHORT G_M64917_IG14
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M64917_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [r14+0x10] cmp r12d, esi @@ -175,8 +177,8 @@ G_M64917_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, mov esi, dword ptr [rsi+0x04] ; byrRegs -[rsi] inc r12d
- jmp SHORT G_M64917_IG09 - ;; size=38 bbWeight=4 PerfScore 67.00
+ jmp G_M64917_IG09 + ;; size=41 bbWeight=4 PerfScore 67.00
G_M64917_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r14] add rsp, 24 @@ -196,7 +198,7 @@ G_M64917_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 305, prolog size 23, PerfScore 206.62, instruction count 90, allocated bytes for code 305 (MethodHash=a0cb026a) for method System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)
+; Total bytes of code 311, prolog size 23, PerfScore 200.62, instruction count 91, allocated bytes for code 311 (MethodHash=a0cb026a) for method System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.13%) : 279508.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)

@@ -8,32 +8,33 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> -; V01 arg1 [V01,T11] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
+; V00 arg0 [V00,T11] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> +; V01 arg1 [V01,T12] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]> ; V03 loc1 [V03 ] ( 4, 8 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.IO.Compression.ZipGenericExtraField> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp2 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> ; V08 tmp4 [V08 ] ( 2, 4 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._data (fldOffset=0x0)" P-DEP ; V09 tmp5 [V09 ] ( 2, 4 ) ushort -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._tag (fldOffset=0x8)" P-DEP ; V10 tmp6 [V10 ] ( 2, 4 ) ushort -> [rbp-0x26] do-not-enreg[X] addr-exposed "field V03._size (fldOffset=0xa)" P-DEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> r14 single-def "V02.[000..008)" ; V12 tmp8 [V12,T01] ( 6, 21 ) int -> r13 "V02.[008..012)"
-; V13 tmp9 [V13,T08] ( 2, 9 ) int -> r15 "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rsi "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ushort -> rax "V02.[024..026)" -; V16 tmp12 [V16,T07] ( 2, 6 ) ushort -> rdi "V02.[026..028)"
+; V13 tmp9 [V13,T09] ( 2, 9 ) int -> r15 "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rsi "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ushort -> rax "V02.[024..026)" +; V16 tmp12 [V16,T08] ( 2, 6 ) ushort -> rdi "V02.[026..028)"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)"
-; V19 tmp15 [V19,T12] ( 2, 2 ) int -> r15 "V05.[012..016)"
+; V19 tmp15 [V19,T13] ( 2, 2 ) int -> r15 "V05.[012..016)"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)" ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "V05.[024..026)" ;* V22 tmp18 [V22 ] ( 0, 0 ) ushort -> zero-ref "V05.[026..028)" ; V23 tmp19 [V23,T00] ( 4, 32 ) byref -> rdi "Spilling address for field-by-field copy" ; V24 tmp20 [V24,T02] ( 3, 24 ) ref -> rdi "arr expr"
-; V25 cse0 [V25,T04] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T05] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V26 cse1 [V26,T04] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -69,9 +70,10 @@ G_M41630_IG03: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 ; gcrRegs -[rsi] ;; size=25 bbWeight=2 PerfScore 13.50 G_M41630_IG04: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- cmp r15d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r15d, edi
jne SHORT G_M41630_IG08
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M41630_IG05: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [r14+0x10] cmp r13d, edi @@ -111,7 +113,7 @@ G_M41630_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 141, prolog size 23, PerfScore 149.25, instruction count 46, allocated bytes for code 141 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
+; Total bytes of code 144, prolog size 23, PerfScore 143.25, instruction count 47, allocated bytes for code 144 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
; ============================================================ Unwind Info:

+24 (+3.61%) : 170020.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)

@@ -112,7 +112,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG03: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -139,7 +139,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -158,11 +158,11 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 test r15d, r15d mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx]
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=37 bbWeight=1 PerfScore 7.50 G_M40104_IG09: ; bbWeight=4.00, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, gcvars, byref cmp eax, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=11 bbWeight=4.00 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.48, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref mov edx, 192 @@ -173,7 +173,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc add rdi, rsi mov esi, r15d cmp rdi, rsi
- ja G_M40104_IG37
+ ja G_M40104_IG35
mov r8d, r12d add r8, r13 ; byrRegs +[r8] @@ -198,7 +198,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000140 {V24 V51}, gcrefRegs mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx] ;; size=26 bbWeight=2 PerfScore 9.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref
mov rdi, bword ptr [rbp-0x48] ; byrRegs +[rdi] mov edx, dword ptr [rbp-0x3C] @@ -213,15 +213,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc call [<unknown method>] ; byrRegs -[rdx rdi] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp-0x38] mov dword ptr [rbp-0x40], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=59 bbWeight=4 PerfScore 49.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
+ jge G_M40104_IG27 + ;; size=63 bbWeight=4 PerfScore 49.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov r8, 0xD1FFAB1E ; gcrRegs +[r8] mov rcx, r8 @@ -234,32 +234,6 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rcx rsi rdi r8]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref, isz - ; GC ptr vars -{V76} - mov eax, dword ptr [rbp-0x40] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref - ; byrRegs +[rcx] - mov dword ptr [rbp-0x2C], eax - mov edx, eax - mov eax, dword ptr [rbp-0x2C] - jmp G_M40104_IG11 - ;; size=13 bbWeight=0.52 PerfScore 2.21 -G_M40104_IG17: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; byrRegs -[rcx] - ; GC ptr vars -{V51} - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 60 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; GC ptr vars +{V51 V76}
mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi] mov rsi, rdi @@ -268,8 +242,8 @@ G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs call [<unknown method>] ; gcrRegs -[rsi rdi] mov eax, dword ptr [rbp-0x40]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, bword ptr [rbp-0x50] @@ -287,52 +261,39 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; byrRegs +[rcx] jg G_M40104_IG09 ;; size=38 bbWeight=4 PerfScore 37.00
-G_M40104_IG20: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx r13] ; GC ptr vars -{V51}
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref - ; byrRegs +[r13] - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 62 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r13]
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] test r14, r14
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r14+0x08] lea rsi, bword ptr [r14+0x0C] ; byrRegs +[rsi] @@ -342,29 +303,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs -[rdi r14] ; byrRegs -[rsi] ;; size=17 bbWeight=0.50 PerfScore 2.86
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi] mov rdi, 0xD1FFAB1E cmp qword ptr [rbp-0x60], rdi
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp-0x28] pop rbx pop r12 @@ -374,33 +335,65 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.50
-G_M40104_IG33: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs +[rbx r14]
+ ; byrRegs +[r13] + ; GC ptr vars +{V51} + mov eax, dword ptr [rbp-0x40] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref + ; byrRegs +[rcx] + mov dword ptr [rbp-0x2C], eax + mov edx, eax + mov eax, dword ptr [rbp-0x2C] + jmp G_M40104_IG11 + ;; size=13 bbWeight=0.52 PerfScore 2.21 +G_M40104_IG29: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref + ; byrRegs -[rcx] + ; GC ptr vars -{V51}
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 60 call [<unknown method>] ; gcrRegs -[rdi]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG34: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.04 PerfScore 0.19 +G_M40104_IG30: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
...

libraries_tests.run.linux.x64.Release.mch

-17 (-1.87%) : 18769.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -32,7 +32,7 @@ ; V20 tmp15 [V20,T32] ( 3, 0.80) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>> ; V21 tmp16 [V21,T26] ( 4, 1.03) int -> rsi "Inline stloc first use temp" ; V22 tmp17 [V22,T25] ( 3, 1.16) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
-; V23 tmp18 [V23,T01] ( 13, 7.42) byref -> r14 "Inlining Arg"
+; V23 tmp18 [V23,T01] ( 11, 6.99) byref -> r14 "Inlining Arg"
; V24 tmp19 [V24,T20] ( 4, 1.69) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> ; V25 tmp20 [V25,T08] ( 2, 4 ) long -> rax "argument with side effect" ; V26 tmp21 [V26,T13] ( 3, 2.06) ref -> rdi "arr expr" @@ -70,14 +70,14 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rdi] test rbx, rbx
- je G_M57116_IG40
+ je G_M57116_IG39
mov r15, qword ptr [rdi] mov rsi, r15 mov rax, qword ptr [rsi+0x38] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x68] test rax, rax
- je G_M57116_IG27
+ je G_M57116_IG26
;; size=35 bbWeight=1 PerfScore 10.75 G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] @@ -98,7 +98,7 @@ G_M57116_IG04: ; bbWeight=0.69, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x80] test r11, r11
- je G_M57116_IG28
+ je G_M57116_IG27
;; size=23 bbWeight=0.69 PerfScore 5.00 G_M57116_IG05: ; bbWeight=0.69, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref mov rdi, r14 @@ -108,7 +108,7 @@ G_M57116_IG05: ; bbWeight=0.69, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ebx, eax test ebx, ebx
- jne G_M57116_IG30
+ jne G_M57116_IG29
;; size=16 bbWeight=0.69 PerfScore 3.28 G_M57116_IG06: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] @@ -116,7 +116,7 @@ G_M57116_IG06: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x60] test rdi, rdi
- je G_M57116_IG29
+ je G_M57116_IG28
;; size=20 bbWeight=0.54 PerfScore 3.93 G_M57116_IG07: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -148,7 +148,7 @@ G_M57116_IG09: ; bbWeight=0.31, gcVars=0000000000000001 {V00}, gcrefRegs= mov rsi, qword ptr [rsi] mov rsi, qword ptr [rsi+0x60] test rsi, rsi
- je G_M57116_IG36
+ je G_M57116_IG35
;; size=20 bbWeight=0.31 PerfScore 2.25 G_M57116_IG10: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rsi @@ -169,7 +169,7 @@ G_M57116_IG10: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x70] test r11, r11
- je G_M57116_IG37
+ je G_M57116_IG36
;; size=44 bbWeight=0.31 PerfScore 4.03 G_M57116_IG11: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -195,10 +195,10 @@ G_M57116_IG14: ; bbWeight=0.45, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov esi, dword ptr [r14+0x14] cmp esi, dword ptr [rdi+0x14]
- jne G_M57116_IG25
+ jne G_M57116_IG24
mov esi, dword ptr [r14+0x10] cmp esi, dword ptr [rdi+0x10]
- jae G_M57116_IG26
+ jae G_M57116_IG25
;; size=33 bbWeight=0.45 PerfScore 6.53 G_M57116_IG15: ; bbWeight=0.34, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref ; gcrRegs -[rax] @@ -265,7 +265,7 @@ G_M57116_IG19: ; bbWeight=0.60, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, G_M57116_IG20: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- jmp G_M57116_IG34
+ jmp G_M57116_IG33
;; size=9 bbWeight=0.31 PerfScore 0.93 G_M57116_IG21: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -297,20 +297,10 @@ G_M57116_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57116_IG25: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M57116_IG25: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- mov edi, dword ptr [r14+0x14] - mov r11, gword ptr [r14] - ; gcrRegs +[r11] - cmp edi, dword ptr [r11+0x14] - jne SHORT G_M57116_IG24 - ;; size=17 bbWeight=0.11 PerfScore 0.96 -G_M57116_IG26: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax]
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov edi, dword ptr [rdi+0x10] @@ -320,9 +310,9 @@ G_M57116_IG26: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [r14+0x08], rdi
- jmp G_M57116_IG34
+ jmp G_M57116_IG33
;; size=27 bbWeight=0.11 PerfScore 1.02
-G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rbx] ; byrRegs -[r14] ; GC ptr vars -{V04} @@ -332,7 +322,7 @@ G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcr arg pop 0 jmp G_M57116_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M57116_IG28: ; bbWeight=0.14, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.14, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -341,7 +331,7 @@ G_M57116_IG28: ; bbWeight=0.14, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG05 ;; size=26 bbWeight=0.14 PerfScore 0.52
-G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -350,15 +340,15 @@ G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, rax jmp G_M57116_IG07 ;; size=26 bbWeight=0.11 PerfScore 0.41
-G_M57116_IG30: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG29: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x58] test rdi, rdi
- je G_M57116_IG38
+ je G_M57116_IG37
;; size=20 bbWeight=0.15 PerfScore 1.07
-G_M57116_IG31: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG30: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
movsxd rsi, ebx call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -377,9 +367,9 @@ G_M57116_IG31: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x88] test r11, r11
- je G_M57116_IG39
+ je G_M57116_IG38
;; size=47 bbWeight=0.15 PerfScore 1.67
-G_M57116_IG32: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG31: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x28] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x08] @@ -393,7 +383,7 @@ G_M57116_IG32: ; bbWeight=0.15, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov dword ptr [rdi+0x10], ebx ;; size=23 bbWeight=0.15 PerfScore 1.26
-G_M57116_IG33: ; bbWeight=0.15, epilog, nogc, extend
+G_M57116_IG32: ; bbWeight=0.15, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -401,7 +391,7 @@ G_M57116_IG33: ; bbWeight=0.15, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.15 PerfScore 0.48
-G_M57116_IG34: ; bbWeight=0.31, gcVars=0000000000008001 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG33: ; bbWeight=0.31, gcVars=0000000000008001 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[rax] ; GC ptr vars +{V04} mov rdi, rax @@ -413,7 +403,7 @@ G_M57116_IG34: ; bbWeight=0.31, gcVars=0000000000008001 {V00 V04}, gcrefR ; gcr arg pop 0 nop ;; size=17 bbWeight=0.31 PerfScore 1.16
-G_M57116_IG35: ; bbWeight=0.31, epilog, nogc, extend
+G_M57116_IG34: ; bbWeight=0.31, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -421,7 +411,7 @@ G_M57116_IG35: ; bbWeight=0.31, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.31 PerfScore 1.01
-G_M57116_IG36: ; bbWeight=0.06, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG35: ; bbWeight=0.06, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -430,7 +420,7 @@ G_M57116_IG36: ; bbWeight=0.06, gcVars=0000000000000001 {V00}, gcrefRegs= mov rsi, rax jmp G_M57116_IG10 ;; size=26 bbWeight=0.06 PerfScore 0.23
-G_M57116_IG37: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG36: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS @@ -438,31 +428,31 @@ G_M57116_IG37: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG11 ;; size=26 bbWeight=0.06 PerfScore 0.23
-G_M57116_IG38: ; bbWeight=0.03, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG37: ; bbWeight=0.03, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdi, rax
- jmp G_M57116_IG31
+ jmp G_M57116_IG30
;; size=26 bbWeight=0.03 PerfScore 0.11
-G_M57116_IG39: ; bbWeight=0.03, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG38: ; bbWeight=0.03, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r11, rax
- jmp G_M57116_IG32
+ jmp G_M57116_IG31
;; size=26 bbWeight=0.03 PerfScore 0.11
-G_M57116_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov edi, 23 ...

-17 (-1.87%) : 21425.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -32,7 +32,7 @@ ; V20 tmp15 [V20,T29] ( 3, 0.64) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>> ; V21 tmp16 [V21,T28] ( 4, 0.81) int -> rsi "Inline stloc first use temp" ; V22 tmp17 [V22,T27] ( 3, 0.92) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
-; V23 tmp18 [V23,T01] ( 13, 7.14) byref -> r14 "Inlining Arg"
+; V23 tmp18 [V23,T01] ( 11, 6.77) byref -> r14 "Inlining Arg"
; V24 tmp19 [V24,T20] ( 4, 1.64) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> ; V25 tmp20 [V25,T07] ( 2, 4 ) long -> rax "argument with side effect" ; V26 tmp21 [V26,T17] ( 3, 2.04) ref -> rdi "arr expr" @@ -70,14 +70,14 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rdi] test rbx, rbx
- je G_M57116_IG40
+ je G_M57116_IG39
mov r15, qword ptr [rdi] mov rsi, r15 mov rax, qword ptr [rsi+0x38] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x68] test rax, rax
- je G_M57116_IG27
+ je G_M57116_IG26
;; size=35 bbWeight=1 PerfScore 10.75 G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] @@ -98,7 +98,7 @@ G_M57116_IG04: ; bbWeight=0.59, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x80] test r11, r11
- je G_M57116_IG28
+ je G_M57116_IG27
;; size=23 bbWeight=0.59 PerfScore 4.27 G_M57116_IG05: ; bbWeight=0.59, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref mov rdi, r14 @@ -108,7 +108,7 @@ G_M57116_IG05: ; bbWeight=0.59, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ebx, eax test ebx, ebx
- jne G_M57116_IG30
+ jne G_M57116_IG29
;; size=16 bbWeight=0.59 PerfScore 2.80 G_M57116_IG06: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] @@ -116,7 +116,7 @@ G_M57116_IG06: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x60] test rdi, rdi
- je G_M57116_IG29
+ je G_M57116_IG28
;; size=20 bbWeight=0.54 PerfScore 3.92 G_M57116_IG07: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -148,7 +148,7 @@ G_M57116_IG09: ; bbWeight=0.41, gcVars=0000000000000001 {V00}, gcrefRegs= mov rsi, qword ptr [rsi] mov rsi, qword ptr [rsi+0x60] test rsi, rsi
- je G_M57116_IG36
+ je G_M57116_IG35
;; size=20 bbWeight=0.41 PerfScore 2.98 G_M57116_IG10: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rsi @@ -169,7 +169,7 @@ G_M57116_IG10: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x70] test r11, r11
- je G_M57116_IG37
+ je G_M57116_IG36
;; size=44 bbWeight=0.41 PerfScore 5.34 G_M57116_IG11: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -195,10 +195,10 @@ G_M57116_IG14: ; bbWeight=0.43, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov esi, dword ptr [r14+0x14] cmp esi, dword ptr [rdi+0x14]
- jne G_M57116_IG25
+ jne G_M57116_IG24
mov esi, dword ptr [r14+0x10] cmp esi, dword ptr [rdi+0x10]
- jae G_M57116_IG26
+ jae G_M57116_IG25
;; size=33 bbWeight=0.43 PerfScore 6.30 G_M57116_IG15: ; bbWeight=0.34, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref ; gcrRegs -[rax] @@ -265,7 +265,7 @@ G_M57116_IG19: ; bbWeight=0.64, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, G_M57116_IG20: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- jmp G_M57116_IG34
+ jmp G_M57116_IG33
;; size=9 bbWeight=0.41 PerfScore 1.23 G_M57116_IG21: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -297,20 +297,10 @@ G_M57116_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57116_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M57116_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- mov edi, dword ptr [r14+0x14] - mov r11, gword ptr [r14] - ; gcrRegs +[r11] - cmp edi, dword ptr [r11+0x14] - jne SHORT G_M57116_IG24 - ;; size=17 bbWeight=0.09 PerfScore 0.85 -G_M57116_IG26: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax]
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov edi, dword ptr [rdi+0x10] @@ -320,9 +310,9 @@ G_M57116_IG26: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [r14+0x08], rdi
- jmp G_M57116_IG34
+ jmp G_M57116_IG33
;; size=27 bbWeight=0.09 PerfScore 0.90
-G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rbx] ; byrRegs -[r14] ; GC ptr vars -{V04} @@ -332,7 +322,7 @@ G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcr arg pop 0 jmp G_M57116_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M57116_IG28: ; bbWeight=0.12, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.12, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -341,7 +331,7 @@ G_M57116_IG28: ; bbWeight=0.12, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG05 ;; size=26 bbWeight=0.12 PerfScore 0.44
-G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -350,15 +340,15 @@ G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, rax jmp G_M57116_IG07 ;; size=26 bbWeight=0.11 PerfScore 0.41
-G_M57116_IG30: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG29: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x58] test rdi, rdi
- je G_M57116_IG38
+ je G_M57116_IG37
;; size=20 bbWeight=0.05 PerfScore 0.35
-G_M57116_IG31: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG30: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
movsxd rsi, ebx call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -377,9 +367,9 @@ G_M57116_IG31: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x88] test r11, r11
- je G_M57116_IG39
+ je G_M57116_IG38
;; size=47 bbWeight=0.05 PerfScore 0.55
-G_M57116_IG32: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG31: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x28] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x08] @@ -393,7 +383,7 @@ G_M57116_IG32: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov dword ptr [rdi+0x10], ebx ;; size=23 bbWeight=0.05 PerfScore 0.41
-G_M57116_IG33: ; bbWeight=0.05, epilog, nogc, extend
+G_M57116_IG32: ; bbWeight=0.05, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -401,7 +391,7 @@ G_M57116_IG33: ; bbWeight=0.05, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.05 PerfScore 0.16
-G_M57116_IG34: ; bbWeight=0.41, gcVars=0000000000010001 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG33: ; bbWeight=0.41, gcVars=0000000000010001 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[rax] ; GC ptr vars +{V04 V16} mov rdi, rax @@ -413,7 +403,7 @@ G_M57116_IG34: ; bbWeight=0.41, gcVars=0000000000010001 {V00 V04}, gcrefR ; gcr arg pop 0 nop ;; size=17 bbWeight=0.41 PerfScore 1.54
-G_M57116_IG35: ; bbWeight=0.41, epilog, nogc, extend
+G_M57116_IG34: ; bbWeight=0.41, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -421,7 +411,7 @@ G_M57116_IG35: ; bbWeight=0.41, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.41 PerfScore 1.33
-G_M57116_IG36: ; bbWeight=0.08, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG35: ; bbWeight=0.08, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -430,7 +420,7 @@ G_M57116_IG36: ; bbWeight=0.08, gcVars=0000000000000001 {V00}, gcrefRegs= mov rsi, rax jmp G_M57116_IG10 ;; size=26 bbWeight=0.08 PerfScore 0.31
-G_M57116_IG37: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG36: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS @@ -438,31 +428,31 @@ G_M57116_IG37: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG11 ;; size=26 bbWeight=0.08 PerfScore 0.31
-G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG37: ; bbWeight=0.01, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdi, rax
- jmp G_M57116_IG31
+ jmp G_M57116_IG30
;; size=26 bbWeight=0.01 PerfScore 0.04
-G_M57116_IG39: ; bbWeight=0.01, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r11, rax
- jmp G_M57116_IG32
+ jmp G_M57116_IG31
;; size=26 bbWeight=0.01 PerfScore 0.04
-G_M57116_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov edi, 23 ...

-16 (-1.82%) : 8600.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -32,7 +32,7 @@ ; V20 tmp15 [V20,T24] ( 3, 1.53) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>> ; V21 tmp16 [V21,T22] ( 4, 1.96) int -> rsi "Inline stloc first use temp" ; V22 tmp17 [V22,T21] ( 3, 2.21) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
-; V23 tmp18 [V23,T00] ( 12, 13.32) byref -> rbx "Inlining Arg"
+; V23 tmp18 [V23,T00] ( 10, 12.55) byref -> rbx "Inlining Arg"
; V24 tmp19 [V24,T15] ( 4, 3.39) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> ; V25 tmp20 [V25,T13] ( 2, 4 ) long -> rax "argument with side effect" ; V26 tmp21 [V26,T08] ( 3, 4.22) ref -> rdi "arr expr" @@ -70,14 +70,14 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rdi] test rbx, rbx
- je G_M57116_IG41
+ je G_M57116_IG40
mov r15, qword ptr [rdi] mov rsi, r15 mov rax, qword ptr [rsi+0x38] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x68] test rax, rax
- je G_M57116_IG26
+ je G_M57116_IG25
;; size=35 bbWeight=1 PerfScore 10.75 G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -90,7 +90,7 @@ G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r14, rax ; gcrRegs +[r14] test r14, r14
- jne G_M57116_IG22
+ jne G_M57116_IG21
;; size=23 bbWeight=1 PerfScore 3.00 G_M57116_IG04: ; bbWeight=0.73, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax r14] @@ -98,7 +98,7 @@ G_M57116_IG04: ; bbWeight=0.73, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rsi, qword ptr [rsi] mov rsi, qword ptr [rsi+0x60] test rsi, rsi
- je G_M57116_IG33
+ je G_M57116_IG32
;; size=20 bbWeight=0.73 PerfScore 5.29 G_M57116_IG05: ; bbWeight=0.73, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rsi @@ -119,7 +119,7 @@ G_M57116_IG05: ; bbWeight=0.73, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x70] test r11, r11
- je G_M57116_IG34
+ je G_M57116_IG33
;; size=44 bbWeight=0.73 PerfScore 9.48 G_M57116_IG06: ; bbWeight=0.73, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -142,13 +142,13 @@ G_M57116_IG08: ; bbWeight=0.90, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x14] cmp esi, dword ptr [rdi+0x14]
- jne G_M57116_IG20
+ jne G_M57116_IG19
;; size=19 bbWeight=0.90 PerfScore 7.62 G_M57116_IG09: ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[rax] mov esi, dword ptr [rbx+0x10] cmp esi, dword ptr [rdi+0x10]
- jae G_M57116_IG21
+ jae G_M57116_IG20
;; size=12 bbWeight=0.90 PerfScore 5.38 G_M57116_IG10: ; bbWeight=0.70, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref mov rdi, gword ptr [rdi+0x08] @@ -214,7 +214,7 @@ G_M57116_IG14: ; bbWeight=1.28, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, G_M57116_IG15: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- jmp G_M57116_IG31
+ jmp G_M57116_IG30
;; size=9 bbWeight=0.73 PerfScore 2.19 G_M57116_IG16: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -246,20 +246,10 @@ G_M57116_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57116_IG20: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M57116_IG20: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs +[rbx] mov rax, gword ptr [rbp-0x30] ; gcrRegs +[rax]
- mov edi, dword ptr [rbx+0x14] - mov r11, gword ptr [rbx] - ; gcrRegs +[r11] - cmp edi, dword ptr [r11+0x14] - jne SHORT G_M57116_IG19 - ;; size=16 bbWeight=0.19 PerfScore 1.73 -G_M57116_IG21: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax]
mov rdi, gword ptr [rbx] ; gcrRegs +[rdi] mov edi, dword ptr [rdi+0x10] @@ -269,9 +259,9 @@ G_M57116_IG21: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi
- jmp G_M57116_IG31
+ jmp G_M57116_IG30
;; size=26 bbWeight=0.19 PerfScore 1.83
-G_M57116_IG22: ; bbWeight=0.27, gcVars=0000000000000002 {V00}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57116_IG21: ; bbWeight=0.27, gcVars=0000000000000002 {V00}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rdi] +[r14] ; byrRegs -[rbx] ; GC ptr vars -{V04} @@ -279,9 +269,9 @@ G_M57116_IG22: ; bbWeight=0.27, gcVars=0000000000000002 {V00}, gcrefRegs= mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x80] test r11, r11
- je SHORT G_M57116_IG27
+ je SHORT G_M57116_IG26
;; size=19 bbWeight=0.27 PerfScore 1.96
-G_M57116_IG23: ; bbWeight=0.27, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57116_IG22: ; bbWeight=0.27, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, r14 ; gcrRegs +[rdi] call [r11] @@ -289,20 +279,20 @@ G_M57116_IG23: ; bbWeight=0.27, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ebx, eax test ebx, ebx
- jne G_M57116_IG35
+ jne G_M57116_IG34
;; size=16 bbWeight=0.27 PerfScore 1.29
-G_M57116_IG24: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG23: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14] mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x60] test rdi, rdi
- je SHORT G_M57116_IG28
+ je SHORT G_M57116_IG27
;; size=16 bbWeight=0.14 PerfScore 1.02
-G_M57116_IG25: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M57116_IG29
+G_M57116_IG24: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57116_IG28
;; size=2 bbWeight=0.11 PerfScore 0.22
-G_M57116_IG26: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG25: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rdi, rsi mov rsi, 0xD1FFAB1E ; global ptr @@ -310,16 +300,16 @@ G_M57116_IG26: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M57116_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M57116_IG27: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG26: ; bbWeight=0.05, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] +[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r11, rax
- jmp SHORT G_M57116_IG23
+ jmp SHORT G_M57116_IG22
;; size=23 bbWeight=0.05 PerfScore 0.20
-G_M57116_IG28: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -327,7 +317,7 @@ G_M57116_IG28: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rdi, rax ;; size=21 bbWeight=0.03 PerfScore 0.05
-G_M57116_IG29: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE ; byrRegs +[rax] ; gcr arg pop 0 @@ -343,7 +333,7 @@ G_M57116_IG29: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs -[rax rdi] nop ;; size=22 bbWeight=0.14 PerfScore 0.81
-G_M57116_IG30: ; bbWeight=0.14, epilog, nogc, extend
+G_M57116_IG29: ; bbWeight=0.14, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -351,7 +341,7 @@ G_M57116_IG30: ; bbWeight=0.14, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.14 PerfScore 0.46
-G_M57116_IG31: ; bbWeight=0.73, gcVars=0000000000000022 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG30: ; bbWeight=0.73, gcVars=0000000000000022 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax] ; GC ptr vars +{V04} mov rdi, rax @@ -363,7 +353,7 @@ G_M57116_IG31: ; bbWeight=0.73, gcVars=0000000000000022 {V00 V04}, gcrefR ; gcr arg pop 0 nop ;; size=17 bbWeight=0.73 PerfScore 2.73
-G_M57116_IG32: ; bbWeight=0.73, epilog, nogc, extend
+G_M57116_IG31: ; bbWeight=0.73, epilog, nogc, extend
add rsp, 40 pop rbx pop r14 @@ -371,7 +361,7 @@ G_M57116_IG32: ; bbWeight=0.73, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.73 PerfScore 2.37
-G_M57116_IG33: ; bbWeight=0.15, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG32: ; bbWeight=0.15, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr @@ -380,7 +370,7 @@ G_M57116_IG33: ; bbWeight=0.15, gcVars=0000000000000002 {V00}, gcrefRegs= mov rsi, rax jmp G_M57116_IG05 ;; size=26 bbWeight=0.15 PerfScore 0.55
-G_M57116_IG34: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG33: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS @@ -388,15 +378,15 @@ G_M57116_IG34: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG06 ;; size=26 bbWeight=0.15 PerfScore 0.55
-G_M57116_IG35: ; bbWeight=0.13, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG34: ; bbWeight=0.13, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] +[r14] mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x58] test rdi, rdi
- je SHORT G_M57116_IG39
+ je SHORT G_M57116_IG38
;; size=16 bbWeight=0.13 PerfScore 0.95
-G_M57116_IG36: ; bbWeight=0.13, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG35: ; bbWeight=0.13, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
movsxd rsi, ebx call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -415,9 +405,9 @@ G_M57116_IG36: ; bbWeight=0.13, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rdi, qword ptr [rdi] mov r11, qword ptr [rdi+0x88] test r11, r11
- je SHORT G_M57116_IG40
+ je SHORT G_M57116_IG39
...

-1 (-0.08%) : 29921.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -110,7 +110,7 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, G_M25128_IG03: ; bbWeight=1.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref mov edi, dword ptr [rbx+0x10] cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG31
+ jge G_M25128_IG20
;; size=12 bbWeight=1.21 PerfScore 7.29 G_M25128_IG04: ; bbWeight=4.86, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref lea eax, [rdi+0x01] @@ -132,11 +132,11 @@ G_M25128_IG05: ; bbWeight=1.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx ;; size=12 bbWeight=1.21 PerfScore 1.82 G_M25128_IG06: ; bbWeight=1.14, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref cmp r12d, 44
- je G_M25128_IG32
+ je G_M25128_IG21
;; size=10 bbWeight=1.14 PerfScore 1.43 G_M25128_IG07: ; bbWeight=0.93, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref cmp r12d, 61
- je G_M25128_IG36
+ je G_M25128_IG38
;; size=10 bbWeight=0.93 PerfScore 1.16 G_M25128_IG08: ; bbWeight=0.71, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz mov edi, r12d @@ -168,37 +168,113 @@ G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx ;; size=22 bbWeight=0.50 PerfScore 1.38 G_M25128_IG12: ; bbWeight=6.71, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref test r12d, r12d
- je G_M25128_IG44
+ je G_M25128_IG25
;; size=9 bbWeight=6.71 PerfScore 8.39
-G_M25128_IG13: ; bbWeight=6.64, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M25128_IG13: ; bbWeight=6.64, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
test ecx, ecx
- jne G_M25128_IG50
+ jne G_M25128_IG49
cmp r12d, 44
- je SHORT G_M25128_IG15 - ;; size=14 bbWeight=6.64 PerfScore 16.61
+ je G_M25128_IG37 + ;; size=18 bbWeight=6.64 PerfScore 16.61
G_M25128_IG14: ; bbWeight=6.43, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref cmp r12d, 61
- jne G_M25128_IG39
+ je G_M25128_IG37
;; size=10 bbWeight=6.43 PerfScore 8.04
-G_M25128_IG15: ; bbWeight=0.43, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - dec dword ptr [rbx+0x10] - ;; size=3 bbWeight=0.43 PerfScore 1.29 -G_M25128_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M25128_IG15: ; bbWeight=6.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + cmp r12d, 39 + je G_M25128_IG65 + cmp r12d, 34 + je G_M25128_IG65 + ;; size=20 bbWeight=6.21 PerfScore 15.54 +G_M25128_IG16: ; bbWeight=6.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + cmp r12d, 92 + je G_M25128_IG50 + mov edi, dword ptr [rbp-0x40] + mov rsi, bword ptr [rbp-0x38] + ; byrRegs +[rsi] + mov eax, dword ptr [rbp-0x30] + cmp edi, eax + jae G_M25128_IG64 + mov eax, edi + mov word ptr [rsi+2*rax], r12w + inc edi + mov dword ptr [rbp-0x40], edi + ;; size=40 bbWeight=6.21 PerfScore 49.71 +G_M25128_IG17: ; bbWeight=6.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz + ; byrRegs -[rsi] + mov edi, dword ptr [rbx+0x10] + cmp edi, dword ptr [rbx+0x08] + jge SHORT G_M25128_IG24 + ;; size=8 bbWeight=6.21 PerfScore 37.29 +G_M25128_IG18: ; bbWeight=24.86, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + lea esi, [rdi+0x01] + mov dword ptr [rbx+0x10], esi + cmp edi, dword ptr [rbx+0x08] + jae G_M25128_IG45 + mov rsi, bword ptr [rbx] + ; byrRegs +[rsi] + mov edi, edi + movzx r12, word ptr [rsi+2*rdi] + test r12d, r12d + je G_M25128_IG65 + ;; size=34 bbWeight=24.86 PerfScore 273.43 +G_M25128_IG19: ; bbWeight=6.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + ; byrRegs -[rsi] + jmp G_M25128_IG12 + ;; size=5 bbWeight=6.21 PerfScore 12.43 +G_M25128_IG20: ; bbWeight=4.86, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + xor r13d, r13d + jmp G_M25128_IG05 + ;; size=8 bbWeight=4.86 PerfScore 10.93 +G_M25128_IG21: ; bbWeight=0.21, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] + ; byrRegs -[rbx r15] + mov eax, 2 + mov rdi, 0xD1FFAB1E + cmp qword ptr [rbp-0x68], rdi + je SHORT G_M25128_IG22 + call CORINFO_HELP_FAIL_FAST + ; gcr arg pop 0 + ;; size=26 bbWeight=0.21 PerfScore 0.96 +G_M25128_IG22: ; bbWeight=0.21, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.21 PerfScore 0.05 +G_M25128_IG23: ; bbWeight=0.21, epilog, nogc, extend + lea rsp, [rbp-0x28] + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.21 PerfScore 0.96 +G_M25128_IG24: ; bbWeight=24.86, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz + ; gcrRegs +[r14] + ; byrRegs +[rbx r15] + xor r12d, r12d + jmp SHORT G_M25128_IG19 + ;; size=5 bbWeight=24.86 PerfScore 55.93 +G_M25128_IG25: ; bbWeight=0.07, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref + test ecx, ecx + jne G_M25128_IG65 + ;; size=8 bbWeight=0.07 PerfScore 0.09 +G_M25128_IG26: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rbx] test ecx, ecx
- jne SHORT G_M25128_IG21
+ jne SHORT G_M25128_IG31
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M25128_IG27: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov edi, dword ptr [rbp-0x40] test edi, edi
- jle SHORT G_M25128_IG21
+ jle SHORT G_M25128_IG31
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M25128_IG28: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
lea r13d, [rdi-0x01] cmp r13d, edi
- jl SHORT G_M25128_IG20
+ jl SHORT G_M25128_IG30
;; size=9 bbWeight=0.50 PerfScore 0.88
-G_M25128_IG19: ; bbWeight=2.00, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+G_M25128_IG29: ; bbWeight=2.00, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov rdi, r14 ; gcrRegs +[rdi] mov rsi, r14 @@ -207,7 +283,7 @@ G_M25128_IG19: ; bbWeight=2.00, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=12 bbWeight=2.00 PerfScore 7.00
-G_M25128_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+G_M25128_IG30: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
cmp r13d, dword ptr [rbp-0x30] jae G_M25128_IG45 mov rdi, bword ptr [rbp-0x38] @@ -220,16 +296,16 @@ G_M25128_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 test eax, eax jne G_M25128_IG66 ;; size=35 bbWeight=0.50 PerfScore 5.25
-G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+G_M25128_IG31: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov ebx, dword ptr [rbp-0x40] cmp ebx, dword ptr [rbp-0x30] ja G_M25128_IG67 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M25128_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M25128_IG32: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov r12, bword ptr [rbp-0x38] ; byrRegs +[r12] test ebx, ebx
- jge SHORT G_M25128_IG23
+ jge SHORT G_M25128_IG33
mov rdi, r14 ; gcrRegs +[rdi] mov rsi, r14 @@ -238,7 +314,7 @@ G_M25128_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 ; gcrRegs -[rsi rdi r14] ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M25128_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref, isz
+G_M25128_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov bword ptr [rbp-0x60], r12 mov dword ptr [rbp-0x58], ebx lea rdi, [rbp-0x60] @@ -253,9 +329,9 @@ G_M25128_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r1 vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [rbp-0x48], ymm0 test rbx, rbx
- jne SHORT G_M25128_IG30 - ;; size=38 bbWeight=0.50 PerfScore 4.67 -G_M25128_IG24: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ jne G_M25128_IG44 + ;; size=42 bbWeight=0.50 PerfScore 4.67 +G_M25128_IG34: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs -[rax rbx] mov rdi, r15 ; byrRegs +[rdi] @@ -267,14 +343,14 @@ G_M25128_IG24: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 mov eax, 3 mov rdi, 0xD1FFAB1E cmp qword ptr [rbp-0x68], rdi
- je SHORT G_M25128_IG25
+ je SHORT G_M25128_IG35
call CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=37 bbWeight=0.50 PerfScore 3.00
-G_M25128_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25128_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M25128_IG26: ; bbWeight=0.50, epilog, nogc, extend
+G_M25128_IG36: ; bbWeight=0.50, epilog, nogc, extend
lea rsp, [rbp-0x28] pop rbx pop r12 @@ -284,96 +360,26 @@ G_M25128_IG26: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25
-G_M25128_IG27: ; bbWeight=6.21, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, gcvars, byref
+G_M25128_IG37: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, gcvars, byref
; gcrRegs +[r14] ; byrRegs +[rbx r15]
- mov edi, dword ptr [rbx+0x10] - cmp edi, dword ptr [rbx+0x08] - jge G_M25128_IG35 - ;; size=12 bbWeight=6.21 PerfScore 37.29 -G_M25128_IG28: ; bbWeight=24.86, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - lea esi, [rdi+0x01] - mov dword ptr [rbx+0x10], esi - cmp edi, dword ptr [rbx+0x08] - jae G_M25128_IG45 - mov rsi, bword ptr [rbx] - ; byrRegs +[rsi] - mov edi, edi - movzx r12, word ptr [rsi+2*rdi] - test r12d, r12d - je G_M25128_IG65 - ;; size=34 bbWeight=24.86 PerfScore 273.43 -G_M25128_IG29: ; bbWeight=6.21, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref - ; byrRegs -[rsi] - jmp G_M25128_IG12 - ;; size=5 bbWeight=6.21 PerfScore 12.43
...

+2 (+0.09%) : 72386.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:g_Compute|50(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)

@@ -8,26 +8,26 @@ ; 17 inlinees with PGO data; 48 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T56] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Text.RegularExpressions.Symbolic.RegexNodeConverter> -; V01 arg1 [V01,T57] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T57] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Text.RegularExpressions.Symbolic.RegexNodeConverter> +; V01 arg1 [V01,T58] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
; V02 loc0 [V02 ] ( 12, 14 ) struct ( 8) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.RegularExpressions.Symbolic.RegexNodeConverter+<>c__DisplayClass5_0> ; V03 loc1 [V03,T13] ( 24, 35.49) ref -> r14 class-hnd exact single-def <<unknown class>> ; V04 loc2 [V04,T42] ( 6, 8 ) ubyte -> r12 single-def
-; V05 loc3 [V05,T66] ( 4, 3 ) ref -> rax class-hnd single-def <System.Collections.Generic.List`1[System.ValueTuple`2[ushort,ushort]]>
+; V05 loc3 [V05,T67] ( 4, 3 ) ref -> rax class-hnd single-def <System.Collections.Generic.List`1[System.ValueTuple`2[ushort,ushort]]>
;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[ubyte]>
-; V07 loc5 [V07,T87] ( 2, 8 ) int -> rcx single-def -; V08 loc6 [V08,T52] ( 3, 12 ) int -> [rbp-0x5C] spill-single-def ptr -; V09 loc7 [V09,T46] ( 4, 16 ) int -> [rbp-0x60] spill-single-def ptr
+; V07 loc5 [V07,T88] ( 2, 8 ) int -> rcx single-def +; V08 loc6 [V08,T53] ( 3, 12 ) int -> [rbp-0x5C] spill-single-def ptr +; V09 loc7 [V09,T47] ( 4, 16 ) int -> [rbp-0x60] spill-single-def ptr
; V10 loc8 [V10,T08] ( 11, 57.50) int -> [rbp-0x64] ptr
-; V11 loc9 [V11,T67] ( 4, 3 ) ref -> [rbp-0xA8] class-hnd ptr <System.Text.RegularExpressions.Symbolic.BDD> -; V12 loc10 [V12,T70] ( 3, 2.50) ref -> registers class-hnd ptr <System.Text.RegularExpressions.Symbolic.BDD>
+; V11 loc9 [V11,T68] ( 4, 3 ) ref -> [rbp-0xA8] class-hnd ptr <System.Text.RegularExpressions.Symbolic.BDD> +; V12 loc10 [V12,T71] ( 3, 2.50) ref -> registers class-hnd ptr <System.Text.RegularExpressions.Symbolic.BDD>
;* V13 loc11 [V13 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.ValueTuple`2[ushort,ushort]]> ;* V14 loc12 [V14 ] ( 0, 0 ) ushort -> zero-ref ;* V15 loc13 [V15 ] ( 0, 0 ) ushort -> zero-ref ; V16 loc14 [V16,T43] ( 5, 8 ) ref -> rax class-hnd <System.Text.RegularExpressions.Symbolic.BDD> ;* V17 loc15 [V17 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]> ; V18 loc16 [V18,T06] ( 11, 68 ) short -> [rbp-0x68] ptr
-; V19 loc17 [V19,T61] ( 2, 4 ) ubyte -> [rbp-0x6C] spill-single-def ptr
+; V19 loc17 [V19,T62] ( 2, 4 ) ubyte -> [rbp-0x6C] spill-single-def ptr
; V20 loc18 [V20,T44] ( 5, 8 ) ref -> rax class-hnd <System.Text.RegularExpressions.Symbolic.BDD> ; V21 loc19 [V21,T41] ( 5, 9.49) ref -> rax class-hnd <System.Text.RegularExpressions.Symbolic.BDD> ; V22 loc20 [V22,T02] ( 6, 80 ) int -> [rbp-0x70] spill-single-def ptr @@ -36,10 +36,10 @@ ; V25 loc23 [V25 ] ( 10,120 ) struct (24) [rbp-0x90] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr <System.Diagnostics.Debug+AssertInterpolatedStringHandler> ; V26 loc24 [V26,T16] ( 3, 32 ) ubyte -> rdi ld-addr-op ;# V27 OutArgs [V27 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V28 tmp1 [V28,T51] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V29 tmp2 [V29,T59] ( 3, 4 ) ref -> rsi single-def "CASTCLASS eval op1" -; V30 tmp3 [V30,T91] ( 3, 1 ) long -> rax "fgMakeTemp is creating a new local variable" -; V31 tmp4 [V31,T50] ( 4, 6.50) ref -> rdi class-hnd single-def "spilling QMark2" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
+; V28 tmp1 [V28,T52] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V29 tmp2 [V29,T60] ( 3, 4 ) ref -> rsi single-def "CASTCLASS eval op1" +; V30 tmp3 [V30,T92] ( 3, 1 ) long -> rax "fgMakeTemp is creating a new local variable" +; V31 tmp4 [V31,T51] ( 4, 6.50) ref -> rdi class-hnd single-def "spilling QMark2" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
;* V32 tmp5 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V33 tmp6 [V33 ] ( 1, 4 ) struct (32) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V34 tmp7 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> @@ -48,35 +48,35 @@ ; V37 tmp10 [V37,T17] ( 3, 32 ) int -> rdi ;* V38 tmp11 [V38 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Diagnostics.Debug+AssertInterpolatedStringHandler> ; V39 tmp12 [V39,T00] ( 4,128 ) int -> rdi "impSpillLclRefs"
-; V40 tmp13 [V40,T64] ( 6, 3.50) ref -> rbx -; V41 tmp14 [V41,T69] ( 3, 3 ) ref -> r12 class-hnd exact single-def "non-inline candidate call" <System.Text.RegularExpressions.Symbolic.CharSetSolver> -; V42 tmp15 [V42,T76] ( 2, 2 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
+; V40 tmp13 [V40,T65] ( 6, 3.50) ref -> rbx +; V41 tmp14 [V41,T70] ( 3, 3 ) ref -> r12 class-hnd exact single-def "non-inline candidate call" <System.Text.RegularExpressions.Symbolic.CharSetSolver> +; V42 tmp15 [V42,T77] ( 2, 2 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
;* V43 tmp16 [V43 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V44 tmp17 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V45 tmp18 [V45,T77] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
+; V45 tmp18 [V45,T78] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
;* V46 tmp19 [V46 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V47 tmp20 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V48 tmp21 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[ushort,ushort]> ;* V49 tmp22 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V50 tmp23 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V51 tmp24 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp25 [V52,T62] ( 2, 4 ) int -> rsi "Inlining Arg" -; V53 tmp26 [V53,T60] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V52 tmp25 [V52,T63] ( 2, 4 ) int -> rsi "Inlining Arg" +; V53 tmp26 [V53,T61] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
;* V54 tmp27 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp28 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp29 [V56 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.ValueTuple`2[ushort,ushort]]>
-; V57 tmp30 [V57,T53] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> -; V58 tmp31 [V58,T47] ( 4, 6.98) int -> rsi "Inline stloc first use temp"
+; V57 tmp30 [V57,T54] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> +; V58 tmp31 [V58,T48] ( 4, 6.98) int -> rsi "Inline stloc first use temp"
;* V59 tmp32 [V59,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V60 tmp33 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[System.ValueTuple`2[ushort,ushort]]>
-; V61 tmp34 [V61,T88] ( 2, 8 ) ubyte -> rax single-def "Inline return value spill temp" -;* V62 tmp35 [V62,T97] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V61 tmp34 [V61,T89] ( 2, 8 ) ubyte -> rax single-def "Inline return value spill temp" +;* V62 tmp35 [V62,T98] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
;* V63 tmp36 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> ; V64 tmp37 [V64 ] ( 2, 16 ) int -> [rbp-0x94] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V65 tmp38 [V65,T33] ( 5, 20 ) short -> rdi "Inlining Arg"
-; V66 tmp39 [V66,T54] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> -; V67 tmp40 [V67,T48] ( 4, 6.98) int -> rsi "Inline stloc first use temp" -;* V68 tmp41 [V68,T63] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
+; V66 tmp39 [V66,T55] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> +; V67 tmp40 [V67,T49] ( 4, 6.98) int -> rsi "Inline stloc first use temp" +;* V68 tmp41 [V68,T64] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg"
;* V69 tmp42 [V69 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V70 tmp43 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V71 tmp44 [V71,T01] ( 6,100.41) int -> r8 "Inlining Arg" @@ -102,46 +102,46 @@ ; V91 tmp64 [V91,T12] ( 3, 40 ) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.Text.StringBuilder> ; V92 tmp65 [V92,T25] ( 3, 24 ) ref -> rdi ;* V93 tmp66 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String>
-; V94 tmp67 [V94,T55] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> -; V95 tmp68 [V95,T49] ( 4, 6.98) int -> rsi "Inline stloc first use temp"
+; V94 tmp67 [V94,T56] ( 3, 5.49) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>> +; V95 tmp68 [V95,T50] ( 4, 6.98) int -> rsi "Inline stloc first use temp"
;* V96 tmp69 [V96 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V97 tmp70 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V98 tmp71 [V98,T74] ( 4, 2 ) int -> r15 single-def "Inline stloc first use temp" -; V99 tmp72 [V99,T72] ( 4, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V98 tmp71 [V98,T75] ( 4, 2 ) int -> r15 single-def "Inline stloc first use temp" +; V99 tmp72 [V99,T73] ( 4, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V100 tmp73 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V101 tmp74 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V102 tmp75 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V103 tmp76 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V104 tmp77 [V104,T78] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V104 tmp77 [V104,T79] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
;* V105 tmp78 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V106 tmp79 [V106 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V107 tmp80 [V107 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg" ;* V108 tmp81 [V108 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg" ;* V109 tmp82 [V109 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V110 tmp83 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V111 tmp84 [V111,T75] ( 4, 2 ) int -> r15 single-def "Inline stloc first use temp" -; V112 tmp85 [V112,T73] ( 4, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V111 tmp84 [V111,T76] ( 4, 2 ) int -> r15 single-def "Inline stloc first use temp" +; V112 tmp85 [V112,T74] ( 4, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V113 tmp86 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V114 tmp87 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V115 tmp88 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V116 tmp89 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V117 tmp90 [V117,T79] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V117 tmp90 [V117,T80] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
;* V118 tmp91 [V118 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V119 tmp92 [V119 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V120 tmp93 [V120 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg" ;* V121 tmp94 [V121 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V122 tmp95 [V122,T80] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.CharSetSolver> -; V123 tmp96 [V123,T81] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.CharSetSolver> -; V124 tmp97 [V124,T82] ( 2, 2 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
+; V122 tmp95 [V122,T81] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.CharSetSolver> +; V123 tmp96 [V123,T82] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.CharSetSolver> +; V124 tmp97 [V124,T83] ( 2, 2 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
; V125 tmp98 [V125 ] ( 12, 14 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed ptr "field V02.charSetSolver (fldOffset=0x0)" P-DEP ; V126 tmp99 [V126,T32] ( 4, 24 ) byref -> [rbp-0xB8] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp100 [V127,T98] ( 0, 0 ) int -> zero-ref single-def ptr "field V06._length (fldOffset=0x8)" P-INDEP
+;* V127 tmp100 [V127,T99] ( 0, 0 ) int -> zero-ref single-def ptr "field V06._length (fldOffset=0x8)" P-INDEP
;* V128 tmp101 [V128 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V129 tmp102 [V129 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ;* V130 tmp103 [V130 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP ;* V131 tmp104 [V131 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-; V132 tmp105 [V132,T83] ( 2, 8 ) byref -> rax single-def "field V34._reference (fldOffset=0x0)" P-INDEP -;* V133 tmp106 [V133,T99] ( 0, 0 ) int -> zero-ref single-def ptr "field V34._length (fldOffset=0x8)" P-INDEP
+; V132 tmp105 [V132,T84] ( 2, 8 ) byref -> rax single-def "field V34._reference (fldOffset=0x0)" P-INDEP +;* V133 tmp106 [V133,T100] ( 0, 0 ) int -> zero-ref single-def ptr "field V34._length (fldOffset=0x8)" P-INDEP
;* V134 tmp107 [V134 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp108 [V135 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V136 tmp109 [V136 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP @@ -152,10 +152,10 @@ ;* V141 tmp114 [V141 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP ;* V142 tmp115 [V142 ] ( 0, 0 ) ushort -> zero-ref ptr "field V48.Item1 (fldOffset=0x0)" P-INDEP ;* V143 tmp116 [V143 ] ( 0, 0 ) ushort -> zero-ref ptr "field V48.Item2 (fldOffset=0x2)" P-INDEP
-; V144 tmp117 [V144,T84] ( 2, 2 ) byref -> rdi single-def "field V49._reference (fldOffset=0x0)" P-INDEP -; V145 tmp118 [V145,T89] ( 2, 2 ) int -> rsi single-def "field V49._length (fldOffset=0x8)" P-INDEP -; V146 tmp119 [V146,T85] ( 2, 2 ) byref -> rdi single-def "field V50._reference (fldOffset=0x0)" P-INDEP -; V147 tmp120 [V147,T90] ( 2, 2 ) int -> rsi single-def "field V50._length (fldOffset=0x8)" P-INDEP
+; V144 tmp117 [V144,T85] ( 2, 2 ) byref -> rdi single-def "field V49._reference (fldOffset=0x0)" P-INDEP +; V145 tmp118 [V145,T90] ( 2, 2 ) int -> rsi single-def "field V49._length (fldOffset=0x8)" P-INDEP +; V146 tmp119 [V146,T86] ( 2, 2 ) byref -> rdi single-def "field V50._reference (fldOffset=0x0)" P-INDEP +; V147 tmp120 [V147,T91] ( 2, 2 ) int -> rsi single-def "field V50._length (fldOffset=0x8)" P-INDEP
;* V148 tmp121 [V148 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP ;* V149 tmp122 [V149 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V150 tmp123 [V150 ] ( 0, 0 ) ref -> zero-ref ptr "field V73._stringBuilder (fldOffset=0x0)" P-INDEP @@ -169,8 +169,8 @@ ;* V158 tmp131 [V158 ] ( 0, 0 ) int -> zero-ref single-def ptr "field V100._length (fldOffset=0x8)" P-INDEP ;* V159 tmp132 [V159 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V105._reference (fldOffset=0x0)" P-INDEP ;* V160 tmp133 [V160 ] ( 0, 0 ) int -> zero-ref single-def ptr "field V105._length (fldOffset=0x8)" P-INDEP
-; V161 tmp134 [V161,T92] ( 2, 1 ) byref -> rsi single-def "field V106._reference (fldOffset=0x0)" P-INDEP -; V162 tmp135 [V162,T94] ( 2, 1 ) int -> rdx single-def "field V106._length (fldOffset=0x8)" P-INDEP
+; V161 tmp134 [V161,T93] ( 2, 1 ) byref -> rsi single-def "field V106._reference (fldOffset=0x0)" P-INDEP +; V162 tmp135 [V162,T95] ( 2, 1 ) int -> rdx single-def "field V106._length (fldOffset=0x8)" P-INDEP
;* V163 tmp136 [V163 ] ( 0, 0 ) byref -> zero-ref "field V109._reference (fldOffset=0x0)" P-INDEP ;* V164 tmp137 [V164 ] ( 0, 0 ) int -> zero-ref "field V109._length (fldOffset=0x8)" P-INDEP ;* V165 tmp138 [V165 ] ( 0, 0 ) byref -> zero-ref ptr "field V110._reference (fldOffset=0x0)" P-INDEP @@ -179,16 +179,16 @@ ;* V168 tmp141 [V168 ] ( 0, 0 ) int -> zero-ref single-def ptr "field V113._length (fldOffset=0x8)" P-INDEP ;* V169 tmp142 [V169 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V118._reference (fldOffset=0x0)" P-INDEP ;* V170 tmp143 [V170 ] ( 0, 0 ) int -> zero-ref single-def ptr "field V118._length (fldOffset=0x8)" P-INDEP
-; V171 tmp144 [V171,T93] ( 2, 1 ) byref -> rsi single-def "field V119._reference (fldOffset=0x0)" P-INDEP -; V172 tmp145 [V172,T95] ( 2, 1 ) int -> rdx single-def "field V119._length (fldOffset=0x8)" P-INDEP
+; V171 tmp144 [V171,T94] ( 2, 1 ) byref -> rsi single-def "field V119._reference (fldOffset=0x0)" P-INDEP +; V172 tmp145 [V172,T96] ( 2, 1 ) int -> rdx single-def "field V119._length (fldOffset=0x8)" P-INDEP
; V173 tmp146 [V173,T37] ( 4, 12.50) ref -> [rbp-0xC0] spill-single-def ptr "V13.[000..008)" ; V174 tmp147 [V174,T24] ( 6, 20.50) int -> [rbp-0x98] ptr "V13.[008..012)"
-; V175 tmp148 [V175,T58] ( 2, 4.50) int -> [rbp-0x9C] spill-single-def ptr "V13.[012..016)"
+; V175 tmp148 [V175,T59] ( 2, 4.50) int -> [rbp-0x9C] spill-single-def ptr "V13.[012..016)"
; V176 tmp149 [V176,T39] ( 2, 6 ) ushort -> rdx "V13.[016..018)" ; V177 tmp150 [V177,T40] ( 2, 6 ) ushort -> r8 "V13.[018..020)" ;* V178 tmp151 [V178 ] ( 0, 0 ) ref -> zero-ref single-def ptr "V56.[000..008)" ;* V179 tmp152 [V179 ] ( 0, 0 ) int -> zero-ref single-def "V56.[008..012)"
-; V180 tmp153 [V180,T96] ( 2, 1 ) int -> rcx single-def "V56.[012..016)"
+; V180 tmp153 [V180,T97] ( 2, 1 ) int -> rcx single-def "V56.[012..016)"
;* V181 tmp154 [V181 ] ( 0, 0 ) ushort -> zero-ref single-def "V56.[016..018)" ;* V182 tmp155 [V182 ] ( 0, 0 ) ushort -> zero-ref single-def "V56.[018..020)" ; V183 tmp156 [V183,T15] ( 3, 32 ) ref -> r11 "V38.[000..008)" @@ -196,14 +196,15 @@ ;* V185 tmp158 [V185 ] ( 0, 0 ) ubyte -> zero-ref "V38.[016..017)" ; V186 tmp159 [V186,T26] ( 3, 24 ) byref -> rsi "Spilling address for field-by-field copy" ; V187 tmp160 [V187,T27] ( 3, 24 ) ref -> rsi "arr expr"
-; V188 tmp161 [V188,T86] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V188 tmp161 [V188,T87] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V189 GsCookie [V189 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V190 tmp163 [V190,T71] ( 3, 2.50) ref -> [rbp-0xC8] spill-single-def ptr "shadowVar"
+; V190 tmp163 [V190,T72] ( 3, 2.50) ref -> [rbp-0xC8] spill-single-def ptr "shadowVar"
; V191 tmp164 [V191,T22] ( 10, 34.50) ref -> rbx single-def "shadowVar"
-; V192 cse0 [V192,T65] ( 6, 3 ) int -> registers multi-def "CSE - conservative" -; V193 cse1 [V193,T38] ( 2, 8 ) int -> rsi "CSE - conservative" -; V194 cse2 [V194,T68] ( 4, 3 ) int -> r15 "CSE - conservative" -; V195 cse3 [V195,T23] ( 9, 34 ) int -> r13 "CSE - moderate"
+; V192 cse0 [V192,T66] ( 6, 3 ) int -> registers multi-def "CSE - conservative" +; V193 cse1 [V193,T46] ( 2, 8 ) int -> rsi "CSE - conservative" +; V194 cse2 [V194,T38] ( 2, 8 ) int -> rsi "CSE - conservative" +; V195 cse3 [V195,T69] ( 4, 3 ) int -> r15 "CSE - conservative" +; V196 cse4 [V196,T23] ( 9, 34 ) int -> r13 "CSE - moderate"
; ; Lcl frame size = 168 @@ -294,7 +295,7 @@ G_M33095_IG05: ; bbWeight=0.50, gcrefRegs=C009 {rax rbx r14 r15}, byrefRe mov dword ptr [rbp-0x9C], ecx jmp G_M33095_IG10 ;; size=23 bbWeight=0.50 PerfScore 3.12
-G_M33095_IG06: ; bbWeight=2, gcVars=00000000000000800000002000000000 {V173 V190}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33095_IG06: ; bbWeight=2, gcVars=00000000000001000000002000000000 {V173 V190}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi] @@ -355,7 +356,8 @@ G_M33095_IG09: ; bbWeight=0.51, gcrefRegs=C009 {rax rbx r14 r15}, byrefRe mov edi, dword ptr [rbp-0x98] ;; size=31 bbWeight=0.51 PerfScore 3.32 G_M33095_IG10: ; bbWeight=4, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp ecx, dword ptr [rax+0x14]
+ mov esi, dword ptr [rax+0x14] + cmp ecx, esi
jne G_M33095_IG68 mov esi, dword ptr [rax+0x10] cmp edi, esi @@ -373,8 +375,8 @@ G_M33095_IG10: ; bbWeight=4, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs= ...

+24 (+3.61%) : 67991.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)

@@ -112,7 +112,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG03: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -139,7 +139,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -158,11 +158,11 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 test r15d, r15d mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx]
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=37 bbWeight=1 PerfScore 7.50 G_M40104_IG09: ; bbWeight=4.00, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, gcvars, byref cmp eax, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=11 bbWeight=4.00 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.48, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref mov edx, 192 @@ -173,7 +173,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc add rdi, rsi mov esi, r15d cmp rdi, rsi
- ja G_M40104_IG37
+ ja G_M40104_IG35
mov r8d, r12d add r8, r13 ; byrRegs +[r8] @@ -198,7 +198,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000140 {V24 V51}, gcrefRegs mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx] ;; size=26 bbWeight=2 PerfScore 9.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref
mov rdi, bword ptr [rbp-0x48] ; byrRegs +[rdi] mov edx, dword ptr [rbp-0x3C] @@ -213,15 +213,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc call [<unknown method>] ; byrRegs -[rdx rdi] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp-0x38] mov dword ptr [rbp-0x40], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=59 bbWeight=4 PerfScore 49.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
+ jge G_M40104_IG27 + ;; size=63 bbWeight=4 PerfScore 49.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov r8, 0xD1FFAB1E ; gcrRegs +[r8] mov rcx, r8 @@ -234,32 +234,6 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rcx rsi rdi r8]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref, isz - ; GC ptr vars -{V76} - mov eax, dword ptr [rbp-0x40] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref - ; byrRegs +[rcx] - mov dword ptr [rbp-0x2C], eax - mov edx, eax - mov eax, dword ptr [rbp-0x2C] - jmp G_M40104_IG11 - ;; size=13 bbWeight=0.52 PerfScore 2.21 -G_M40104_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; byrRegs -[rcx] - ; GC ptr vars -{V51} - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 60 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.01 PerfScore 0.04 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; GC ptr vars +{V51 V76}
mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi] mov rsi, rdi @@ -268,8 +242,8 @@ G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs call [<unknown method>] ; gcrRegs -[rsi rdi] mov eax, dword ptr [rbp-0x40]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, bword ptr [rbp-0x50] @@ -287,52 +261,39 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; byrRegs +[rcx] jg G_M40104_IG09 ;; size=38 bbWeight=4 PerfScore 37.00
-G_M40104_IG20: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx r13] ; GC ptr vars -{V51}
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.01, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref - ; byrRegs +[r13] - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 62 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.01 PerfScore 0.04 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r13]
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.49 PerfScore 2.10
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.49, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.49 PerfScore 2.10
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] test r14, r14
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r14+0x08] lea rsi, bword ptr [r14+0x0C] ; byrRegs +[rsi] @@ -342,29 +303,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs -[rdi r14] ; byrRegs -[rsi] ;; size=17 bbWeight=0.50 PerfScore 2.86
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.49 PerfScore 2.10
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi] mov rdi, 0xD1FFAB1E cmp qword ptr [rbp-0x60], rdi
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp-0x28] pop rbx pop r12 @@ -374,33 +335,65 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.50
-G_M40104_IG33: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs +[rbx r14]
+ ; byrRegs +[r13] + ; GC ptr vars +{V51} + mov eax, dword ptr [rbp-0x40] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref + ; byrRegs +[rcx] + mov dword ptr [rbp-0x2C], eax + mov edx, eax + mov eax, dword ptr [rbp-0x2C] + jmp G_M40104_IG11 + ;; size=13 bbWeight=0.52 PerfScore 2.21 +G_M40104_IG29: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref + ; byrRegs -[rcx] + ; GC ptr vars -{V51}
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 60 call [<unknown method>] ; gcrRegs -[rdi]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.01 PerfScore 0.04 -G_M40104_IG34: ; bbWeight=0.01, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.01 PerfScore 0.04 +G_M40104_IG30: ; bbWeight=0.01, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
...

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-18 (-8.00%) : 296639.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessagesint (FullOpts)

@@ -8,76 +8,75 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 10 ) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.ITargetBlock`1[int]> -; V01 arg1 [V01,T01] ( 5, 15 ) ref -> [rbp-0x38] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> -; V02 arg2 [V02,T07] ( 3, 2 ) byref -> [rbp-0x40] EH-live single-def
+; V00 arg0 [V00,T04] ( 4, 10 ) ref -> [rbp-0x28] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.ITargetBlock`1[int]> +; V01 arg1 [V01,T00] ( 5, 19 ) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> +; V02 arg2 [V02,T07] ( 3, 2 ) byref -> [rbp-0x38] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x14] do-not-enreg[Z] EH-live -; V05 loc2 [V05 ] ( 6, 28 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x0C] do-not-enreg[Z] EH-live +; V05 loc2 [V05 ] ( 6, 32 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]>
+; V08 tmp1 [V08,T01] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader>
-; V10 tmp3 [V10,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]>
+; V10 tmp3 [V10,T02] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> ; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> rsi class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V13 tmp6 [V13,T06] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V14 tmp7 [V14,T00] ( 3, 24 ) ubyte -> r15 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V16 tmp9 [V16 ] ( 4, 20 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP -; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
+; V16 tmp9 [V16 ] ( 4, 24 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP +; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref "field V09._id (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) long -> zero-ref "field V11._id (fldOffset=0x0)" P-INDEP
-; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M25687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push rbx
- sub rsp, 64 - lea rbp, [rsp+0x50]
+ sub rsp, 56 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x50], rsp - mov gword ptr [rbp-0x30], rdi
+ mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x40], rsp + mov gword ptr [rbp-0x28], rdi
; GC ptr vars +{V00}
- mov gword ptr [rbp-0x38], rsi
+ mov gword ptr [rbp-0x30], rsi
; GC ptr vars +{V01}
- mov bword ptr [rbp-0x40], rdx
+ mov bword ptr [rbp-0x38], rdx
; GC ptr vars +{V02} mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=38 bbWeight=1 PerfScore 9.25 -G_M25687_IG02: ; bbWeight=1, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=36 bbWeight=1 PerfScore 8.25 +G_M25687_IG02: ; bbWeight=1, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi] mov rax, gword ptr [rsi+0x10] ; gcrRegs +[rax] cmp byte ptr [rax], al xor eax, eax ; gcrRegs -[rax]
- mov dword ptr [rbp-0x14], eax
+ mov dword ptr [rbp-0x0C], eax
jmp SHORT G_M25687_IG05 ;; size=13 bbWeight=1 PerfScore 8.25 G_M25687_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi]
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rdx, rbx ; gcrRegs +[rdx]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdx rdi] ; gcr arg pop 0 test eax, eax je SHORT G_M25687_IG04
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rdx, rbx ; gcrRegs +[rdx]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdx rdi] @@ -86,64 +85,56 @@ G_M25687_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=53 bbWeight=4 PerfScore 50.00 G_M25687_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- mov esi, dword ptr [rbp-0x14]
+ mov esi, dword ptr [rbp-0x0C]
inc esi
- mov dword ptr [rbp-0x14], esi - mov rbx, gword ptr [rbp-0x30]
+ mov dword ptr [rbp-0x0C], esi + mov rbx, gword ptr [rbp-0x28]
; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi] ;; size=16 bbWeight=4 PerfScore 17.00 G_M25687_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rsi+0x08] ; gcrRegs +[rdi]
- lea rsi, [rbp-0x28]
+ lea rsi, [rbp-0x20]
; gcrRegs -[rsi] cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov r15d, eax - test r15d, r15d - je SHORT G_M25687_IG07 - ;; size=24 bbWeight=8 PerfScore 80.00 -G_M25687_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rsi, gword ptr [rbp-0x38]
+ test eax, eax + je SHORT G_M25687_IG06 + mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi] mov rdi, gword ptr [rsi+0x10] ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x20]
cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=20 bbWeight=4 PerfScore 40.00 -G_M25687_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test r15d, r15d - jne SHORT G_M25687_IG03 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M25687_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ jmp SHORT G_M25687_IG03 + ;; size=42 bbWeight=8 PerfScore 174.00 +G_M25687_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[rbx] ; GC ptr vars -{V00 V01 V02}
- add rsp, 64
+ add rsp, 56
pop rbx
- pop r15
pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M25687_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M25687_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp
- push r15
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x50] - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M25687_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ lea rbp, [rbp+0x40] + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M25687_IG08: ; bbWeight=0, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V01 V02 V04}
- mov rdi, bword ptr [rbp-0x40]
+ mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi] xor edx, edx call [<unknown method>] @@ -152,15 +143,14 @@ G_M25687_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcref ; gcr arg pop 0 lea rax, G_M25687_IG04 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M25687_IG11: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 16
+G_M25687_IG09: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 8
pop rbx
- pop r15
pop rbp ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 225, prolog size 38, PerfScore 217.25, instruction count 70, allocated bytes for code 225 (MethodHash=9b8f9ba8) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
+; Total bytes of code 207, prolog size 36, PerfScore 259.75, instruction count 64, allocated bytes for code 207 (MethodHash=9b8f9ba8) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -168,29 +158,27 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M25687_IG03..G_M25687_IG04) handled by [G_M25687_IG09..END) (class: 1000022)
+EH#0: try [G_M25687_IG03..G_M25687_IG04) handled by [G_M25687_IG07..END) (class: 1000022)
-8 (-6.78%) : 149330.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> r14
+; V00 this [V00,T02] ( 4, 18 ) ref -> r15 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> rbx class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> rdi class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -20,21 +20,20 @@ ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP ; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
lea rbp, [rsp+0x20] mov qword ptr [rbp-0x20], rsp mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=22 bbWeight=8 PerfScore 56.00
+ ;; size=23 bbWeight=8 PerfScore 42.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref xor rdi, rdi ; gcrRegs +[rdi] @@ -48,13 +47,11 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
- mov r14d, eax - ;; size=27 bbWeight=8 PerfScore 80.00
+ nop + ;; size=25 bbWeight=8 PerfScore 80.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d - jne SHORT G_M14120_IG05 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test eax, eax + jne SHORT G_M14120_IG04
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, rbx @@ -62,43 +59,37 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - test r14d, r14d - je SHORT G_M14120_IG02 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M14120_IG02 + ;; size=18 bbWeight=8 PerfScore 54.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r15]
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x20]
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - lea rax, G_M14120_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + lea rax, G_M14120_IG04
;; size=7 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 8
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 22, PerfScore 173.25, instruction count 45, allocated bytes for code 118 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 110, prolog size 23, PerfScore 178.75, instruction count 40, allocated bytes for code 110 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -106,14 +97,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: @@ -121,16 +111,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-25 (-4.58%) : 297451.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
@@ -9,72 +9,71 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 12, 54 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]>
-; V01 loc0 [V01 ] ( 4, 28 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V01 loc0 [V01 ] ( 4, 32 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
; V02 loc1 [V02,T11] ( 3, 13 ) ubyte -> r15
-; V03 loc2 [V03 ] ( 2, 16 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
+; V03 loc2 [V03 ] ( 2, 16 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc3 [V04,T12] ( 2, 9 ) int -> r14
-; V05 loc4 [V05,T07] ( 4, 21 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live <<unknown class>> -; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc6 [V07,T09] ( 2, 16 ) ubyte -> rsi -; V08 loc7 [V08,T15] ( 3, 3 ) ubyte -> [rbp-0x44] do-not-enreg[Z] EH-live -; V09 loc8 [V09,T16] ( 4, 2 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>> -; V10 loc9 [V10 ] ( 6, 5 ) ubyte -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc4 [V05,T06] ( 4, 21 ) ref -> [rbp-0x50] do-not-enreg[Z] class-hnd EH-live <<unknown class>> +; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V07 loc6 [V07,T08] ( 2, 16 ) ubyte -> rsi +; V08 loc7 [V08,T15] ( 3, 3 ) ubyte -> [rbp-0x3C] do-not-enreg[Z] EH-live +; V09 loc8 [V09,T16] ( 4, 2 ) ref -> [rbp-0x58] class-hnd EH-live spill-single-def <<unknown class>> +; V10 loc9 [V10 ] ( 6, 5 ) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T08] ( 3, 16 ) int -> rsi
+; V12 tmp1 [V12,T07] ( 3, 16 ) int -> rsi
; V13 tmp2 [V13,T03] ( 2, 32 ) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]> ;* V14 tmp3 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> ; V15 tmp4 [V15,T13] ( 3, 6 ) ref -> rdi class-hnd single-def "dup spill" <System.Threading.Tasks.Dataflow.Internal.BoundingState> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V17 tmp6 [V17,T04] ( 2, 32 ) ubyte -> rdi "Inlining Arg" ; V18 tmp7 [V18,T01] ( 3, 48 ) ref -> rsi class-hnd "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.BoundingState>
-; V19 tmp8 [V19,T02] ( 3, 40 ) ref -> r14 class-hnd exact "Inlining Arg" <<unknown class>> -; V20 tmp9 [V20,T06] ( 3, 24 ) ubyte -> r13 "Inline stloc first use temp"
+; V19 tmp8 [V19,T02] ( 3, 48 ) ref -> r14 class-hnd exact "Inlining Arg" <<unknown class>> +; V20 tmp9 [V20,T09] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V23 tmp12 [V23,T14] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
-; V24 tmp13 [V24 ] ( 3, 20 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP -; V25 tmp14 [V25 ] ( 2, 16 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
+; V24 tmp13 [V24 ] ( 3, 24 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP +; V25 tmp14 [V25 ] ( 2, 16 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
;* V26 tmp15 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._id (fldOffset=0x0)" P-INDEP
-; V27 PSPSym [V27,T17] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V27 PSPSym [V27,T17] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V28 cse0 [V28,T05] ( 3, 24 ) ref -> rdi "CSE - aggressive" ; V29 cse1 [V29,T10] ( 6, 15 ) ref -> rsi multi-def "CSE - moderate" ;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M55251_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 80 - lea rbp, [rsp+0x70]
+ sub rsp, 72 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0x70], rsp
+ mov qword ptr [rbp-0x28], rax + mov qword ptr [rbp-0x60], rsp
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=30 bbWeight=8 PerfScore 66.00
+ ;; size=28 bbWeight=8 PerfScore 58.00
G_M55251_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rsi, gword ptr [rsi+0x10]
- mov gword ptr [rbp-0x58], rsi
+ mov gword ptr [rbp-0x50], rsi
; GC ptr vars +{V05} xor esi, esi ; gcrRegs -[rsi]
- mov dword ptr [rbp-0x40], esi
+ mov dword ptr [rbp-0x38], esi
;; size=17 bbWeight=8 PerfScore 50.00
-G_M55251_IG03: ; bbWeight=8, gcVars=0000000000000080 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x40], 0 - jne G_M55251_IG11 - lea rsi, [rbp-0x40] - mov rdi, gword ptr [rbp-0x58]
+G_M55251_IG03: ; bbWeight=8, gcVars=0000000000000040 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x38], 0 + jne G_M55251_IG10 + lea rsi, [rbp-0x38] + mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi] call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- movzx rdi, byte ptr [rbp-0x40]
+ movzx rdi, byte ptr [rbp-0x38]
test edi, edi jne SHORT G_M55251_IG05 ;; size=32 bbWeight=8 PerfScore 62.00 @@ -100,7 +99,7 @@ G_M55251_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rsi] mov eax, dword ptr [rsi+0x0C] cmp eax, dword ptr [rsi+0x08]
- jl SHORT G_M55251_IG12
+ jl SHORT G_M55251_IG08
;; size=28 bbWeight=8 PerfScore 108.00 G_M55251_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi] @@ -111,72 +110,66 @@ G_M55251_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, G_M55251_IG07: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz movzx rsi, sil cmp byte ptr [rbx+0x28], 0
- jne SHORT G_M55251_IG10
+ jne SHORT G_M55251_IG09
cmp byte ptr [rdi+0x48], 0
- jne SHORT G_M55251_IG10
+ jne SHORT G_M55251_IG09
test esi, esi
- je SHORT G_M55251_IG10
+ je SHORT G_M55251_IG09
mov rdi, gword ptr [rbx+0x20] mov r14, gword ptr [rdi+0x08] ; gcrRegs +[r14] mov rdi, gword ptr [r14+0x08]
- lea rsi, [rbp-0x30]
+ lea rsi, [rbp-0x28]
cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov r13d, eax - test r13d, r13d
+ test eax, eax
je SHORT G_M55251_IG09
- ;; size=52 bbWeight=8 PerfScore 188.00 -G_M55251_IG08: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r14+0x10] ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x30]
+ mov rsi, gword ptr [rbp-0x28]
; gcrRegs +[rsi] cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rsi rdi r14] ; gcr arg pop 0
- ;; size=16 bbWeight=4 PerfScore 36.00 -G_M55251_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test r13d, r13d - jne SHORT G_M55251_IG13 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M55251_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx]
+ jmp SHORT G_M55251_IG11 + ;; size=66 bbWeight=8 PerfScore 274.00 +G_M55251_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + mov esi, 1 + jmp SHORT G_M55251_IG07 + ;; size=7 bbWeight=4 PerfScore 9.00 +G_M55251_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rdi]
xor edi, edi
- mov dword ptr [rbp-0x44], edi - jmp SHORT G_M55251_IG17
+ mov dword ptr [rbp-0x3C], edi + jmp SHORT G_M55251_IG15
;; size=7 bbWeight=1 PerfScore 3.25
-G_M55251_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55251_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M55251_IG12: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi] - mov esi, 1 - jmp SHORT G_M55251_IG07 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M55251_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - cmp byte ptr [rbp-0x40], 0 - je SHORT G_M55251_IG15
+G_M55251_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx] + cmp byte ptr [rbp-0x38], 0 + je SHORT G_M55251_IG13
;; size=6 bbWeight=8 PerfScore 24.00
-G_M55251_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rdi, gword ptr [rbp-0x58]
+G_M55251_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi] ; GC ptr vars -{V05} call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=9 bbWeight=4 PerfScore 8.00
-G_M55251_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rdi, gword ptr [rbp-0x30]
+G_M55251_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
- lea rcx, [rbp-0x38] - mov rsi, qword ptr [rbp-0x28]
+ lea rcx, [rbp-0x30] + mov rsi, qword ptr [rbp-0x20]
mov rdx, rbx ; gcrRegs +[rdx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -184,51 +177,51 @@ G_M55251_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx rdi] ; gcr arg pop 0 mov r14d, eax
- cmp byte ptr [rbp-0x38], 0
+ cmp byte ptr [rbp-0x30], 0
je G_M55251_IG02 ;; size=41 bbWeight=8 PerfScore 74.00
-G_M55251_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M55251_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rdi, gword ptr [rsi+0x10] ; gcrRegs +[rdi]
- mov gword ptr [rbp-0x60], rdi
+ mov gword ptr [rbp-0x58], rdi
; GC ptr vars +{V09} xor esi, esi ; gcrRegs -[rsi]
- mov dword ptr [rbp-0x50], esi - jmp SHORT G_M55251_IG19
+ mov dword ptr [rbp-0x48], esi + jmp SHORT G_M55251_IG17
;; size=19 bbWeight=1 PerfScore 8.25
-G_M55251_IG17: ; bbWeight=1, gcVars=0000000000000080 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M55251_IG15: ; bbWeight=1, gcVars=0000000000000040 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi]
- ; GC ptr vars -{V09} +{V05 V07}
+ ; GC ptr vars -{V09} +{V05}
mov rdi, rsp
- call G_M55251_IG27
+ call G_M55251_IG25
;; size=8 bbWeight=1 PerfScore 1.25
-G_M55251_IG18: ; bbWeight=1, nogc, isz, extend - jmp SHORT G_M55251_IG25
+G_M55251_IG16: ; bbWeight=1, nogc, isz, extend + jmp SHORT G_M55251_IG23
;; size=2 bbWeight=1 PerfScore 2.00
-G_M55251_IG19: ; bbWeight=1, gcVars=0000000000010000 {V09}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
...

+3 (+2.13%) : 122779.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)

@@ -8,32 +8,33 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> -; V01 arg1 [V01,T11] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
+; V00 arg0 [V00,T11] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> +; V01 arg1 [V01,T12] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]> ; V03 loc1 [V03 ] ( 4, 8 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.IO.Compression.ZipGenericExtraField> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp2 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> ; V08 tmp4 [V08 ] ( 2, 4 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._data (fldOffset=0x0)" P-DEP ; V09 tmp5 [V09 ] ( 2, 4 ) ushort -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._tag (fldOffset=0x8)" P-DEP ; V10 tmp6 [V10 ] ( 2, 4 ) ushort -> [rbp-0x26] do-not-enreg[X] addr-exposed "field V03._size (fldOffset=0xa)" P-DEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> r14 single-def "V02.[000..008)" ; V12 tmp8 [V12,T01] ( 6, 21 ) int -> r13 "V02.[008..012)"
-; V13 tmp9 [V13,T08] ( 2, 9 ) int -> r15 "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rsi "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ushort -> rax "V02.[024..026)" -; V16 tmp12 [V16,T07] ( 2, 6 ) ushort -> rdi "V02.[026..028)"
+; V13 tmp9 [V13,T09] ( 2, 9 ) int -> r15 "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rsi "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ushort -> rax "V02.[024..026)" +; V16 tmp12 [V16,T08] ( 2, 6 ) ushort -> rdi "V02.[026..028)"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)"
-; V19 tmp15 [V19,T12] ( 2, 2 ) int -> r15 "V05.[012..016)"
+; V19 tmp15 [V19,T13] ( 2, 2 ) int -> r15 "V05.[012..016)"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)" ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "V05.[024..026)" ;* V22 tmp18 [V22 ] ( 0, 0 ) ushort -> zero-ref "V05.[026..028)" ; V23 tmp19 [V23,T00] ( 4, 32 ) byref -> rdi "Spilling address for field-by-field copy" ; V24 tmp20 [V24,T02] ( 3, 24 ) ref -> rdi "arr expr"
-; V25 cse0 [V25,T04] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T05] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V26 cse1 [V26,T04] ( 2, 16 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -69,9 +70,10 @@ G_M41630_IG03: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 ; gcrRegs -[rsi] ;; size=25 bbWeight=2 PerfScore 13.50 G_M41630_IG04: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- cmp r15d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r15d, edi
jne SHORT G_M41630_IG08
- ;; size=6 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M41630_IG05: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [r14+0x10] cmp r13d, edi @@ -111,7 +113,7 @@ G_M41630_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 141, prolog size 23, PerfScore 149.25, instruction count 46, allocated bytes for code 141 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
+; Total bytes of code 144, prolog size 23, PerfScore 143.25, instruction count 47, allocated bytes for code 144 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
; ============================================================ Unwind Info:

+32 (+3.26%) : 214055.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)

@@ -84,10 +84,10 @@ ;* V73 tmp64 [V73 ] ( 0, 0 ) int -> zero-ref "field V23._sign (fldOffset=0x8)" P-DEP ; V74 tmp65 [V74 ] ( 3, 40 ) ref -> [rbp-0xA0] do-not-enreg[X] addr-exposed "field V25._bits (fldOffset=0x0)" P-DEP ; V75 tmp66 [V75 ] ( 3, 40 ) int -> [rbp-0x98] do-not-enreg[X] addr-exposed "field V25._sign (fldOffset=0x8)" P-DEP
-; V76 tmp67 [V76,T28] ( 3, 16 ) byref -> rdi "field V27._reference (fldOffset=0x0)" P-INDEP -; V77 tmp68 [V77,T32] ( 3, 16 ) int -> rsi "field V27._length (fldOffset=0x8)" P-INDEP -; V78 tmp69 [V78,T29] ( 3, 16 ) byref -> rcx "field V30._reference (fldOffset=0x0)" P-INDEP -; V79 tmp70 [V79,T33] ( 3, 16 ) int -> r8 "field V30._length (fldOffset=0x8)" P-INDEP
+; V76 tmp67 [V76,T28] ( 3, 20.27) byref -> rdi "field V27._reference (fldOffset=0x0)" P-INDEP +; V77 tmp68 [V77,T30] ( 3, 20.27) int -> rsi "field V27._length (fldOffset=0x8)" P-INDEP +; V78 tmp69 [V78,T32] ( 3, 16 ) byref -> rcx "field V30._reference (fldOffset=0x0)" P-INDEP +; V79 tmp70 [V79,T34] ( 3, 16 ) int -> r8 "field V30._length (fldOffset=0x8)" P-INDEP
; V80 tmp71 [V80,T19] ( 3, 24 ) ref -> rax "field V32._bits (fldOffset=0x0)" P-INDEP ; V81 tmp72 [V81,T23] ( 3, 24 ) int -> r10 "field V32._sign (fldOffset=0x8)" P-INDEP ; V82 tmp73 [V82,T16] ( 4, 24.54) ref -> r12 "field V33._bits (fldOffset=0x0)" P-INDEP @@ -102,9 +102,9 @@ ;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "field V37._sign (fldOffset=0x8)" P-DEP ; V92 tmp83 [V92 ] ( 3, 40 ) ref -> [rbp-0xB0] do-not-enreg[X] addr-exposed "field V39._bits (fldOffset=0x0)" P-DEP ; V93 tmp84 [V93 ] ( 3, 40 ) int -> [rbp-0xA8] do-not-enreg[X] addr-exposed "field V39._sign (fldOffset=0x8)" P-DEP
-; V94 tmp85 [V94,T30] ( 3, 16 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP -; V95 tmp86 [V95,T34] ( 3, 16 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP -; V96 tmp87 [V96,T31] ( 3, 16 ) byref -> rcx "field V44._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp85 [V94,T29] ( 3, 20.27) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP +; V95 tmp86 [V95,T31] ( 3, 20.27) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP +; V96 tmp87 [V96,T33] ( 3, 16 ) byref -> rcx "field V44._reference (fldOffset=0x0)" P-INDEP
; V97 tmp88 [V97,T35] ( 3, 16 ) int -> r8 "field V44._length (fldOffset=0x8)" P-INDEP ; V98 tmp89 [V98 ] ( 4, 56.00) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed "field V46._flags (fldOffset=0x0)" P-DEP ; V99 tmp90 [V99 ] ( 3, 64.00) int -> [rbp-0xBC] do-not-enreg[X] addr-exposed "field V46._hi32 (fldOffset=0x4)" P-DEP @@ -152,7 +152,7 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor r15d, r15d mov r14d, dword ptr [rbx+0x08] test r14d, r14d
- jle G_M48799_IG31
+ jle G_M48799_IG37
;; size=31 bbWeight=1 PerfScore 7.50 G_M48799_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -163,7 +163,7 @@ G_M48799_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi] cmp r15d, dword ptr [rsi+0x08]
- jae G_M48799_IG35
+ jae G_M48799_IG38
mov rsi, gword ptr [rbp-0x30] mov edi, r15d lea rdi, [rdi+2*rdi] @@ -186,7 +186,7 @@ G_M48799_IG06: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi] cmp r13d, dword ptr [rsi+0x08]
- jae G_M48799_IG35
+ jae G_M48799_IG38
mov rsi, gword ptr [rbp-0x30] mov edi, r13d lea rdi, [rdi+2*rdi] @@ -207,7 +207,7 @@ G_M48799_IG08: ; bbWeight=16, extend movzx rax, byte ptr [rbp-0x58] sub eax, edi test eax, eax
- jle G_M48799_IG17
+ jle G_M48799_IG20
;; size=26 bbWeight=16 PerfScore 61.33 G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rsi] @@ -218,7 +218,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rsi] ; gcrRegs +[rsi] cmp eax, 60
- jae G_M48799_IG35
+ jae G_M48799_IG38
mov edi, eax shl rdi, 4 lea rsi, bword ptr [rsi+rdi+0x10] @@ -228,7 +228,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] mov r9d, dword ptr [rsi+0x08] test r12, r12
- jne SHORT G_M48799_IG11
+ jne SHORT G_M48799_IG13
test rax, rax jne SHORT G_M48799_IG10 vxorps xmm0, xmm0, xmm0 @@ -244,42 +244,64 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rbp-0xA0] ; gcrRegs +[rsi] mov edx, dword ptr [rbp-0x98]
- jmp SHORT G_M48799_IG16
+ jmp SHORT G_M48799_IG19
;; size=107 bbWeight=8 PerfScore 200.67
-G_M48799_IG10: ; bbWeight=3.73, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M48799_IG10: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] +[rax] xor rdi, rdi ; byrRegs +[rdi] xor esi, esi
- jmp SHORT G_M48799_IG12 - ;; size=6 bbWeight=3.73 PerfScore 9.33 -G_M48799_IG11: ; bbWeight=4.27, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref - ; gcrRegs +[r12] - ; byrRegs -[rdi] - lea rdi, bword ptr [r12+0x10] - ; byrRegs +[rdi] - mov esi, dword ptr [r12+0x08] - ;; size=10 bbWeight=4.27 PerfScore 10.67 -G_M48799_IG12: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[r12]
+ ;; size=4 bbWeight=8 PerfScore 4.00 +G_M48799_IG11: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
test rax, rax
- jne SHORT G_M48799_IG14
+ jne SHORT G_M48799_IG17
;; size=5 bbWeight=8 PerfScore 10.00
-G_M48799_IG13: ; bbWeight=3.73, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M48799_IG12: ; bbWeight=3.73, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax] xor rcx, rcx ; byrRegs +[rcx] xor r8d, r8d
- jmp SHORT G_M48799_IG15
+ jmp SHORT G_M48799_IG18
;; size=7 bbWeight=3.73 PerfScore 9.33
-G_M48799_IG14: ; bbWeight=4.27, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref
+G_M48799_IG13: ; bbWeight=4.27, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax r12] + ; byrRegs -[rcx rdi] + lea rdi, bword ptr [r12+0x10] + ; byrRegs +[rdi] + mov esi, dword ptr [r12+0x08] + jmp SHORT G_M48799_IG11 + ;; size=12 bbWeight=4.27 PerfScore 19.21 +G_M48799_IG14: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax r12] + ; byrRegs -[rdi] + mov rsi, gword ptr [rbp-0x78] + ; gcrRegs +[rsi] + mov rdx, qword ptr [rbp-0x70] + lea rdi, [rbp-0x50] + call [<unknown method>] + ; gcrRegs -[rsi] + ; gcr arg pop 0 + mov r12d, eax + ;; size=21 bbWeight=8 PerfScore 46.00 +G_M48799_IG15: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + vmovups xmm0, xmmword ptr [rbp-0x68] + vmovups xmmword ptr [rbp-0xC0], xmm0 + mov rdi, qword ptr [rbp-0xB8] + mov esi, dword ptr [rbp-0xBC] + or rdi, rsi + jne G_M48799_IG35 + ;; size=35 bbWeight=16 PerfScore 116.00 +G_M48799_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M48799_IG32 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M48799_IG17: ; bbWeight=4.27, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rax]
- ; byrRegs -[rcx]
+ ; byrRegs +[rdi]
lea rcx, bword ptr [rax+0x10] ; byrRegs +[rcx] mov r8d, dword ptr [rax+0x08] ;; size=8 bbWeight=4.27 PerfScore 10.67
-G_M48799_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0082 {rcx rdi}, byref
+G_M48799_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0082 {rcx rdi}, byref
; gcrRegs -[rax] call [<unknown method>] ; gcrRegs +[rax] @@ -288,18 +310,18 @@ G_M48799_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0082 {rcx rd mov rsi, rax ; gcrRegs +[rsi] ;; size=9 bbWeight=8 PerfScore 26.00
-G_M48799_IG16: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48799_IG19: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] lea rdi, [rbp-0x50] call [<unknown method>] ; gcrRegs -[rsi] ; gcr arg pop 0 mov r12d, eax
- jmp G_M48799_IG26 - ;; size=18 bbWeight=8 PerfScore 46.00 -G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M48799_IG15 + ;; size=15 bbWeight=8 PerfScore 46.00 +G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jge G_M48799_IG25
+ jge SHORT G_M48799_IG14
mov r12, gword ptr [rbp-0x50] ; gcrRegs +[r12] mov edx, dword ptr [rbp-0x48] @@ -309,7 +331,7 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov edi, eax neg edi cmp edi, 60
- jae G_M48799_IG35
+ jae G_M48799_IG38
mov edi, eax neg edi shl rdi, 4 @@ -320,9 +342,9 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] mov r9d, dword ptr [rsi+0x08] test r12, r12
- jne SHORT G_M48799_IG19
+ jne SHORT G_M48799_IG24
test rax, rax
- jne SHORT G_M48799_IG18
+ jne SHORT G_M48799_IG21
vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0xB0], xmm0 movsxd rsi, edx @@ -336,41 +358,62 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rax, gword ptr [rbp-0xB0] ; gcrRegs +[rax] mov r10d, dword ptr [rbp-0xA8]
- jmp SHORT G_M48799_IG24 - ;; size=122 bbWeight=8 PerfScore 216.67 -G_M48799_IG18: ; bbWeight=3.73, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M48799_IG31 + ;; size=118 bbWeight=8 PerfScore 216.67 +G_M48799_IG21: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi ; byrRegs +[rdi] xor esi, esi
- jmp SHORT G_M48799_IG20 - ;; size=6 bbWeight=3.73 PerfScore 9.33 -G_M48799_IG19: ; bbWeight=4.27, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref - ; gcrRegs +[r12] - ; byrRegs -[rdi] - lea rdi, bword ptr [r12+0x10] - ; byrRegs +[rdi] - mov esi, dword ptr [r12+0x08] - ;; size=10 bbWeight=4.27 PerfScore 10.67 -G_M48799_IG20: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[r12]
+ ;; size=4 bbWeight=8 PerfScore 4.00 +G_M48799_IG22: ; bbWeight=8, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
test rax, rax
- jne SHORT G_M48799_IG22
+ jne SHORT G_M48799_IG29
;; size=5 bbWeight=8 PerfScore 10.00
-G_M48799_IG21: ; bbWeight=3.73, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M48799_IG23: ; bbWeight=3.73, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax] xor rcx, rcx ; byrRegs +[rcx] xor r8d, r8d
- jmp SHORT G_M48799_IG23
+ jmp SHORT G_M48799_IG30
;; size=7 bbWeight=3.73 PerfScore 9.33 ...

+24 (+3.61%) : 215074.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)

@@ -112,7 +112,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG03: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -139,7 +139,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=2000 {r13}, byref mov edi, edi @@ -158,11 +158,11 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 test r15d, r15d mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx]
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=37 bbWeight=1 PerfScore 7.50 G_M40104_IG09: ; bbWeight=4.00, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, gcvars, byref cmp eax, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=11 bbWeight=4.00 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.48, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref mov edx, 192 @@ -173,7 +173,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc add rdi, rsi mov esi, r15d cmp rdi, rsi
- ja G_M40104_IG37
+ ja G_M40104_IG35
mov r8d, r12d add r8, r13 ; byrRegs +[r8] @@ -198,7 +198,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000140 {V24 V51}, gcrefRegs mov rcx, bword ptr [rbp-0x50] ; byrRegs +[rcx] ;; size=26 bbWeight=2 PerfScore 9.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref
mov rdi, bword ptr [rbp-0x48] ; byrRegs +[rdi] mov edx, dword ptr [rbp-0x3C] @@ -213,15 +213,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rc call [<unknown method>] ; byrRegs -[rdx rdi] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp-0x38] mov dword ptr [rbp-0x40], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=59 bbWeight=4 PerfScore 49.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
+ jge G_M40104_IG27 + ;; size=63 bbWeight=4 PerfScore 49.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov r8, 0xD1FFAB1E ; gcrRegs +[r8] mov rcx, r8 @@ -234,32 +234,6 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rcx rsi rdi r8]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref, isz - ; GC ptr vars -{V76} - mov eax, dword ptr [rbp-0x40] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref - ; byrRegs +[rcx] - mov dword ptr [rbp-0x2C], eax - mov edx, eax - mov eax, dword ptr [rbp-0x2C] - jmp G_M40104_IG11 - ;; size=13 bbWeight=0.52 PerfScore 2.21 -G_M40104_IG17: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; byrRegs -[rcx] - ; GC ptr vars -{V51} - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 60 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref - ; GC ptr vars +{V51 V76}
mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi] mov rsi, rdi @@ -268,8 +242,8 @@ G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000120 {V51 V76}, gcrefRegs call [<unknown method>] ; gcrRegs -[rsi rdi] mov eax, dword ptr [rbp-0x40]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, bword ptr [rbp-0x50] @@ -287,52 +261,39 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r1 ; byrRegs +[rcx] jg G_M40104_IG09 ;; size=38 bbWeight=4 PerfScore 37.00
-G_M40104_IG20: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx r13] ; GC ptr vars -{V51}
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref - ; byrRegs +[r13] - mov rdi, rbx - ; gcrRegs +[rdi] - mov esi, 62 - call [<unknown method>] - ; gcrRegs -[rdi] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r13]
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.46, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] test r14, r14
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r14+0x08] lea rsi, bword ptr [r14+0x0C] ; byrRegs +[rsi] @@ -342,29 +303,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs -[rdi r14] ; byrRegs -[rsi] ;; size=17 bbWeight=0.50 PerfScore 2.86
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edi, edi mov word ptr [rsi+2*rdi+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.98
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi] mov rdi, 0xD1FFAB1E cmp qword ptr [rbp-0x60], rdi
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp-0x28] pop rbx pop r12 @@ -374,33 +335,65 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.50
-G_M40104_IG33: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000100 {V51}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs +[rbx r14]
+ ; byrRegs +[r13] + ; GC ptr vars +{V51} + mov eax, dword ptr [rbp-0x40] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.52, gcrefRegs=4008 {rbx r14}, byrefRegs=2002 {rcx r13}, byref + ; byrRegs +[rcx] + mov dword ptr [rbp-0x2C], eax + mov edx, eax + mov eax, dword ptr [rbp-0x2C] + jmp G_M40104_IG11 + ;; size=13 bbWeight=0.52 PerfScore 2.21 +G_M40104_IG29: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, gcvars, byref + ; byrRegs -[rcx] + ; GC ptr vars -{V51}
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 60 call [<unknown method>] ; gcrRegs -[rdi]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M40104_IG34: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.04 PerfScore 0.19 +G_M40104_IG30: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref
...

realworld.run.linux.x64.checked.mch

-36 (-5.27%) : 32869.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)

@@ -8,67 +8,67 @@ ; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 18, 20 ) ref -> [rbp-0x28] this class-hnd EH-live single-def <System.Management.Automation.Internal.PipelineProcessor> -; V01 arg1 [V01,T08] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T07] ( 18, 20 ) ref -> [rbp-0x20] this class-hnd EH-live single-def <System.Management.Automation.Internal.PipelineProcessor> +; V01 arg1 [V01,T09] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
-; V03 loc1 [V03,T26] ( 2, 0 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <System.Runtime.ExceptionServices.ExceptionDispatchInfo> -; V04 loc2 [V04,T16] ( 3, 2 ) ref -> [rbp-0x38] do-not-enreg[M] class-hnd EH-live <System.Management.Automation.CommandProcessorBase> -; V05 loc3 [V05,T17] ( 2, 2 ) ref -> rax class-hnd single-def <System.Management.Automation.CommandProcessorBase> -; V06 loc4 [V06,T22] ( 3, 0 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T27] ( 2, 0 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Runtime.ExceptionServices.ExceptionDispatchInfo> +; V04 loc2 [V04,T17] ( 3, 2 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <System.Management.Automation.CommandProcessorBase> +; V05 loc3 [V05,T18] ( 2, 2 ) ref -> rax class-hnd single-def <System.Management.Automation.CommandProcessorBase> +; V06 loc4 [V06,T23] ( 3, 0 ) ref -> rax class-hnd single-def <<unknown class>>
;* V07 loc5 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Internal.PipelineProcessor]>
-; V08 loc6 [V08,T19] ( 2, 1 ) ref -> [rbp-0x40] must-init class-hnd EH-live single-def <System.Array>
+; V08 loc6 [V08,T20] ( 2, 1 ) ref -> [rbp-0x38] must-init class-hnd EH-live single-def <System.Array>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Management.Automation.Internal.Pipe>
-; V12 tmp2 [V12,T27] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp2 [V12,T28] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V14 tmp4 [V14,T23] ( 3, 0 ) ref -> rax class-hnd exact single-def "dup spill" <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
+; V14 tmp4 [V14,T24] ( 3, 0 ) ref -> rax class-hnd exact single-def "dup spill" <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp6 [V16,T24] ( 3, 0 ) ref -> rsi -; V17 tmp7 [V17,T25] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V18 tmp8 [V18,T15] ( 2, 2 ) ubyte -> rsi "Inline return value spill temp"
+; V16 tmp6 [V16,T25] ( 3, 0 ) ref -> rsi +; V17 tmp7 [V17,T26] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V18 tmp8 [V18,T16] ( 2, 2 ) ubyte -> rsi "Inline return value spill temp"
;* V19 tmp9 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.Runspaces.LocalPipeline> ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.Runspaces.PipelineStopper>
-; V21 tmp11 [V21,T09] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
+; V21 tmp11 [V21,T10] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.Runspaces.PipelineReader`1[System.Object]>
-; V23 tmp13 [V23,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V23 tmp13 [V23,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Internal.PipelineProcessor]>
-;* V25 tmp15 [V25,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp15 [V25,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V27 tmp17 [V27,T02] ( 4, 25 ) ref -> rbx single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V28 tmp18 [V28,T04] ( 2, 12 ) ref -> rsi "field V07._current (fldOffset=0x8)" P-INDEP ; V29 tmp19 [V29,T00] ( 6, 41 ) int -> r14 "field V07._index (fldOffset=0x10)" P-INDEP
-; V30 tmp20 [V30,T05] ( 3, 17 ) int -> r15 single-def "field V07._version (fldOffset=0x14)" P-INDEP -; V31 tmp21 [V31,T12] ( 3, 3 ) ref -> rbx single-def "field V24._list (fldOffset=0x0)" P-INDEP
+; V30 tmp20 [V30,T08] ( 2, 9 ) int -> r15 single-def "field V07._version (fldOffset=0x14)" P-INDEP +; V31 tmp21 [V31,T13] ( 3, 3 ) ref -> rbx single-def "field V24._list (fldOffset=0x0)" P-INDEP
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp23 [V33,T20] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP -; V34 tmp24 [V34,T18] ( 2, 2 ) int -> r15 single-def "field V24._version (fldOffset=0x14)" P-INDEP -; V35 tmp25 [V35,T10] ( 3, 6 ) ref -> rax single-def "arr expr"
+;* V33 tmp23 [V33,T21] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP +; V34 tmp24 [V34,T19] ( 2, 2 ) int -> r15 single-def "field V24._version (fldOffset=0x14)" P-INDEP +; V35 tmp25 [V35,T11] ( 3, 6 ) ref -> rax single-def "arr expr"
; V36 tmp26 [V36,T01] ( 3, 48 ) ref -> rsi "arr expr"
-; V37 PSPSym [V37,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V38 cse0 [V38,T03] ( 3, 24 ) int -> r13 "CSE - aggressive" -; V39 cse1 [V39,T13] ( 3, 3 ) ref -> rsi "CSE - moderate" -; V40 cse2 [V40,T14] ( 3, 3 ) ref -> rbx "CSE - moderate"
+; V37 PSPSym [V37,T22] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V38 cse0 [V38,T06] ( 2, 16 ) int -> rsi "CSE - aggressive" +; V39 cse1 [V39,T03] ( 2, 16 ) int -> rsi "CSE - aggressive" +; V40 cse2 [V40,T14] ( 3, 3 ) ref -> rsi "CSE - moderate" +; V41 cse3 [V41,T15] ( 3, 3 ) ref -> rbx "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M17519_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 48 - lea rbp, [rsp+0x50]
+ sub rsp, 40 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x40], rax - mov qword ptr [rbp-0x50], rsp - mov gword ptr [rbp-0x28], rdi
+ mov qword ptr [rbp-0x38], rax + mov qword ptr [rbp-0x40], rsp + mov gword ptr [rbp-0x20], rdi
; GC ptr vars +{V00} mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 9.25 -G_M17519_IG02: ; bbWeight=1, gcVars=0000000000080080 {V00 V08}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 8.25 +G_M17519_IG02: ; bbWeight=1, gcVars=0000000000100080 {V00 V08}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi] ; GC ptr vars +{V08} mov rsi, gword ptr [rdi+0x60] @@ -79,15 +79,15 @@ G_M17519_IG02: ; bbWeight=1, gcVars=0000000000080080 {V00 V08}, gcrefRegs movzx rsi, byte ptr [rsi+0x20] ; gcrRegs -[rsi] test esi, esi
- jne G_M17519_IG22
+ jne G_M17519_IG21
;; size=29 bbWeight=1 PerfScore 8.50 G_M17519_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref xor rsi, rsi ; gcrRegs +[rsi]
- mov gword ptr [rbp-0x38], rsi
+ mov gword ptr [rbp-0x30], rsi
; GC ptr vars +{V04} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M17519_IG04: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17519_IG04: ; bbWeight=1, gcVars=0000000000120080 {V00 V04 V08}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi] mov rsi, 0xD1FFAB1E ; const ptr cmp rbx, gword ptr [rsi] @@ -96,7 +96,7 @@ G_M17519_IG04: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcref call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x08] ; gcrRegs +[rax] @@ -115,7 +115,7 @@ G_M17519_IG04: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcref ; gcr arg pop 0 lea rdi, bword ptr [rax+0x20] ; byrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
+ mov rax, gword ptr [rbp-0x20]
mov rsi, gword ptr [rax+0x18] ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF @@ -123,7 +123,7 @@ G_M17519_IG04: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcref ; byrRegs -[rdi] ;; size=91 bbWeight=1 PerfScore 39.00 G_M17519_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rsi, rbx ; gcrRegs +[rsi] @@ -133,7 +133,7 @@ G_M17519_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp SHORT G_M17519_IG08 ;; size=20 bbWeight=1 PerfScore 6.50
-G_M17519_IG06: ; bbWeight=0, gcVars=0000000000080080 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG06: ; bbWeight=0, gcVars=0000000000100080 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04} call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -143,30 +143,30 @@ G_M17519_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M17519_IG08: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V04 V16} - mov rdi, gword ptr [rbp-0x28]
+G_M17519_IG08: ; bbWeight=1, gcVars=0000000000120080 {V00 V04 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V04 V17} + mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi]
- ; GC ptr vars -{V04 V16}
+ ; GC ptr vars -{V04 V17}
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0 nop ;; size=15 bbWeight=1 PerfScore 5.25 G_M17519_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] mov rbx, gword ptr [rdi+0x10] ; gcrRegs +[rbx] test rbx, rbx
- je SHORT G_M17519_IG15
+ je SHORT G_M17519_IG14
mov r15d, dword ptr [rbx+0x14] xor r14d, r14d jmp SHORT G_M17519_IG11 @@ -182,11 +182,12 @@ G_M17519_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 ;; size=13 bbWeight=4 PerfScore 26.00 G_M17519_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r13d, dword ptr [rbx+0x14] - cmp r15d, r13d - jne SHORT G_M17519_IG14 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M17519_IG15
+ mov esi, dword ptr [rbx+0x14] + cmp r15d, esi + jne SHORT G_M17519_IG13 + mov esi, dword ptr [rbx+0x10] + cmp r14d, esi + jae SHORT G_M17519_IG14
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] cmp r14d, dword ptr [rsi+0x08] @@ -195,7 +196,7 @@ G_M17519_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rsi+8*rax+0x10] inc r14d jmp SHORT G_M17519_IG10
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M17519_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rsi] call CORINFO_HELP_RNGCHKFAIL @@ -207,58 +208,53 @@ G_M17519_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M17519_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r15d, r13d - jne SHORT G_M17519_IG13 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M17519_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x40], rax - jmp SHORT G_M17519_IG18
+ mov gword ptr [rbp-0x38], rax + jmp SHORT G_M17519_IG17
;; size=16 bbWeight=8 PerfScore 56.00
-G_M17519_IG16: ; bbWeight=0, gcVars=0000000004080080 {V00 V03 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG15: ; bbWeight=0, gcVars=0000000008100080 {V00 V03 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
- ; GC ptr vars +{V03}
+ ; GC ptr vars +{V03 V27}
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M17519_IG17: ; bbWeight=0, gcVars=0000000004000080 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars -{V08}
...

-10 (-2.11%) : 15316.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 11, 25 ) ref -> [rbp-0x28] this class-hnd EH-live single-def <Microsoft.ML.Data.SimpleFileHandle> -; V01 loc0 [V01,T13] ( 4, 2 ) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T03] ( 11, 25 ) ref -> [rbp-0x28] this class-hnd EH-live single-def <Microsoft.ML.Data.SimpleFileHandle> +; V01 loc0 [V01,T14] ( 4, 2 ) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
; V02 loc1 [V02 ] ( 5, 4 ) ubyte -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.IO.Stream> @@ -17,25 +17,26 @@ ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V09 tmp4 [V09,T08] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V09 tmp4 [V09,T09] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Stream>
-; V11 tmp6 [V11,T10] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp6 [V11,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
-;* V13 tmp8 [V13,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp8 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V15 tmp10 [V15,T03] ( 4, 24 ) ref -> [rbp-0x38] EH-live single-def "field V03._list (fldOffset=0x0)" P-INDEP
+; V15 tmp10 [V15,T04] ( 4, 24 ) ref -> [rbp-0x38] EH-live single-def "field V03._list (fldOffset=0x0)" P-INDEP
; V16 tmp11 [V16,T02] ( 6, 28 ) ref -> r15 "field V03._current (fldOffset=0x8)" P-INDEP ; V17 tmp12 [V17,T00] ( 6, 41 ) int -> [rbp-0x1C] do-not-enreg[Z] EH-live "field V03._index (fldOffset=0x10)" P-INDEP
-; V18 tmp13 [V18,T06] ( 3, 16 ) int -> [rbp-0x20] EH-live spill-single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V19 tmp14 [V19,T11] ( 3, 3 ) ref -> rbx single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V18 tmp13 [V18,T08] ( 2, 8 ) int -> [rbp-0x20] EH-live single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V19 tmp14 [V19,T12] ( 3, 3 ) ref -> rbx single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp16 [V21,T15] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP -; V22 tmp17 [V22,T14] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP -; V23 tmp18 [V23,T09] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+;* V21 tmp16 [V21,T16] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP +; V22 tmp17 [V22,T15] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP +; V23 tmp18 [V23,T10] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V24 tmp19 [V24,T01] ( 3, 48 ) ref -> rdi "arr expr"
-; V25 PSPSym [V25,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V26 cse0 [V26,T05] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V27 cse1 [V27,T12] ( 3, 3 ) ref -> rax "CSE - moderate"
+; V25 PSPSym [V25,T17] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V26 cse0 [V26,T07] ( 2, 16 ) int -> rdi "CSE - aggressive" +; V27 cse1 [V27,T05] ( 2, 16 ) int -> rdi "CSE - aggressive" +; V28 cse2 [V28,T13] ( 3, 3 ) ref -> rax "CSE - moderate"
; ; Lcl frame size = 48 @@ -51,14 +52,14 @@ G_M27267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov gword ptr [rbp-0x28], rdi ; GC ptr vars +{V00} ;; size=27 bbWeight=1 PerfScore 7.00
-G_M27267_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M27267_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x18] ; gcrRegs +[rsi] mov gword ptr [rbp-0x30], rsi ; GC ptr vars +{V01} ;; size=8 bbWeight=1 PerfScore 3.00
-G_M27267_IG03: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG03: ; bbWeight=1, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi] cmp byte ptr [rbp-0x18], 0 jne G_M27267_IG10 @@ -74,7 +75,7 @@ G_M27267_IG03: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs mov rdi, gword ptr [rbp-0x28] ; gcrRegs +[rdi] cmp gword ptr [rdi+0x28], 0
- je G_M27267_IG18
+ je G_M27267_IG16
mov rax, gword ptr [rdi+0x20] ; gcrRegs +[rax] test rax, rax @@ -123,93 +124,82 @@ G_M27267_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov dword ptr [rbp-0x1C], ecx mov dword ptr [rbp-0x20], eax ;; size=23 bbWeight=1 PerfScore 8.25
-G_M27267_IG07: ; bbWeight=8, gcVars=0000000000002018 {V00 V01 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG07: ; bbWeight=8, gcVars=0000000000004018 {V00 V01 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rbx rdi] mov rbx, gword ptr [rbp-0x38] ; gcrRegs +[rbx]
- mov r15d, dword ptr [rbx+0x14] - cmp dword ptr [rbp-0x20], r15d
+ mov edi, dword ptr [rbx+0x14] + cmp dword ptr [rbp-0x20], edi
jne SHORT G_M27267_IG11
- mov edi, dword ptr [rbp-0x1C] - cmp edi, dword ptr [rbx+0x10] - jae SHORT G_M27267_IG12
+ mov edi, dword ptr [rbx+0x10] + cmp dword ptr [rbp-0x1C], edi + jae SHORT G_M27267_IG14
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi]
- mov ecx, dword ptr [rdi+0x08] - cmp dword ptr [rbp-0x1C], ecx - jae SHORT G_M27267_IG14 - mov ecx, dword ptr [rbp-0x1C] - mov r15, gword ptr [rdi+8*rcx+0x10]
+ mov eax, dword ptr [rdi+0x08] + cmp dword ptr [rbp-0x1C], eax + jae SHORT G_M27267_IG12 + mov eax, dword ptr [rbp-0x1C] + mov r15, gword ptr [rdi+8*rax+0x10]
; gcrRegs +[r15] mov edi, dword ptr [rbp-0x1C] ; gcrRegs -[rdi] inc edi mov dword ptr [rbp-0x1C], edi
- ;; size=50 bbWeight=8 PerfScore 186.00
+ ;; size=48 bbWeight=8 PerfScore 186.00
G_M27267_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test r15, r15 je SHORT G_M27267_IG09 mov rdi, r15 ; gcrRegs +[rdi]
- mov rcx, qword ptr [r15] - mov rcx, qword ptr [rcx+0x58] - call [rcx+0x18]<unknown method>
+ mov rax, qword ptr [r15] + mov rax, qword ptr [rax+0x58] + call [rax+0x18]<unknown method>
; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=18 bbWeight=4 PerfScore 34.00 G_M27267_IG09: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rdi, r15 ; gcrRegs +[rdi]
- mov rcx, qword ptr [r15] - mov rcx, qword ptr [rcx+0x58] - call [rcx+0x18]<unknown method>
+ mov rax, qword ptr [r15] + mov rax, qword ptr [rax+0x58] + call [rax+0x18]<unknown method>
; gcrRegs -[rdi r15] ; gcr arg pop 0 jmp SHORT G_M27267_IG07 ;; size=15 bbWeight=4 PerfScore 37.00
-G_M27267_IG10: ; bbWeight=0, gcVars=0000000000002000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27267_IG10: ; bbWeight=0, gcVars=0000000000004000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx] ; GC ptr vars -{V00 V15} call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M27267_IG11: ; bbWeight=8, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M27267_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M27267_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + nop + jmp SHORT G_M27267_IG16 + ;; size=3 bbWeight=0 PerfScore 0.00 +G_M27267_IG14: ; bbWeight=8, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00}
- cmp dword ptr [rbp-0x20], r15d - jne SHORT G_M27267_IG15 - ;; size=6 bbWeight=8 PerfScore 24.00 -G_M27267_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor rdi, rdi ; gcrRegs +[rdi] mov rbx, gword ptr [rbp-0x28] ; gcrRegs +[rbx] mov gword ptr [rbx+0x28], rdi cmp byte ptr [rbx+0x30], 0
- je SHORT G_M27267_IG18
+ je SHORT G_M27267_IG16
;; size=16 bbWeight=8 PerfScore 50.00
-G_M27267_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27267_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- jmp SHORT G_M27267_IG17 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M27267_IG14: ; bbWeight=0, gcVars=0000000000002000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - ; GC ptr vars -{V00} - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M27267_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M27267_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - nop - jmp SHORT G_M27267_IG18 - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M27267_IG17: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - ; GC ptr vars +{V00}
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] ; GC ptr vars -{V00} @@ -218,9 +208,9 @@ G_M27267_IG17: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs ; gcr arg pop 0 nop ;; size=11 bbWeight=1 PerfScore 5.25
-G_M27267_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27267_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x18], 0
- je SHORT G_M27267_IG19
+ je SHORT G_M27267_IG17
mov rdi, gword ptr [rbp-0x30] ; gcrRegs +[rdi] ; GC ptr vars -{V01} @@ -228,18 +218,18 @@ G_M27267_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=15 bbWeight=1 PerfScore 5.00
-G_M27267_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27267_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M27267_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M27267_IG18: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop r15 pop rbp ret ;; size=9 bbWeight=1 PerfScore 2.75
-G_M27267_IG21: ; bbWeight=0, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V00 V01 V13}
+G_M27267_IG19: ; bbWeight=0, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V00 V01}
push rbp push r15 push rbx @@ -248,18 +238,18 @@ G_M27267_IG21: ; bbWeight=0, gcVars=0000000000002010 {V00 V01}, gcrefRegs mov qword ptr [rsp], rbp lea rbp, [rbp+0x40] ;; size=19 bbWeight=0 PerfScore 0.00
-G_M27267_IG22: ; bbWeight=0, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27267_IG20: ; bbWeight=0, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M27267_IG05 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M27267_IG23: ; bbWeight=0, funclet epilog, nogc, extend
+G_M27267_IG21: ; bbWeight=0, funclet epilog, nogc, extend
...

-9 (-1.66%) : 4834.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

@@ -19,21 +19,21 @@ ; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> ; V10 loc5 [V10,T02] ( 12, 14.25) int -> [rbp-0x34]
-; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r15 class-hnd <System.Array> -; V12 loc7 [V12,T08] ( 4, 8 ) int -> r15
+; V11 loc6 [V11,T06] ( 5, 10 ) ref -> r15 class-hnd <System.Array> +; V12 loc7 [V12,T08] ( 4, 8 ) int -> rax
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T20] ( 2, 1 ) int -> r12 ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T17] ( 3, 1.50) int -> rax -; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs" -; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
+; V17 tmp4 [V17,T17] ( 3, 1.50) int -> rbx +; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rcx "impSpillLclRefs" +; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rcx class-hnd "impSpillLclRefs" <<unknown class>>
; V20 tmp7 [V20,T09] ( 2, 8 ) int -> rdx "impAppendStmt" ; V21 tmp8 [V21,T10] ( 2, 8 ) int -> rcx "Inlining Arg" ; V22 tmp9 [V22,T04] ( 3, 12 ) ref -> rax "arr expr" ; V23 tmp10 [V23,T05] ( 3, 12 ) int -> rcx "index expr" ; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V25 cse0 [V25,T06] ( 4, 10.50) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T07] ( 3, 10 ) int -> rax "CSE - aggressive"
; V26 cse1 [V26,T18] ( 3, 1.50) int -> rsi "CSE - moderate" ; V27 cse2 [V27,T19] ( 3, 1.50) int -> rax "CSE - moderate" ; @@ -148,14 +148,13 @@ G_M62513_IG10: ; bbWeight=1.75, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 jmp G_M62513_IG12 ;; size=10 bbWeight=1.75 PerfScore 3.94 G_M62513_IG11: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rdi+0x08] - ; gcrRegs +[rax] - dec r15d - mov dword ptr [rdi+0x14], r15d - cmp r15d, dword ptr [rax+0x08]
+ mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + dec eax + mov dword ptr [rdi+0x14], eax + cmp eax, dword ptr [rcx+0x08]
jae G_M62513_IG07
- mov ecx, r15d - mov r15, gword ptr [rax+8*rcx+0x10]
+ mov r15, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r15] xor edi, edi ; gcrRegs -[rdi] @@ -164,7 +163,7 @@ G_M62513_IG11: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] call [<unknown method>]
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0 mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -200,17 +199,17 @@ G_M62513_IG11: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, mov esi, dword ptr [rbp-0x34] mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi]
- ;; size=144 bbWeight=2 PerfScore 90.50
+ ;; size=138 bbWeight=2 PerfScore 90.00
G_M62513_IG12: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rdi+0x14] - test r15d, r15d - jle SHORT G_M62513_IG15 - mov eax, esi - lea esi, [rax-0x01] - mov dword ptr [rbp-0x34], esi
+ mov eax, dword ptr [rdi+0x14]
test eax, eax
+ jle SHORT G_M62513_IG15 + mov ecx, esi + lea esi, [rcx-0x01] + mov dword ptr [rbp-0x34], esi + test ecx, ecx
jg G_M62513_IG11
- ;; size=25 bbWeight=4 PerfScore 25.00
+ ;; size=23 bbWeight=4 PerfScore 25.00
G_M62513_IG13: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] jmp SHORT G_M62513_IG16 @@ -224,21 +223,20 @@ G_M62513_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr ;; size=9 bbWeight=1 PerfScore 4.00 G_M62513_IG15: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14]
- test r15d, r15d - jg SHORT G_M62513_IG16 - xor eax, eax
+ xor ebx, ebx
jmp SHORT G_M62513_IG17
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
G_M62513_IG16: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov eax, r12d - sar eax, 31 - and eax, 3 - add eax, r12d - sar eax, 2 - add eax, dword ptr [rdi+0x18] - ;; size=18 bbWeight=0.50 PerfScore 2.38
+ mov ebx, r12d + sar ebx, 31 + and ebx, 3 + add ebx, r12d + sar ebx, 2 + add ebx, dword ptr [rdi+0x18] + mov rdi, gword ptr [rbp-0x40] + ;; size=22 bbWeight=0.50 PerfScore 2.88
G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], ebx
;; size=3 bbWeight=0.50 PerfScore 0.50 G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref cmp byte ptr [rbp-0x30], 0 @@ -286,7 +284,7 @@ G_M62513_IG22: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 543, prolog size 38, PerfScore 168.06, instruction count 158, allocated bytes for code 543 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 534, prolog size 38, PerfScore 167.44, instruction count 156, allocated bytes for code 534 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.52%) : 12510.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 5, 5.50) ref -> rbx this class-hnd single-def <SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> r15 class-hnd single-def <System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]>
+; V00 this [V00,T07] ( 5, 5.50) ref -> rbx this class-hnd single-def <SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> r15 class-hnd single-def <System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ulong]> ;* V03 loc1 [V03 ] ( 0, 0 ) long -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 2, 2 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ulong]>
+; V05 tmp1 [V05,T10] ( 2, 2 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ulong]>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ulong]> ;* V07 tmp3 [V07,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ulong]> ; V09 tmp5 [V09,T02] ( 4, 12.50) ref -> r14 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V10 tmp6 [V10,T04] ( 2, 6 ) long -> rdx "field V02._current (fldOffset=0x8)" P-INDEP ; V11 tmp7 [V11,T00] ( 6, 20.50) int -> r12 "field V02._index (fldOffset=0x10)" P-INDEP
-; V12 tmp8 [V12,T08] ( 2, 4.50) int -> r13 single-def "field V02._version (fldOffset=0x14)" P-INDEP -; V13 tmp9 [V13,T10] ( 3, 1.50) ref -> r14 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V12 tmp8 [V12,T09] ( 2, 4.50) int -> r13 single-def "field V02._version (fldOffset=0x14)" P-INDEP +; V13 tmp9 [V13,T11] ( 3, 1.50) ref -> r14 single-def "field V06._list (fldOffset=0x0)" P-INDEP
;* V14 tmp10 [V14 ] ( 0, 0 ) long -> zero-ref single-def "field V06._current (fldOffset=0x8)" P-INDEP
-;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP -; V16 tmp12 [V16,T11] ( 2, 1 ) int -> r13 single-def "field V06._version (fldOffset=0x14)" P-INDEP
+;* V15 tmp11 [V15,T13] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP +; V16 tmp12 [V16,T12] ( 2, 1 ) int -> r13 single-def "field V06._version (fldOffset=0x14)" P-INDEP
; V17 tmp13 [V17,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V18 cse0 [V18,T03] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V18 cse0 [V18,T06] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V19 cse1 [V19,T03] ( 2, 8 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -64,7 +65,8 @@ G_M8600_IG04: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rsi rdi] ;; size=12 bbWeight=2 PerfScore 7.00 G_M8600_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r13d, edi
jne SHORT G_M8600_IG08 mov edi, dword ptr [r14+0x10] cmp r12d, edi @@ -77,7 +79,7 @@ G_M8600_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov rdx, qword ptr [rdi+8*rsi+0x10] inc r12d jmp SHORT G_M8600_IG04
- ;; size=38 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M8600_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx rdi r14-r15] add rsp, 8 @@ -97,7 +99,7 @@ G_M8600_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 16, PerfScore 110.12, instruction count 42, allocated bytes for code 119 (MethodHash=af1cde67) for method SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
+; Total bytes of code 122, prolog size 16, PerfScore 107.12, instruction count 43, allocated bytes for code 122 (MethodHash=af1cde67) for method SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
; ============================================================ Unwind Info:

+3 (+2.94%) : 30348.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> -; V01 arg1 [V01,T07] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
+; V00 this [V00,T07] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> +; V01 arg1 [V01,T08] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -19,13 +19,14 @@ ; V08 tmp4 [V08,T02] ( 4, 12.50) ref -> r15 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V09 tmp5 [V09,T03] ( 3, 8 ) ref -> rax "field V02._current (fldOffset=0x8)" P-INDEP ; V10 tmp6 [V10,T00] ( 6, 20.50) int -> r13 "field V02._index (fldOffset=0x10)" P-INDEP
-; V11 tmp7 [V11,T08] ( 2, 4.50) int -> r14 "field V02._version (fldOffset=0x14)" P-INDEP -; V12 tmp8 [V12,T09] ( 3, 1.50) ref -> r15 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T09] ( 2, 4.50) int -> r14 "field V02._version (fldOffset=0x14)" P-INDEP +; V12 tmp8 [V12,T10] ( 3, 1.50) ref -> r15 single-def "field V05._list (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._current (fldOffset=0x8)" P-INDEP
-;* V14 tmp10 [V14,T11] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP -; V15 tmp11 [V15,T10] ( 2, 1 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+;* V14 tmp10 [V14,T12] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP +; V15 tmp11 [V15,T11] ( 2, 1 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V16 tmp12 [V16,T01] ( 3, 24 ) ref -> rsi "arr expr"
-; V17 cse0 [V17,T04] ( 2, 8 ) int -> rsi "CSE - aggressive"
+; V17 cse0 [V17,T06] ( 2, 8 ) int -> rsi "CSE - aggressive" +; V18 cse1 [V18,T04] ( 2, 8 ) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -61,7 +62,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 ; gcrRegs -[rax rsi rdi] ;; size=10 bbWeight=2 PerfScore 10.50 G_M37225_IG05: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov esi, dword ptr [r15+0x14] + cmp r14d, esi
jne SHORT G_M37225_IG08 mov esi, dword ptr [r15+0x10] cmp r13d, esi @@ -75,7 +77,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] inc r13d jmp SHORT G_M37225_IG04
- ;; size=38 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M37225_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rbx rsi r15] pop rbx @@ -93,7 +95,7 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 13, PerfScore 104.75, instruction count 37, allocated bytes for code 102 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
+; Total bytes of code 105, prolog size 13, PerfScore 101.75, instruction count 38, allocated bytes for code 105 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
; ============================================================ Unwind Info:

+6 (+3.26%) : 31746.dasm - System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 7, 5 ) ref -> r15 class-hnd single-def <System.Management.Automation.Language.VariableAnalysis+Block>
+; V00 arg0 [V00,T11] ( 7, 5 ) ref -> r15 class-hnd single-def <System.Management.Automation.Language.VariableAnalysis+Block>
; V01 arg1 [V01,T00] ( 11, 22.50) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.VariableAnalysis+Block]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T12] ( 2, 2 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]>
+; V04 tmp1 [V04,T13] ( 2, 2 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.VariableAnalysis+Block]> ;* V06 tmp3 [V06,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]> @@ -21,14 +21,15 @@ ; V10 tmp7 [V10,T03] ( 4, 12.50) ref -> r14 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V11 tmp8 [V11,T05] ( 2, 6 ) ref -> rdi "field V02._current (fldOffset=0x8)" P-INDEP ; V12 tmp9 [V12,T01] ( 6, 20.50) int -> r12 "field V02._index (fldOffset=0x10)" P-INDEP
-; V13 tmp10 [V13,T11] ( 2, 4.50) int -> r13 single-def "field V02._version (fldOffset=0x14)" P-INDEP -; V14 tmp11 [V14,T13] ( 3, 1.50) ref -> r14 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T12] ( 2, 4.50) int -> r13 single-def "field V02._version (fldOffset=0x14)" P-INDEP +; V14 tmp11 [V14,T14] ( 3, 1.50) ref -> r14 single-def "field V05._list (fldOffset=0x0)" P-INDEP
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._current (fldOffset=0x8)" P-INDEP
-;* V16 tmp13 [V16,T15] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x10)" P-INDEP -; V17 tmp14 [V17,T14] ( 2, 1 ) int -> r13 single-def "field V05._version (fldOffset=0x14)" P-INDEP
+;* V16 tmp13 [V16,T16] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x10)" P-INDEP +; V17 tmp14 [V17,T15] ( 2, 1 ) int -> r13 single-def "field V05._version (fldOffset=0x14)" P-INDEP
; V18 tmp15 [V18,T02] ( 3, 24 ) ref -> rdi "arr expr" ; V19 cse0 [V19,T09] ( 2, 8 ) int -> rax "CSE - moderate"
-; V20 cse1 [V20,T04] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V20 cse1 [V20,T10] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V21 cse2 [V21,T04] ( 2, 8 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -84,7 +85,8 @@ G_M62722_IG05: ; bbWeight=2, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs= ; gcrRegs -[rsi rdi] ;; size=9 bbWeight=2 PerfScore 6.50 G_M62722_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r14+0x14]
+ mov edi, dword ptr [r14+0x14] + cmp r13d, edi
jne SHORT G_M62722_IG11 mov edi, dword ptr [r14+0x10] cmp r12d, edi @@ -97,7 +99,7 @@ G_M62722_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov rdi, gword ptr [rdi+8*rsi+0x10] inc r12d jmp SHORT G_M62722_IG05
- ;; size=38 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M62722_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r14] inc dword ptr [rbx+0x14] @@ -108,7 +110,7 @@ G_M62722_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, cmp eax, esi jbe SHORT G_M62722_IG09 ;; size=17 bbWeight=4 PerfScore 41.00
-G_M62722_IG08: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M62722_IG08: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
lea eax, [rsi+0x01] mov dword ptr [rbx+0x10], eax mov esi, esi @@ -120,8 +122,8 @@ G_M62722_IG08: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi r15] ; byrRegs -[rdi]
- jmp SHORT G_M62722_IG03 - ;; size=23 bbWeight=0.50 PerfScore 3.00
+ jmp G_M62722_IG03 + ;; size=26 bbWeight=0.50 PerfScore 3.00
G_M62722_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx r15] mov rdi, rbx @@ -140,7 +142,7 @@ G_M62722_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 16, PerfScore 144.50, instruction count 61, allocated bytes for code 184 (MethodHash=49660afd) for method System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
+; Total bytes of code 190, prolog size 16, PerfScore 141.50, instruction count 62, allocated bytes for code 190 (MethodHash=49660afd) for method System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.linux.x64.checked.mch

-13 (-4.15%) : 21306.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T27] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> rcx "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> rcx "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,26 +78,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> rdx "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> rdx "CSE - moderate" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- sub rsp, 40 - lea rbp, [rsp+0x50]
+ sub rsp, 32 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi mov r15, rsi
- ;; size=31 bbWeight=1 PerfScore 8.50
+ ;; size=29 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop @@ -107,10 +107,10 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x30], rdx
+ mov bword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x28], rdx
cmp byte ptr [r15+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -120,9 +120,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] ; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0x38]
+ mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x28]
test rdx, rdx jne SHORT G_M19804_IG05 xor rax, rax @@ -148,14 +148,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0081 {rax rd ; byrRegs -[rax rsi rdi] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=21 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edx, dword ptr [rbx+0x14] + cmp r14d, edx + jne SHORT G_M19804_IG09 + mov edx, dword ptr [rbx+0x10] + cmp r13d, edx + jae SHORT G_M19804_IG10
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -164,7 +165,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx+8*rdi+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] call CORINFO_HELP_RNGCHKFAIL @@ -176,13 +177,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx]
- lea rdi, [rbp-0x38]
+ lea rdi, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -191,9 +188,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=27 bbWeight=8 PerfScore 116.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -205,9 +202,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=23 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -218,33 +215,30 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - ;; size=11 bbWeight=0 PerfScore 0.00
...

-13 (-4.15%) : 4680.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T27] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> rcx "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> rcx "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,26 +78,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> rdx "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> rdx "CSE - moderate" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- sub rsp, 40 - lea rbp, [rsp+0x50]
+ sub rsp, 32 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi mov r15, rsi
- ;; size=31 bbWeight=1 PerfScore 8.50
+ ;; size=29 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop @@ -107,10 +107,10 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x30], rdx
+ mov bword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x28], rdx
cmp byte ptr [r15+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -120,9 +120,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] ; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0x38]
+ mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x28]
test rdx, rdx jne SHORT G_M19804_IG05 xor rax, rax @@ -148,14 +148,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0081 {rax rd ; byrRegs -[rax rsi rdi] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=21 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edx, dword ptr [rbx+0x14] + cmp r14d, edx + jne SHORT G_M19804_IG09 + mov edx, dword ptr [rbx+0x10] + cmp r13d, edx + jae SHORT G_M19804_IG10
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -164,7 +165,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx+8*rdi+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] call CORINFO_HELP_RNGCHKFAIL @@ -176,13 +177,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx]
- lea rdi, [rbp-0x38]
+ lea rdi, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -191,9 +188,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=27 bbWeight=8 PerfScore 116.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -205,9 +202,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=23 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -218,33 +215,30 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - ;; size=11 bbWeight=0 PerfScore 0.00
...

-13 (-4.15%) : 18608.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> r15 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> r15
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> r15 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T27] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> rcx "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> rcx "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rsi "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rsi "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> rdx "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r13 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r14 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,26 +78,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> rdx "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r12 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> rdx "CSE - moderate" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- sub rsp, 40 - lea rbp, [rsp+0x50]
+ sub rsp, 32 + lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi mov r15, rsi
- ;; size=31 bbWeight=1 PerfScore 8.50
+ ;; size=29 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop @@ -107,10 +107,10 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x30], rdx
+ mov bword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x28], rdx
cmp byte ptr [r15+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov r14d, dword ptr [rbx+0x14] @@ -120,9 +120,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] ; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0x38]
+ mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x28]
test rdx, rdx jne SHORT G_M19804_IG05 xor rax, rax @@ -148,14 +148,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0081 {rax rd ; byrRegs -[rax rsi rdi] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=21 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+0x14] - cmp r14d, r12d - jne SHORT G_M19804_IG10 - cmp r13d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov edx, dword ptr [rbx+0x14] + cmp r14d, edx + jne SHORT G_M19804_IG09 + mov edx, dword ptr [rbx+0x10] + cmp r13d, edx + jae SHORT G_M19804_IG10
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -164,7 +165,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx+8*rdi+0x10] inc r13d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=39 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] call CORINFO_HELP_RNGCHKFAIL @@ -176,13 +177,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r12d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [r15] ; gcrRegs +[rbx]
- lea rdi, [rbp-0x38]
+ lea rdi, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -191,9 +188,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=27 bbWeight=8 PerfScore 116.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
lea ecx, [rsi+0x01] mov dword ptr [rbx+0x10], ecx mov esi, esi @@ -205,9 +202,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=23 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -218,33 +215,30 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdi, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi] push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - ;; size=11 bbWeight=0 PerfScore 0.00
...

+3 (+1.01%) : 26678.dasm - ThreadTest:ExpectPassed(System.String,int) (FullOpts)

@@ -7,34 +7,35 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T14] ( 3, 3 ) ref -> r15 class-hnd exact single-def <System.String> -; V01 arg1 [V01,T09] ( 4, 4 ) int -> rbx single-def
+; V00 arg0 [V00,T15] ( 3, 3 ) ref -> r15 class-hnd exact single-def <System.String> +; V01 arg1 [V01,T10] ( 4, 4 ) int -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Thread]> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.Thread> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 3, 6 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> -; V06 tmp2 [V06,T18] ( 2, 4 ) int -> r12 "impImportAndPushBox" -; V07 tmp3 [V07,T11] ( 3, 6 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>> -; V08 tmp4 [V08,T16] ( 2, 4 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V05 tmp1 [V05,T11] ( 3, 6 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> +; V06 tmp2 [V06,T19] ( 2, 4 ) int -> r12 "impImportAndPushBox" +; V07 tmp3 [V07,T12] ( 3, 6 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>> +; V08 tmp4 [V08,T17] ( 2, 4 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Thread]>
-;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ; V12 tmp8 [V12,T00] ( 6, 41 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V13 tmp9 [V13,T07] ( 3, 8.50) int -> rdx single-def "Inline stloc first use temp"
+; V13 tmp9 [V13,T08] ( 3, 8.50) int -> rdx single-def "Inline stloc first use temp"
; V14 tmp10 [V14,T03] ( 4, 17 ) ref -> r13 single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T04] ( 3, 8 ) ref -> rsi "field V02._current (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T05] ( 3, 8 ) ref -> rsi "field V02._current (fldOffset=0x8)" P-INDEP
; V16 tmp12 [V16,T01] ( 6, 21 ) int -> [rbp-0x2C] "field V02._index (fldOffset=0x10)" P-INDEP
-; V17 tmp13 [V17,T06] ( 2, 9 ) int -> r12 single-def "field V02._version (fldOffset=0x14)" P-INDEP -; V18 tmp14 [V18,T19] ( 3, 3 ) ref -> r13 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V17 tmp13 [V17,T07] ( 2, 9 ) int -> r12 single-def "field V02._version (fldOffset=0x14)" P-INDEP +; V18 tmp14 [V18,T20] ( 3, 3 ) ref -> r13 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp16 [V20,T21] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x10)" P-INDEP -; V21 tmp17 [V21,T20] ( 2, 2 ) int -> r12 single-def "field V09._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp16 [V20,T22] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x10)" P-INDEP +; V21 tmp17 [V21,T21] ( 2, 2 ) int -> r12 single-def "field V09._version (fldOffset=0x14)" P-INDEP
; V22 tmp18 [V22,T02] ( 3, 24 ) ref -> rsi "arr expr"
-; V23 tmp19 [V23,T17] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V24 cse0 [V24,T15] ( 4, 4 ) byref -> r13 "CSE - moderate" -; V25 cse1 [V25,T12] ( 3, 6 ) byref -> r14 "CSE - moderate" -; V26 cse2 [V26,T05] ( 2, 8 ) int -> rsi "CSE - aggressive" -; V27 rat0 [V27,T13] ( 3, 6 ) long -> r13 "fgMakeTemp is creating a new local variable"
+; V23 tmp19 [V23,T18] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V24 cse0 [V24,T16] ( 4, 4 ) byref -> r13 "CSE - moderate" +; V25 cse1 [V25,T13] ( 3, 6 ) byref -> r14 "CSE - moderate" +; V26 cse2 [V26,T06] ( 2, 8 ) int -> rsi "CSE - aggressive" +; V27 cse3 [V27,T04] ( 2, 16 ) int -> rsi "CSE - aggressive" +; V28 rat0 [V28,T14] ( 3, 6 ) long -> r13 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -77,9 +78,10 @@ G_M2263_IG04: ; bbWeight=2, gcrefRegs=A040 {rsi r13 r15}, byrefRegs=4000 mov edi, dword ptr [rbp-0x2C] ;; size=19 bbWeight=2 PerfScore 11.00 G_M2263_IG05: ; bbWeight=8, gcrefRegs=A000 {r13 r15}, byrefRegs=4000 {r14}, byref
- cmp r12d, dword ptr [r13+0x14]
+ mov esi, dword ptr [r13+0x14] + cmp r12d, esi
jne G_M2263_IG14
- ;; size=10 bbWeight=8 PerfScore 32.00
+ ;; size=13 bbWeight=8 PerfScore 26.00
G_M2263_IG06: ; bbWeight=4, gcrefRegs=A000 {r13 r15}, byrefRegs=4000 {r14}, byref, isz mov esi, dword ptr [r13+0x10] cmp edi, esi @@ -185,7 +187,7 @@ G_M2263_IG15: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, jmp SHORT G_M2263_IG10 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 16, PerfScore 187.62, instruction count 85, allocated bytes for code 296 (MethodHash=df20f728) for method ThreadTest:ExpectPassed(System.String,int) (FullOpts)
+; Total bytes of code 299, prolog size 16, PerfScore 181.62, instruction count 86, allocated bytes for code 299 (MethodHash=df20f728) for method ThreadTest:ExpectPassed(System.String,int) (FullOpts)
; ============================================================ Cfi Info:

+3 (+1.19%) : 7371.dasm - System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)

@@ -13,12 +13,12 @@ ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Interpreter.LabelScopeInfo]> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Interpreter.LabelScopeInfo> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T10] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
+; V06 tmp1 [V06,T11] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V07 tmp2 [V07,T06] ( 2, 12 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Linq.Expressions.LabelTarget> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Linq.Expressions.LabelTarget>
-; V09 tmp4 [V09,T13] ( 2, 2 ) ref -> rdi single-def "CASTCLASS eval op1" -; V10 tmp5 [V10,T12] ( 2, 2 ) ref -> rdi class-hnd exact "spilling QMark2" <<unknown class>> -; V11 tmp6 [V11,T14] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V09 tmp4 [V09,T14] ( 2, 2 ) ref -> rdi single-def "CASTCLASS eval op1" +; V10 tmp5 [V10,T13] ( 2, 2 ) ref -> rdi class-hnd exact "spilling QMark2" <<unknown class>> +; V11 tmp6 [V11,T15] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Interpreter.LabelScopeInfo]> ;* V13 tmp8 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> @@ -26,13 +26,14 @@ ; V16 tmp11 [V16,T04] ( 4, 12.50) ref -> r15 single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V17 tmp12 [V17,T07] ( 2, 6 ) ref -> rsi "field V03._current (fldOffset=0x8)" P-INDEP ; V18 tmp13 [V18,T00] ( 6, 20.50) int -> r13 "field V03._index (fldOffset=0x10)" P-INDEP
-; V19 tmp14 [V19,T11] ( 2, 4.50) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP -; V20 tmp15 [V20,T15] ( 3, 1.50) ref -> r15 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T12] ( 2, 4.50) int -> r14 "field V03._version (fldOffset=0x14)" P-INDEP +; V20 tmp15 [V20,T16] ( 3, 1.50) ref -> r15 single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V22 tmp17 [V22,T17] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP -; V23 tmp18 [V23,T16] ( 2, 1 ) int -> r14 "field V12._version (fldOffset=0x14)" P-INDEP
+;* V22 tmp17 [V22,T18] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP +; V23 tmp18 [V23,T17] ( 2, 1 ) int -> r14 "field V12._version (fldOffset=0x14)" P-INDEP
; V24 tmp19 [V24,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V25 cse0 [V25,T05] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T10] ( 2, 8 ) int -> rdi "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -118,7 +119,8 @@ G_M18802_IG08: ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 ; gcr arg pop 0 ;; size=8 bbWeight=2 PerfScore 2.50 G_M18802_IG09: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [r15+0x14]
+ mov edi, dword ptr [r15+0x14] + cmp r14d, edi
jne SHORT G_M18802_IG14 mov edi, dword ptr [r15+0x10] cmp r13d, edi @@ -132,7 +134,7 @@ G_M18802_IG09: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] inc r13d jmp SHORT G_M18802_IG08
- ;; size=38 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M18802_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx rsi rdi r15] pop rbx @@ -191,7 +193,7 @@ G_M18802_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr int3 ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 19, PerfScore 168.50, instruction count 79, allocated bytes for code 253 (MethodHash=9bf9b68d) for method System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
+; Total bytes of code 256, prolog size 19, PerfScore 165.50, instruction count 80, allocated bytes for code 256 (MethodHash=9bf9b68d) for method System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
; ============================================================ Cfi Info:

+3 (+2.03%) : 7792.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)

@@ -13,20 +13,21 @@ ;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V06 tmp2 [V06,T09] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[int]>
+; V06 tmp2 [V06,T10] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[int]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V08 tmp4 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V10 tmp6 [V10,T03] ( 4, 12.50) ref -> r14 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V11 tmp7 [V11,T00] ( 6, 20.50) int -> r12 "field V02._index (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T08] ( 2, 4.50) int -> r13 "field V02._version (fldOffset=0xc)" P-INDEP
+; V12 tmp8 [V12,T09] ( 2, 4.50) int -> r13 "field V02._version (fldOffset=0xc)" P-INDEP
; V13 tmp9 [V13,T04] ( 3, 8 ) int -> rsi "field V02._current (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T10] ( 3, 1.50) ref -> r14 single-def "field V07._list (fldOffset=0x0)" P-INDEP -;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x8)" P-INDEP -; V16 tmp12 [V16,T11] ( 2, 1 ) int -> r13 "field V07._version (fldOffset=0xc)" P-INDEP
+; V14 tmp10 [V14,T11] ( 3, 1.50) ref -> r14 single-def "field V07._list (fldOffset=0x0)" P-INDEP +;* V15 tmp11 [V15,T13] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x8)" P-INDEP +; V16 tmp12 [V16,T12] ( 2, 1 ) int -> r13 "field V07._version (fldOffset=0xc)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V07._current (fldOffset=0x10)" P-INDEP ; V18 tmp14 [V18,T01] ( 3, 24 ) ref -> rdx "arr expr"
-; V19 cse0 [V19,T05] ( 2, 8 ) int -> rdx "CSE - aggressive"
+; V19 cse0 [V19,T08] ( 2, 8 ) int -> rdx "CSE - aggressive" +; V20 cse1 [V20,T05] ( 2, 8 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,7 +74,8 @@ G_M44928_IG04: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rdi] ;; size=13 bbWeight=2 PerfScore 7.00 G_M44928_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r14+0x14]
+ mov edx, dword ptr [r14+0x14] + cmp r13d, edx
jne SHORT G_M44928_IG09 mov edx, dword ptr [r14+0x10] cmp r12d, edx @@ -86,7 +88,7 @@ G_M44928_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov esi, dword ptr [rdx+4*rdi+0x10] inc r12d jmp SHORT G_M44928_IG04
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=40 bbWeight=4 PerfScore 68.00
G_M44928_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx r14-r15] xor rax, rax @@ -112,7 +114,7 @@ G_M44928_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 113.38, instruction count 52, allocated bytes for code 148 (MethodHash=bf92507f) for method System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
+; Total bytes of code 151, prolog size 16, PerfScore 110.38, instruction count 53, allocated bytes for code 151 (MethodHash=bf92507f) for method System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 83 18 64 1 -98 +195
benchmarks.run_pgo.linux.x64.checked.mch 83 26 51 6 -373 +2,142
benchmarks.run_tiered.linux.x64.checked.mch 17 10 6 1 -66 +18
coreclr_tests.run.linux.x64.checked.mch 85 44 39 2 -417 +163
libraries.crossgen2.linux.x64.checked.mch 34 20 13 1 -139 +54
libraries.pmi.linux.x64.checked.mch 291 139 143 9 -1,332 +484
libraries_tests.run.linux.x64.Release.mch 21 19 2 0 -257 +26
librariestestsnotieredcompilation.run.linux.x64.Release.mch 304 168 124 12 -1,466 +505
realworld.run.linux.x64.checked.mch 118 31 84 3 -274 +250
smoke_tests.nativeaot.linux.x64.checked.mch 24 15 8 1 -183 +26
1,060 490 534 36 -4,605 +3,863

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 31,386 2,008 29,378 50 (0.16%) 50 (0.16%)
benchmarks.run_pgo.linux.x64.checked.mch 130,177 50,713 79,464 63 (0.05%) 63 (0.05%)
benchmarks.run_tiered.linux.x64.checked.mch 60,408 46,324 14,084 46 (0.08%) 46 (0.08%)
coreclr_tests.run.linux.x64.checked.mch 391,292 185,267 206,025 109 (0.03%) 109 (0.03%)
libraries.crossgen2.linux.x64.checked.mch 264,739 15 264,724 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 297,005 6 296,999 64 (0.02%) 66 (0.02%)
libraries_tests.run.linux.x64.Release.mch 81,974 53,841 28,133 8 (0.01%) 8 (0.01%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 303,541 21,933 281,608 2,284 (0.75%) 2,285 (0.75%)
realworld.run.linux.x64.checked.mch 33,237 45 33,192 11 (0.03%) 11 (0.03%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,441 10 27,431 12 (0.04%) 12 (0.04%)
1,621,200 360,162 1,261,038 2,647 (0.16%) 2,650 (0.16%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11931736 (overridden on cmd)
Total bytes of diff: 11931833 (overridden on cmd)
Total bytes of delta: 97 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          11 : 4789.dasm (0.57 % of base)
           6 : 21816.dasm (0.23 % of base)
           6 : 14702.dasm (0.07 % of base)
           5 : 3438.dasm (0.21 % of base)
           5 : 4706.dasm (0.08 % of base)
           5 : 3816.dasm (0.64 % of base)
           4 : 4788.dasm (0.12 % of base)
           3 : 11508.dasm (1.00 % of base)
           3 : 1786.dasm (1.04 % of base)
           3 : 1789.dasm (2.04 % of base)
           3 : 18767.dasm (0.24 % of base)
           3 : 18778.dasm (1.26 % of base)
           3 : 18911.dasm (0.36 % of base)
           3 : 18959.dasm (0.46 % of base)
           3 : 18960.dasm (0.28 % of base)
           3 : 21811.dasm (0.48 % of base)
           3 : 5814.dasm (2.94 % of base)
           3 : 7828.dasm (0.22 % of base)
           3 : 9016.dasm (2.36 % of base)
           3 : 9145.dasm (2.36 % of base)

Top file improvements (bytes):
         -15 : 7177.dasm (-0.80 % of base)
          -9 : 14878.dasm (-0.10 % of base)
          -9 : 2729.dasm (-1.64 % of base)
          -8 : 3210.dasm (-0.35 % of base)
          -8 : 472.dasm (-0.47 % of base)
          -8 : 4892.dasm (-0.29 % of base)
          -7 : 14134.dasm (-0.42 % of base)
          -6 : 21729.dasm (-0.54 % of base)
          -5 : 2059.dasm (-0.31 % of base)
          -4 : 5597.dasm (-1.08 % of base)
          -4 : 4299.dasm (-0.92 % of base)
          -4 : 70.dasm (-0.41 % of base)
          -3 : 6710.dasm (-0.07 % of base)
          -2 : 1068.dasm (-0.33 % of base)
          -2 : 22239.dasm (-0.30 % of base)
          -2 : 4061.dasm (-0.60 % of base)
          -1 : 1409.dasm (-0.10 % of base)
          -1 : 2446.dasm (-0.08 % of base)

57 total files with Code Size differences (18 improved, 39 regressed), 1 unchanged.

Top method regressions (bytes):
          11 (0.57 % of base) : 4789.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
           6 (0.23 % of base) : 21816.dasm - JetStream.Hand:score():this (FullOpts)
           6 (0.07 % of base) : 14702.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           5 (0.08 % of base) : 4706.dasm - ProtoBuf.Meta.MetaType:ApplyDefaultBehaviourImpl(int):this (FullOpts)
           5 (0.21 % of base) : 3438.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           5 (0.64 % of base) : 3816.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           4 (0.12 % of base) : 4788.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this (FullOpts)
           3 (1.00 % of base) : 11508.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (1.26 % of base) : 14009.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (0.48 % of base) : 21811.dasm - JetStream.Hands:playHands(System.Collections.Generic.List`1[JetStream.Player]) (FullOpts)
           3 (1.89 % of base) : 6792.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
           3 (0.24 % of base) : 18767.dasm - Microsoft.Cci.MetadataWriter:PopulateFileTableRows():this (FullOpts)
           3 (1.26 % of base) : 18778.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.18 % of base) : 14174.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (FullOpts)
           3 (2.36 % of base) : 9145.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9098.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9077.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9016.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (0.76 % of base) : 3716.dasm - System.Diagnostics.Metrics.Instrument:Publish():this (FullOpts)
           3 (0.53 % of base) : 7624.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)

Top method improvements (bytes):
         -15 (-0.80 % of base) : 7177.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -9 (-1.64 % of base) : 2729.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -9 (-0.10 % of base) : 14878.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-0.29 % of base) : 4892.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -8 (-0.35 % of base) : 3210.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.47 % of base) : 472.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -7 (-0.42 % of base) : 14134.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -6 (-0.54 % of base) : 21729.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -5 (-0.31 % of base) : 2059.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.41 % of base) : 70.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -4 (-1.08 % of base) : 5597.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-0.92 % of base) : 4299.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -3 (-0.07 % of base) : 6710.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -2 (-0.33 % of base) : 1068.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -2 (-0.30 % of base) : 22239.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -2 (-0.60 % of base) : 4061.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -1 (-0.08 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
          -1 (-0.10 % of base) : 1409.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)

Top method regressions (percentages):
           3 (2.94 % of base) : 5814.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           3 (2.52 % of base) : 9637.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           3 (2.36 % of base) : 9145.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9098.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9077.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.36 % of base) : 9016.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           3 (2.10 % of base) : 13433.dasm - System.Formats.Tar.TarReader:Dispose():this (FullOpts)
           3 (2.04 % of base) : 1789.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
           3 (1.89 % of base) : 6792.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
           3 (1.26 % of base) : 18778.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.26 % of base) : 14009.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (1.18 % of base) : 14174.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (FullOpts)
           3 (1.18 % of base) : 18972.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.12 % of base) : 1954.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (FullOpts)
           3 (1.04 % of base) : 1786.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
           3 (1.00 % of base) : 11508.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.88 % of base) : 13693.dasm - System.Net.NetworkInformation.UnixIPInterfaceProperties:GetUnicastAddresses(System.Net.NetworkInformation.UnixNetworkInterface):System.Net.NetworkInformation.UnicastIPAddressInformationCollection (FullOpts)
           3 (0.80 % of base) : 4047.dasm - System.Net.Http.Headers.HttpHeaders:ContainsParsedValue(System.Net.Http.Headers.HeaderDescriptor,System.Object):ubyte:this (FullOpts)
           3 (0.76 % of base) : 3716.dasm - System.Diagnostics.Metrics.Instrument:Publish():this (FullOpts)
           2 (0.71 % of base) : 13695.dasm - System.Net.NetworkInformation.UnixIPInterfaceProperties:GetMulticastAddresses(System.Net.NetworkInformation.UnixNetworkInterface):System.Net.NetworkInformation.MulticastIPAddressInformationCollection (FullOpts)

Top method improvements (percentages):
          -9 (-1.64 % of base) : 2729.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-1.08 % of base) : 5597.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-0.92 % of base) : 4299.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
         -15 (-0.80 % of base) : 7177.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -2 (-0.60 % of base) : 4061.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -6 (-0.54 % of base) : 21729.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -8 (-0.47 % of base) : 472.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -7 (-0.42 % of base) : 14134.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -4 (-0.41 % of base) : 70.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.35 % of base) : 3210.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -2 (-0.33 % of base) : 1068.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.31 % of base) : 2059.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -2 (-0.30 % of base) : 22239.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -8 (-0.29 % of base) : 4892.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -9 (-0.10 % of base) : 14878.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -1 (-0.10 % of base) : 1409.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
          -1 (-0.08 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
          -3 (-0.07 % of base) : 6710.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)


benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 57208438 (overridden on cmd)
Total bytes of diff: 57210207 (overridden on cmd)
Total bytes of delta: 1769 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         122 : 120375.dasm (4.15 % of base)
          97 : 52207.dasm (3.14 % of base)
          86 : 53313.dasm (2.64 % of base)
          83 : 95487.dasm (2.67 % of base)
          80 : 123811.dasm (2.24 % of base)
          76 : 37250.dasm (2.35 % of base)
          76 : 38267.dasm (2.12 % of base)
          74 : 129337.dasm (2.07 % of base)
          73 : 108854.dasm (2.38 % of base)
          69 : 108290.dasm (2.20 % of base)
          68 : 64075.dasm (1.08 % of base)
          64 : 115957.dasm (1.90 % of base)
          64 : 16691.dasm (2.09 % of base)
          63 : 111283.dasm (1.98 % of base)
          61 : 69549.dasm (2.00 % of base)
          60 : 31023.dasm (1.65 % of base)
          59 : 31997.dasm (1.90 % of base)
          59 : 100886.dasm (1.87 % of base)
          57 : 122409.dasm (1.82 % of base)
          54 : 58062.dasm (1.76 % of base)

Top file improvements (bytes):
         -38 : 121110.dasm (-1.60 % of base)
         -38 : 32733.dasm (-1.60 % of base)
         -36 : 92497.dasm (-1.70 % of base)
         -36 : 97315.dasm (-1.70 % of base)
         -36 : 98185.dasm (-1.57 % of base)
         -28 : 84640.dasm (-1.60 % of base)
         -28 : 86937.dasm (-1.60 % of base)
         -17 : 103078.dasm (-3.18 % of base)
         -10 : 26433.dasm (-1.72 % of base)
          -9 : 63905.dasm (-0.84 % of base)
          -9 : 9276.dasm (-0.84 % of base)
          -9 : 12607.dasm (-0.84 % of base)
          -9 : 16575.dasm (-0.84 % of base)
          -9 : 78354.dasm (-0.84 % of base)
          -9 : 16047.dasm (-0.84 % of base)
          -8 : 91688.dasm (-0.60 % of base)
          -8 : 43712.dasm (-0.63 % of base)
          -7 : 112473.dasm (-0.40 % of base)
          -7 : 118691.dasm (-0.40 % of base)
          -6 : 122538.dasm (-0.37 % of base)

50 total files with Code Size differences (23 improved, 27 regressed), 6 unchanged.

Top method regressions (bytes):
         122 (4.15 % of base) : 120375.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          97 (3.14 % of base) : 52207.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          86 (2.64 % of base) : 53313.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          83 (2.67 % of base) : 95487.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          80 (2.24 % of base) : 123811.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (2.35 % of base) : 37250.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (2.12 % of base) : 38267.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          74 (2.07 % of base) : 129337.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          73 (2.38 % of base) : 108854.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          69 (2.20 % of base) : 108290.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          68 (1.08 % of base) : 64075.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          64 (1.90 % of base) : 115957.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          64 (2.09 % of base) : 16691.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          63 (1.98 % of base) : 111283.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          61 (2.00 % of base) : 69549.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          60 (1.65 % of base) : 31023.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          59 (1.90 % of base) : 31997.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          59 (1.87 % of base) : 100886.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          57 (1.82 % of base) : 122409.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          54 (1.76 % of base) : 58062.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

Top method improvements (bytes):
         -38 (-1.60 % of base) : 121110.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -38 (-1.60 % of base) : 32733.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -36 (-1.57 % of base) : 98185.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -36 (-1.70 % of base) : 97315.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -36 (-1.70 % of base) : 92497.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -28 (-1.60 % of base) : 86937.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -28 (-1.60 % of base) : 84640.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -17 (-3.18 % of base) : 103078.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -10 (-1.72 % of base) : 26433.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -9 (-0.84 % of base) : 63905.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 9276.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 12607.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 16575.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 78354.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 16047.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.60 % of base) : 91688.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -8 (-0.63 % of base) : 43712.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -7 (-0.40 % of base) : 112473.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          -7 (-0.40 % of base) : 118691.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          -6 (-0.37 % of base) : 122538.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)

Top method regressions (percentages):
         122 (4.15 % of base) : 120375.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          97 (3.14 % of base) : 52207.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          83 (2.67 % of base) : 95487.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          86 (2.64 % of base) : 53313.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          73 (2.38 % of base) : 108854.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (2.35 % of base) : 37250.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          80 (2.24 % of base) : 123811.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          69 (2.20 % of base) : 108290.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (2.12 % of base) : 38267.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          64 (2.09 % of base) : 16691.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          74 (2.07 % of base) : 129337.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          61 (2.00 % of base) : 69549.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          63 (1.98 % of base) : 111283.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          64 (1.90 % of base) : 115957.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          59 (1.90 % of base) : 31997.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          59 (1.87 % of base) : 100886.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          53 (1.85 % of base) : 118037.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          57 (1.82 % of base) : 122409.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          31 (1.80 % of base) : 41251.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          31 (1.80 % of base) : 85891.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (percentages):
         -17 (-3.18 % of base) : 103078.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -10 (-1.72 % of base) : 26433.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -36 (-1.70 % of base) : 97315.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -36 (-1.70 % of base) : 92497.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -38 (-1.60 % of base) : 121110.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -38 (-1.60 % of base) : 32733.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -28 (-1.60 % of base) : 86937.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -28 (-1.60 % of base) : 84640.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -36 (-1.57 % of base) : 98185.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
          -1 (-1.41 % of base) : 111408.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
          -4 (-1.21 % of base) : 6977.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -9 (-0.84 % of base) : 63905.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 9276.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 12607.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 16575.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 78354.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.84 % of base) : 16047.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.63 % of base) : 43712.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-0.60 % of base) : 91688.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -4 (-0.51 % of base) : 12503.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)


benchmarks.run_tiered.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 18554476 (overridden on cmd)
Total bytes of diff: 18554428 (overridden on cmd)
Total bytes of delta: -48 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 34022.dasm (0.07 % of base)
           3 : 32551.dasm (1.26 % of base)
           3 : 25014.dasm (1.00 % of base)
           2 : 26704.dasm (0.14 % of base)
           2 : 45453.dasm (0.23 % of base)
           2 : 23147.dasm (0.06 % of base)

Top file improvements (bytes):
         -15 : 34707.dasm (-0.80 % of base)
          -9 : 16857.dasm (-2.66 % of base)
          -9 : 21062.dasm (-1.57 % of base)
          -8 : 7807.dasm (-0.35 % of base)
          -8 : 2683.dasm (-0.47 % of base)
          -5 : 24297.dasm (-0.31 % of base)
          -5 : 25531.dasm (-0.31 % of base)
          -4 : 1512.dasm (-0.41 % of base)
          -2 : 52222.dasm (-0.30 % of base)
          -1 : 23134.dasm (-0.10 % of base)

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

Top method regressions (bytes):
           6 (0.07 % of base) : 34022.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
           3 (1.00 % of base) : 25014.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (1.26 % of base) : 32551.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.23 % of base) : 45453.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           2 (0.06 % of base) : 23147.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
           2 (0.14 % of base) : 26704.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)

Top method improvements (bytes):
         -15 (-0.80 % of base) : 34707.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -9 (-1.57 % of base) : 21062.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -9 (-2.66 % of base) : 16857.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-0.35 % of base) : 7807.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.47 % of base) : 2683.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -5 (-0.31 % of base) : 25531.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
          -5 (-0.31 % of base) : 24297.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
          -4 (-0.41 % of base) : 1512.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -2 (-0.30 % of base) : 52222.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -1 (-0.10 % of base) : 23134.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
           3 (1.26 % of base) : 32551.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (1.00 % of base) : 25014.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.23 % of base) : 45453.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           2 (0.14 % of base) : 26704.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           6 (0.07 % of base) : 34022.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
           2 (0.06 % of base) : 23147.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)

Top method improvements (percentages):
          -9 (-2.66 % of base) : 16857.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -9 (-1.57 % of base) : 21062.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -15 (-0.80 % of base) : 34707.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -8 (-0.47 % of base) : 2683.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -4 (-0.41 % of base) : 1512.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.35 % of base) : 7807.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -5 (-0.31 % of base) : 25531.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
          -5 (-0.31 % of base) : 24297.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
          -2 (-0.30 % of base) : 52222.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -1 (-0.10 % of base) : 23134.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

16 total methods with Code Size differences (10 improved, 6 regressed).


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 247130491 (overridden on cmd)
Total bytes of diff: 247130237 (overridden on cmd)
Total bytes of delta: -254 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          37 : 302054.dasm (0.86 % of base)
          19 : 327662.dasm (0.78 % of base)
          12 : 293174.dasm (1.25 % of base)
           6 : 386363.dasm (0.37 % of base)
           5 : 387814.dasm (0.78 % of base)
           3 : 280264.dasm (0.28 % of base)
           3 : 280276.dasm (1.18 % of base)
           3 : 320949.dasm (0.55 % of base)
           3 : 369282.dasm (0.39 % of base)
           3 : 280069.dasm (1.26 % of base)
           3 : 277742.dasm (0.45 % of base)
           3 : 280263.dasm (0.46 % of base)
           3 : 280278.dasm (0.25 % of base)
           3 : 327557.dasm (0.77 % of base)
           3 : 368470.dasm (0.58 % of base)
           3 : 387546.dasm (0.28 % of base)
           3 : 387668.dasm (1.06 % of base)
           3 : 388516.dasm (0.18 % of base)
           3 : 280268.dasm (0.48 % of base)
           3 : 369709.dasm (0.87 % of base)

Top file improvements (bytes):
         -35 : 274305.dasm (-6.18 % of base)
         -29 : 324578.dasm (-16.48 % of base)
         -29 : 368216.dasm (-0.35 % of base)
         -25 : 389423.dasm (-0.83 % of base)
         -22 : 50202.dasm (-0.73 % of base)
         -20 : 389196.dasm (-0.44 % of base)
         -18 : 389015.dasm (-0.61 % of base)
         -16 : 388565.dasm (-0.14 % of base)
         -15 : 296862.dasm (-0.37 % of base)
         -13 : 369466.dasm (-0.78 % of base)
         -11 : 99596.dasm (-0.98 % of base)
         -11 : 330467.dasm (-5.05 % of base)
         -10 : 292930.dasm (-1.34 % of base)
         -10 : 389293.dasm (-0.51 % of base)
         -10 : 389337.dasm (-0.90 % of base)
         -10 : 331084.dasm (-0.73 % of base)
          -9 : 95701.dasm (-0.88 % of base)
          -8 : 370105.dasm (-0.47 % of base)
          -8 : 389285.dasm (-0.70 % of base)
          -8 : 369705.dasm (-0.69 % of base)

50 total files with Code Size differences (24 improved, 26 regressed), 2 unchanged.

Top method regressions (bytes):
          37 (0.86 % of base) : 302054.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
          19 (0.78 % of base) : 327662.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
          12 (1.25 % of base) : 293174.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           6 (0.37 % of base) : 386363.dasm - Profiler.Tests.GCTests:RunTest(System.String[]):int (FullOpts)
           5 (0.78 % of base) : 387814.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
           3 (0.87 % of base) : 369709.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)
           3 (0.55 % of base) : 320949.dasm - InputValidation+InputValidationTest:.ctor(ubyte,ubyte):this (FullOpts)
           3 (0.39 % of base) : 369282.dasm - Internal.JitInterface.CorInfoImpl:CompileMethodCleanup():this (FullOpts)
           3 (0.58 % of base) : 368470.dasm - Internal.TypeSystem.Ecma.MutableModule+Cache:ResetEmitter():this (FullOpts)
           3 (0.28 % of base) : 387546.dasm - Internal.TypeSystem.ExplicitLayoutValidator:AddToFieldLayout(int,Internal.TypeSystem.TypeDesc):this (FullOpts)
           3 (0.18 % of base) : 388516.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:get_IsDirty():ubyte:this (FullOpts)
           3 (1.26 % of base) : 280069.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (0.45 % of base) : 277742.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           3 (0.25 % of base) : 280278.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeAssemblyRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.48 % of base) : 280268.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMemberRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.73 % of base) : 387714.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.06 % of base) : 387668.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.18 % of base) : 280276.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.28 % of base) : 280264.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.46 % of base) : 280263.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)

Top method improvements (bytes):
         -35 (-6.18 % of base) : 274305.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -29 (-0.35 % of base) : 368216.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -29 (-16.48 % of base) : 324578.dasm - Program:M49() (FullOpts)
         -25 (-0.83 % of base) : 389423.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -22 (-0.73 % of base) : 50202.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -20 (-0.44 % of base) : 389196.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -18 (-0.61 % of base) : 389015.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -16 (-0.14 % of base) : 388565.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
         -15 (-0.37 % of base) : 296862.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
         -13 (-0.78 % of base) : 369466.dasm - ILCompiler.MetadataManager:GetCompiledMethods(Internal.TypeSystem.Ecma.EcmaModule,int):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysis.IMethodNode]:this (FullOpts)
         -11 (-0.98 % of base) : 99596.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -11 (-5.05 % of base) : 330467.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -10 (-0.90 % of base) : 389337.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -10 (-0.51 % of base) : 389293.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -10 (-1.34 % of base) : 292930.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ValidateBindArgument(System.Dynamic.DynamicMetaObject[],System.String) (FullOpts)
         -10 (-0.73 % of base) : 331084.dasm - test86865.test86865:TestEntryPoint():int (FullOpts)
          -9 (-0.88 % of base) : 95701.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.69 % of base) : 369705.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
          -8 (-0.70 % of base) : 389285.dasm - Microsoft.Build.BackEnd.SchedulingPlan:WritePlan(int,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext):this (FullOpts)
          -8 (-0.48 % of base) : 388763.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)

Top method regressions (percentages):
           3 (1.26 % of base) : 280069.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
          12 (1.25 % of base) : 293174.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           3 (1.18 % of base) : 280276.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.18 % of base) : 387669.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.06 % of base) : 387668.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.87 % of base) : 369709.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)
          37 (0.86 % of base) : 302054.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
           2 (0.85 % of base) : 321072.dasm - GCUtil:FreePins() (FullOpts)
           2 (0.85 % of base) : 321071.dasm - GCUtil:FreePins2() (FullOpts)
          19 (0.78 % of base) : 327662.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           5 (0.78 % of base) : 387814.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
           3 (0.77 % of base) : 327557.dasm - System.Xml.Xsl.Xslt.MatcherBuilder:MatchPatterns(System.Xml.Xsl.Qil.QilIterator,System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Pattern]):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           3 (0.73 % of base) : 387714.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           2 (0.59 % of base) : 270402.dasm - Program:TestEntryPoint():int (FullOpts)
           3 (0.58 % of base) : 368470.dasm - Internal.TypeSystem.Ecma.MutableModule+Cache:ResetEmitter():this (FullOpts)
           3 (0.55 % of base) : 320949.dasm - InputValidation+InputValidationTest:.ctor(ubyte,ubyte):this (FullOpts)
           3 (0.48 % of base) : 280268.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMemberRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.46 % of base) : 280263.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.45 % of base) : 277742.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           2 (0.44 % of base) : 275876.dasm - BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)

Top method improvements (percentages):
         -29 (-16.48 % of base) : 324578.dasm - Program:M49() (FullOpts)
         -35 (-6.18 % of base) : 274305.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -11 (-5.05 % of base) : 330467.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -10 (-1.34 % of base) : 292930.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ValidateBindArgument(System.Dynamic.DynamicMetaObject[],System.String) (FullOpts)
          -4 (-1.03 % of base) : 323272.dasm - Mutate:TestEntryPoint():int (FullOpts)
         -11 (-0.98 % of base) : 99596.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -10 (-0.90 % of base) : 389337.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
          -9 (-0.88 % of base) : 95701.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -7 (-0.84 % of base) : 369714.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
         -25 (-0.83 % of base) : 389423.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -13 (-0.78 % of base) : 369466.dasm - ILCompiler.MetadataManager:GetCompiledMethods(Internal.TypeSystem.Ecma.EcmaModule,int):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysis.IMethodNode]:this (FullOpts)
         -10 (-0.73 % of base) : 331084.dasm - test86865.test86865:TestEntryPoint():int (FullOpts)
         -22 (-0.73 % of base) : 50202.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
          -8 (-0.70 % of base) : 389285.dasm - Microsoft.Build.BackEnd.SchedulingPlan:WritePlan(int,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext):this (FullOpts)
          -8 (-0.69 % of base) : 369705.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
         -18 (-0.61 % of base) : 389015.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -10 (-0.51 % of base) : 389293.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
          -8 (-0.48 % of base) : 388763.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
          -8 (-0.47 % of base) : 370105.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -20 (-0.44 % of base) : 389196.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)


libraries.crossgen2.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44619341 (overridden on cmd)
Total bytes of diff: 44619256 (overridden on cmd)
Total bytes of delta: -85 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          10 : 22104.dasm (0.15 % of base)
           9 : 233073.dasm (0.52 % of base)
           5 : 16618.dasm (0.26 % of base)
           5 : 22834.dasm (0.63 % of base)
           3 : 22098.dasm (0.53 % of base)
           3 : 20772.dasm (0.13 % of base)
           3 : 222630.dasm (0.02 % of base)
           3 : 22571.dasm (0.37 % of base)
           3 : 22669.dasm (2.50 % of base)
           3 : 6648.dasm (0.21 % of base)
           3 : 16624.dasm (0.59 % of base)
           2 : 20562.dasm (0.38 % of base)
           2 : 20294.dasm (0.16 % of base)

Top file improvements (bytes):
         -36 : 17352.dasm (-1.55 % of base)
          -9 : 21916.dasm (-1.51 % of base)
          -9 : 22496.dasm (-2.62 % of base)
          -9 : 240655.dasm (-0.17 % of base)
          -9 : 240724.dasm (-0.18 % of base)
          -8 : 243816.dasm (-6.15 % of base)
          -7 : 248993.dasm (-1.26 % of base)
          -7 : 248998.dasm (-1.07 % of base)
          -6 : 186935.dasm (-0.33 % of base)
          -6 : 208903.dasm (-0.33 % of base)
          -6 : 211707.dasm (-0.66 % of base)
          -6 : 23057.dasm (-1.86 % of base)
          -5 : 17411.dasm (-0.59 % of base)
          -4 : 12275.dasm (-0.79 % of base)
          -4 : 21975.dasm (-0.82 % of base)
          -2 : 10684.dasm (-0.30 % of base)
          -2 : 17409.dasm (-0.32 % of base)
          -2 : 223258.dasm (-0.05 % of base)
          -1 : 16764.dasm (-0.06 % of base)
          -1 : 23058.dasm (-0.15 % of base)

33 total files with Code Size differences (20 improved, 13 regressed), 1 unchanged.

Top method regressions (bytes):
          10 (0.15 % of base) : 22104.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           9 (0.52 % of base) : 233073.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           5 (0.26 % of base) : 16618.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           5 (0.63 % of base) : 22834.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (0.53 % of base) : 22098.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
           3 (2.50 % of base) : 22669.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           3 (0.13 % of base) : 20772.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
           3 (0.59 % of base) : 16624.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
           3 (0.21 % of base) : 6648.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
           3 (0.37 % of base) : 22571.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           3 (0.02 % of base) : 222630.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
           2 (0.38 % of base) : 20562.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
           2 (0.16 % of base) : 20294.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)

Top method improvements (bytes):
         -36 (-1.55 % of base) : 17352.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -9 (-1.51 % of base) : 21916.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -9 (-2.62 % of base) : 22496.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -9 (-0.17 % of base) : 240655.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          -9 (-0.18 % of base) : 240724.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-6.15 % of base) : 243816.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
          -7 (-1.26 % of base) : 248993.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -7 (-1.07 % of base) : 248998.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -6 (-0.33 % of base) : 186935.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -6 (-0.33 % of base) : 208903.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -6 (-0.66 % of base) : 211707.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -6 (-1.86 % of base) : 23057.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
          -5 (-0.59 % of base) : 17411.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -4 (-0.79 % of base) : 12275.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
          -4 (-0.82 % of base) : 21975.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -2 (-0.32 % of base) : 17409.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -2 (-0.30 % of base) : 10684.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -2 (-0.05 % of base) : 223258.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
          -1 (-0.15 % of base) : 23058.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
          -1 (-0.06 % of base) : 16764.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method regressions (percentages):
           3 (2.50 % of base) : 22669.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           5 (0.63 % of base) : 22834.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (0.59 % of base) : 16624.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
           3 (0.53 % of base) : 22098.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
           9 (0.52 % of base) : 233073.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           2 (0.38 % of base) : 20562.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
           3 (0.37 % of base) : 22571.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           5 (0.26 % of base) : 16618.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           3 (0.21 % of base) : 6648.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
           2 (0.16 % of base) : 20294.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
          10 (0.15 % of base) : 22104.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           3 (0.13 % of base) : 20772.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
           3 (0.02 % of base) : 222630.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)

Top method improvements (percentages):
          -8 (-6.15 % of base) : 243816.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
          -9 (-2.62 % of base) : 22496.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -6 (-1.86 % of base) : 23057.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -36 (-1.55 % of base) : 17352.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -9 (-1.51 % of base) : 21916.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -7 (-1.26 % of base) : 248993.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -7 (-1.07 % of base) : 248998.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.82 % of base) : 21975.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -4 (-0.79 % of base) : 12275.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
          -6 (-0.66 % of base) : 211707.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -5 (-0.59 % of base) : 17411.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.33 % of base) : 186935.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -6 (-0.33 % of base) : 208903.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -2 (-0.32 % of base) : 17409.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -2 (-0.30 % of base) : 10684.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -9 (-0.18 % of base) : 240724.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -9 (-0.17 % of base) : 240655.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          -1 (-0.15 % of base) : 23058.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
          -1 (-0.06 % of base) : 16764.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -2 (-0.05 % of base) : 223258.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

33 total methods with Code Size differences (20 improved, 13 regressed).


libraries.pmi.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60391350 (overridden on cmd)
Total bytes of diff: 60390502 (overridden on cmd)
Total bytes of delta: -848 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 170020.dasm (3.61 % of base)
          19 : 237408.dasm (0.77 % of base)
          15 : 286550.dasm (0.27 % of base)
          12 : 173817.dasm (0.50 % of base)
          12 : 188660.dasm (1.25 % of base)
           9 : 150550.dasm (0.40 % of base)
           7 : 247436.dasm (0.29 % of base)
           6 : 251763.dasm (1.92 % of base)
           6 : 251718.dasm (1.97 % of base)
           5 : 229763.dasm (0.47 % of base)
           5 : 238396.dasm (0.16 % of base)
           5 : 239513.dasm (0.08 % of base)
           4 : 173235.dasm (0.19 % of base)
           4 : 81759.dasm (1.38 % of base)
           3 : 185290.dasm (1.09 % of base)
           3 : 42570.dasm (1.00 % of base)
           3 : 141314.dasm (1.12 % of base)
           3 : 251736.dasm (1.18 % of base)
           3 : 251742.dasm (1.09 % of base)
           3 : 251764.dasm (0.85 % of base)

Top file improvements (bytes):
         -32 : 185790.dasm (-4.20 % of base)
         -29 : 249692.dasm (-0.35 % of base)
         -27 : 179235.dasm (-0.98 % of base)
         -25 : 40548.dasm (-0.73 % of base)
         -25 : 292745.dasm (-4.58 % of base)
         -24 : 139170.dasm (-0.63 % of base)
         -24 : 293722.dasm (-0.96 % of base)
         -23 : 171265.dasm (-3.01 % of base)
         -22 : 247430.dasm (-0.74 % of base)
         -22 : 183318.dasm (-0.47 % of base)
         -22 : 253536.dasm (-2.63 % of base)
         -21 : 290330.dasm (-0.31 % of base)
         -21 : 183714.dasm (-1.24 % of base)
         -19 : 83421.dasm (-0.31 % of base)
         -18 : 132949.dasm (-0.91 % of base)
         -18 : 179578.dasm (-0.63 % of base)
         -18 : 202231.dasm (-0.91 % of base)
         -18 : 292852.dasm (-8.00 % of base)
         -17 : 258749.dasm (-0.68 % of base)
         -17 : 258747.dasm (-0.67 % of base)

75 total files with Code Size differences (37 improved, 38 regressed), 9 unchanged.

Top method regressions (bytes):
          24 (3.61 % of base) : 170020.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          19 (0.77 % of base) : 237408.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
          15 (0.27 % of base) : 286550.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.DebugInfo,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
          12 (0.50 % of base) : 173817.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (1.25 % of base) : 188660.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           9 (0.40 % of base) : 150550.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:FinalizeCustomAttributeTableRows():this (FullOpts)
           7 (0.29 % of base) : 247436.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           6 (1.97 % of base) : 251718.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)
           6 (1.92 % of base) : 251763.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
           5 (0.16 % of base) : 238396.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:GenerateLiteralMembersElementInternal(System.Xml.Serialization.MemberMapping[],ubyte,System.Object[]):ubyte:this (FullOpts)
           5 (0.08 % of base) : 239513.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           5 (0.47 % of base) : 229763.dasm - System.Xml.XmlWellFormedWriter:GeneratePrefix():System.String:this (FullOpts)
           4 (1.38 % of base) : 81759.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
           4 (0.19 % of base) : 173235.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:ResolveConversion(System.Type,System.Type,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],ubyte,byref):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
           3 (1.00 % of base) : 42570.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder+EmbeddingStateList:Collect(Internal.TypeSystem.Ecma.EcmaGenericParameter,int):this (FullOpts)
           3 (1.12 % of base) : 141314.dasm - Microsoft.Cci.DynamicAnalysisDataWriter:SerializeMethodTable(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.DynamicAnalysisDataWriter+Sizes):this (FullOpts)
           3 (1.12 % of base) : 205800.dasm - Microsoft.Cci.DynamicAnalysisDataWriter:SerializeMethodTable(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.DynamicAnalysisDataWriter+Sizes):this (FullOpts)
           3 (1.26 % of base) : 141206.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.26 % of base) : 205694.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.00 % of base) : 82835.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventProviders:GetRegisteredProvidersInProcess(int):System.Collections.Generic.List`1[System.Guid] (FullOpts)

Top method improvements (bytes):
         -32 (-4.20 % of base) : 185790.dasm - System.Net.Http.Metrics.HttpMetricsEnrichmentContext:RecordDurationWithEnrichment(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpResponseMessage,System.Exception,System.TimeSpan,byref,System.Diagnostics.Metrics.Histogram`1[double]):this (FullOpts)
         -29 (-0.35 % of base) : 249692.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -27 (-0.98 % of base) : 179235.dasm - Microsoft.Build.BackEnd.PropertyParser:GetTableWithEscaping(Microsoft.Build.BackEnd.TaskLoggingHelper,System.String,System.String,System.String[],byref):ubyte (FullOpts)
         -25 (-0.73 % of base) : 40548.dasm - ILCompiler.IBC.IBCProfileParser:ParseIBCDataFromModule(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ProfileData:this (FullOpts)
         -25 (-4.58 % of base) : 292745.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -24 (-0.96 % of base) : 293722.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
         -24 (-0.63 % of base) : 139170.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -23 (-3.01 % of base) : 171265.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
         -22 (-2.63 % of base) : 253536.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -22 (-0.47 % of base) : 183318.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -22 (-0.74 % of base) : 247430.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -21 (-1.24 % of base) : 183714.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
         -21 (-0.31 % of base) : 290330.dasm - TestRunner:DoWorkStress():int:this (FullOpts)
         -19 (-0.31 % of base) : 83421.dasm - Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:ParseProviderEvents(System.Func`2[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData,int],ubyte):this (FullOpts)
         -18 (-0.63 % of base) : 179578.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -18 (-0.91 % of base) : 132949.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -18 (-0.91 % of base) : 202231.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -18 (-8.00 % of base) : 292852.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         -17 (-0.67 % of base) : 258747.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts)
         -17 (-0.68 % of base) : 258749.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)

Top method regressions (percentages):
          24 (3.61 % of base) : 170020.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
           3 (2.13 % of base) : 279508.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
           6 (1.97 % of base) : 251718.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)
           6 (1.92 % of base) : 251763.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
           3 (1.90 % of base) : 37617.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncMapTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
           4 (1.38 % of base) : 81759.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
           3 (1.26 % of base) : 141206.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.26 % of base) : 205694.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
          12 (1.25 % of base) : 188660.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           3 (1.21 % of base) : 37616.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncLogTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
           3 (1.18 % of base) : 251736.dasm - System.Collections.ObjectModel.KeyedCollection`2[ubyte,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)
           3 (1.18 % of base) : 37631.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.18 % of base) : 37639.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.12 % of base) : 141314.dasm - Microsoft.Cci.DynamicAnalysisDataWriter:SerializeMethodTable(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.DynamicAnalysisDataWriter+Sizes):this (FullOpts)
           3 (1.12 % of base) : 205800.dasm - Microsoft.Cci.DynamicAnalysisDataWriter:SerializeMethodTable(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.DynamicAnalysisDataWriter+Sizes):this (FullOpts)
           3 (1.09 % of base) : 251749.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.Nullable`1[int]]:Contains(int):ubyte:this (FullOpts)
           3 (1.09 % of base) : 185290.dasm - System.Net.Http.Http3RequestStream:CopyTrailersToResponseMessage(System.Net.Http.HttpResponseMessage):this (FullOpts)
           3 (1.09 % of base) : 251770.dasm - System.Collections.ObjectModel.KeyedCollection`2[long,System.Nullable`1[int]]:Contains(long):ubyte:this (FullOpts)
           2 (1.09 % of base) : 181556.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
           3 (1.09 % of base) : 251742.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:Contains(short):ubyte:this (FullOpts)

Top method improvements (percentages):
         -18 (-8.00 % of base) : 292852.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          -8 (-6.78 % of base) : 276117.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -25 (-4.58 % of base) : 292745.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -32 (-4.20 % of base) : 185790.dasm - System.Net.Http.Metrics.HttpMetricsEnrichmentContext:RecordDurationWithEnrichment(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpResponseMessage,System.Exception,System.TimeSpan,byref,System.Diagnostics.Metrics.Histogram`1[double]):this (FullOpts)
         -23 (-3.01 % of base) : 171265.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
         -15 (-2.89 % of base) : 292743.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ReserveOneMessage():ubyte:this (FullOpts)
         -22 (-2.63 % of base) : 253536.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -13 (-2.49 % of base) : 224716.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
          -6 (-2.11 % of base) : 172424.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -11 (-2.01 % of base) : 283927.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-1.91 % of base) : 135052.dasm - Microsoft.Build.Framework.NativeMethods:KillTree(int) (FullOpts)
         -10 (-1.90 % of base) : 186218.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.83 % of base) : 177655.dasm - Microsoft.Build.Evaluation.ProjectCollection:SetGlobalProperty(System.String,System.String):this (FullOpts)
          -6 (-1.67 % of base) : 180737.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
          -5 (-1.64 % of base) : 182491.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
          -9 (-1.52 % of base) : 291875.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)
         -10 (-1.44 % of base) : 164349.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
         -14 (-1.41 % of base) : 217757.dasm - Microsoft.CodeAnalysis.DocumentationCommentId+Parser:ParseTypeSymbol(System.String,byref,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.ISymbol]) (FullOpts)
         -14 (-1.41 % of base) : 154282.dasm - Microsoft.CodeAnalysis.DocumentationCommentId+Parser:ParseTypeSymbol(System.String,byref,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.ISymbol]) (FullOpts)
          -5 (-1.39 % of base) : 261053.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)


libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31730283 (overridden on cmd)
Total bytes of diff: 31730052 (overridden on cmd)
Total bytes of delta: -231 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 67991.dasm (3.61 % of base)
           2 : 72386.dasm (0.09 % of base)

Top file improvements (bytes):
         -24 : 75670.dasm (-0.79 % of base)
         -17 : 18769.dasm (-1.87 % of base)
         -17 : 21425.dasm (-1.87 % of base)
         -16 : 19650.dasm (-1.71 % of base)
         -16 : 24171.dasm (-1.78 % of base)
         -16 : 34088.dasm (-1.78 % of base)
         -16 : 42028.dasm (-1.74 % of base)
         -16 : 8600.dasm (-1.82 % of base)
         -16 : 15748.dasm (-1.71 % of base)
         -16 : 21094.dasm (-1.78 % of base)
         -16 : 20921.dasm (-1.71 % of base)
         -16 : 28511.dasm (-1.78 % of base)
         -16 : 11890.dasm (-1.71 % of base)
         -16 : 21180.dasm (-1.78 % of base)
          -9 : 7015.dasm (-0.88 % of base)
          -5 : 2425.dasm (-0.38 % of base)
          -5 : 1641.dasm (-0.19 % of base)
          -3 : 73.dasm (-0.22 % of base)
          -1 : 29921.dasm (-0.08 % of base)

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

Top method regressions (bytes):
          24 (3.61 % of base) : 67991.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)
           2 (0.09 % of base) : 72386.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)

Top method improvements (bytes):
         -24 (-0.79 % of base) : 75670.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -17 (-1.87 % of base) : 18769.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -17 (-1.87 % of base) : 21425.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 19650.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 24171.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 34088.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.74 % of base) : 42028.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.82 % of base) : 8600.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 15748.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 21094.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 20921.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 28511.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 11890.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 21180.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
          -9 (-0.88 % of base) : 7015.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -5 (-0.38 % of base) : 2425.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -5 (-0.19 % of base) : 1641.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Instrumented Tier1)
          -3 (-0.22 % of base) : 73.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -1 (-0.08 % of base) : 29921.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

Top method regressions (percentages):
          24 (3.61 % of base) : 67991.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)
           2 (0.09 % of base) : 72386.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)

Top method improvements (percentages):
         -17 (-1.87 % of base) : 18769.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -17 (-1.87 % of base) : 21425.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.82 % of base) : 8600.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 24171.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 34088.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 21094.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 28511.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.78 % of base) : 21180.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.74 % of base) : 42028.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 19650.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 15748.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 20921.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.71 % of base) : 11890.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
          -9 (-0.88 % of base) : 7015.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -24 (-0.79 % of base) : 75670.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
          -5 (-0.38 % of base) : 2425.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -3 (-0.22 % of base) : 73.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -5 (-0.19 % of base) : 1641.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Instrumented Tier1)
          -1 (-0.08 % of base) : 29921.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

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


librariestestsnotieredcompilation.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 130012769 (overridden on cmd)
Total bytes of diff: 130011808 (overridden on cmd)
Total bytes of delta: -961 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 214055.dasm (3.26 % of base)
          24 : 215074.dasm (3.61 % of base)
          16 : 201098.dasm (0.72 % of base)
          15 : 53448.dasm (1.72 % of base)
          14 : 230455.dasm (0.98 % of base)
          12 : 27964.dasm (1.25 % of base)
          12 : 58206.dasm (0.54 % of base)
          11 : 191957.dasm (0.26 % of base)
           8 : 157211.dasm (0.47 % of base)
           7 : 47826.dasm (0.36 % of base)
           7 : 45368.dasm (0.36 % of base)
           6 : 143858.dasm (0.35 % of base)
           5 : 207816.dasm (0.51 % of base)
           5 : 207903.dasm (0.47 % of base)
           5 : 166058.dasm (0.08 % of base)
           5 : 207798.dasm (0.48 % of base)
           5 : 305416.dasm (0.16 % of base)
           5 : 207960.dasm (0.52 % of base)
           5 : 238550.dasm (0.23 % of base)
           5 : 143859.dasm (0.18 % of base)

Top file improvements (bytes):
         -28 : 161276.dasm (-1.06 % of base)
         -28 : 161247.dasm (-1.06 % of base)
         -28 : 161264.dasm (-1.06 % of base)
         -25 : 297451.dasm (-4.58 % of base)
         -24 : 192152.dasm (-0.96 % of base)
         -24 : 820.dasm (-0.64 % of base)
         -23 : 222572.dasm (-3.01 % of base)
         -22 : 161241.dasm (-0.65 % of base)
         -22 : 285726.dasm (-2.54 % of base)
         -21 : 301557.dasm (-0.70 % of base)
         -20 : 222271.dasm (-0.89 % of base)
         -20 : 216650.dasm (-0.89 % of base)
         -19 : 256999.dasm (-3.15 % of base)
         -19 : 235202.dasm (-3.15 % of base)
         -18 : 20969.dasm (-0.95 % of base)
         -18 : 296639.dasm (-8.00 % of base)
         -18 : 90223.dasm (-1.05 % of base)
         -17 : 295376.dasm (-0.70 % of base)
         -17 : 147975.dasm (-0.50 % of base)
         -15 : 297135.dasm (-2.89 % of base)

73 total files with Code Size differences (36 improved, 37 regressed), 12 unchanged.

Top method regressions (bytes):
          32 (3.26 % of base) : 214055.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          24 (3.61 % of base) : 215074.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          16 (0.72 % of base) : 201098.dasm - System.Reflection.Tests.RuntimeTypeMemberCacheTests:BigTypeGetMethodsReturnsInDeclaredOrderTest() (FullOpts)
          15 (1.72 % of base) : 53448.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
          14 (0.98 % of base) : 230455.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
          12 (0.54 % of base) : 58206.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (1.25 % of base) : 27964.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
          11 (0.26 % of base) : 191957.dasm - System.Numerics.Tests.IsEvenTest:RunIsEvenTests() (FullOpts)
           8 (0.47 % of base) : 157211.dasm - System.Net.Security.Tests.NegotiateAuthenticationKerberosTest+<>c:<Loopback_Success>b__2_0():this (FullOpts)
           7 (0.36 % of base) : 47826.dasm - Microsoft.Extensions.Logging.Generators.Tests.LoggerMessageGeneratedCodeTests:TestCollection(int,Microsoft.Extensions.Logging.Generators.Tests.MockLogger) (FullOpts)
           7 (0.36 % of base) : 45368.dasm - Microsoft.Extensions.Logging.Generators.Tests.LoggerMessageGeneratedCodeTests:TestCollection(int,Microsoft.Extensions.Logging.Generators.Tests.MockLogger) (FullOpts)
           6 (0.35 % of base) : 143858.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:BasicDecodingInvalidInputLength():this (FullOpts)
           5 (0.18 % of base) : 143859.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:DecodeInPlaceInvalidBytesPadding():this (FullOpts)
           5 (0.51 % of base) : 207816.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
           5 (0.52 % of base) : 207960.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
           5 (0.47 % of base) : 207903.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           5 (0.48 % of base) : 207798.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           5 (0.23 % of base) : 238550.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsCollectionElementTest>d__23`1[ubyte]:MoveNext():this (FullOpts)
           5 (0.16 % of base) : 305416.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:GenerateLiteralMembersElementInternal(System.Xml.Serialization.MemberMapping[],ubyte,System.Object[]):ubyte:this (FullOpts)
           5 (0.08 % of base) : 166058.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (bytes):
         -28 (-1.06 % of base) : 161264.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest2():this (FullOpts)
         -28 (-1.06 % of base) : 161276.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest3():this (FullOpts)
         -28 (-1.06 % of base) : 161247.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest4():this (FullOpts)
         -25 (-4.58 % of base) : 297451.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -24 (-0.96 % of base) : 192152.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
         -24 (-0.64 % of base) : 820.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -23 (-3.01 % of base) : 222572.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
         -22 (-0.65 % of base) : 161241.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (FullOpts)
         -22 (-2.54 % of base) : 285726.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31152_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -21 (-0.70 % of base) : 301557.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         -20 (-0.89 % of base) : 222271.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
         -20 (-0.89 % of base) : 216650.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
         -19 (-3.15 % of base) : 256999.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -19 (-3.15 % of base) : 235202.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -18 (-1.05 % of base) : 90223.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -18 (-0.95 % of base) : 20969.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -18 (-8.00 % of base) : 296639.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         -17 (-0.50 % of base) : 147975.dasm - System.Net.Http.Tests.MultipartContentTest+<MultipartContent_TestData>d__0:MoveNext():ubyte:this (FullOpts)
         -17 (-0.70 % of base) : 295376.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
         -15 (-2.89 % of base) : 297135.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)

Top method regressions (percentages):
          24 (3.61 % of base) : 215074.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          32 (3.26 % of base) : 214055.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
           3 (2.13 % of base) : 122779.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
          15 (1.72 % of base) : 53448.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
           3 (1.26 % of base) : 46928.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.26 % of base) : 53184.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.26 % of base) : 55699.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
          12 (1.25 % of base) : 27964.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           3 (1.21 % of base) : 181974.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncLogTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
           3 (1.18 % of base) : 55827.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.18 % of base) : 55831.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.08 % of base) : 158379.dasm - System.Net.Test.Common.SettingsFrame:WriteTo(System.Span`1[ubyte]):this (FullOpts)
           3 (1.06 % of base) : 180883.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.05 % of base) : 144852.dasm - System.Text.EncodingExtensions+<>c:<GetString>b__8_0(System.Span`1[ushort],System.Collections.Generic.List`1[System.ValueTuple`2[ushort[],int]]):this (FullOpts)
          14 (0.98 % of base) : 230455.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
           2 (0.94 % of base) : 37772.dasm - Moq.Mock:Verify(Moq.Mock,System.Linq.Expressions.LambdaExpression,Moq.Times,System.String) (FullOpts)
           3 (0.92 % of base) : 181114.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.88 % of base) : 179318.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldRvaTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           3 (0.86 % of base) : 179197.dasm - System.Reflection.Emit.ModuleBuilderImpl:FillMemberReferences(System.Reflection.Emit.ILGeneratorImpl):this (FullOpts)
           3 (0.77 % of base) : 170429.dasm - System.Xml.Xsl.Xslt.MatcherBuilder:MatchPatterns(System.Xml.Xsl.Qil.QilIterator,System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Pattern]):System.Xml.Xsl.Qil.QilNode:this (FullOpts)

Top method improvements (percentages):
         -18 (-8.00 % of base) : 296639.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          -8 (-6.78 % of base) : 149330.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -25 (-4.58 % of base) : 297451.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -19 (-3.15 % of base) : 256999.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -19 (-3.15 % of base) : 235202.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -23 (-3.01 % of base) : 222572.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
         -15 (-2.89 % of base) : 297135.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)
         -22 (-2.54 % of base) : 285726.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31152_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -6 (-2.11 % of base) : 513.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -11 (-2.09 % of base) : 220234.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountExceedingDefaultLimit_MemberData>d__18:MoveNext():ubyte:this (FullOpts)
         -11 (-2.08 % of base) : 220243.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
         -10 (-2.07 % of base) : 84981.dasm - System.ComponentModel.Composition.CardinalityMismatchExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
          -9 (-2.02 % of base) : 82944.dasm - System.ComponentModel.Composition.ContractMismatchExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
         -11 (-2.01 % of base) : 214235.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -10 (-1.90 % of base) : 20659.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -10 (-1.90 % of base) : 147353.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -10 (-1.78 % of base) : 220217.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
         -13 (-1.53 % of base) : 304228.dasm - CoreXml.Test.XLinq.FunctionalTests.EventsTests.EventsRemove:XAttributeRemoveOneByOne():this (FullOpts)
         -13 (-1.53 % of base) : 304209.dasm - CoreXml.Test.XLinq.FunctionalTests.EventsTests.EventsRemove:XElementRemoveOneByOne():this (FullOpts)
          -9 (-1.52 % of base) : 297244.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[int]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)


realworld.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13219489 (overridden on cmd)
Total bytes of diff: 13219465 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           6 : 31744.dasm (0.36 % of base)
           6 : 31746.dasm (3.26 % of base)
           6 : 32448.dasm (0.61 % of base)
           6 : 31420.dasm (0.80 % of base)
           5 : 11571.dasm (0.59 % of base)
           5 : 30576.dasm (0.76 % of base)
           5 : 13261.dasm (0.21 % of base)
           4 : 29937.dasm (0.11 % of base)
           4 : 32161.dasm (0.13 % of base)
           3 : 12508.dasm (0.83 % of base)
           3 : 15109.dasm (0.80 % of base)
           3 : 29339.dasm (1.26 % of base)
           3 : 29568.dasm (0.92 % of base)
           3 : 29570.dasm (0.74 % of base)
           3 : 29578.dasm (1.18 % of base)
           3 : 29580.dasm (0.88 % of base)
           3 : 29583.dasm (0.73 % of base)
           3 : 29584.dasm (0.49 % of base)
           3 : 30348.dasm (2.94 % of base)
           3 : 30498.dasm (1.78 % of base)

Top file improvements (bytes):
         -60 : 33010.dasm (-4.77 % of base)
         -36 : 32869.dasm (-5.27 % of base)
         -15 : 33046.dasm (-0.48 % of base)
         -15 : 14660.dasm (-0.80 % of base)
         -14 : 16158.dasm (-0.76 % of base)
         -12 : 33026.dasm (-0.85 % of base)
         -11 : 33064.dasm (-0.60 % of base)
         -10 : 15316.dasm (-2.11 % of base)
          -9 : 4834.dasm (-1.66 % of base)
          -8 : 471.dasm (-0.47 % of base)
          -8 : 1752.dasm (-0.33 % of base)
          -8 : 33092.dasm (-1.59 % of base)
          -7 : 12889.dasm (-0.16 % of base)
          -6 : 31704.dasm (-0.14 % of base)
          -5 : 2253.dasm (-0.31 % of base)
          -5 : 30390.dasm (-0.85 % of base)
          -5 : 30403.dasm (-0.64 % of base)
          -4 : 32061.dasm (-0.63 % of base)
          -4 : 32455.dasm (-0.65 % of base)
          -4 : 5687.dasm (-0.96 % of base)

66 total files with Code Size differences (25 improved, 41 regressed), 3 unchanged.

Top method regressions (bytes):
           6 (0.36 % of base) : 31744.dasm - System.Management.Automation.Language.VariableAnalysis:FinishAnalysis(ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
           6 (3.26 % of base) : 31746.dasm - System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
           6 (0.61 % of base) : 32448.dasm - System.Management.Automation.PSLocalEventManager:ProcessNewEventImplementation(System.Management.Automation.PSEventArgs,ubyte):this (FullOpts)
           6 (0.80 % of base) : 31420.dasm - System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)
           5 (0.76 % of base) : 30576.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadFormatTokenFromObjectModel(System.Management.Automation.CustomItemBase,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.FormatToken:this (FullOpts)
           5 (0.21 % of base) : 13261.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           5 (0.59 % of base) : 11571.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           4 (0.13 % of base) : 32161.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
           4 (0.11 % of base) : 29937.dasm - System.Management.Automation.Runspaces.PSSnapInHelpers:AnalyzePSSnapInAssembly(System.Reflection.Assembly,System.String,System.Management.Automation.PSSnapInInfo,System.Management.Automation.PSModuleInfo,byref,byref,byref,byref) (FullOpts)
           3 (1.26 % of base) : 29339.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.10 % of base) : 30499.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadHeadersSectionFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.TableControlBody,System.Collections.Generic.List`1[System.Management.Automation.TableControlColumnHeader]) (FullOpts)
           3 (1.46 % of base) : 16282.dasm - Roslyn.Utilities.CompilerOptionParseUtilities:ParseFeatures(System.Collections.Generic.IDictionary`2[System.String,System.String],System.Collections.Generic.List`1[System.String]) (FullOpts)
           3 (2.52 % of base) : 12510.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
           3 (0.83 % of base) : 12508.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.ExifReader:GetThumbnail(uint):this (FullOpts)
           3 (0.89 % of base) : 32288.dasm - System.Linq.Expressions.Compiler.LabelInfo:Define(System.Linq.Expressions.Compiler.LabelScopeInfo):this (FullOpts)
           3 (2.94 % of base) : 30348.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           3 (2.38 % of base) : 32969.dasm - System.Management.Automation.CmdletParameterBinderController:AtLeastOneUnboundValidParameterSetTakesPipelineInput(uint):ubyte:this (FullOpts)
           3 (0.07 % of base) : 32920.dasm - System.Management.Automation.CmdletParameterBinderController:GetDefaultParameterValuePairs(ubyte):System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Object]:this (FullOpts)
           3 (0.84 % of base) : 31934.dasm - System.Management.Automation.Interpreter.BranchLabel:Mark(System.Management.Automation.Interpreter.InstructionList):this (FullOpts)
           3 (0.73 % of base) : 31868.dasm - System.Management.Automation.Interpreter.LabelInfo:Define(System.Management.Automation.Interpreter.LabelScopeInfo):this (FullOpts)

Top method improvements (bytes):
         -60 (-4.77 % of base) : 33010.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)
         -36 (-5.27 % of base) : 32869.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -15 (-0.48 % of base) : 33046.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
         -15 (-0.80 % of base) : 14660.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -14 (-0.76 % of base) : 16158.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
         -12 (-0.85 % of base) : 33026.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -11 (-0.60 % of base) : 33064.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
         -10 (-2.11 % of base) : 15316.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
          -9 (-1.66 % of base) : 4834.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.33 % of base) : 1752.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-1.59 % of base) : 33092.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
          -8 (-0.47 % of base) : 471.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -7 (-0.16 % of base) : 12889.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          -6 (-0.14 % of base) : 31704.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
          -5 (-0.64 % of base) : 30403.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
          -5 (-0.31 % of base) : 2253.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -5 (-0.85 % of base) : 30390.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
          -4 (-0.41 % of base) : 70.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -4 (-1.08 % of base) : 30663.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-1.21 % of base) : 30454.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)

Top method regressions (percentages):
           6 (3.26 % of base) : 31746.dasm - System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
           3 (2.94 % of base) : 30348.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           3 (2.52 % of base) : 12510.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
           3 (2.38 % of base) : 32969.dasm - System.Management.Automation.CmdletParameterBinderController:AtLeastOneUnboundValidParameterSetTakesPipelineInput(uint):ubyte:this (FullOpts)
           3 (1.78 % of base) : 30498.dasm - System.Management.Automation.SessionStateInternal:ProviderExists(System.Management.Automation.ProviderInfo):System.Management.Automation.ProviderInfo:this (FullOpts)
           3 (1.46 % of base) : 16282.dasm - Roslyn.Utilities.CompilerOptionParseUtilities:ParseFeatures(System.Collections.Generic.IDictionary`2[System.String,System.String],System.Collections.Generic.List`1[System.String]) (FullOpts)
           3 (1.26 % of base) : 29339.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           3 (1.18 % of base) : 29569.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.18 % of base) : 29578.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (1.10 % of base) : 30499.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadHeadersSectionFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.TableControlBody,System.Collections.Generic.List`1[System.Management.Automation.TableControlColumnHeader]) (FullOpts)
           3 (1.06 % of base) : 29577.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           2 (0.97 % of base) : 31973.dasm - System.Management.Automation.Interpreter.InstructionList:BuildRuntimeLabels():System.Management.Automation.Interpreter.RuntimeLabel[]:this (FullOpts)
           2 (0.96 % of base) : 32997.dasm - System.Management.Automation.Internal.PipelineProcessor:SetupParameterVariables():this (FullOpts)
           3 (0.92 % of base) : 29568.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.89 % of base) : 32288.dasm - System.Linq.Expressions.Compiler.LabelInfo:Define(System.Linq.Expressions.Compiler.LabelScopeInfo):this (FullOpts)
           3 (0.88 % of base) : 29580.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldRvaTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           2 (0.86 % of base) : 32456.dasm - System.Management.Automation.Runspaces.LocalRunspace:<DoCloseHelper>b__54_0():System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]:this (FullOpts)
           3 (0.84 % of base) : 31934.dasm - System.Management.Automation.Interpreter.BranchLabel:Mark(System.Management.Automation.Interpreter.InstructionList):this (FullOpts)
           3 (0.83 % of base) : 12508.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.ExifReader:GetThumbnail(uint):this (FullOpts)
           6 (0.80 % of base) : 31420.dasm - System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)

Top method improvements (percentages):
         -36 (-5.27 % of base) : 32869.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -60 (-4.77 % of base) : 33010.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)
         -10 (-2.11 % of base) : 15316.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
          -9 (-1.66 % of base) : 4834.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-1.59 % of base) : 33092.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
          -4 (-1.21 % of base) : 30454.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
          -4 (-1.08 % of base) : 30663.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-0.96 % of base) : 5687.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -5 (-0.85 % of base) : 30390.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
         -12 (-0.85 % of base) : 33026.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -15 (-0.80 % of base) : 14660.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -14 (-0.76 % of base) : 16158.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
          -4 (-0.65 % of base) : 32455.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
          -5 (-0.64 % of base) : 30403.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
          -2 (-0.63 % of base) : 15110.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -4 (-0.63 % of base) : 32061.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -11 (-0.60 % of base) : 33064.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
          -2 (-0.55 % of base) : 33001.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -15 (-0.48 % of base) : 33046.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
          -8 (-0.47 % of base) : 471.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)


smoke_tests.nativeaot.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 4228743 (overridden on cmd)
Total bytes of diff: 4228586 (overridden on cmd)
Total bytes of delta: -157 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           5 : 26914.dasm (1.01 % of base)
           4 : 6186.dasm (0.53 % of base)
           3 : 4015.dasm (0.17 % of base)
           3 : 7835.dasm (0.39 % of base)
           3 : 7371.dasm (1.19 % of base)
           3 : 7792.dasm (2.03 % of base)
           3 : 26678.dasm (1.01 % of base)
           2 : 7615.dasm (0.87 % of base)

Top file improvements (bytes):
         -32 : 25828.dasm (-1.31 % of base)
         -16 : 18263.dasm (-3.42 % of base)
         -16 : 24403.dasm (-3.42 % of base)
         -16 : 20965.dasm (-3.42 % of base)
         -16 : 3579.dasm (-3.42 % of base)
         -13 : 21306.dasm (-4.15 % of base)
         -13 : 4680.dasm (-4.15 % of base)
         -13 : 18608.dasm (-4.15 % of base)
         -13 : 24756.dasm (-4.15 % of base)
          -8 : 17163.dasm (-0.48 % of base)
          -8 : 19868.dasm (-0.48 % of base)
          -8 : 23310.dasm (-0.48 % of base)
          -8 : 25464.dasm (-0.97 % of base)
          -2 : 7620.dasm (-0.51 % of base)
          -1 : 1373.dasm (-0.06 % of base)

23 total files with Code Size differences (15 improved, 8 regressed), 1 unchanged.

Top method regressions (bytes):
           5 (1.01 % of base) : 26914.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
           4 (0.53 % of base) : 6186.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (0.17 % of base) : 4015.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
           3 (2.03 % of base) : 7792.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
           3 (1.19 % of base) : 7371.dasm - System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
           3 (0.39 % of base) : 7835.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           3 (1.01 % of base) : 26678.dasm - ThreadTest:ExpectPassed(System.String,int) (FullOpts)
           2 (0.87 % of base) : 7615.dasm - System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)

Top method improvements (bytes):
         -32 (-1.31 % of base) : 25828.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -16 (-3.42 % of base) : 18263.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 24403.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 20965.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 3579.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -13 (-4.15 % of base) : 21306.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 4680.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 18608.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 24756.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-0.97 % of base) : 25464.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -8 (-0.48 % of base) : 17163.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.48 % of base) : 19868.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.48 % of base) : 23310.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -2 (-0.51 % of base) : 7620.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -1 (-0.06 % of base) : 1373.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method regressions (percentages):
           3 (2.03 % of base) : 7792.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
           3 (1.19 % of base) : 7371.dasm - System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
           3 (1.01 % of base) : 26678.dasm - ThreadTest:ExpectPassed(System.String,int) (FullOpts)
           5 (1.01 % of base) : 26914.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
           2 (0.87 % of base) : 7615.dasm - System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)
           4 (0.53 % of base) : 6186.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (0.39 % of base) : 7835.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           3 (0.17 % of base) : 4015.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)

Top method improvements (percentages):
         -13 (-4.15 % of base) : 21306.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 4680.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 18608.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -13 (-4.15 % of base) : 24756.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -16 (-3.42 % of base) : 18263.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 24403.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 20965.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -16 (-3.42 % of base) : 3579.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -32 (-1.31 % of base) : 25828.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.97 % of base) : 25464.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -2 (-0.51 % of base) : 7620.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-0.48 % of base) : 17163.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.48 % of base) : 19868.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.48 % of base) : 23310.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -1 (-0.06 % of base) : 1373.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

23 total methods with Code Size differences (15 improved, 8 regressed).



osx arm64

Diffs are based on 1,733,615 contexts (561,303 MinOpts, 1,172,312 FullOpts).

MISSED contexts: base: 2,902 (0.17%), diff: 2,906 (0.17%)

Overall (-6,596 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,101,028 -140
benchmarks.run_pgo.osx.arm64.checked.mch 24,782,000 -120
benchmarks.run_tiered.osx.arm64.checked.mch 15,471,752 -76
coreclr_tests.run.osx.arm64.checked.mch 390,213,652 -800
libraries.crossgen2.osx.arm64.checked.mch 63,645,568 -216
libraries.pmi.osx.arm64.checked.mch 80,235,780 -2,060
libraries_tests.run.osx.arm64.Release.mch 72,839,284 -472
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 159,909,600 -2,464
realworld.run.osx.arm64.checked.mch 15,078,748 -248

FullOpts (-6,596 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,100,292 -140
benchmarks.run_pgo.osx.arm64.checked.mch 8,787,588 -120
benchmarks.run_tiered.osx.arm64.checked.mch 3,950,116 -76
coreclr_tests.run.osx.arm64.checked.mch 138,802,076 -800
libraries.crossgen2.osx.arm64.checked.mch 63,643,940 -216
libraries.pmi.osx.arm64.checked.mch 80,114,652 -2,060
libraries_tests.run.osx.arm64.Release.mch 12,454,304 -472
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 146,850,240 -2,464
realworld.run.osx.arm64.checked.mch 14,514,796 -248

Example diffs

benchmarks.run.osx.arm64.checked.mch

-12 (-1.94%) : 5302.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)

@@ -10,8 +10,8 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -24,20 +24,21 @@ ; V13 tmp5 [V13,T05] ( 3, 12 ) ref -> x24 class-hnd "Inlining Arg" <System.AggregateException> ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp8 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp8 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V18 tmp10 [V18,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V19 tmp11 [V19,T03] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V18 tmp10 [V18,T03] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V19 tmp11 [V19,T02] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V20 tmp12 [V20,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V21 tmp13 [V21,T07] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V22 tmp14 [V22,T13] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V21 tmp13 [V21,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V22 tmp14 [V22,T14] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V24 tmp16 [V24,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V25 tmp17 [V25,T14] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V24 tmp16 [V24,T18] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V25 tmp17 [V25,T15] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
; V26 tmp18 [V26,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V27 PSPSym [V27,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V28 cse0 [V28,T06] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V29 cse1 [V29,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
+; V27 PSPSym [V27,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V28 cse0 [V28,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V29 cse1 [V29,T06] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V30 cse2 [V30,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -68,7 +69,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x1] ldar x21, [x1] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG15
+ cbz x21, G_M37406_IG14
;; size=40 bbWeight=1 PerfScore 11.00 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x1] @@ -76,7 +77,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x18] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x18] // [V04 loc2] cbnz w1, G_M37406_IG09 add x1, fp, #24 // [V04 loc2] @@ -96,17 +97,17 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs= mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M37406_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG10
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG11
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG13
+ bhs G_M37406_IG12
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M37406_IG11
+ bhs G_M37406_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -213,18 +214,11 @@ G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cmp w22, w24 - bne G_M37406_IG12 - b G_M37406_IG13 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -233,10 +227,10 @@ G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19] ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG14
+ cbz w0, G_M37406_IG13
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -244,12 +238,12 @@ G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #40 ; byrRegs +[x0] stlr xzr, [x0] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -259,8 +253,8 @@ G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03 V16}
+G_M37406_IG15: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -269,17 +263,17 @@ G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG16: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG18
+ cbz w0, G_M37406_IG17
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V03 V16}
+ ; GC ptr vars -{V03}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -288,7 +282,7 @@ G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 620, prolog size 40, PerfScore 268.75, instruction count 155, allocated bytes for code 620 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 608, prolog size 40, PerfScore 258.75, instruction count 152, allocated bytes for code 608 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -299,7 +293,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
+ Function Length : 135 (0x00087) Actual length = 540 (0x00021c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -338,4 +332,4 @@ Unwind Info: *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG13) handled by [G_M37406_IG16..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG12) handled by [G_M37406_IG15..END) (fault)
-8 (-1.82%) : 5086.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
@@ -10,62 +10,63 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> x19 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> x20 single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> x2 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> x21 "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x28] + stp x21, x22, [sp, #0x38] + str x23, [sp, #0x48]
mov fp, sp
- add x2, sp, #96 - str x2, [fp, #0x28] // [V24 PSPSym]
+ add x2, sp, #80 + str x2, [fp, #0x20] // [V24 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.00 G_M53769_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- str x19, [fp, #0x18] // [V02 loc0]
+ str x19, [fp, #0x10] // [V02 loc0]
; GC ptr vars +{V02}
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1]
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1]
cbnz w1, G_M53769_IG06
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x20] // [V03 loc1]
+ ldrb w0, [fp, #0x18] // [V03 loc1]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -74,7 +75,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180 ; gcr arg pop 0 ldr x21, [x19, #0x08] ; gcrRegs +[x21]
- cbz x21, G_M53769_IG12
+ cbz x21, G_M53769_IG11
;; size=52 bbWeight=1 PerfScore 16.50 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x1, x21 @@ -85,24 +86,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M53769_IG11
+ cbz x0, G_M53769_IG10
mov x21, x0 ldr w22, [x21, #0x14] mov w23, wzr ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M53769_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M53769_IG07
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M53769_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M53769_IG08
+ bhs G_M53769_IG07
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M53769_IG09
+ bhs G_M53769_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -133,21 +134,17 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- cmp w22, w24 - bne G_M53769_IG10 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08]
- b G_M53769_IG12
+ b G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 8.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -156,7 +153,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21] mov x2, x21 ; gcrRegs +[x2] @@ -177,56 +174,56 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs blr x3 ; gcrRegs -[x0-x2 x20-x21] ; gcr arg pop 0
- b G_M53769_IG08
+ b G_M53769_IG07
;; size=60 bbWeight=0.50 PerfScore 6.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG14
+ ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0] ; GC ptr vars -{V02} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x60
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M53769_IG15: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16} - stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - add x3, fp, #96 - str x3, [sp, #0x18]
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M53769_IG14: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17} + stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38] + add x3, fp, #80 + str x3, [sp, #0x10]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG17 - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG16 + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50
+G_M53769_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 36, PerfScore 171.75, instruction count 110, allocated bytes for code 440 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
+; Total bytes of code 432, prolog size 36, PerfScore 166.75, instruction count 108, allocated bytes for code 432 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
...

-8 (-1.49%) : 1961.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def
; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x26 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x25 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x26 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x25 "Inlining Arg"
; V19 tmp12 [V19,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" ;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -38,30 +38,30 @@ ;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V30 tmp23 [V30,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V30 tmp23 [V30,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp25 [V32,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V33 tmp26 [V33,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V34 tmp27 [V34,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V32 tmp25 [V32,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V33 tmp26 [V33,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V34 tmp27 [V34,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
; V35 tmp28 [V35 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" ; V36 tmp29 [V36 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP ; V37 tmp30 [V37 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
-; V38 tmp31 [V38,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V39 tmp32 [V39,T03] ( 4, 20 ) ref -> x0 "field V04._current (fldOffset=0x8)" P-INDEP
+; V38 tmp31 [V38,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V39 tmp32 [V39,T02] ( 4, 20 ) ref -> x0 "field V04._current (fldOffset=0x8)" P-INDEP
; V40 tmp33 [V40,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V41 tmp34 [V41,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V42 tmp35 [V42,T13] ( 2, 8 ) byref -> x23 "field V09._reference (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T15] ( 2, 8 ) int -> x24 "field V09._length (fldOffset=0x8)" P-INDEP
+; V41 tmp34 [V41,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V42 tmp35 [V42,T14] ( 2, 8 ) byref -> x23 "field V09._reference (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T16] ( 2, 8 ) int -> x24 "field V09._length (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V46 tmp39 [V46,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V48 tmp41 [V48,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V49 tmp42 [V49,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V48 tmp41 [V48,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V49 tmp42 [V49,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V50 tmp43 [V50,T11] ( 3, 12 ) byref -> x1 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp44 [V51,T06] ( 4, 16 ) int -> x25 "field V14._length (fldOffset=0x8)" P-INDEP -; V52 tmp45 [V52,T14] ( 2, 8 ) byref -> x1 "field V15._reference (fldOffset=0x0)" P-INDEP -; V53 tmp46 [V53,T16] ( 2, 8 ) int -> x25 "field V15._length (fldOffset=0x8)" P-INDEP
+; V51 tmp44 [V51,T05] ( 4, 16 ) int -> x25 "field V14._length (fldOffset=0x8)" P-INDEP +; V52 tmp45 [V52,T15] ( 2, 8 ) byref -> x1 "field V15._reference (fldOffset=0x0)" P-INDEP +; V53 tmp46 [V53,T17] ( 2, 8 ) int -> x25 "field V15._length (fldOffset=0x8)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP @@ -77,9 +77,10 @@ ;* V66 tmp59 [V66 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp60 [V67 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP ; V68 tmp61 [V68,T01] ( 3, 48 ) ref -> x0 "arr expr"
-; V69 PSPSym [V69,T28] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" -; V70 cse0 [V70,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V71 cse1 [V71,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V69 PSPSym [V69,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V70 cse0 [V70,T09] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V71 cse1 [V71,T04] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V72 cse2 [V72,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
; ; Lcl frame size = 48 @@ -113,7 +114,7 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08] ldrb w0, [x20, #0x08] ; byrRegs -[x0]
- cbz w0, G_M19804_IG11
+ cbz w0, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -162,15 +163,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800002 {x1 blr x3 ; byrRegs -[x0-x1 x23] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w0, [x19, #0x14] + cmp w21, w0 + bne G_M19804_IG09
ldr w0, [x19, #0x10] cmp w22, w0
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -200,10 +201,6 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19] add x0, fp, #40 // [V02 loc0] @@ -223,9 +220,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -238,9 +235,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -252,12 +249,12 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V35 tmp28] bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x70] ldp x23, x24, [sp, #0x60] ldp x21, x22, [sp, #0x50] @@ -265,7 +262,7 @@ G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x80 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x60]! stp x19, x20, [sp, #0x20] @@ -275,7 +272,7 @@ G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, fp, #128 str x3, [sp, #0x18] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -288,9 +285,9 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG14]
+ adr x0, [G_M19804_IG13]
;; size=40 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend
+G_M19804_IG17: ; bbWeight=0, funclet epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -299,7 +296,7 @@ G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 536, prolog size 44, PerfScore 512.00, instruction count 134, allocated bytes for code 536 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
+; Total bytes of code 528, prolog size 44, PerfScore 500.00, instruction count 132, allocated bytes for code 528 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
; ============================================================ Unwind Info: @@ -310,7 +307,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -347,4 +344,4 @@ Unwind Info: *************** EH table for System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M19804_IG03..G_M19804_IG14) handled by [G_M19804_IG16..END) (class: 200005B)
+EH#0: try [G_M19804_IG03..G_M19804_IG13) handled by [G_M19804_IG15..END) (class: 200005B)
-8 (-0.15%) : 9162.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
@@ -10,211 +10,212 @@ ; ; V00 this [V00,T00] ( 86,251 ) ref -> [fp+0x60] this class-hnd EH-live single-def <Jil.Deserialize.InlineDeserializer`1[System.__Canon]> ; V01 arg1 [V01,T32] ( 15, 12 ) ref -> x19 class-hnd single-def <System.Type>
-; V02 loc0 [V02,T53] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V03 loc1 [V03,T79] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
+; V02 loc0 [V02,T54] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V03 loc1 [V03,T80] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
; V04 loc2 [V04,T23] ( 12, 18 ) ref -> [fp+0x58] class-hnd exact EH-live spill-single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ; V05 loc3 [V05,T22] ( 8, 22 ) ref -> x22 class-hnd <<unknown class>> ; V06 loc4 [V06,T24] ( 5, 18 ) ref -> x24 class-hnd single-def <Sigil.Label>
-; V07 loc5 [V07,T139] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> -; V08 loc6 [V08,T71] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
+; V07 loc5 [V07,T140] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> +; V08 loc6 [V08,T72] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T132] ( 3, 3 ) ref -> x26 class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T133] ( 3, 3 ) ref -> x26 class-hnd single-def <<unknown class>>
; V11 loc9 [V11,T39] ( 4, 11 ) ref -> x28 class-hnd <System.Reflection.MethodInfo>
-; V12 loc10 [V12,T140] ( 2, 2 ) ref -> x25 class-hnd single-def <Sigil.Label[]>
+; V12 loc10 [V12,T141] ( 2, 2 ) ref -> x25 class-hnd single-def <Sigil.Label[]>
; V13 loc11 [V13,T43] ( 3, 10 ) ref -> x27 class-hnd single-def <Sigil.Label> ; V14 loc12 [V14,T20] ( 3, 24 ) ref -> x25 class-hnd single-def <Sigil.Label>
-; V15 loc13 [V15,T133] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
+; V15 loc13 [V15,T134] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
;* V16 loc14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V17 loc15 [V17,T78] ( 7, 4 ) ref -> [fp+0x50] class-hnd EH-live spill-single-def <Sigil.Local> -; V18 loc16 [V18,T134] ( 3, 3 ) ref -> [fp+0x48] class-hnd spill-single-def <Sigil.Label>
+; V17 loc15 [V17,T79] ( 7, 4 ) ref -> [fp+0x50] class-hnd EH-live spill-single-def <Sigil.Local> +; V18 loc16 [V18,T135] ( 3, 3 ) ref -> [fp+0x48] class-hnd spill-single-def <Sigil.Label>
;* V19 loc17 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V20 loc18 [V20,T49] ( 2, 8 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String>
+; V20 loc18 [V20,T50] ( 2, 8 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String>
; V21 loc19 [V21,T36] ( 3, 12 ) ref -> x1 class-hnd <Sigil.Label>
-; V22 loc20 [V22,T26] ( 4, 16 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MemberInfo[]> -; V23 loc21 [V23,T50] ( 2, 8 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.MemberInfo>
+; V22 loc20 [V22,T25] ( 4, 16 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MemberInfo[]> +; V23 loc21 [V23,T51] ( 2, 8 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.MemberInfo>
;# V24 OutArgs [V24 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V25 tmp1 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> ;* V26 tmp2 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp3 [V27,T86] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V28 tmp4 [V28,T87] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V27 tmp3 [V27,T87] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V28 tmp4 [V28,T88] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V29 tmp5 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ;* V30 tmp6 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V31 tmp7 [V31,T88] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V32 tmp8 [V32,T44] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V33 tmp9 [V33,T89] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V34 tmp10 [V34,T45] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
+; V31 tmp7 [V31,T89] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V32 tmp8 [V32,T45] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V33 tmp9 [V33,T90] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V34 tmp10 [V34,T46] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
;* V35 tmp11 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType>
-; V36 tmp12 [V36,T73] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V37 tmp13 [V37,T138] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V36 tmp12 [V36,T74] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V37 tmp13 [V37,T139] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
; V38 tmp14 [V38,T37] ( 7, 11.50) ref -> x26 class-hnd "spilling QMark2" <<unknown class>> ;* V39 tmp15 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V40 tmp16 [V40,T90] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
+; V40 tmp16 [V40,T91] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
;* V41 tmp17 [V41 ] ( 0, 0 ) ref -> zero-ref single-def
-; V42 tmp18 [V42,T72] ( 5, 5 ) ref -> x28 -; V43 tmp19 [V43,T46] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V44 tmp20 [V44,T91] ( 2, 4 ) ref -> x28 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V45 tmp21 [V45,T54] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
+; V42 tmp18 [V42,T73] ( 5, 5 ) ref -> x28 +; V43 tmp19 [V43,T47] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V44 tmp20 [V44,T92] ( 2, 4 ) ref -> x28 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V45 tmp21 [V45,T55] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
;* V46 tmp22 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V47 tmp23 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V48 tmp24 [V48,T92] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V48 tmp24 [V48,T93] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V49 tmp25 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
-; V50 tmp26 [V50,T80] ( 4, 4 ) ref -> x2 -; V51 tmp27 [V51,T93] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V52 tmp28 [V52,T94] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V53 tmp29 [V53,T95] ( 2, 4 ) ref -> [fp+0x20] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V54 tmp30 [V54,T55] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
+; V50 tmp26 [V50,T81] ( 4, 4 ) ref -> x2 +; V51 tmp27 [V51,T94] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V52 tmp28 [V52,T95] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V53 tmp29 [V53,T96] ( 2, 4 ) ref -> [fp+0x20] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V54 tmp30 [V54,T56] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
;* V55 tmp31 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]>
-; V56 tmp32 [V56,T06] ( 2, 32 ) ref -> x25 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V56 tmp32 [V56,T05] ( 2, 32 ) ref -> x25 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V57 tmp33 [V57,T01] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]> ; V58 tmp34 [V58,T02] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
-; V59 tmp35 [V59,T96] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -;* V60 tmp36 [V60,T145] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V59 tmp35 [V59,T97] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +;* V60 tmp36 [V60,T146] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V61 tmp37 [V61,T40] ( 5, 10 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V62 tmp38 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V63 tmp39 [V63,T56] ( 3, 6 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Type[]> -; V64 tmp40 [V64,T97] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> -;* V65 tmp41 [V65,T146] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V63 tmp39 [V63,T57] ( 3, 6 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Type[]> +; V64 tmp40 [V64,T98] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> +;* V65 tmp41 [V65,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V66 tmp42 [V66,T41] ( 5, 10 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V67 tmp43 [V67 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V68 tmp44 [V68,T98] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V68 tmp44 [V68,T99] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V69 tmp45 [V69 ] ( 0, 0 ) ref -> zero-ref single-def ;* V70 tmp46 [V70 ] ( 0, 0 ) ref -> zero-ref single-def ;* V71 tmp47 [V71 ] ( 0, 0 ) ref -> zero-ref single-def
-; V72 tmp48 [V72,T152] ( 3, 0 ) ref -> x20 -; V73 tmp49 [V73,T153] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V74 tmp50 [V74,T47] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V72 tmp48 [V72,T153] ( 3, 0 ) ref -> x20 +; V73 tmp49 [V73,T154] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V74 tmp50 [V74,T48] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V75 tmp51 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V76 tmp52 [V76,T99] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
+; V76 tmp52 [V76,T100] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
;* V77 tmp53 [V77 ] ( 0, 0 ) ref -> zero-ref single-def ;* V78 tmp54 [V78 ] ( 0, 0 ) int -> zero-ref single-def
-; V79 tmp55 [V79,T81] ( 4, 4 ) ref -> x23 -; V80 tmp56 [V80,T48] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V81 tmp57 [V81,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V79 tmp55 [V79,T82] ( 4, 4 ) ref -> x23 +; V80 tmp56 [V80,T49] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V81 tmp57 [V81,T148] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V82 tmp58 [V82,T42] ( 5, 10 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V83 tmp59 [V83 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V84 tmp60 [V84,T100] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V85 tmp61 [V85,T101] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V84 tmp60 [V84,T101] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V85 tmp61 [V85,T102] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V86 tmp62 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V87 tmp63 [V87,T57] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V88 tmp64 [V88,T102] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V87 tmp63 [V87,T58] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V88 tmp64 [V88,T103] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
;* V89 tmp65 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V90 tmp66 [V90,T103] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V90 tmp66 [V90,T104] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V91 tmp67 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V92 tmp68 [V92,T104] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V92 tmp68 [V92,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V93 tmp69 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 tmp70 [V94,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V95 tmp71 [V95,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V94 tmp70 [V94,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V95 tmp71 [V95,T107] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V96 tmp72 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V97 tmp73 [V97,T107] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V97 tmp73 [V97,T108] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V98 tmp74 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V99 tmp75 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Object[]> ;* V100 tmp76 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo> ;* V101 tmp77 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V102 tmp78 [V102,T58] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V102 tmp78 [V102,T59] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V103 tmp79 [V103,T33] ( 7, 14 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V104 tmp80 [V104 ] ( 0, 0 ) ref -> zero-ref ;* V105 tmp81 [V105 ] ( 0, 0 ) ref -> zero-ref ;* V106 tmp82 [V106 ] ( 0, 0 ) ref -> zero-ref ;* V107 tmp83 [V107 ] ( 0, 0 ) ref -> zero-ref
-; V108 tmp84 [V108,T59] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V109 tmp85 [V109,T141] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V110 tmp86 [V110,T149] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V108 tmp84 [V108,T60] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V109 tmp85 [V109,T142] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V110 tmp86 [V110,T150] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V111 tmp87 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V112 tmp88 [V112,T34] ( 6, 12 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V113 tmp89 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V114 tmp90 [V114 ] ( 2, 2 ) struct ( 8) [fp+0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-; V115 tmp91 [V115,T60] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V116 tmp92 [V116,T108] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V117 tmp93 [V117,T109] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V118 tmp94 [V118,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V119 tmp95 [V119,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V120 tmp96 [V120,T112] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V121 tmp97 [V121,T113] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V122 tmp98 [V122,T114] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V123 tmp99 [V123,T61] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V124 tmp100 [V124,T115] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V125 tmp101 [V125,T116] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V126 tmp102 [V126,T117] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V127 tmp103 [V127,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V128 tmp104 [V128,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V129 tmp105 [V129,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V130 tmp106 [V130,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V131 tmp107 [V131,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V132 tmp108 [V132,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V133 tmp109 [V133,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V115 tmp91 [V115,T61] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V116 tmp92 [V116,T109] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V117 tmp93 [V117,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V118 tmp94 [V118,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V119 tmp95 [V119,T112] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V120 tmp96 [V120,T113] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V121 tmp97 [V121,T114] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V122 tmp98 [V122,T115] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V123 tmp99 [V123,T62] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V124 tmp100 [V124,T116] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V125 tmp101 [V125,T117] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V126 tmp102 [V126,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V127 tmp103 [V127,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V128 tmp104 [V128,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V129 tmp105 [V129,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V130 tmp106 [V130,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V131 tmp107 [V131,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V132 tmp108 [V132,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V133 tmp109 [V133,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V134 tmp110 [V134 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V135 tmp111 [V135,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V136 tmp112 [V136,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V137 tmp113 [V137,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V138 tmp114 [V138,T30] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -;* V139 tmp115 [V139,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V135 tmp111 [V135,T26] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V136 tmp112 [V136,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V137 tmp113 [V137,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V138 tmp114 [V138,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +;* V139 tmp115 [V139,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V140 tmp116 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V141 tmp117 [V141,T07] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V142 tmp118 [V142,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V143 tmp119 [V143,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V144 tmp120 [V144,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V145 tmp121 [V145,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V146 tmp122 [V146,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V147 tmp123 [V147,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V141 tmp117 [V141,T06] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V142 tmp118 [V142,T07] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V143 tmp119 [V143,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V144 tmp120 [V144,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V145 tmp121 [V145,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V146 tmp122 [V146,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V147 tmp123 [V147,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V148 tmp124 [V148 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Label>
-; V149 tmp125 [V149,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V150 tmp126 [V150,T15] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V151 tmp127 [V151,T16] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V152 tmp128 [V152,T17] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V153 tmp129 [V153,T18] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V154 tmp130 [V154,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V155 tmp131 [V155,T126] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V156 tmp132 [V156,T127] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V149 tmp125 [V149,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V150 tmp126 [V150,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
...

-8 (-0.15%) : 968.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

-4 (-0.04%) : 11641.dasm - System.Net.WebSockets.ManagedWebSocket+d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc3 [V04 ] ( 10, 10 ) struct (16) [fp+0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ; V06 loc5 [V06,T39] ( 3, 12 ) ref -> x0 class-hnd exact <System.String>
-; V07 loc6 [V07,T29] ( 4, 16 ) long -> x20
+; V07 loc6 [V07,T29] ( 4, 16 ) long -> x1
; V08 loc7 [V08 ] ( 11, 35 ) struct (16) [fp+0x188] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]> ; V09 loc8 [V09 ] ( 8, 20 ) struct (16) [fp+0x178] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask`1[int]> ;* V10 loc9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]> @@ -81,17 +81,17 @@ ;* V70 tmp40 [V70 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V71 tmp41 [V71 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V72 tmp42 [V72 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V73 tmp43 [V73,T102] ( 2, 8 ) int -> x2
+; V73 tmp43 [V73,T101] ( 2, 8 ) int -> x2
;* V74 tmp44 [V74 ] ( 0, 0 ) int -> zero-ref ; V75 tmp45 [V75,T46] ( 3, 12 ) int -> x3 ;* V76 tmp46 [V76 ] ( 0, 0 ) int -> zero-ref "dup spill" ; V77 tmp47 [V77,T23] ( 3, 24 ) int -> x1 "Span.get_Item index" ;* V78 tmp48 [V78 ] ( 0, 0 ) int -> zero-ref ;* V79 tmp49 [V79 ] ( 0, 0 ) int -> zero-ref
-; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x21 -; V81 tmp51 [V81,T103] ( 2, 8 ) int -> x1
+; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x2 +; V81 tmp51 [V81,T102] ( 2, 8 ) int -> x2
;* V82 tmp52 [V82 ] ( 0, 0 ) int -> zero-ref
-; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x2
+; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x1
;* V84 tmp54 [V84 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V85 tmp55 [V85 ] ( 0, 0 ) int -> zero-ref ;* V86 tmp56 [V86 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -119,7 +119,7 @@ ;* V108 tmp78 [V108 ] ( 0, 0 ) byref -> zero-ref single-def ;* V109 tmp79 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ; V110 tmp80 [V110,T149] ( 5, 5 ) ref -> x21
-; V111 tmp81 [V111,T63] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
+; V111 tmp81 [V111,T62] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
; V112 tmp82 [V112,T325] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception> ; V113 tmp83 [V113,T131] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V114 tmp84 [V114 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration> @@ -320,10 +320,10 @@ ; V309 tmp279 [V309 ] ( 4, 8 ) struct ( 8) [fp+0x40] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Net.WebSockets.ValueWebSocketReceiveResult> ;* V310 tmp280 [V310 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V311 tmp281 [V311 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V312 tmp282 [V312,T79] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V312 tmp282 [V312,T78] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V313 tmp283 [V313 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V314 tmp284 [V314,T64] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V315 tmp285 [V315,T68] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V314 tmp284 [V314,T63] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V315 tmp285 [V315,T67] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V316 tmp286 [V316 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V317 tmp287 [V317 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V318 tmp288 [V318,T135] ( 3, 6 ) int -> x21 "Inlining Arg" @@ -336,8 +336,8 @@ ;* V325 tmp295 [V325 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V326 tmp296 [V326,T125] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V327 tmp297 [V327,T120] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V328 tmp298 [V328,T80] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V329 tmp299 [V329,T74] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V328 tmp298 [V328,T79] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V329 tmp299 [V329,T73] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V330 tmp300 [V330 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V331 tmp301 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V332 tmp302 [V332 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -354,8 +354,8 @@ ;* V343 tmp313 [V343 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V344 tmp314 [V344,T126] ( 6, 6 ) byref -> x25 "Inline stloc first use temp" ; V345 tmp315 [V345,T121] ( 7, 7 ) int -> x26 "Inline stloc first use temp"
-; V346 tmp316 [V346,T81] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" -; V347 tmp317 [V347,T75] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V346 tmp316 [V346,T80] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" +; V347 tmp317 [V347,T74] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V348 tmp318 [V348 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V349 tmp319 [V349 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V350 tmp320 [V350 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -366,10 +366,10 @@ ;* V355 tmp325 [V355 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V356 tmp326 [V356,T171] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V357 tmp327 [V357 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V358 tmp328 [V358,T82] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V358 tmp328 [V358,T81] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V359 tmp329 [V359 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V360 tmp330 [V360,T65] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> -; V361 tmp331 [V361,T69] ( 5, 10 ) int -> x0 "Inlining Arg"
+; V360 tmp330 [V360,T64] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> +; V361 tmp331 [V361,T68] ( 5, 10 ) int -> x0 "Inlining Arg"
;* V362 tmp332 [V362 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V363 tmp333 [V363 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V364 tmp334 [V364,T140] ( 3, 6 ) int -> x24 "Inlining Arg" @@ -380,14 +380,14 @@ ; V369 tmp339 [V369,T196] ( 2, 4 ) long -> x3 "Inlining Arg" ; V370 tmp340 [V370,T141] ( 3, 6 ) int -> x2 "Inlining Arg" ; V371 tmp341 [V371,T142] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V372 tmp342 [V372,T83] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
+; V372 tmp342 [V372,T82] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
;* V373 tmp343 [V373 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V374 tmp344 [V374,T66] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
+; V374 tmp344 [V374,T65] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
; V375 tmp345 [V375,T233] ( 3, 3 ) int -> registers ; V376 tmp346 [V376,T197] ( 2, 4 ) int -> x22 "Inlining Arg"
-; V377 tmp347 [V377,T84] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> -; V378 tmp348 [V378,T85] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> -; V379 tmp349 [V379,T90] ( 4, 8 ) int -> x1 "Inlining Arg"
+; V377 tmp347 [V377,T83] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> +; V378 tmp348 [V378,T84] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> +; V379 tmp349 [V379,T89] ( 4, 8 ) int -> x1 "Inlining Arg"
;* V380 tmp350 [V380 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V381 tmp351 [V381,T143] ( 3, 6 ) int -> x3 "Inlining Arg" ; V382 tmp352 [V382,T144] ( 3, 6 ) int -> x20 "Inlining Arg" @@ -423,8 +423,8 @@ ;* V412 tmp382 [V412 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V413 tmp383 [V413,T127] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V414 tmp384 [V414,T122] ( 7, 7 ) int -> x22 "Inline stloc first use temp"
-; V415 tmp385 [V415,T86] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V416 tmp386 [V416,T76] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V415 tmp385 [V415,T85] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V416 tmp386 [V416,T75] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V417 tmp387 [V417 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V418 tmp388 [V418 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V419 tmp389 [V419 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -435,25 +435,25 @@ ;* V424 tmp394 [V424 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V425 tmp395 [V425,T174] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V426 tmp396 [V426 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V427 tmp397 [V427,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V427 tmp397 [V427,T90] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V428 tmp398 [V428 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V429 tmp399 [V429,T175] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
-; V430 tmp400 [V430,T87] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V430 tmp400 [V430,T86] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V431 tmp401 [V431 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V432 tmp402 [V432,T67] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V433 tmp403 [V433,T70] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V432 tmp402 [V432,T66] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V433 tmp403 [V433,T69] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V434 tmp404 [V434 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V435 tmp405 [V435 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V436 tmp406 [V436,T146] ( 3, 6 ) int -> x21 "Inlining Arg" ; V437 tmp407 [V437,T176] ( 2, 4 ) byref -> x20 single-def "Inlining Arg"
-; V438 tmp408 [V438,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V438 tmp408 [V438,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V439 tmp409 [V439 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V440 tmp410 [V440,T177] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V441 tmp411 [V441 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V442 tmp412 [V442,T128] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V443 tmp413 [V443,T123] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V444 tmp414 [V444,T88] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V445 tmp415 [V445,T77] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V444 tmp414 [V444,T87] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V445 tmp415 [V445,T76] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V446 tmp416 [V446 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V447 tmp417 [V447 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V448 tmp418 [V448 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -470,8 +470,8 @@ ;* V459 tmp429 [V459 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V460 tmp430 [V460,T129] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V461 tmp431 [V461,T124] ( 7, 7 ) int -> x23 "Inline stloc first use temp"
-; V462 tmp432 [V462,T89] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V463 tmp433 [V463,T78] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V462 tmp432 [V462,T88] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V463 tmp433 [V463,T77] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V464 tmp434 [V464 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V465 tmp435 [V465 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V466 tmp436 [V466 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -482,7 +482,7 @@ ;* V471 tmp441 [V471 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V472 tmp442 [V472,T179] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V473 tmp443 [V473 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V474 tmp444 [V474,T93] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V474 tmp444 [V474,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V475 tmp445 [V475 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V476 tmp446 [V476,T180] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V477 tmp447 [V477 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> @@ -511,9 +511,9 @@ ; V500 tmp470 [V500,T159] ( 4, 4 ) int -> [fp+0x30] do-not-enreg[Z] EH-live "field V03._messageType (fldOffset=0x4)" P-INDEP ; V501 tmp471 [V501 ] ( 6, 6 ) ref -> [fp+0x198] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V502 tmp472 [V502 ] ( 6, 6 ) int -> [fp+0x1A0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
-; V503 tmp473 [V503,T71] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP -; V504 tmp474 [V504,T72] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP -; V505 tmp475 [V505,T73] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
+; V503 tmp473 [V503,T70] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP +; V504 tmp474 [V504,T71] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP +; V505 tmp475 [V505,T72] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
; V506 tmp476 [V506,T154] ( 2, 5 ) ubyte -> [fp+0x186] do-not-enreg[] "field V09._continueOnCapturedContext (fldOffset=0xe)" P-DEP ; V507 tmp477 [V507,T03] ( 12, 36 ) ref -> [fp+0x158] do-not-enreg[] "field V12._obj (fldOffset=0x0)" P-DEP ; V508 tmp478 [V508,T04] ( 12, 36 ) short -> [fp+0x160] do-not-enreg[] "field V12._token (fldOffset=0x8)" P-DEP @@ -551,43 +551,43 @@ ; V540 tmp510 [V540,T45] ( 3, 12 ) ref -> [fp+0xC8] do-not-enreg[] "field V155._object (fldOffset=0x0)" P-DEP ; V541 tmp511 [V541,T59] ( 3, 12 ) int -> [fp+0xD0] do-not-enreg[] "field V155._index (fldOffset=0x8)" P-DEP ; V542 tmp512 [V542,T60] ( 3, 12 ) int -> [fp+0xD4] do-not-enreg[] "field V155._length (fldOffset=0xc)" P-DEP
-; V543 tmp513 [V543,T94] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP -; V544 tmp514 [V544,T104] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP -; V545 tmp515 [V545,T105] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
+; V543 tmp513 [V543,T93] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP +; V544 tmp514 [V544,T103] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP +; V545 tmp515 [V545,T104] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
;* V546 tmp516 [V546,T208] ( 0, 0 ) ubyte -> zero-ref "field V156._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V547 tmp517 [V547,T95] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
+; V547 tmp517 [V547,T94] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
;* V548 tmp518 [V548 ] ( 0, 0 ) ref -> zero-ref "field V183.m_task (fldOffset=0x0)" P-INDEP
-; V549 tmp519 [V549,T96] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP -; V550 tmp520 [V550,T106] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
+; V549 tmp519 [V549,T95] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP +; V550 tmp520 [V550,T105] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
;* V551 tmp521 [V551,T209] ( 0, 0 ) ubyte -> zero-ref "field V184._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V552 tmp522 [V552 ] ( 0, 0 ) ref -> zero-ref "field V185._obj (fldOffset=0x0)" P-INDEP ;* V553 tmp523 [V553 ] ( 0, 0 ) short -> zero-ref "field V185._token (fldOffset=0x8)" P-INDEP ;* V554 tmp524 [V554 ] ( 0, 0 ) ubyte -> zero-ref "field V185._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V555 tmp525 [V555 ] ( 0, 0 ) byref -> zero-ref "field V205._reference (fldOffset=0x0)" P-INDEP ;* V556 tmp526 [V556 ] ( 0, 0 ) int -> zero-ref "field V205._length (fldOffset=0x8)" P-INDEP
-; V557 tmp527 [V557,T97] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP -; V558 tmp528 [V558,T107] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
+; V557 tmp527 [V557,T96] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP +; V558 tmp528 [V558,T106] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
;* V559 tmp529 [V559 ] ( 0, 0 ) byref -> zero-ref "field V212._reference (fldOffset=0x0)" P-DEP ;* V560 tmp530 [V560 ] ( 0, 0 ) int -> zero-ref "field V212._length (fldOffset=0x8)" P-DEP
-; V561 tmp531 [V561,T98] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP -; V562 tmp532 [V562,T108] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
+; V561 tmp531 [V561,T97] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP +; V562 tmp532 [V562,T107] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
;* V563 tmp533 [V563 ] ( 0, 0 ) byref -> zero-ref "field V219._reference (fldOffset=0x0)" P-INDEP ;* V564 tmp534 [V564 ] ( 0, 0 ) int -> zero-ref "field V219._length (fldOffset=0x8)" P-INDEP
-; V565 tmp535 [V565,T99] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP -; V566 tmp536 [V566,T109] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
+; V565 tmp535 [V565,T98] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP +; V566 tmp536 [V566,T108] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
;* V567 tmp537 [V567,T210] ( 0, 0 ) ubyte -> zero-ref "field V220._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V568 tmp538 [V568 ] ( 0, 0 ) ref -> zero-ref "field V221._obj (fldOffset=0x0)" P-INDEP ;* V569 tmp539 [V569 ] ( 0, 0 ) short -> zero-ref "field V221._token (fldOffset=0x8)" P-INDEP ;* V570 tmp540 [V570 ] ( 0, 0 ) ubyte -> zero-ref "field V221._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V571 tmp541 [V571 ] ( 0, 0 ) ref -> zero-ref "field V240.m_task (fldOffset=0x0)" P-INDEP
-; V572 tmp542 [V572,T100] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP -; V573 tmp543 [V573,T110] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
+; V572 tmp542 [V572,T99] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP +; V573 tmp543 [V573,T109] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
;* V574 tmp544 [V574,T211] ( 0, 0 ) ubyte -> zero-ref "field V241._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V575 tmp545 [V575 ] ( 0, 0 ) ref -> zero-ref "field V242._obj (fldOffset=0x0)" P-INDEP ;* V576 tmp546 [V576 ] ( 0, 0 ) short -> zero-ref "field V242._token (fldOffset=0x8)" P-INDEP ;* V577 tmp547 [V577 ] ( 0, 0 ) ubyte -> zero-ref "field V242._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V578 tmp548 [V578,T101] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP -; V579 tmp549 [V579,T111] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
+; V578 tmp548 [V578,T100] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP +; V579 tmp549 [V579,T110] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
;* V580 tmp550 [V580,T212] ( 0, 0 ) ubyte -> zero-ref "field V260._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V581 tmp551 [V581 ] ( 0, 0 ) ref -> zero-ref "field V261._obj (fldOffset=0x0)" P-INDEP ;* V582 tmp552 [V582 ] ( 0, 0 ) short -> zero-ref "field V261._token (fldOffset=0x8)" P-INDEP @@ -728,8 +728,8 @@ ; V717 PSPSym [V717,T317] ( 1, 1 ) long -> [fp+0x1B0] do-not-enreg[V] "PSPSym" ;* V718 cse0 [V718,T318] ( 0, 0 ) long -> zero-ref "CSE - conservative" ...

benchmarks.run_pgo.osx.arm64.checked.mch

-24 (-4.92%) : 6489.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-4 (-3.23%) : 61485.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6694
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6694
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> @@ -30,20 +30,20 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2] cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref sxtw w4, w3 ;; size=4 bbWeight=0.97 PerfScore 0.48 G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz sub w4, w4, #1
- tbnz w4, #31, G_M264_IG08
+ tbnz w4, #31, G_M264_IG12
cmp w4, w1
- bhs G_M264_IG13
+ bhs G_M264_IG11
mov w5, w4 ldr w6, [x0, x5, LSL #2] cmp w4, w3
- bhs G_M264_IG13
+ bhs G_M264_IG11
ldr w5, [x2, x5, LSL #2] cmp w6, w5 beq G_M264_IG04 @@ -51,7 +51,7 @@ G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x2] cmp w5, w6
- bhi G_M264_IG11
+ bhi G_M264_IG09
;; size=8 bbWeight=0.97 PerfScore 1.45 G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #1 @@ -60,31 +60,30 @@ G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0.97 PerfScore 0.48 -G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.97 PerfScore 1.93 -G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3 bge G_M264_IG06 ;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG09: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG10: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- brk_unix #0
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG13: ; bbWeight=0, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 22.36, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 120, prolog size 8, PerfScore 19.95, instruction count 30, allocated bytes for code 120 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.87%) : 59711.dasm - System.Linq.Enumerable:CountSystem.__Canon:int (Tier1)

@@ -25,7 +25,7 @@ ; V13 tmp7 [V13,T09] ( 2, 156.10) int -> x0 "guarded devirt return temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V16 tmp10 [V16,T00] ( 12,1096.71) byref -> x23 "Inlining Arg"
+; V16 tmp10 [V16,T00] ( 10,1092.72) byref -> x23 "Inlining Arg"
; V17 tmp11 [V17,T07] ( 4, 311.21) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T01] ( 3, 462.33) ref -> x14 "arr expr" @@ -54,12 +54,12 @@ G_M54795_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=40 bbWeight=1 PerfScore 7.50 G_M54795_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M54795_IG24 - cbz x19, G_M54795_IG25
+ cbz x21, G_M54795_IG23 + cbz x19, G_M54795_IG24
mov w22, wzr ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M54795_IG20
+ cbz x11, G_M54795_IG19
;; size=24 bbWeight=1 PerfScore 9.50 G_M54795_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref mov x0, x21 @@ -143,11 +143,11 @@ G_M54795_IG10: ; bbWeight=78.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {} ldr w15, [x23, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M54795_IG18
+ bne G_M54795_IG17
ldr w15, [x23, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M54795_IG19
+ bhs G_M54795_IG18
;; size=56 bbWeight=78.05 PerfScore 1951.29 G_M54795_IG11: ; bbWeight=77.05, gcrefRegs=84000 {x14 x19}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x0] @@ -183,7 +183,7 @@ G_M54795_IG12: ; bbWeight=78.05, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ;; size=24 bbWeight=78.05 PerfScore 507.34 G_M54795_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=4 bbWeight=1 PerfScore 1.00 G_M54795_IG14: ; bbWeight=5.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] @@ -211,17 +211,8 @@ G_M54795_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M54795_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
; byrRegs +[x23]
- ldr w11, [x23, #0x14] - ldr x1, [x23] - ; gcrRegs +[x1] - ldr w1, [x1, #0x14] - ; gcrRegs -[x1] - cmp w11, w1 - bne G_M54795_IG17 - ;; size=20 bbWeight=1.00 PerfScore 10.47 -G_M54795_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
ldr x11, [x23] ; gcrRegs +[x11] ldr w11, [x11, #0x10] @@ -229,9 +220,9 @@ G_M54795_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=800000 {x23} add w11, w11, #1 str w11, [x23, #0x10] str xzr, [x23, #0x08]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=24 bbWeight=1.00 PerfScore 9.47
-G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG19: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x21] ; byrRegs -[x23] ; GC ptr vars -{V04} @@ -244,28 +235,28 @@ G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280 mov x11, x0 b G_M54795_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG20: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] ldr x1, [x0] cmp x1, x21
- bne G_M54795_IG26
+ bne G_M54795_IG25
;; size=16 bbWeight=1 PerfScore 6.50
-G_M54795_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V04} mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M54795_IG22: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x48] ldp x21, x22, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #17 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -275,7 +266,7 @@ G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -285,7 +276,7 @@ G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG25: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] @@ -297,9 +288,9 @@ G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M54795_IG22
+ b G_M54795_IG21
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -308,16 +299,16 @@ G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 add x3, fp, #80 str x3, [sp, #0x10] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0]
- cbz x0, G_M54795_IG29
+ cbz x0, G_M54795_IG28
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 cmp x11, x21
- beq G_M54795_IG29
+ beq G_M54795_IG28
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32 @@ -327,7 +318,7 @@ G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0 PerfScore 0.00
-G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M54795_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -335,7 +326,7 @@ G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 696, prolog size 40, PerfScore 6999.36, instruction count 174, allocated bytes for code 696 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
+; Total bytes of code 676, prolog size 40, PerfScore 6988.89, instruction count 169, allocated bytes for code 676 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -346,7 +337,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 150 (0x00096) Actual length = 600 (0x000258)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -381,4 +372,4 @@ Unwind Info: *************** EH table for System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M54795_IG04..G_M54795_IG20) handled by [G_M54795_IG27..END) (fault)
+EH#0: try [G_M54795_IG04..G_M54795_IG19) handled by [G_M54795_IG26..END) (fault)
+20 (+0.59%) : 66163.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T06] ( 26, 9.13) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T13] ( 18, 7.74) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 9.83) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T28] ( 6, 4.69) ref -> x24 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T28] ( 8, 4.69) ref -> x24 class-hnd single-def <System.Object>
; V04 loc4 [V04,T08] ( 14, 8.44) ref -> x25 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T80] ( 3, 1.37) int -> x26 ; V06 loc6 [V06,T71] ( 2, 2.01) ubyte -> x0 @@ -111,11 +111,11 @@ ; V99 tmp88 [V99,T00] ( 8, 13.39) ref -> x23 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V101 tmp90 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V102 tmp91 [V102,T21] ( 3, 5.55) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V102 tmp91 [V102,T21] ( 5, 5.55) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V103 tmp92 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V104 tmp93 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V105 tmp94 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V106 tmp95 [V106,T47] ( 3, 3.33) int -> x0 "Inline stloc first use temp"
+; V106 tmp95 [V106,T47] ( 5, 3.33) int -> x1 "Inline stloc first use temp"
;* V107 tmp96 [V107,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V108 tmp97 [V108,T48] ( 3, 3.33) int -> x0 "Inline stloc first use temp" ;* V109 tmp98 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -173,10 +173,10 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #5
- blt G_M63069_IG96
+ blt G_M63069_IG106
ldr x0, [x0, #0x18] ldr x0, [x0, #0x28]
- cbz x0, G_M63069_IG96
+ cbz x0, G_M63069_IG106
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 @@ -194,12 +194,12 @@ G_M63069_IG04: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG97
+ cbnz w0, G_M63069_IG107
;; size=20 bbWeight=1.01 PerfScore 16.08 G_M63069_IG05: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG66
+ cbnz x0, G_M63069_IG58
;; size=8 bbWeight=1.01 PerfScore 3.02 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -215,7 +215,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldar w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG98
+ blt G_M63069_IG22
mov x2, xzr ; gcrRegs +[x2] ;; size=36 bbWeight=1.00 PerfScore 13.05 @@ -227,9 +227,9 @@ G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs= cbnz x0, G_M63069_IG11 ldrb w0, [x22, #0x3C] ; gcrRegs -[x0]
- cbnz w0, G_M63069_IG99
+ cbnz w0, G_M63069_IG23
ldr w0, [x20, #0x30]
- cbnz w0, G_M63069_IG100
+ cbnz w0, G_M63069_IG24
;; size=28 bbWeight=1.00 PerfScore 12.05 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] @@ -253,7 +253,7 @@ G_M63069_IG09: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w0, w26, w0 ldr w1, [x25, #0x08] cmp w0, w1
- bhs G_M63069_IG95
+ bhs G_M63069_IG105
ubfiz x0, x0, #4, #32 add x21, x0, #16 add x0, x25, x21 @@ -264,7 +264,7 @@ G_M63069_IG09: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x0] add w1, w26, #1 sub w0, w0, w1
- cbnz w0, G_M63069_IG33
+ cbnz w0, G_M63069_IG25
;; size=60 bbWeight=1.01 PerfScore 19.11 G_M63069_IG10: ; bbWeight=0.53, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=8000000 {x27}, byref, isz add x0, x24, #160 @@ -294,7 +294,7 @@ G_M63069_IG11: ; bbWeight=0.53, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ; byrRegs -[x27] ldr x21, [fp, #0x40] // [V17 tmp6] ; gcrRegs +[x21]
- b G_M63069_IG45
+ b G_M63069_IG37
;; size=8 bbWeight=0.53 PerfScore 1.59 G_M63069_IG12: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21-x22] @@ -336,7 +336,7 @@ G_M63069_IG15: ; bbWeight=4.44, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, ;; size=20 bbWeight=4.44 PerfScore 24.43 G_M63069_IG16: ; bbWeight=1.11, gcrefRegs=3700001 {x0 x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz cmp x25, x0
- bne G_M63069_IG119
+ bne G_M63069_IG93
;; size=8 bbWeight=1.11 PerfScore 1.67 G_M63069_IG17: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -345,11 +345,11 @@ G_M63069_IG17: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG120
+ cbz w0, G_M63069_IG94
;; size=12 bbWeight=1.11 PerfScore 2.78 G_M63069_IG18: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz ldrb w0, [x25, #0x38]
- cbnz w0, G_M63069_IG121
+ cbnz w0, G_M63069_IG95
;; size=8 bbWeight=1.11 PerfScore 4.44 G_M63069_IG19: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz bl <unknown method> @@ -357,175 +357,80 @@ G_M63069_IG19: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, sxtw w27, w0 ldr x23, [x19, #0xD1FFAB1E] ; gcrRegs +[x23]
- cbz x24, G_M63069_IG122 - ;; size=16 bbWeight=1.11 PerfScore 6.11 -G_M63069_IG20: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz - mov x0, x24 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG22 - ;; size=8 bbWeight=1.11 PerfScore 1.67 -G_M63069_IG21: ; bbWeight=0.56, gcrefRegs=3F00001 {x0 x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0]
+ cbz x24, G_M63069_IG96 + mov x1, x24 + ; gcrRegs +[x1] + cbz x1, G_M63069_IG97 + ;; size=24 bbWeight=1.11 PerfScore 7.77 +G_M63069_IG20: ; bbWeight=0.56, gcrefRegs=3F00002 {x1 x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1]
movz x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- beq G_M63069_IG23
+ bne G_M63069_IG97
;; size=24 bbWeight=0.56 PerfScore 3.33
-G_M63069_IG22: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcr arg pop 0 - ;; size=44 bbWeight=1.11 PerfScore 9.44 -G_M63069_IG23: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG21: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr w0, [x24, #0x20]
- add w0, w0, #1 - cbz w0, G_M63069_IG123 - str w0, [x24, #0x20]
+ add w1, w0, #1 + cbz w1, G_M63069_IG98 + b G_M63069_IG76
;; size=16 bbWeight=1.11 PerfScore 6.11
-G_M63069_IG24: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz - str w27, [x23, #0xD1FFAB1E] - add x0, x23, #0xD1FFAB1E - ; byrRegs +[x0] - ldar w0, [x0] - ; byrRegs -[x0] - sub w1, w27, w0 - ldr w2, [x23, #0xD1FFAB1E] - sub w0, w2, w0 - cmp w1, w0 - bhs G_M63069_IG81 - ;; size=32 bbWeight=1.11 PerfScore 11.10 -G_M63069_IG25: ; bbWeight=1.11, gcrefRegs=3F00000 {x20 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz - mov x0, x23 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte
+G_M63069_IG22: ; bbWeight=0, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21 x23-x25] +[x0] + movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0 x23]
; gcr arg pop 0
- cbnz w0, G_M63069_IG92 - sub w0, w27, w26 - cmp w0, #30 - bhs G_M63069_IG32 - ;; size=40 bbWeight=1.11 PerfScore 9.99 -G_M63069_IG26: ; bbWeight=1.36, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x58] // [V02 loc2] - ; gcrRegs +[x0] - cbnz x0, G_M63069_IG60 - ;; size=8 bbWeight=1.36 PerfScore 4.08 -G_M63069_IG27: ; bbWeight=1.11, gcrefRegs=3700000 {x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - str wzr, [fp, #0x48] // [V10 loc10] - ldr x0, [x22, #0x18] - ; gcrRegs +[x0] - add x1, x0, #20 - ; byrRegs +[x1] - ldar w1, [x1] - ; byrRegs -[x1] - add x2, x0, #24 - ; byrRegs +[x2] - ldar w2, [x2] - ; byrRegs -[x2] - cmp w1, w2 - blt G_M63069_IG108 - mov x2, xzr
+ mov x2, x0
; gcrRegs +[x2]
- ;; size=36 bbWeight=1.11 PerfScore 14.44 -G_M63069_IG28: ; bbWeight=1.11, gcrefRegs=3700004 {x2 x20 x21 x22 x24 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - str x2, [fp, #0x30] // [V54 tmp43] - ldr x0, [fp, #0x30] // [V54 tmp43]
+ b G_M63069_IG07 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M63069_IG23: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x2] + ldr x0, [x20, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M63069_IG109 - ldrb w0, [x22, #0x3C]
+ add x1, fp, #64 // [V17 tmp6] + movz x2, #0xD1FFAB1E // code for System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:TryDequeue(byref):ubyte:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + ldr wzr, [x0] + blr x2
; gcrRegs -[x0]
- cbnz w0, G_M63069_IG110
...

+20 (+0.60%) : 32525.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T10] ( 26, 8.06) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T14] ( 18, 7.04) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 8.75) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T42] ( 6, 3.78) ref -> x28 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T42] ( 8, 3.78) ref -> x28 class-hnd single-def <System.Object>
; V04 loc4 [V04,T12] ( 14, 7.69) ref -> x25 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T82] ( 3, 1.01) int -> x24 ; V06 loc6 [V06,T68] ( 2, 2.02) ubyte -> x0 @@ -106,11 +106,11 @@ ; V94 tmp83 [V94,T06] ( 8, 11.08) ref -> x26 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V95 tmp84 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V97 tmp86 [V97,T29] ( 3, 4.62) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V97 tmp86 [V97,T29] ( 5, 4.62) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V98 tmp87 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V99 tmp88 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V101 tmp90 [V101,T60] ( 3, 2.77) int -> x0 "Inline stloc first use temp"
+; V101 tmp90 [V101,T60] ( 5, 2.77) int -> x27 "Inline stloc first use temp"
;* V102 tmp91 [V102,T86] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V103 tmp92 [V103,T61] ( 3, 2.77) int -> x0 "Inline stloc first use temp" ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -167,17 +167,17 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #6
- blt G_M63069_IG91
+ blt G_M63069_IG90
ldr x0, [x0, #0x18] ldr x0, [x0, #0x30]
- cbz x0, G_M63069_IG91
+ cbz x0, G_M63069_IG90
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 ; byrRegs +[x21] ldr x22, [x21, #0x40] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG92
+ cbz x22, G_M63069_IG91
;; size=88 bbWeight=1 PerfScore 30.50 G_M63069_IG03: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x21] @@ -185,7 +185,7 @@ G_M63069_IG03: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG93
+ cbnz w0, G_M63069_IG92
;; size=20 bbWeight=1.01 PerfScore 16.17 G_M63069_IG04: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] @@ -206,12 +206,12 @@ G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldar w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG94
+ blt G_M63069_IG93
mov x2, xzr ; gcrRegs +[x2] str x2, [fp, #0x40] // [V17 tmp6] ldr x0, [fp, #0x40] // [V17 tmp6]
- cbnz x0, G_M63069_IG95
+ cbnz x0, G_M63069_IG94
;; size=48 bbWeight=1.00 PerfScore 17.00 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2] @@ -220,7 +220,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ;; size=8 bbWeight=1.00 PerfScore 4.00 G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x30]
- cbnz w1, G_M63069_IG96
+ cbnz w1, G_M63069_IG95
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -243,7 +243,7 @@ G_M63069_IG09: ; bbWeight=1.04, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w1, w26, w1 ldr w0, [x25, #0x08] cmp w1, w0
- bhs G_M63069_IG90
+ bhs G_M63069_IG89
ubfiz x1, x1, #4, #32 add x21, x1, #16 add x1, x25, x21 @@ -284,7 +284,7 @@ G_M63069_IG12: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG95
+ cbnz w0, G_M63069_IG94
strb wzr, [x22, #0x3C] b G_M63069_IG08 ;; size=44 bbWeight=0.00 PerfScore 0.00 @@ -292,7 +292,7 @@ G_M63069_IG13: ; bbWeight=0.52, gcrefRegs=11500000 {x20 x22 x24 x28}, byr ; gcrRegs +[x24 x28] sub w27, w21, #1 cmp w21, #0
- beq G_M63069_IG89
+ beq G_M63069_IG88
udiv w0, w23, w21 msub w26, w0, w21, w23 cmp w21, #0 @@ -313,7 +313,7 @@ G_M63069_IG16: ; bbWeight=0.52, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, sub w1, w2, w26 ; byrRegs -[x1] cmp w1, #0
- bgt G_M63069_IG97
+ bgt G_M63069_IG96
;; size=24 bbWeight=0.52 PerfScore 4.43 G_M63069_IG17: ; bbWeight=1.00, gcrefRegs=1D00000 {x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x25] @@ -338,7 +338,7 @@ G_M63069_IG19: ; bbWeight=0.49, gcrefRegs=3500000 {x20 x22 x24 x25}, byre ; byrRegs +[x0] ldarb w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M63069_IG95
+ cbnz w0, G_M63069_IG94
;; size=20 bbWeight=0.49 PerfScore 4.14 G_M63069_IG20: ; bbWeight=0.49, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=8000000 {x27}, byref ; gcrRegs -[x24] @@ -346,7 +346,7 @@ G_M63069_IG20: ; bbWeight=0.49, gcrefRegs=2500000 {x20 x22 x25}, byrefReg ldr w0, [x25, #0x08] add w0, w0, w26 stlr w0, [x27]
- b G_M63069_IG95
+ b G_M63069_IG94
;; size=20 bbWeight=0.49 PerfScore 3.20 G_M63069_IG21: ; bbWeight=1.00, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x25] +[x23] @@ -361,7 +361,7 @@ G_M63069_IG21: ; bbWeight=1.00, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs blr x2 ; gcrRegs -[x0 x23] ; gcr arg pop 0
- cbnz w0, G_M63069_IG95
+ cbnz w0, G_M63069_IG94
;; size=32 bbWeight=1.00 PerfScore 7.50 G_M63069_IG22: ; bbWeight=0.52, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [x22, #0x30] @@ -392,7 +392,7 @@ G_M63069_IG22: ; bbWeight=0.52, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldr w25, [x24, #0x08] sxtw w21, w25 cmp w21, #0
- ble G_M63069_IG99
+ ble G_M63069_IG98
b G_M63069_IG13 ;; size=104 bbWeight=0.52 PerfScore 19.30 G_M63069_IG23: ; bbWeight=0.01, gcrefRegs=11500000 {x20 x22 x24 x28}, byrefRegs=0000 {}, byref @@ -402,7 +402,7 @@ G_M63069_IG23: ; bbWeight=0.01, gcrefRegs=11500000 {x20 x22 x24 x28}, byr G_M63069_IG24: ; bbWeight=4.22, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x24] cmp w26, w25
- bhs G_M63069_IG90
+ bhs G_M63069_IG89
ldr x0, [x23, w26, UXTW #3] ; gcrRegs +[x0] cmp x0, x28 @@ -418,7 +418,7 @@ G_M63069_IG25: ; bbWeight=3.64, gcrefRegs=10500001 {x0 x20 x22 x28}, byre ldar w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG100
+ blt G_M63069_IG99
;; size=24 bbWeight=3.64 PerfScore 30.97 G_M63069_IG26: ; bbWeight=4.22, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x0] @@ -450,7 +450,7 @@ G_M63069_IG30: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs= G_M63069_IG31: ; bbWeight=0.93, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2 x22] ldrb w0, [fp, #0x50] // [V08 loc8]
- cbnz w0, G_M63069_IG101
+ cbnz w0, G_M63069_IG100
;; size=8 bbWeight=0.93 PerfScore 2.78 G_M63069_IG32: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] @@ -477,7 +477,7 @@ G_M63069_IG35: ; bbWeight=3.91, gcrefRegs=16700000 {x20 x21 x22 x25 x26 x ;; size=16 bbWeight=3.91 PerfScore 9.76 G_M63069_IG36: ; bbWeight=0.48, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref ; gcrRegs -[x21 x26]
- b G_M63069_IG78
+ b G_M63069_IG74
;; size=4 bbWeight=0.48 PerfScore 0.48 G_M63069_IG37: ; bbWeight=0.55, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=800000 {x23}, byref ; gcrRegs -[x25] @@ -490,15 +490,15 @@ G_M63069_IG38: ; bbWeight=0.48, gcrefRegs=16700000 {x20 x21 x22 x25 x26 x ; byrRegs -[x23] sub w0, w2, #1 cmp w2, #0
- beq G_M63069_IG89
+ beq G_M63069_IG88
udiv w1, w23, w2 msub w23, w1, w2, w23 cmp w2, #0
- ble G_M63069_IG78
+ ble G_M63069_IG74
;; size=28 bbWeight=0.48 PerfScore 7.97 G_M63069_IG39: ; bbWeight=3.91, gcrefRegs=16700000 {x20 x21 x22 x25 x26 x28}, byrefRegs=0000 {}, byref, isz cmp w23, w27
- bhs G_M63069_IG90
+ bhs G_M63069_IG89
add x1, x26, #16 ; byrRegs +[x1] ldr x1, [x1, w23, UXTW #3] @@ -507,10 +507,10 @@ G_M63069_IG39: ; bbWeight=3.91, gcrefRegs=16700000 {x20 x21 x22 x25 x26 x str x1, [fp, #0x10] // [V58 tmp47] ; GC ptr vars +{V58} cmp x1, x21
- beq G_M63069_IG76
+ beq G_M63069_IG72
;; size=28 bbWeight=3.91 PerfScore 29.29 G_M63069_IG40: ; bbWeight=3.37, gcVars=00000000000000000000000000000020 {V58}, gcrefRegs=16700002 {x1 x20 x21 x22 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- b G_M63069_IG75
+ b G_M63069_IG71
;; size=4 bbWeight=3.37 PerfScore 3.37 G_M63069_IG41: ; bbWeight=0.08, gcVars=00000000000000000000000000000000 {}, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x1 x21 x25-x26 x28] @@ -542,7 +542,7 @@ G_M63069_IG43: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ; gcrRegs +[x0] ldrb w0, [x0, #0x9D] ; gcrRegs -[x0]
- cbnz w0, G_M63069_IG103
+ cbnz w0, G_M63069_IG102
ldrb w0, [x20, #0x34] cbz w0, G_M63069_IG44 strb wzr, [x20, #0x34] @@ -558,7 +558,7 @@ G_M63069_IG44: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=000 G_M63069_IG45: ; bbWeight=1.01, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG80
+ cbnz x0, G_M63069_IG76
;; size=8 bbWeight=1.01 PerfScore 3.02 G_M63069_IG46: ; bbWeight=0.93, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -574,12 +574,12 @@ G_M63069_IG46: ; bbWeight=0.93, gcrefRegs=12500000 {x20 x22 x25 x28}, byr ldar w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG104
+ blt G_M63069_IG103
mov x2, xzr ; gcrRegs +[x2] str x2, [fp, #0x30] // [V51 tmp40] ldr x0, [fp, #0x30] // [V51 tmp40]
- cbnz x0, G_M63069_IG105
+ cbnz x0, G_M63069_IG104
;; size=48 bbWeight=0.93 PerfScore 15.74 G_M63069_IG47: ; bbWeight=0.93, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2] ...

+36 (+1.09%) : 33204.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T10] ( 26, 8.00) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T14] ( 18, 6.99) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 8.86) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T42] ( 6, 3.90) ref -> x24 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T42] ( 8, 3.90) ref -> x24 class-hnd single-def <System.Object>
; V04 loc4 [V04,T11] ( 14, 7.83) ref -> x21 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T83] ( 3, 1.00) int -> x25 ; V06 loc6 [V06,T70] ( 2, 2.00) ubyte -> x0 @@ -25,14 +25,14 @@ ; V13 tmp2 [V13,T39] ( 4, 4 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V14 tmp3 [V14,T56] ( 6, 3.00) ref -> x22 ; V15 tmp4 [V15,T90] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V16 tmp5 [V16,T74] ( 3, 1.51) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
+; V16 tmp5 [V16,T74] ( 3, 1.51) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V17 tmp6 [V17 ] ( 14, 6.02) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> ; V18 tmp7 [V18,T73] ( 3, 1.53) int -> x23 "Inline stloc first use temp" ; V19 tmp8 [V19,T32] ( 2, 4.56) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V20 tmp9 [V20,T79] ( 3, 1.03) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> ; V21 tmp10 [V21,T03] ( 9, 15.21) int -> x26 "Inline stloc first use temp"
-; V22 tmp11 [V22,T33] ( 2, 4.56) int -> x28 "Inline stloc first use temp" -; V23 tmp12 [V23,T00] ( 6, 20.33) int -> x27 "Inline stloc first use temp"
+; V22 tmp11 [V22,T33] ( 2, 4.56) int -> x27 "Inline stloc first use temp" +; V23 tmp12 [V23,T00] ( 6, 20.33) int -> x28 "Inline stloc first use temp"
; V24 tmp13 [V24,T02] ( 5, 15.33) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V25 tmp14 [V25,T09] ( 3, 8.11) int -> x0 ; V26 tmp15 [V26,T69] ( 4, 2.00) ref -> x2 class-hnd "Inline return value spill temp" <System.Object> @@ -60,7 +60,7 @@ ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V50 tmp39 [V50,T77] ( 3, 1.45) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
-; V51 tmp40 [V51 ] ( 12, 5.78) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V51 tmp40 [V51 ] ( 14, 5.78) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V52 tmp41 [V52,T76] ( 3, 1.47) int -> x23 "Inline stloc first use temp" ; V53 tmp42 [V53,T34] ( 2, 4.38) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V54 tmp43 [V54,T30] ( 3, 4.87) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> @@ -69,7 +69,7 @@ ; V57 tmp46 [V57,T01] ( 6, 19.53) int -> x23 "Inline stloc first use temp" ; V58 tmp47 [V58,T04] ( 5, 14.73) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V59 tmp48 [V59,T12] ( 3, 7.79) int -> x0
-; V60 tmp49 [V60,T72] ( 3, 1.92) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V60 tmp49 [V60,T72] ( 4, 1.92) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V61 tmp50 [V61,T24] ( 4, 5.76) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T61] ( 2, 1.92) ubyte -> x0 "Inline return value spill temp" ; V63 tmp52 [V63,T25] ( 3, 5.76) ref -> x23 class-hnd "Inlining Arg" <<unknown class>> @@ -77,14 +77,14 @@ ;* V65 tmp54 [V65,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V66 tmp55 [V66,T36] ( 6, 4.36) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> ; V67 tmp56 [V67 ] ( 2, 0.96) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-; V68 tmp57 [V68,T27] ( 9, 5.39) int -> x2 "Inline stloc first use temp"
+; V68 tmp57 [V68,T27] ( 9, 5.39) int -> x28 "Inline stloc first use temp"
; V69 tmp58 [V69,T57] ( 3, 2.94) int -> x1 "Inline stloc first use temp" ;* V70 tmp59 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V71 tmp60 [V71,T66] ( 3, 2.45) int -> x1 "Inline stloc first use temp"
-; V72 tmp61 [V72,T89] ( 2, 0.49) ubyte -> x5 "Inline stloc first use temp" -; V73 tmp62 [V73,T84] ( 3, 0.98) int -> x6 "Inline stloc first use temp" -; V74 tmp63 [V74,T08] ( 9, 8.80) ref -> x1 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> -; V75 tmp64 [V75,T67] ( 5, 2.44) long -> x0 "Inline stloc first use temp"
+; V72 tmp61 [V72,T89] ( 2, 0.49) ubyte -> x4 "Inline stloc first use temp" +; V73 tmp62 [V73,T84] ( 3, 0.98) int -> x5 "Inline stloc first use temp" +; V74 tmp63 [V74,T08] ( 9, 8.80) ref -> x0 class-hnd exact "Inlining Arg" <System.Random+XoshiroImpl> +; V75 tmp64 [V75,T67] ( 5, 2.44) long -> x1 "Inline stloc first use temp"
; V76 tmp65 [V76,T50] ( 7, 3.42) long -> x2 "Inline stloc first use temp" ; V77 tmp66 [V77,T51] ( 7, 3.42) long -> x3 "Inline stloc first use temp" ; V78 tmp67 [V78,T52] ( 7, 3.42) long -> x4 "Inline stloc first use temp" @@ -94,7 +94,7 @@ ;* V82 tmp71 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V83 tmp72 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V84 tmp73 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V85 tmp74 [V85,T46] ( 4, 3.86) ref -> x26 class-hnd "Inlining Arg" <System.Object>
+; V85 tmp74 [V85,T46] ( 4, 3.86) ref -> x23 class-hnd "Inlining Arg" <System.Object>
; V86 tmp75 [V86,T17] ( 7, 6.76) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task> ;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V88 tmp77 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Buffers.Tests.RentReturnArrayPoolTests`1+<SingleSerial>d__21[System.Object]]> @@ -106,11 +106,11 @@ ; V94 tmp83 [V94,T06] ( 8, 9.66) ref -> x27 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V95 tmp84 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V97 tmp86 [V97,T28] ( 3, 4.83) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V97 tmp86 [V97,T28] ( 5, 4.83) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V98 tmp87 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V99 tmp88 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V101 tmp90 [V101,T59] ( 3, 2.90) int -> x0 "Inline stloc first use temp"
+; V101 tmp90 [V101,T59] ( 5, 2.90) int -> x28 "Inline stloc first use temp"
;* V102 tmp91 [V102,T87] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V103 tmp92 [V103,T60] ( 3, 2.90) int -> x0 "Inline stloc first use temp" ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -122,9 +122,9 @@ ; V110 tmp99 [V110 ] ( 2, 0.96) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V67._count (fldOffset=0x0)" P-DEP ; V111 tmp100 [V111 ] ( 3, 0 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V106._data (fldOffset=0x0)" P-DEP ; V112 cse0 [V112,T64] ( 3, 2.54) byref -> x28 "CSE - moderate"
-; V113 cse1 [V113,T68] ( 3, 2.44) byref -> x4 "CSE - moderate"
+; V113 cse1 [V113,T68] ( 3, 2.44) byref -> x3 "CSE - moderate"
; V114 cse2 [V114,T54] ( 4, 3.04) long -> x27 "CSE - moderate"
-; V115 cse3 [V115,T58] ( 4, 2.92) long -> x3 "CSE - moderate"
+; V115 cse3 [V115,T58] ( 4, 2.92) long -> x2 "CSE - moderate"
; V116 cse4 [V116,T29] ( 3, 5.07) int -> x21 "CSE - moderate" ; V117 cse5 [V117,T37] ( 2, 4.06) byref -> x23 hoist "CSE - moderate" ; V118 cse6 [V118,T31] ( 3, 4.87) int -> x28 "CSE - moderate" @@ -168,17 +168,17 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #6
- blt G_M63069_IG86
+ blt G_M63069_IG88
ldr x0, [x0, #0x18] ldr x0, [x0, #0x30]
- cbz x0, G_M63069_IG86
+ cbz x0, G_M63069_IG88
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 ; byrRegs +[x21] ldr x22, [x21, #0x40] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG87
+ cbz x22, G_M63069_IG89
;; size=88 bbWeight=1 PerfScore 30.50 G_M63069_IG03: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x21] @@ -186,12 +186,12 @@ G_M63069_IG03: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG88
+ cbnz w0, G_M63069_IG90
;; size=20 bbWeight=1.00 PerfScore 16.00 G_M63069_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG70
+ cbnz x0, G_M63069_IG58
;; size=8 bbWeight=1.00 PerfScore 3.00 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -207,12 +207,12 @@ G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldar w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG89
+ blt G_M63069_IG91
mov x2, xzr ; gcrRegs +[x2] str x2, [fp, #0x40] // [V17 tmp6] ldr x0, [fp, #0x40] // [V17 tmp6]
- cbnz x0, G_M63069_IG90
+ cbnz x0, G_M63069_IG92
;; size=48 bbWeight=1.00 PerfScore 17.00 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2] @@ -221,7 +221,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ;; size=8 bbWeight=1.00 PerfScore 4.00 G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x30]
- cbnz w1, G_M63069_IG91
+ cbnz w1, G_M63069_IG93
;; size=8 bbWeight=1.00 PerfScore 4.02 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -244,7 +244,7 @@ G_M63069_IG09: ; bbWeight=1.02, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w1, w26, w1 ldr w21, [x25, #0x08] cmp w1, w21
- bhs G_M63069_IG85
+ bhs G_M63069_IG87
ubfiz x1, x1, #4, #32 add x27, x1, #16 add x1, x25, x27 @@ -285,17 +285,17 @@ G_M63069_IG12: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG90
+ cbnz w0, G_M63069_IG92
strb wzr, [x22, #0x3C] b G_M63069_IG08 ;; size=44 bbWeight=0.00 PerfScore 0.02 G_M63069_IG13: ; bbWeight=0.51, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x24-x25]
- sub w28, w26, #1
+ sub w27, w26, #1
cmp w26, #0
- beq G_M63069_IG84
+ beq G_M63069_IG86
udiv w0, w23, w26
- msub w27, w0, w26, w23
+ msub w28, w0, w26, w23
cmp w26, #0 ble G_M63069_IG29 ;; size=28 bbWeight=0.51 PerfScore 8.40 @@ -314,7 +314,7 @@ G_M63069_IG16: ; bbWeight=0.51, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, sub w1, w3, w26 ; byrRegs -[x1] cmp w1, #0
- bgt G_M63069_IG92
+ bgt G_M63069_IG94
;; size=24 bbWeight=0.51 PerfScore 4.33 G_M63069_IG17: ; bbWeight=1.00, gcrefRegs=1D00000 {x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x25] @@ -339,14 +339,14 @@ G_M63069_IG19: ; bbWeight=0.50, gcrefRegs=3500000 {x20 x22 x24 x25}, byre ; byrRegs +[x0] ldarb w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M63069_IG90
+ cbnz w0, G_M63069_IG92
;; size=20 bbWeight=0.50 PerfScore 4.25 G_M63069_IG20: ; bbWeight=0.50, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=10000000 {x28}, byref ; gcrRegs -[x24] str xzr, [x25, x27] add w0, w21, w26 stlr w0, [x28]
- b G_M63069_IG90
+ b G_M63069_IG92
;; size=16 bbWeight=0.50 PerfScore 1.75 G_M63069_IG21: ; bbWeight=1.00, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x25] +[x23] @@ -361,7 +361,7 @@ G_M63069_IG21: ; bbWeight=1.00, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs blr x2 ; gcrRegs -[x0 x23] ; gcr arg pop 0
- cbnz w0, G_M63069_IG90
+ cbnz w0, G_M63069_IG92
;; size=32 bbWeight=1.00 PerfScore 7.50 G_M63069_IG22: ; bbWeight=0.51, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [x22, #0x30] @@ -392,7 +392,7 @@ G_M63069_IG22: ; bbWeight=0.51, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldr w21, [x25, #0x08] sxtw w26, w21 cmp w26, #0
- ble G_M63069_IG94
+ ble G_M63069_IG96
b G_M63069_IG13 ;; size=104 bbWeight=0.51 PerfScore 18.83 G_M63069_IG23: ; bbWeight=0.01, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, byref @@ -401,9 +401,9 @@ G_M63069_IG23: ; bbWeight=0.01, gcrefRegs=3500000 {x20 x22 x24 x25}, byre ;; size=4 bbWeight=0.01 PerfScore 0.00 G_M63069_IG24: ; bbWeight=4.05, gcrefRegs=1500000 {x20 x22 x24}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x25]
- cmp w27, w21 - bhs G_M63069_IG85 - ldr x0, [x23, w27, UXTW #3]
+ cmp w28, w21 + bhs G_M63069_IG87 + ldr x0, [x23, w28, UXTW #3]
; gcrRegs +[x0] cmp x0, x24 beq G_M63069_IG26 @@ -418,18 +418,18 @@ G_M63069_IG25: ; bbWeight=3.61, gcrefRegs=1500001 {x0 x20 x22 x24}, byref ldar w2, [x2] ...

benchmarks.run_tiered.osx.arm64.checked.mch

-24 (-4.92%) : 8247.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-12 (-1.03%) : 5343.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)

@@ -8,28 +8,28 @@ ; 0 inlinees with PGO data; 21 single block inlinees; 14 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T38] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
+; V00 loc0 [V00,T39] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
; V01 loc1 [V01 ] ( 6, 2.50) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc2 [V02,T03] ( 6, 26.50) ref -> x20 class-hnd exact single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 6, 17 ) ref -> x21 class-hnd <System.Diagnostics.Tracing.EventListener> ; V04 loc4 [V04,T15] ( 4, 10.50) int -> x21 ;* V05 loc5 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
-; V07 loc7 [V07,T17] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
+; V07 loc7 [V07,T16] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
; V08 loc8 [V08,T00] ( 11,468 ) ref -> x25 class-hnd <<unknown class>> ; V09 loc9 [V09 ] ( 7, 42 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]> ; V10 loc10 [V10,T01] ( 2,144 ) ref -> x27 class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T31] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp2 [V13,T34] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
+; V12 tmp1 [V12,T32] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp2 [V13,T35] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
;* V14 tmp3 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp5 [V16,T33] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V16 tmp5 [V16,T34] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ; V20 tmp9 [V20,T24] ( 3, 6 ) ref -> x25 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V21 tmp10 [V21,T11] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
+; V21 tmp10 [V21,T10] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> ; V23 tmp12 [V23,T25] ( 3, 6 ) ref -> x25 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> @@ -37,47 +37,48 @@ ; V26 tmp15 [V26,T13] ( 3, 12 ) ref -> x25 class-hnd "updating class info" <System.ComAwareWeakReference> ;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp18 [V29,T20] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> -; V30 tmp19 [V30,T18] ( 4, 8 ) ref -> x0
+; V29 tmp18 [V29,T19] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> +; V30 tmp19 [V30,T17] ( 4, 8 ) ref -> x0
;* V31 tmp20 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp21 [V32,T02] ( 2, 64 ) ref -> x1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V35 tmp24 [V35,T21] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> -; V36 tmp25 [V36,T19] ( 4, 8 ) ref -> x1 -; V37 tmp26 [V37,T10] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V35 tmp24 [V35,T20] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> +; V36 tmp25 [V36,T18] ( 4, 8 ) ref -> x1 +; V37 tmp26 [V37,T09] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>
-; V40 tmp29 [V40,T22] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
+; V40 tmp29 [V40,T21] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp32 [V43,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp32 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V45 tmp34 [V45,T09] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V46 tmp35 [V46,T12] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V45 tmp34 [V45,T12] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V46 tmp35 [V46,T11] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V47 tmp36 [V47,T04] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V48 tmp37 [V48,T16] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
+; V48 tmp37 [V48,T29] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
; V49 tmp38 [V49 ] ( 3, 20 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP ; V50 tmp39 [V50 ] ( 4, 36 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x8)" P-DEP ; V51 tmp40 [V51 ] ( 3, 20 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x10)" P-DEP ; V52 tmp41 [V52 ] ( 3, 20 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0x14)" P-DEP
-; V53 tmp42 [V53,T37] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V53 tmp42 [V53,T38] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V55 tmp44 [V55,T41] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V56 tmp45 [V56,T39] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
+;* V55 tmp44 [V55,T42] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V56 tmp45 [V56,T40] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
; V57 tmp46 [V57,T26] ( 3, 6 ) ref -> x0 "field V39._dictionary (fldOffset=0x0)" P-INDEP
-;* V58 tmp47 [V58,T35] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP -;* V59 tmp48 [V59,T36] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP -; V60 tmp49 [V60,T30] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
+;* V58 tmp47 [V58,T36] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP +;* V59 tmp48 [V59,T37] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP +; V60 tmp49 [V60,T31] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
; V61 tmp50 [V61,T05] ( 3, 24 ) ref -> x0 "arr expr"
-; V62 PSPSym [V62,T40] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V63 cse0 [V63,T14] ( 3, 12 ) int -> x24 "CSE - moderate" -; V64 cse1 [V64,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" -; V65 cse2 [V65,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" -; V66 cse3 [V66,T32] ( 4, 2 ) long -> x19 "CSE - moderate" -; V67 rat0 [V67,T29] ( 3, 4 ) long -> x0 "TLS field access" -; V68 rat1 [V68,T27] ( 3, 6 ) long -> x0 "TLS access" -; V69 rat2 [V69,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V62 PSPSym [V62,T41] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V63 cse0 [V63,T23] ( 2, 8 ) int -> x0 "CSE - moderate" +; V64 cse1 [V64,T14] ( 2, 8 ) int -> x0 "CSE - moderate" +; V65 cse2 [V65,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" +; V66 cse3 [V66,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" +; V67 cse4 [V67,T33] ( 4, 2 ) long -> x19 "CSE - moderate" +; V68 rat0 [V68,T30] ( 3, 4 ) long -> x0 "TLS field access" +; V69 rat1 [V69,T27] ( 3, 6 ) long -> x0 "TLS access" +; V70 rat2 [V70,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
; ; Lcl frame size = 56 @@ -105,10 +106,10 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ldr w1, [x0] cmp w1, #3
- blt G_M15982_IG39
+ blt G_M15982_IG38
ldr x0, [x0, #0x08] ldr x0, [x0, #0x18]
- cbz x0, G_M15982_IG39
+ cbz x0, G_M15982_IG38
;; size=56 bbWeight=1 PerfScore 18.50 G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x0, #0xD1FFAB1E] @@ -135,7 +136,7 @@ G_M15982_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; GC ptr vars +{V00} str wzr, [fp, #0x38] // [V01 loc1] ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M15982_IG06: ; bbWeight=0.50, gcVars=0000004000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG06: ; bbWeight=0.50, gcVars=0000008000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x38] // [V01 loc1] cbnz w1, G_M15982_IG32 add x1, fp, #56 // [V01 loc1] @@ -246,17 +247,17 @@ G_M15982_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w23, wzr ;; size=16 bbWeight=0.50 PerfScore 3.50 G_M15982_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x19, #0x14] - cmp w22, w24 - bne G_M15982_IG35
+ ldr w0, [x19, #0x14] + cmp w22, w0 + bne G_M15982_IG36
ldr w0, [x19, #0x10] cmp w23, w0
- bhs G_M15982_IG38
+ bhs G_M15982_IG37
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M15982_IG36
+ bhs G_M15982_IG35
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -489,17 +490,12 @@ G_M15982_IG34: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs -[x24] b G_M15982_IG13 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M15982_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- cmp w22, w24 - bne G_M15982_IG37 - b G_M15982_IG38 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -508,7 +504,7 @@ G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1] cbz w0, G_M15982_IG04 ldr x0, [fp, #0x18] // [V00 loc0] @@ -519,13 +515,13 @@ G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 b G_M15982_IG04 ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M15982_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #3 bl CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; gcr arg pop 0 b G_M15982_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M15982_IG39: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00} stp fp, lr, [sp, #-0x60]! stp x19, x20, [sp, #0x18] @@ -536,9 +532,9 @@ G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 add x3, fp, #144 str x3, [sp, #0x10] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG40: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1]
- cbz w0, G_M15982_IG42
+ cbz w0, G_M15982_IG41
ldr x0, [fp, #0x18] // [V00 loc0] ; gcrRegs +[x0] ; GC ptr vars -{V00} @@ -546,7 +542,7 @@ G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M15982_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x27, [sp, #0x58] ldp x25, x26, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -556,7 +552,7 @@ G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1160, prolog size 40, PerfScore 2113.00, instruction count 290, allocated bytes for code 1160 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
+; Total bytes of code 1148, prolog size 40, PerfScore 2103.00, instruction count 287, allocated bytes for code 1148 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
; ============================================================ Unwind Info: @@ -567,7 +563,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 271 (0x0010f) Actual length = 1084 (0x00043c)
+ Function Length : 268 (0x0010c) Actual length = 1072 (0x000430)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -610,4 +606,4 @@ Unwind Info: *************** EH table for System.Diagnostics.Tracing.EventListener:Validate() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M15982_IG06..G_M15982_IG38) handled by [G_M15982_IG40..END) (fault)
+EH#0: try [G_M15982_IG06..G_M15982_IG37) handled by [G_M15982_IG39..END) (fault)
-8 (-0.90%) : 4889.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
@@ -8,27 +8,27 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T22] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T18] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T23] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T19] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T20] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T22] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T24] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T26] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def -;* V20 tmp11 [V20,T31] ( 0, 0 ) int -> zero-ref
+;* V19 tmp10 [V19,T32] ( 0, 0 ) ref -> zero-ref single-def +;* V20 tmp11 [V20,T33] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -36,44 +36,46 @@ ;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
-; V28 tmp19 [V28,T13] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V28 tmp19 [V28,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp21 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V32 tmp23 [V32,T09] ( 3, 24 ) byref -> x1 "Inlining Arg" ;* V33 tmp24 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp25 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp26 [V35,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp26 [V35,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V39 tmp30 [V39,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp30 [V39,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V41 tmp32 [V41,T20] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V42 tmp33 [V42,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V43 tmp34 [V43,T06] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
+; V41 tmp32 [V41,T21] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V42 tmp33 [V42,T06] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V43 tmp34 [V43,T05] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
; V44 tmp35 [V44,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V45 tmp36 [V45,T12] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V45 tmp36 [V45,T24] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V46 tmp37 [V46,T07] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V47 tmp38 [V47,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V48 tmp39 [V48,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V49 tmp40 [V49,T23] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V50 tmp41 [V50,T26] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
+; V49 tmp40 [V49,T25] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V50 tmp41 [V50,T28] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V27._current (fldOffset=0x8)" P-INDEP
-;* V52 tmp43 [V52,T32] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP -; V53 tmp44 [V53,T28] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP -; V54 tmp45 [V54,T27] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
+;* V52 tmp43 [V52,T34] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP +; V53 tmp44 [V53,T30] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP +; V54 tmp45 [V54,T29] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._current (fldOffset=0x8)" P-INDEP
-;* V56 tmp47 [V56,T33] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP -; V57 tmp48 [V57,T29] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
+;* V56 tmp47 [V56,T35] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP +; V57 tmp48 [V57,T31] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
; V58 tmp49 [V58,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V59 tmp50 [V59,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V60 PSPSym [V60,T34] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V61 cse0 [V61,T10] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V62 cse1 [V62,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" -; V63 cse2 [V63,T16] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" -; V64 cse3 [V64,T17] ( 3, 12 ) byref -> x1 "CSE - aggressive" -; V65 cse4 [V65,T25] ( 4, 4 ) byref -> x1 "CSE - moderate"
+; V60 PSPSym [V60,T36] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V61 cse0 [V61,T15] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V62 cse1 [V62,T10] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V63 cse2 [V63,T16] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V64 cse3 [V64,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V65 cse4 [V65,T17] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" +; V66 cse5 [V66,T18] ( 3, 12 ) byref -> x1 "CSE - aggressive" +; V67 cse6 [V67,T27] ( 4, 4 ) byref -> x1 "CSE - moderate"
; ; Lcl frame size = 40 @@ -92,7 +94,7 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=44 bbWeight=1 PerfScore 9.00
-G_M12834_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 movz x0, #0xD1FFAB1E @@ -171,7 +173,7 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { str x21, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x22, x0 @@ -261,12 +263,12 @@ G_M12834_IG10: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=52 bbWeight=4 PerfScore 50.00 G_M12834_IG11: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG15
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG14
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG16
+ bhs G_M12834_IG15
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w2, [x1, #0x08] @@ -305,12 +307,8 @@ G_M12834_IG14: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov w1, w19 @@ -325,19 +323,19 @@ G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcr arg pop 0 str w0, [fp, #0x2C] // [V03 loc0] ;; size=36 bbWeight=8 PerfScore 64.00
-G_M12834_IG17: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M12834_IG16: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V60 PSPSym]
- bl G_M12834_IG21
+ bl G_M12834_IG20
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG18: ; bbWeight=1, nogc, extend
+G_M12834_IG17: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M12834_IG19: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x68] ldp x23, x24, [sp, #0x58] ldp x21, x22, [sp, #0x48] @@ -345,7 +343,7 @@ G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M12834_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -354,19 +352,19 @@ G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #112 str x3, [sp, #0x10] ;; size=28 bbWeight=1 PerfScore 6.50
-G_M12834_IG22: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG21: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0]
- cbnz w0, G_M12834_IG27
+ cbnz w0, G_M12834_IG26
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] mov w21, wzr
- b G_M12834_IG24
+ b G_M12834_IG23
;; size=28 bbWeight=1 PerfScore 10.00
-G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG22: ; bbWeight=4, gcVars=0000000000000010 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00} add x1, x0, #52 ; byrRegs +[x1] @@ -374,7 +372,7 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; byrRegs -[x1] mov w2, #0xD1FFAB1E tst w1, w2
- bne G_M12834_IG24
+ bne G_M12834_IG23
ldr x1, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -385,18 +383,18 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=4 PerfScore 52.00
-G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG23: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14] cmp w20, w0
- bne G_M12834_IG26
+ bne G_M12834_IG25
ldr w0, [x19, #0x10] cmp w21, w0
- bhs G_M12834_IG27
+ bhs G_M12834_IG26
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M12834_IG25
+ bhs G_M12834_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -404,15 +402,15 @@ G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x0] ; byrRegs -[x0] add w21, w21, #1
- b G_M12834_IG23
+ b G_M12834_IG22
;; size=56 bbWeight=8 PerfScore 172.00
-G_M12834_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.29%) : 11683.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 24 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 20, 34 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 19, 33 ) byref -> x19 this single-def
; V01 loc0 [V01,T01] ( 13, 39 ) ref -> x21 class-hnd <System.Text.RegularExpressions.RegexNode> ; V02 loc1 [V02,T02] ( 12, 38 ) int -> x22
-; V03 loc2 [V03,T49] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
+; V03 loc2 [V03,T50] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
; V04 loc3 [V04,T34] ( 5, 4 ) ref -> x21 class-hnd exact single-def <System.String[]> ;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]> @@ -55,16 +55,16 @@ ; V44 tmp35 [V44,T15] ( 6, 10 ) int -> x20 "Inlining Arg" ; V45 tmp36 [V45,T26] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" ;* V46 tmp37 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V47 tmp38 [V47,T47] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
+; V47 tmp38 [V47,T48] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V49 tmp40 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V51 tmp42 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V52 tmp43 [V52,T48] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> -; V53 tmp44 [V53,T56] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> -; V54 tmp45 [V54,T50] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
+; V52 tmp43 [V52,T49] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> +; V53 tmp44 [V53,T57] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> +; V54 tmp45 [V54,T51] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V55 tmp46 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V56 tmp47 [V56,T51] ( 2, 2 ) long -> x2 "Inlining Arg"
+; V56 tmp47 [V56,T52] ( 2, 2 ) long -> x2 "Inlining Arg"
;* V57 tmp48 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V58 tmp49 [V58,T27] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V59 tmp50 [V59,T28] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -76,14 +76,14 @@ ;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V66 tmp57 [V66,T19] ( 2, 8 ) ref -> x15 "field V08.key (fldOffset=0x0)" P-INDEP ; V67 tmp58 [V67,T11] ( 3, 12 ) int -> x14 "field V08.value (fldOffset=0x8)" P-INDEP
-; V68 tmp59 [V68,T57] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP -; V69 tmp60 [V69,T52] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP -; V70 tmp61 [V70,T58] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V71 tmp62 [V71,T53] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
+; V68 tmp59 [V68,T58] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP +; V69 tmp60 [V69,T53] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP +; V70 tmp61 [V70,T59] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V71 tmp62 [V71,T54] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
; V72 tmp63 [V72,T36] ( 2, 4 ) byref -> x2 "field V30._reference (fldOffset=0x0)" P-INDEP ; V73 tmp64 [V73,T41] ( 2, 4 ) int -> x3 "field V30._length (fldOffset=0x8)" P-INDEP
-; V74 tmp65 [V74,T59] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP -; V75 tmp66 [V75,T54] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
+; V74 tmp65 [V74,T60] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V75 tmp66 [V75,T55] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
;* V76 tmp67 [V76 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp68 [V77 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V78 tmp69 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP @@ -93,17 +93,18 @@ ;* V82 tmp73 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp74 [V83 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP ;* V84 tmp75 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "V60.[000..008)"
-; V85 tmp76 [V85,T55] ( 2, 2 ) int -> x0 "V60.[008..012)"
+; V85 tmp76 [V85,T56] ( 2, 2 ) int -> x0 "V60.[008..012)"
;* V86 tmp77 [V86 ] ( 0, 0 ) int -> zero-ref "V60.[012..016)" ;* V87 tmp78 [V87 ] ( 0, 0 ) int -> zero-ref "V60.[016..020)" ; V88 tmp79 [V88,T10] ( 3, 12 ) ref -> x0 "arr expr"
-; V89 cse0 [V89,T46] ( 3, 3 ) int -> x22 "CSE - moderate"
+; V89 cse0 [V89,T47] ( 3, 3 ) int -> x22 "CSE - moderate"
; V90 cse1 [V90,T29] ( 3, 6 ) ref -> x1 "CSE - moderate" ; V91 cse2 [V91,T45] ( 3, 3 ) ref -> x20 "CSE - moderate" ; V92 cse3 [V92,T30] ( 3, 6 ) long -> x20 "CSE - moderate" ; V93 cse4 [V93,T33] ( 2, 4.50) byref -> x24 hoist "CSE - moderate" ; V94 cse5 [V94,T21] ( 4, 6.50) int -> x23 hoist multi-def "CSE - moderate" ; V95 cse6 [V95,T31] ( 5, 5 ) byref -> x20 "CSE - moderate"
+; V96 cse7 [V96,T46] ( 3, 3 ) ref -> x14 "CSE - moderate"
; ; Lcl frame size = 80 @@ -581,7 +582,6 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { ; gcrRegs +[x14] ldr x15, [x14, #0x10] ; gcrRegs +[x15]
- ldr x14, [x19]
ldr w1, [x14, #0x38] ldr w19, [x19, #0x10] ; byrRegs -[x19] @@ -623,7 +623,7 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { str w19, [x20, #0x2C] mov x0, x20 ; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 34.00
+ ;; size=116 bbWeight=1 PerfScore 31.00
G_M2365_IG43: ; bbWeight=1, epilog, nogc, extend ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -652,7 +652,7 @@ G_M2365_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1380, prolog size 40, PerfScore 659.00, instruction count 345, allocated bytes for code 1380 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
+; Total bytes of code 1376, prolog size 40, PerfScore 656.00, instruction count 344, allocated bytes for code 1376 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
; ============================================================ Unwind Info: @@ -663,7 +663,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 345 (0x00159) Actual length = 1380 (0x000564)
+ Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.19%) : 44402.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 64 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T47] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T46] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T44] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T44] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x10 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -169,9 +169,9 @@ ;* V158 tmp133 [V158 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V159 tmp134 [V159 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V161 tmp136 [V161,T47] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V161 tmp136 [V161,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -182,37 +182,37 @@ ;* V171 tmp146 [V171 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V172 tmp147 [V172 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V174 tmp149 [V174,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V174 tmp149 [V174,T49] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
...

-8 (-0.15%) : 2436.dasm - System.Number:NumberToStringFormatushort (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

coreclr_tests.run.osx.arm64.checked.mch

-36 (-14.75%) : 444632.dasm - Program:M49() (FullOpts)

@@ -10,11 +10,12 @@ ; V00 loc0 [V00,T01] ( 4, 13 ) int -> x19 ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> x1 "arr expr" -; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> x0 "arr expr" -; V05 PSPSym [V05,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" -; V06 cse0 [V06,T03] ( 3, 12 ) int -> x0 "CSE - aggressive" -; V07 cse1 [V07,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x0 "arr expr" +;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref "arr expr" +; V05 PSPSym [V05,T06] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" +; V06 cse0 [V06,T02] ( 3, 12 ) byref -> x0 "CSE - aggressive" +; V07 cse1 [V07,T03] ( 2, 8 ) ref -> x0 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -34,7 +35,7 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; gcr arg pop 0 cmp w0, #0
- ble G_M37813_IG08
+ ble G_M37813_IG06
;; size=32 bbWeight=1 PerfScore 7.50 G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x20, #0xD1FFAB1E @@ -43,32 +44,7 @@ G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20]
- cbnz w0, G_M37813_IG06 - ;; size=8 bbWeight=4 PerfScore 16.00 -G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - ; gcrRegs +[x1] - ldr w2, [x1, #0x08] - cmp w2, #0 - bls G_M37813_IG13 - str wzr, [x1, #0x10] - ;; size=32 bbWeight=2 PerfScore 20.00 -G_M37813_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - cbz w0, G_M37813_IG09 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M37813_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - str wzr, [x20, #-0x08] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M37813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbnz w0, G_M37813_IG05
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -77,17 +53,28 @@ G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr w1, [x0, #0x08] cmp w1, #0 bls G_M37813_IG10
- ldr w1, [x20, #-0x08] - str w1, [x0, #0x10] - b G_M37813_IG11 - ;; size=40 bbWeight=4 PerfScore 56.00 -G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, x0, #16
; gcrRegs -[x0]
- bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - brk_unix #0 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs +[x0] + str wzr, [x0] + b G_M37813_IG07 + ;; size=48 bbWeight=4 PerfScore 62.00 +G_M37813_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + str wzr, [x20, #-0x08] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M37813_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M37813_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref + ; byrRegs +[x0] + ldr w1, [x20, #-0x08] + str w1, [x0] + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M37813_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 @@ -98,27 +85,27 @@ G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp w0, w19 bgt G_M37813_IG04 ;; size=32 bbWeight=4 PerfScore 30.00
-G_M37813_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M37813_IG08
+G_M37813_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M37813_IG06
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #48 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 20, PerfScore 142.25, instruction count 61, allocated bytes for code 244 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 124.25, instruction count 52, allocated bytes for code 208 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
; ============================================================ Unwind Info: @@ -129,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,4 +149,4 @@ Unwind Info: *************** EH table for Program:M49() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37813_IG09..G_M37813_IG11) handled by [G_M37813_IG14..END) (fault)
+EH#0: try [G_M37813_IG07..G_M37813_IG08) handled by [G_M37813_IG11..END) (fault)
-40 (-5.29%) : 389070.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -25,7 +25,7 @@ ; V13 tmp9 [V13,T08] ( 6, 12 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[int]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T00] ( 25,158.20) byref -> x11 "Inlining Arg"
+; V16 tmp12 [V16,T00] ( 21,154.20) byref -> x11 "Inlining Arg"
; V17 tmp13 [V17,T03] ( 8, 43 ) ref -> x1 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp15 [V19,T12] ( 3, 3 ) ref -> x15 single-def "field V14._list (fldOffset=0x0)" P-INDEP @@ -57,9 +57,9 @@ G_M48461_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M48461_IG25
+ bne G_M48461_IG24
ldr w0, [x19, #0x10]
- cbz w0, G_M48461_IG24
+ cbz w0, G_M48461_IG23
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 @@ -83,13 +83,13 @@ G_M48461_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; GC ptr vars +{V02} ;; size=4 bbWeight=1 PerfScore 1.00 G_M48461_IG04: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x0, G_M48461_IG13
+ cbz x0, G_M48461_IG12
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 cmp x11, x21
- bne G_M48461_IG13
+ bne G_M48461_IG12
b G_M48461_IG06 ;; size=32 bbWeight=1 PerfScore 8.00 G_M48461_IG05: ; bbWeight=9.90, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref @@ -104,11 +104,11 @@ G_M48461_IG06: ; bbWeight=10.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG11
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG12
+ bhs G_M48461_IG11
;; size=40 bbWeight=10.89 PerfScore 201.46 G_M48461_IG07: ; bbWeight=9.90, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz ldr x3, [x1, #0x08] @@ -155,19 +155,10 @@ G_M48461_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w22, w0 ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- b G_M48461_IG15
+ b G_M48461_IG14
;; size=36 bbWeight=0 PerfScore 0.00
-G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
; byrRegs +[x11]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.99 PerfScore 10.39 -G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -175,39 +166,26 @@ G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} add w1, w1, #1 str w1, [x11, #0x08] str wzr, [x11, #0x10]
- b G_M48461_IG21
+ b G_M48461_IG20
;; size=24 bbWeight=0.99 PerfScore 9.40
-G_M48461_IG13: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG12: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x11] ldr xzr, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32
- b G_M48461_IG16
+ b G_M48461_IG15
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG13: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w22, [x0, #0x18] ;; size=4 bbWeight=0.10 PerfScore 0.30
-G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add w20, w20, w22 ;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M48461_IG16: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG15: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x11, [x0] cmp x11, x21
- beq G_M48461_IG17 - movz x11, #80 - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #1 LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M48461_IG10 - ldr x0, [fp, #0x10] // [V02 loc1] - ; gcrRegs +[x0] - b G_M48461_IG21 - ;; size=44 bbWeight=0.11 PerfScore 1.54 -G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ bne G_M48461_IG17
add x11, x0, #8 ; byrRegs +[x11] ldr x1, [x11] @@ -215,13 +193,13 @@ G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG19
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG20 - ;; size=40 bbWeight=0.11 PerfScore 2.04 -G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
+ bhs G_M48461_IG19 + ;; size=52 bbWeight=0.11 PerfScore 2.53 +G_M48461_IG16: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
ldr x3, [x1, #0x08] ; gcrRegs +[x3] ldr w2, [x11, #0x08] @@ -237,19 +215,27 @@ G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x ldr w1, [x11, #0x08] add w1, w1, #1 str w1, [x11, #0x08]
- b G_M48461_IG14
+ b G_M48461_IG13
;; size=48 bbWeight=0.10 PerfScore 2.05
-G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.01 PerfScore 0.11 -G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
+ ; byrRegs -[x11] + movz x11, #80 + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32 + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + cbnz w0, G_M48461_IG10 + ;; size=24 bbWeight=0.11 PerfScore 0.72 +G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc1] + ; gcrRegs +[x0] + b G_M48461_IG20 + ;; size=8 bbWeight=0.11 PerfScore 0.33 +G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref + ; byrRegs +[x11]
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -258,24 +244,24 @@ G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} str w1, [x11, #0x08] str wzr, [x11, #0x10] ;; size=20 bbWeight=0.01 PerfScore 0.09
-G_M48461_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG20: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x11] ldr x1, [x0] cmp x1, x21
- bne G_M48461_IG26
+ bne G_M48461_IG25
;; size=12 bbWeight=1 PerfScore 4.50
-G_M48461_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V02} mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M48461_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M48461_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -289,7 +275,7 @@ G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x0] b G_M48461_IG03 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M48461_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -302,7 +288,7 @@ G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 b G_M48461_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V02 V05} movz x11, #96 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -312,9 +298,9 @@ G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M48461_IG22
+ b G_M48461_IG21
;; size=24 bbWeight=0 PerfScore 0.00
-G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V05} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -322,16 +308,16 @@ G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 add x3, fp, #64 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00 ...

-12 (-4.55%) : 450399.dasm - Test.BB:TestEntryPoint() (FullOpts)

@@ -8,29 +8,28 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T08] ( 2, 0 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <<unknown class>>
+; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [fp+0x10] class-hnd exact EH-live single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2" ; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp3 [V04,T02] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]> ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp6 [V07,T09] ( 2, 0 ) float -> [fp+0x24] spill-single-def "bubbling QMark2" -; V08 tmp7 [V08,T06] ( 3, 0 ) ref -> x20 single-def "CASTCLASS eval op1" -; V09 tmp8 [V09,T07] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V10 tmp9 [V10,T05] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> -; V11 PSPSym [V11,T04] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V12 cse0 [V12,T01] ( 5, 24 ) ref -> x20 multi-def "CSE - aggressive" -; V13 cse1 [V13,T03] ( 5, 4 ) long -> x19 multi-def "CSE - aggressive"
+; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [fp+0x1C] spill-single-def "bubbling QMark2" +; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1" +; V09 tmp8 [V09,T06] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable" +; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> +; V11 PSPSym [V11,T03] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V12 cse0 [V12,T02] ( 5, 4 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + str x19, [sp, #0x28]
mov fp, sp
- add x0, sp, #64 - str x0, [fp, #0x28] // [V11 PSPSym]
+ add x0, sp, #48 + str x0, [fp, #0x20] // [V11 PSPSym]
;; size=20 bbWeight=1 PerfScore 4.00 G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x19, #0xD1FFAB1E @@ -41,10 +40,10 @@ G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V00 loc0]
+ str x0, [fp, #0x10] // [V00 loc0]
; GC ptr vars +{V00} ;; size=28 bbWeight=1 PerfScore 4.50
-G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] mov w0, #2 cmp w0, #3 @@ -52,19 +51,17 @@ G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000100 {V00}, gcrefRegs=000 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- ldr x20, [x0] - ; gcrRegs +[x20] - mov x1, x20
+ ldr x1, [x0]
; gcrRegs +[x1]
- cbz x1, G_M52695_IG07 - ;; size=36 bbWeight=8 PerfScore 64.00 -G_M52695_IG04: ; bbWeight=2, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M52695_IG03 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M52695_IG04: ; bbWeight=2, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1] add x2, x19, #0xD1FFAB1E cmp x0, x2 beq G_M52695_IG07 ;; size=16 bbWeight=2 PerfScore 10.00
-G_M52695_IG05: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x2 bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0] @@ -72,60 +69,53 @@ G_M52695_IG05: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} b G_M52695_IG07 ;; size=12 bbWeight=1 PerfScore 2.50 G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52695_IG07: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20] - cbz x20, G_M52695_IG03 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M52695_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc - ; gcrRegs -[x20]
+G_M52695_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; GC ptr vars -{V00}
- ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x40
+ ldr x19, [sp, #0x28] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc - stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x20] - add x3, fp, #64 - str x3, [sp, #0x18]
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M52695_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18] + add x3, fp, #48 + str x3, [sp, #0x10]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V08} - ldr x0, [fp, #0x18] // [V00 loc0]
+G_M52695_IG09: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00 V07} + ldr x0, [fp, #0x10] // [V00 loc0]
; gcrRegs +[x0] ldr s0, [x0, #0x10]
- str s0, [fp, #0x24] // [V07 tmp6]
+ str s0, [fp, #0x1C] // [V07 tmp6]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- ldr x20, [x0] - ; gcrRegs +[x20] - mov x0, x20 - ; gcrRegs +[x0] - cbz x0, G_M52695_IG11
ldr x1, [x0]
+ ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + cbz x0, G_M52695_IG10 + ldr x2, [x0]
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #1 LSL #32
- add x2, x19, #0xD1FFAB1E - cmp x1, x2 - beq G_M52695_IG11 - mov x0, x2
+ add x3, x19, #0xD1FFAB1E + cmp x2, x3 + beq G_M52695_IG10 + mov x0, x3
; gcrRegs -[x0]
- mov x1, x20 - ; gcrRegs +[x1] - ; GC ptr vars -{V00 V08}
+ ; GC ptr vars -{V00 V07}
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1 x20] +[x0]
+ ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr s0, [fp, #0x24] // [V07 tmp6]
+ ;; size=72 bbWeight=0 PerfScore 0.00 +G_M52695_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr s0, [fp, #0x1C] // [V07 tmp6]
movz x1, #0xD1FFAB1E // code for Test.BB:Method1(float,double[]) movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -133,15 +123,15 @@ G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M52695_IG08]
+ adr x0, [G_M52695_IG07]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+G_M52695_IG11: ; bbWeight=0, funclet epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 20, PerfScore 96.00, instruction count 66, allocated bytes for code 264 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
+; Total bytes of code 252, prolog size 20, PerfScore 85.00, instruction count 63, allocated bytes for code 252 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
; ============================================================ Unwind Info: @@ -152,7 +142,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -160,8 +150,8 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end E4 end @@ -175,14 +165,14 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end *************** EH table for Test.BB:TestEntryPoint() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52695_IG03..G_M52695_IG08) handled by [G_M52695_IG09..END) (class: 1000008)
+EH#0: try [G_M52695_IG03..G_M52695_IG07) handled by [G_M52695_IG08..END) (class: 1000008)
+0 (0.00%) : 447555.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
@@ -241,7 +241,7 @@ G_M15401_IG02: ; bbWeight=1, gcVars=00000000000000000000000000008000 {V04 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- cbz x0, G_M15401_IG27
+ cbz x0, G_M15401_IG26
;; size=76 bbWeight=1 PerfScore 22.00 G_M15401_IG03: ; bbWeight=4, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x19] @@ -281,11 +281,11 @@ G_M15401_IG05: ; bbWeight=4, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRe str wzr, [fp, #0xC8] // [V11 loc5+0x10] strb wzr, [fp, #0xCC] // [V11 loc5+0x14] ldrb w0, [fp, #0xCC] // [V11 loc5+0x14]
- cbnz w0, G_M15401_IG23
+ cbnz w0, G_M15401_IG28
;; size=24 bbWeight=4 PerfScore 28.00 G_M15401_IG06: ; bbWeight=2, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2]
- cbz x27, G_M15401_IG23
+ cbz x27, G_M15401_IG28
;; size=4 bbWeight=2 PerfScore 2.00 G_M15401_IG07: ; bbWeight=2.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0xC8] // [V11 loc5+0x10] @@ -323,7 +323,7 @@ G_M15401_IG09: ; bbWeight=2.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byre str w3, [fp, #0x94] // [V178 cse10] ldr w2, [fp, #0xB4] // [V36 tmp21] cmp w3, w2
- bhi G_M15401_IG23
+ bhi G_M15401_IG28
;; size=20 bbWeight=2.00 PerfScore 15.00 G_M15401_IG10: ; bbWeight=1.99, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=80000 {x19}, byref add x1, x27, #12 @@ -380,7 +380,7 @@ G_M15401_IG13: ; bbWeight=2.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byre G_M15401_IG14: ; bbWeight=4.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=80000 {x19}, byref, isz ldr w2, [fp, #0xB0] // [V49 tmp34] cmp w2, #2
- blo G_M15401_IG29
+ blo G_M15401_IG31
;; size=12 bbWeight=4.00 PerfScore 14.00 G_M15401_IG15: ; bbWeight=1.99, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=80000 {x19}, byref movz x0, #0xD1FFAB1E @@ -436,7 +436,7 @@ G_M15401_IG18: ; bbWeight=2.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byre ;; size=40 bbWeight=2.00 PerfScore 16.00 G_M15401_IG19: ; bbWeight=4.00, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=80000 {x19}, byref, isz ldr w2, [fp, #0xAC] // [V60 tmp45]
- cbz w2, G_M15401_IG32
+ cbz w2, G_M15401_IG34
;; size=8 bbWeight=4.00 PerfScore 12.00 G_M15401_IG20: ; bbWeight=1.99, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=80000 {x19}, byref movz x0, #0xD1FFAB1E @@ -458,7 +458,7 @@ G_M15401_IG21: ; bbWeight=4, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRe ; byrRegs +[x2] str x2, [fp, #0x68] // [V74 tmp59] ; GC ptr vars +{V74}
- tbz w19, #31, G_M15401_IG24
+ tbz w19, #31, G_M15401_IG23
;; size=28 bbWeight=4 PerfScore 38.00 G_M15401_IG22: ; bbWeight=2, gcVars=00000000000000000000000000008800 {V04 V74}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x2] @@ -480,24 +480,20 @@ G_M15401_IG22: ; bbWeight=2, gcVars=00000000000000000000000000008800 {V04 blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- b G_M15401_IG33 - ;; size=52 bbWeight=2 PerfScore 21.00 -G_M15401_IG23: ; bbWeight=0.01, gcVars=00000000000000000000000000008000 {V04}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V74 V175} - add x0, fp, #184 // [V11 loc5] - mov x1, x27
+ ldr x0, [fp, #0x58] // [V175 cse7] + ; gcrRegs +[x0] + mov x1, x0
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
+ ; GC ptr vars -{V175}
blr x2
- ; gcrRegs -[x1]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M15401_IG11 - ;; size=32 bbWeight=0.01 PerfScore 0.05 -G_M15401_IG24: ; bbWeight=4, gcVars=00000000000000000000000000008800 {V04 V74}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V74}
+ ;; size=76 bbWeight=2 PerfScore 35.00 +G_M15401_IG23: ; bbWeight=4, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x68] // [V74 tmp59] ; byrRegs +[x0] sxtw w1, w19 @@ -513,9 +509,9 @@ G_M15401_IG24: ; bbWeight=4, gcVars=00000000000000000000000000008800 {V04 stp xzr, xzr, [fp, #0xB8] stp xzr, xzr, [fp, #0xC8] str xzr, [fp, #0xD8]
- cbz x1, G_M15401_IG26
+ cbz x1, G_M15401_IG25
;; size=36 bbWeight=4 PerfScore 40.00
-G_M15401_IG25: ; bbWeight=1.93, gcrefRegs=9680002 {x1 x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref
+G_M15401_IG24: ; bbWeight=1.93, gcrefRegs=9680002 {x1 x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -532,7 +528,7 @@ G_M15401_IG25: ; bbWeight=1.93, gcrefRegs=9680002 {x1 x19 x21 x22 x24 x27 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=1.93 PerfScore 26.11
-G_M15401_IG26: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
+G_M15401_IG25: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21, #0x10] ; gcrRegs +[x0] mov x1, x19 @@ -545,11 +541,11 @@ G_M15401_IG26: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byr ; gcr arg pop 0 cbnz x0, G_M15401_IG03 ;; size=28 bbWeight=4 PerfScore 58.00
-G_M15401_IG27: ; bbWeight=1, gcrefRegs=1680000 {x19 x21 x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M15401_IG26: ; bbWeight=1, gcrefRegs=1680000 {x19 x21 x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x27]
- cbnz w28, G_M15401_IG34
+ cbnz w28, G_M15401_IG38
;; size=4 bbWeight=1 PerfScore 1.00
-G_M15401_IG28: ; bbWeight=0.50, gcrefRegs=1680000 {x19 x21 x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M15401_IG27: ; bbWeight=0.50, gcrefRegs=1680000 {x19 x21 x22 x24}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x08] add w1, w1, #1 sxtw x1, w1 @@ -583,23 +579,23 @@ G_M15401_IG28: ; bbWeight=0.50, gcrefRegs=1680000 {x19 x21 x22 x24}, byre ; gcr arg pop 0 mov x22, x26 ; gcrRegs +[x22]
- b G_M15401_IG34
+ b G_M15401_IG38
;; size=108 bbWeight=0.50 PerfScore 13.00
-G_M15401_IG29: ; bbWeight=0.01, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref
+G_M15401_IG28: ; bbWeight=0.01, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x26] +[x27] add x0, fp, #184 // [V11 loc5]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32
+ mov x1, x27 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
+ ; gcrRegs -[x1]
; gcr arg pop 0
- b G_M15401_IG16 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M15401_IG30: ; bbWeight=0.50, gcVars=00000000000000000000000000818000 {V00 V04 V12}, gcrefRegs=8080000 {x19 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M15401_IG11 + ;; size=32 bbWeight=0.01 PerfScore 0.05 +G_M15401_IG29: ; bbWeight=0.50, gcVars=00000000000000000000000000818000 {V00 V04 V12}, gcrefRegs=8080000 {x19 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x21-x22 x24] +[x19] ; GC ptr vars +{V00 V12 V16 V23} mov w22, wzr @@ -607,13 +603,13 @@ G_M15401_IG30: ; bbWeight=0.50, gcVars=00000000000000000000000000818000 { ; gcrRegs +[x20] ldr w0, [x20, #0x08] cmp w0, #0
- ble G_M15401_IG51
+ ble G_M15401_IG36
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M15401_IG31: ; bbWeight=0.25, gcVars=00000000000000000000000000810000 {V00 V12}, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG30: ; bbWeight=0.25, gcVars=00000000000000000000000000810000 {V00 V12}, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V16 V23}
- b G_M15401_IG45
+ b G_M15401_IG32
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M15401_IG32: ; bbWeight=0.01, gcVars=00000000000000000000000000008000 {V04}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG31: ; bbWeight=0.01, gcVars=00000000000000000000000000008000 {V04}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19-x20] +[x21-x22 x24] ; GC ptr vars -{V00 V12} +{V04} add x0, fp, #184 // [V11 loc5] @@ -626,46 +622,99 @@ G_M15401_IG32: ; bbWeight=0.01, gcVars=00000000000000000000000000008000 { ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M15401_IG21
+ b G_M15401_IG16
;; size=40 bbWeight=0.01 PerfScore 0.07
-G_M15401_IG33: ; bbWeight=2, gcVars=00000000000000000000000000008820 {V04 V74 V175}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V05 V74 V175} - ldr x0, [fp, #0x58] // [V175 cse7]
+G_M15401_IG32: ; bbWeight=4, gcVars=00000000000000000000000000810000 {V00 V12}, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x21-x22 x24] +[x19-x20] + ; GC ptr vars -{V04} +{V00 V12 V16 V23} + add x0, x20, #16 + ; byrRegs +[x0] + ldr x3, [x0, w22, UXTW #3] + ; gcrRegs +[x3] + mov x0, x3
; gcrRegs +[x0]
- mov x1, x0 - ; gcrRegs +[x1]
+ ; byrRegs -[x0] + cbz x0, G_M15401_IG35 + ;; size=16 bbWeight=4 PerfScore 20.00 +G_M15401_IG33: ; bbWeight=1.88, gcrefRegs=8180009 {x0 x3 x19 x20 x27}, byrefRegs=0000 {}, byref + b G_M15401_IG49 + ;; size=4 bbWeight=1.88 PerfScore 1.88 +G_M15401_IG34: ; bbWeight=0.01, gcVars=00000000000000000000000000008000 {V04}, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x3 x19-x20] +[x21-x22 x24] + ; GC ptr vars -{V00 V12 V16 V23} +{V04} + add x0, fp, #184 // [V11 loc5] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ; GC ptr vars -{V05 V175}
blr x2
- ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M15401_IG24 - ;; size=32 bbWeight=2 PerfScore 18.00 -G_M15401_IG34: ; bbWeight=1, gcVars=00000000000000000000000000008000 {V04}, gcrefRegs=1680000 {x19 x21 x22 x24}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x27] +[x19] - ; GC ptr vars -{V74}
+ b G_M15401_IG21 + ;; size=40 bbWeight=0.01 PerfScore 0.07 +G_M15401_IG35: ; bbWeight=4, gcVars=00000000000000000000000000810000 {V00 V12}, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x21-x22 x24] +[x19-x20] + ; GC ptr vars -{V04} +{V00 V12 V16 V23} + add w22, w22, #1 + ldr w0, [x20, #0x08] + cmp w0, w22 + bgt G_M15401_IG32 + ;; size=16 bbWeight=4 PerfScore 20.00 +G_M15401_IG36: ; bbWeight=1, gcVars=00000000000000000000000000010000 {V00}, gcrefRegs=8080000 {x19 x27}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x20] + ; GC ptr vars -{V12 V16 V23} + ldr x21, [fp, #0x88] // [V00 this] + ; gcrRegs +[x21] + ldr x0, [x21, #0x10] + ; gcrRegs +[x0] + mov x1, x19 + ; gcrRegs +[x1] + mov x2, x27 + ; gcrRegs +[x2] + ldr x3, [x0] + ldr x3, [x3, #0x50] + ldr x3, [x3, #0x28] + ; GC ptr vars -{V00} + blr x3
...

+4 (+0.08%) : 421672.dasm - GenClass1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass1[System.Canon],GenClass1[System.__Canon],GenClass1[System.Canon]) (FullOpts)

@@ -15,20 +15,20 @@ ; V04 arg3 [V04,T56] ( 3, 6 ) ref -> x22 class-hnd single-def <GenClass`1[System.__Canon]> ; V05 loc0 [V05,T06] ( 7, 23 ) int -> x24 ; V06 loc1 [V06 ] (153,301.89) struct (40) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc2 [V07,T07] ( 7, 23 ) int -> x26
+; V07 loc2 [V07,T07] ( 7, 23 ) int -> x27
; V08 loc3 [V08,T08] ( 7, 23 ) int -> x25
-; V09 loc4 [V09,T09] ( 7, 23 ) int -> x26
+; V09 loc4 [V09,T09] ( 7, 23 ) int -> x27
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T38] ( 5, 12 ) ref -> x25 ;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref ; V13 tmp3 [V13,T34] ( 7, 12 ) ref -> x26
-; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x27
+; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x28
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref ; V16 tmp6 [V16,T35] ( 6, 12 ) ref -> x1
-; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x28
+; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x26
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref ; V19 tmp9 [V19,T36] ( 6, 12 ) ref -> x1
-; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x27
+; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x28
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref ; V22 tmp12 [V22,T37] ( 6, 12 ) ref -> x24 ;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -134,8 +134,8 @@ ;* V123 tmp113 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V124 tmp114 [V124,T25] ( 4, 16.00) int -> x0 "Inlining Arg" ;* V125 tmp115 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V126 tmp116 [V126,T46] ( 3, 12.00) int -> x24 "Inlining Arg" -; V127 tmp117 [V127,T94] ( 2, 7.98) byref -> x21 "Inlining Arg"
+; V126 tmp116 [V126,T46] ( 3, 12.00) int -> x21 "Inlining Arg" +; V127 tmp117 [V127,T94] ( 2, 7.98) byref -> x26 "Inlining Arg"
;* V128 tmp118 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V129 tmp119 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V130 tmp120 [V130,T185] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -206,7 +206,7 @@ ; V195 tmp185 [V195,T29] ( 4, 16.00) int -> x0 "Inlining Arg" ;* V196 tmp186 [V196 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V197 tmp187 [V197,T50] ( 3, 12.00) int -> x21 "Inlining Arg"
-; V198 tmp188 [V198,T98] ( 2, 7.98) byref -> x27 "Inlining Arg"
+; V198 tmp188 [V198,T98] ( 2, 7.98) byref -> x28 "Inlining Arg"
;* V199 tmp189 [V199 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V200 tmp190 [V200 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V201 tmp191 [V201,T189] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -273,7 +273,7 @@ ; V262 tmp252 [V262,T33] ( 4, 16.00) int -> x0 "Inlining Arg" ;* V263 tmp253 [V263 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V264 tmp254 [V264,T54] ( 3, 12.00) int -> x20 "Inlining Arg"
-; V265 tmp255 [V265,T102] ( 2, 7.98) byref -> x28 "Inlining Arg"
+; V265 tmp255 [V265,T102] ( 2, 7.98) byref -> x26 "Inlining Arg"
;* V266 tmp256 [V266,T193] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V267 tmp257 [V267 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V268 tmp258 [V268 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -294,7 +294,7 @@ ;* V283 tmp273 [V283 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V284 tmp274 [V284 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V285 tmp275 [V285,T90] ( 2, 8 ) int -> x24 "Inlining Arg"
-; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x27 "Inlining Arg"
+; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x28 "Inlining Arg"
; V287 tmp277 [V287,T120] ( 3, 4.00) byref -> x26 "field V28._reference (fldOffset=0x0)" P-INDEP ; V288 tmp278 [V288,T128] ( 3, 4.00) int -> x27 "field V28._length (fldOffset=0x8)" P-INDEP ;* V289 tmp279 [V289 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP @@ -351,8 +351,8 @@ ; V340 tmp330 [V340,T169] ( 2, 4 ) int -> x3 "field V111._length (fldOffset=0x8)" P-INDEP ;* V341 tmp331 [V341 ] ( 0, 0 ) byref -> zero-ref "field V112._reference (fldOffset=0x0)" P-INDEP ;* V342 tmp332 [V342 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x8)" P-INDEP
-; V343 tmp333 [V343,T122] ( 3, 4.00) byref -> x28 "field V122._reference (fldOffset=0x0)" P-INDEP -; V344 tmp334 [V344,T130] ( 3, 4.00) int -> x2 "field V122._length (fldOffset=0x8)" P-INDEP
+; V343 tmp333 [V343,T122] ( 3, 4.00) byref -> x2 "field V122._reference (fldOffset=0x0)" P-INDEP +; V344 tmp334 [V344,T130] ( 3, 4.00) int -> x3 "field V122._length (fldOffset=0x8)" P-INDEP
;* V345 tmp335 [V345 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP ;* V346 tmp336 [V346 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP ;* V347 tmp337 [V347 ] ( 0, 0 ) byref -> zero-ref "field V125._reference (fldOffset=0x0)" P-INDEP @@ -560,7 +560,7 @@ G_M13079_IG03: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 mov x25, x0 ; gcrRegs +[x25] str xzr, [fp, #0x10] // [V06 loc1]
- cbz w24, G_M13079_IG28
+ cbz w24, G_M13079_IG31
;; size=60 bbWeight=4 PerfScore 88.00 G_M13079_IG04: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -625,7 +625,7 @@ G_M13079_IG06: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byre ;; size=64 bbWeight=2.00 PerfScore 30.00 G_M13079_IG07: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #8
- blo G_M13079_IG18
+ blo G_M13079_IG21
;; size=8 bbWeight=2.00 PerfScore 3.00 G_M13079_IG08: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -677,7 +677,7 @@ G_M13079_IG10: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byre ;; size=64 bbWeight=2.00 PerfScore 30.00 G_M13079_IG11: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #3
- blo G_M13079_IG20
+ blo G_M13079_IG26
;; size=8 bbWeight=2.00 PerfScore 3.00 G_M13079_IG12: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -739,7 +739,7 @@ G_M13079_IG14: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byre ; gcrRegs -[x0-x1] ;; size=64 bbWeight=2.00 PerfScore 30.00 G_M13079_IG15: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz
- cbz w27, G_M13079_IG21
+ cbz w27, G_M13079_IG28
;; size=4 bbWeight=2.00 PerfScore 2.00 G_M13079_IG16: ; bbWeight=1.99, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -759,7 +759,7 @@ G_M13079_IG17: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe bhi G_M13079_IG105 ldr x27, [fp, #0x28] // [V06 loc1+0x18] ; byrRegs +[x27]
- tbz w26, #31, G_M13079_IG25
+ tbz w26, #31, G_M13079_IG18
movz x28, #0xD1FFAB1E movk x28, #0xD1FFAB1E LSL #16 movk x28, #1 LSL #32 @@ -773,25 +773,6 @@ G_M13079_IG17: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x28]
- b G_M13079_IG24 - ;; size=68 bbWeight=2 PerfScore 35.00 -G_M13079_IG18: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; gcrRegs -[x28] - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG09 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG19: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs +[x28] - ; byrRegs +[x27]
mov x0, x28 ; gcrRegs +[x0] mov x1, x28 @@ -802,35 +783,8 @@ G_M13079_IG19: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, by ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x28]
- b G_M13079_IG22 - ;; size=32 bbWeight=2 PerfScore 15.00 -G_M13079_IG20: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG13 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG21: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG17 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M13079_IG22: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - ; byrRegs +[x27]
+ ;; size=92 bbWeight=2 PerfScore 46.00 +G_M13079_IG18: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz
mov x0, x27 ; byrRegs +[x0] sxtw w1, w26 @@ -844,43 +798,9 @@ G_M13079_IG22: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe stp xzr, xzr, [fp, #0x10] stp xzr, xzr, [fp, #0x20] str xzr, [fp, #0x30]
- cbz x1, G_M13079_IG31
+ cbz x1, G_M13079_IG20
;; size=36 bbWeight=2 PerfScore 17.00
-G_M13079_IG23: ; bbWeight=1.93, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M13079_IG30 - ;; size=4 bbWeight=1.93 PerfScore 1.93 -G_M13079_IG24: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs -[x1 x26] +[x28] - ; byrRegs +[x27] - mov x0, x28 - ; gcrRegs +[x0] - mov x1, x28 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x28] - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M13079_IG25: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - mov x0, x27 - ; byrRegs +[x0] - sxtw w1, w26 - bl <unknown method> - ; gcrRegs +[x0] - ; byrRegs -[x0 x27] - mov x26, x0 - ; gcrRegs +[x26] - ldr x1, [fp, #0x18] // [V06 loc1+0x08] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #0x10] - stp xzr, xzr, [fp, #0x20] - str xzr, [fp, #0x30] - cbz x1, G_M13079_IG27 - ;; size=36 bbWeight=2 PerfScore 17.00 -G_M13079_IG26: ; bbWeight=1.93, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
+G_M13079_IG19: ; bbWeight=1.93, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -896,35 +816,29 @@ G_M13079_IG26: ; bbWeight=1.93, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26 blr x3 ; gcrRegs -[x0-x1] ;; size=44 bbWeight=1.93 PerfScore 26.11
-G_M13079_IG27: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - b G_M13079_IG31
+G_M13079_IG20: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref + b G_M13079_IG29
;; size=4 bbWeight=2 PerfScore 2.00
-G_M13079_IG28: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M13079_IG21: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x26]
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #11 - bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS - movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #2 LSL #32
...

+4 (+0.35%) : 414146.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)

@@ -8,13 +8,13 @@ ; 3 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 5, 2 ) ref -> x21 class-hnd single-def <System.Reflection.MethodInfo>
+; V00 arg0 [V00,T20] ( 5, 2 ) ref -> x21 class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T11] ( 7, 8.21) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo[]> ; V02 arg2 [V02,T04] ( 9, 27.26) byref -> x19 single-def
-; V03 arg3 [V03,T22] ( 4, 2 ) ref -> x22 class-hnd single-def <System.String>
+; V03 arg3 [V03,T21] ( 4, 2 ) ref -> x22 class-hnd single-def <System.String>
; V04 loc0 [V04,T05] ( 8, 29.22) ref -> x22 class-hnd <<unknown class>> ; V05 loc1 [V05,T02] ( 14, 50 ) int -> x23
-; V06 loc2 [V06,T19] ( 3, 4.96) int -> x25
+; V06 loc2 [V06,T18] ( 3, 4.96) int -> x25
; V07 loc3 [V07,T07] ( 11, 25.74) ref -> x26 ld-addr-op class-hnd <System.Linq.Expressions.Expression> ; V08 loc4 [V08,T10] ( 3, 11.88) ref -> x27 class-hnd <System.Reflection.ParameterInfo> ; V09 loc5 [V09,T03] ( 13, 30.05) ref -> x27 class-hnd <System.Type> @@ -22,10 +22,10 @@ ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V13 tmp2 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Linq.Expressions.Expression>
-; V14 tmp3 [V14,T25] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp3 [V14,T24] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
-; V17 tmp6 [V17,T23] ( 2, 3.96) int -> x0 "guarded devirt return temp"
+; V17 tmp6 [V17,T22] ( 2, 3.96) int -> x0 "guarded devirt return temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> ;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V20 tmp9 [V20,T13] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" @@ -33,11 +33,11 @@ ; V22 tmp11 [V22,T14] ( 2, 7.92) ubyte -> x0 "Inline return value spill temp" ;* V23 tmp12 [V23,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V24 tmp13 [V24,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V25 tmp14 [V25,T18] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" -; V26 tmp15 [V26,T24] ( 2, 3.96) ubyte -> x2 "Inline return value spill temp" -; V27 tmp16 [V27,T17] ( 4, 5.94) ubyte -> x2 "Inline return value spill temp"
+; V25 tmp14 [V25,T17] ( 2, 3.96) ubyte -> x0 "Inline return value spill temp" +; V26 tmp15 [V26,T23] ( 2, 3.96) ubyte -> x2 "Inline return value spill temp" +; V27 tmp16 [V27,T19] ( 4, 4.46) ubyte -> x2 "Inline return value spill temp"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V29 tmp18 [V29,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V29 tmp18 [V29,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> @@ -73,7 +73,7 @@ G_M61964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.50 G_M61964_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=80000 {x19}, byref, isz ldr w0, [x20, #0x08]
- cbz w0, G_M61964_IG24
+ cbz w0, G_M61964_IG25
;; size=8 bbWeight=1 PerfScore 4.00 G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=80000 {x19}, byref, isz ldr w23, [x20, #0x08] @@ -88,7 +88,7 @@ G_M61964_IG03: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs blr x1 ; gcrRegs -[x0] cmp w23, w0
- bne G_M61964_IG26
+ bne G_M61964_IG27
mov x22, xzr mov w23, wzr ldr w25, [x20, #0x08] @@ -149,7 +149,7 @@ G_M61964_IG06: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, bl <unknown method> ; gcrRegs -[x0] cmp w0, #16
- beq G_M61964_IG27
+ beq G_M61964_IG28
;; size=16 bbWeight=1.98 PerfScore 5.94 G_M61964_IG07: ; bbWeight=3.96, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz mov x0, x27 @@ -255,7 +255,7 @@ G_M61964_IG13: ; bbWeight=3.96, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ;; size=12 bbWeight=3.96 PerfScore 7.92 G_M61964_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs -[x20-x21]
- cbz x22, G_M61964_IG25
+ cbz x22, G_M61964_IG26
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -294,7 +294,7 @@ G_M61964_IG16: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=C70 ldr x1, [x1, #0x18] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M61964_IG27
+ cbnz w0, G_M61964_IG28
b G_M61964_IG07 ;; size=24 bbWeight=1.98 PerfScore 18.81 G_M61964_IG17: ; bbWeight=1.98, gcVars=0000000000000040 {V21}, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, gcvars, byref, isz @@ -333,21 +333,15 @@ G_M61964_IG18: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x28, x1
- beq G_M61964_IG19 - mov w2, wzr - b G_M61964_IG22 - ;; size=40 bbWeight=1.98 PerfScore 11.88 -G_M61964_IG19: ; bbWeight=1.98, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs +[x0]
+ bne G_M61964_IG22
cmp x27, x0
- bne G_M61964_IG21 - ;; size=8 bbWeight=1.98 PerfScore 2.97 -G_M61964_IG20: ; bbWeight=1.63, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x0]
+ bne G_M61964_IG20 + ;; size=40 bbWeight=1.98 PerfScore 11.88 +G_M61964_IG19: ; bbWeight=1.63, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
mov w2, #1
- b G_M61964_IG22
+ b G_M61964_IG21
;; size=8 bbWeight=1.63 PerfScore 2.45
-G_M61964_IG21: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
+G_M61964_IG20: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref
; gcrRegs +[x0] mov x1, x27 ; gcrRegs +[x1] @@ -355,8 +349,8 @@ G_M61964_IG21: ; bbWeight=0.35, gcrefRegs=C700001 {x0 x20 x21 x22 x26 x27 ; gcrRegs -[x0-x1] sxtw w2, w0 ;; size=12 bbWeight=0.35 PerfScore 0.70
-G_M61964_IG22: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz - cbnz w2, G_M61964_IG23
+G_M61964_IG21: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz + cbnz w2, G_M61964_IG24
mov x0, x27 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E @@ -366,9 +360,16 @@ G_M61964_IG22: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ldr x2, [x2, #0x18] blr x2 ; gcrRegs -[x0]
- cbz w0, G_M61964_IG28
+ b G_M61964_IG23
;; size=36 bbWeight=1.98 PerfScore 21.78
+G_M61964_IG22: ; bbWeight=0.49, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref + mov w2, wzr + b G_M61964_IG21 + ;; size=8 bbWeight=0.49 PerfScore 0.74
G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz
+ cbz w0, G_M61964_IG29 + ;; size=4 bbWeight=1.98 PerfScore 1.98 +G_M61964_IG24: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, byrefRegs=80000 {x19}, byref, isz
mov x0, x27 ; gcrRegs +[x0] mov x1, x26 @@ -377,7 +378,7 @@ G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ldr x2, [x28, #0x08] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M61964_IG28
+ cbz w0, G_M61964_IG29
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Linq.Expressions.Expression:Quote(System.Linq.Expressions.Expression):System.Linq.Expressions.UnaryExpression @@ -390,7 +391,7 @@ G_M61964_IG23: ; bbWeight=1.98, gcrefRegs=C700000 {x20 x21 x22 x26 x27}, ; gcrRegs +[x26] b G_M61964_IG08 ;; size=56 bbWeight=1.98 PerfScore 30.69
-G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0 x20 x26] ldr x0, [x19] ; gcrRegs +[x0] @@ -404,9 +405,9 @@ G_M61964_IG24: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=800 ; gcrRegs -[x0] ; byrRegs -[x19] cmp w0, #0
- bgt G_M61964_IG29
+ bgt G_M61964_IG30
;; size=40 bbWeight=0.50 PerfScore 6.75
-G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61964_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x21-x22] ldp x27, x28, [sp, #0x60] ldp x25, x26, [sp, #0x50] @@ -416,7 +417,7 @@ G_M61964_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldp fp, lr, [sp], #0x70 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M61964_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22] mov x0, x21 ; gcrRegs +[x0] @@ -431,7 +432,7 @@ G_M61964_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=600000 bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61964_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -447,7 +448,7 @@ G_M61964_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=48 bbWeight=0 PerfScore 0.00
-G_M61964_IG28: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0000 {}, byref
+G_M61964_IG29: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x21 x26-x27] mov x0, x26 ; gcrRegs +[x0] @@ -482,7 +483,7 @@ G_M61964_IG28: ; bbWeight=0, gcrefRegs=C200000 {x21 x26 x27}, byrefRegs=0 bl CORINFO_HELP_THROW ; gcrRegs -[x0] ;; size=88 bbWeight=0 PerfScore 0.00
-G_M61964_IG29: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+G_M61964_IG30: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x21-x22] mov x0, x21 ; gcrRegs +[x0] @@ -499,7 +500,7 @@ G_M61964_IG29: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 { brk_unix #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1128, prolog size 28, PerfScore 800.26, instruction count 282, allocated bytes for code 1128 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
+; Total bytes of code 1132, prolog size 28, PerfScore 800.02, instruction count 283, allocated bytes for code 1132 (MethodHash=154b0df3) for method System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -510,7 +511,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 282 (0x0011a) Actual length = 1128 (0x000468)
+ Function Length : 283 (0x0011b) Actual length = 1132 (0x00046c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.osx.arm64.checked.mch

-20 (-11.11%) : 254963.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,27 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T01] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T00] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T01] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T00] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T02] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V05 PSPSym [V05,T03] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V05 PSPSym [V05,T03] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V05 PSPSym]
+ str x2, [fp, #0x18] // [V05 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -52,12 +51,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=60 bbWeight=8 PerfScore 168.00
+ ;; size=56 bbWeight=8 PerfScore 164.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -68,35 +64,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=24 bbWeight=4 PerfScore 24.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=32 bbWeight=8 PerfScore 64.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 32, PerfScore 261.00, instruction count 45, allocated bytes for code 180 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 160, prolog size 28, PerfScore 271.00, instruction count 40, allocated bytes for code 160 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +98,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,31 +106,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-24 (-4.65%) : 22481.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
@@ -9,10 +9,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -20,14 +20,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x3 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x11 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x3 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x11 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -41,30 +41,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x11 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -80,27 +80,27 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 tmp64 [V71,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V72 PSPSym [V72,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V73 cse0 [V73,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V74 cse1 [V74,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 tmp64 [V71,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V72 PSPSym [V72,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V73 cse0 [V73,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse1 [V74,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V75 cse2 [V75,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V72 PSPSym]
+ str x2, [fp, #0x38] // [V72 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -115,9 +115,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -127,9 +127,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x11, xzr ; byrRegs +[x11] @@ -156,15 +156,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0801 {x0 x1 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=36 bbWeight=4 PerfScore 36.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -196,13 +196,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -218,9 +214,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=56 bbWeight=8 PerfScore 168.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -236,9 +232,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 blr x12 ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=40 bbWeight=1 PerfScore 9.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -249,31 +245,29 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] blr x1 ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ...

-24 (-2.87%) : 20531.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)

@@ -9,74 +9,75 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> x1 "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T22] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T24] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T26] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T24] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T23] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T28] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T26] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T25] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T25] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T21] ( 2, 4 ) int -> x2 "argument with side effect"
+;* V41 tmp32 [V41,T29] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T27] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T23] ( 2, 4 ) int -> x2 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V46 PSPSym [V46,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V47 cse0 [V47,T09] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V48 cse1 [V48,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
+; V46 PSPSym [V46,T30] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V47 cse0 [V47,T13] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V48 cse1 [V48,T09] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V49 cse2 [V49,T14] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V50 cse3 [V50,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - stp x23, x24, [sp, #0x58] - str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- add x3, sp, #112 - str x3, [fp, #0x30] // [V46 PSPSym] - str x0, [fp, #0x20] // [V00 arg0]
+ add x3, sp, #96 + str x3, [fp, #0x28] // [V46 PSPSym] + str x0, [fp, #0x18] // [V00 arg0]
; GC ptr vars +{V00} mov w19, w1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 8.00 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr @@ -96,7 +97,7 @@ G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 20.00 G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] ldr w1, [x0, #0x10] cmp w1, #0 @@ -118,7 +119,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 25.50 G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- str wzr, [fp, #0x2C] // [V03 loc0]
+ str wzr, [fp, #0x24] // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -127,7 +128,7 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
ldr w22, [x0, #0x10] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,11 +169,11 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=132 bbWeight=1 PerfScore 46.00 G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref str w22, [x21, #0x1C]
- str x21, [fp, #0x18] // [V04 loc1]
+ str x21, [fp, #0x10] // [V04 loc1]
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref - ldr x0, [fp, #0x20] // [V00 arg0]
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x22, x0 ; gcrRegs +[x22] @@ -232,12 +233,12 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=56 bbWeight=4 PerfScore 92.00 G_M12834_IG09: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG12
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG11
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG13
+ bhs G_M12834_IG12
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w11, [x1, #0x08] @@ -269,12 +270,8 @@ G_M12834_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG11 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov x2, x20 @@ -286,56 +283,54 @@ G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x20] ; gcr arg pop 0
- str w0, [fp, #0x2C] // [V03 loc0]
+ str w0, [fp, #0x24] // [V03 loc0]
;; size=32 bbWeight=8 PerfScore 60.00
-G_M12834_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V46 PSPSym] - bl G_M12834_IG18
+G_M12834_IG13: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x28] // [V46 PSPSym] + bl G_M12834_IG17
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG15: ; bbWeight=1, nogc, extend
+G_M12834_IG14: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0]
+ ldr w0, [fp, #0x24] // [V03 loc0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x68] - ldp x23, x24, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x70
+G_M12834_IG16: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M12834_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48] - add x3, fp, #112 - str x3, [sp, #0x10] - ;; size=28 bbWeight=1 PerfScore 6.50 -G_M12834_IG19: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + add x3, fp, #96 + str x3, [sp, #0x18] + ;; size=24 bbWeight=1 PerfScore 5.50 +G_M12834_IG18: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0] - cbnz w0, G_M12834_IG24 - ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr w0, [fp, #0x24] // [V03 loc0] + cbnz w0, G_M12834_IG23 + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] ...

+0 (0.00%) : 243245.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)

@@ -10,36 +10,36 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T26] ( 4, 4 ) int -> x24 single-def
-; V01 arg1 [V01,T14] ( 4, 35 ) int -> x19 single-def -; V02 arg2 [V02,T16] ( 3, 34 ) int -> x21 single-def -; V03 arg3 [V03 ] ( 5, 354 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def -; V04 arg4 [V04,T24] ( 3, 6 ) ref -> x23 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> -; V05 arg5 [V05,T15] ( 3, 34 ) ref -> x20 class-hnd single-def <ReadyToRunJittedMethods> -; V06 arg6 [V06,T23] ( 7, 8.50) int -> x22 single-def -; V07 loc0 [V07,T22] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
+; V01 arg1 [V01,T20] ( 4, 7 ) int -> x20 single-def +; V02 arg2 [V02,T23] ( 3, 6 ) int -> x23 single-def +; V03 arg3 [V03 ] ( 5, 326 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def +; V04 arg4 [V04,T21] ( 3, 6 ) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> +; V05 arg5 [V05,T22] ( 3, 6 ) ref -> x22 class-hnd single-def <ReadyToRunJittedMethods> +; V06 arg6 [V06,T19] ( 7, 8.50) int -> x19 single-def +; V07 loc0 [V07,T18] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
; V08 loc1 [V08,T07] ( 8, 125.50) ref -> x26 class-hnd exact single-def <<unknown class>>
-; V09 loc2 [V09 ] ( 4, 353 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op -; V10 loc3 [V10,T20] ( 3, 24 ) ubyte -> x22 -; V11 loc4 [V11,T21] ( 12, 21.04) int -> x27 -; V12 loc5 [V12,T10] ( 7, 134 ) int -> x24 -; V13 loc6 [V13,T17] ( 2, 36 ) ref -> x22 class-hnd <ProcessInfo> -; V14 loc7 [V14,T06] ( 4, 196 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> -;* V15 loc8 [V15,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V09 loc2 [V09 ] ( 4, 325 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op +; V10 loc3 [V10,T15] ( 3, 24 ) ubyte -> x19 +; V11 loc4 [V11,T17] ( 12, 21.04) int -> x27 +; V12 loc5 [V12,T16] ( 7, 22 ) int -> x24 +; V13 loc6 [V13,T24] ( 2, 8 ) ref -> x19 class-hnd <ProcessInfo> +; V14 loc7 [V14,T06] ( 4, 168 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> +;* V15 loc8 [V15,T14] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V16 loc9 [V16,T04] ( 5, 288 ) int -> x28 ; V17 loc10 [V17,T01] ( 5, 768 ) ref -> [fp+0x10] class-hnd spill-single-def <ParallelRunner+ProcessSlot> ;* V18 loc11 [V18,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V19 loc12 [V19,T12] ( 5, 72 ) int -> x24
+; V19 loc12 [V19,T11] ( 5, 72 ) int -> x24
; V20 loc13 [V20,T09] ( 4, 160 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T27] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
-; V23 tmp2 [V23,T18] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
+; V23 tmp2 [V23,T13] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
;* V24 tmp3 [V24,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp4 [V25,T00] ( 4,2048 ) ref -> x27 class-hnd "Inlining Arg" <ProcessRunner>
-;* V26 tmp5 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x19 class-hnd "Inlining Arg" <ProcessRunner>
+;* V26 tmp5 [V26,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x20 class-hnd "Inlining Arg" <ProcessRunner>
; V28 PSPSym [V28,T28] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T03] ( 3, 384 ) ref -> x0 "CSE - aggressive"
-; V30 cse1 [V30,T11] ( 3, 96 ) ref -> x0 "CSE - aggressive"
+; V30 cse1 [V30,T10] ( 3, 96 ) ref -> x0 "CSE - aggressive"
; V31 cse2 [V31,T08] ( 9, 161.04) int -> [fp+0x24] multi-def "CSE - aggressive" ; ; Lcl frame size = 48 @@ -57,15 +57,15 @@ G_M64833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x7, [fp, #0x38] // [V28 PSPSym] str w3, [fp, #0x34] // [V03 arg3] mov w24, w0
- mov w19, w1 - mov w21, w2 - mov x23, x4 - ; gcrRegs +[x23] - mov x20, x5 - ; gcrRegs +[x20] - mov w22, w6
+ mov w20, w1 + mov w23, w2 + mov x21, x4 + ; gcrRegs +[x21] + mov x22, x5 + ; gcrRegs +[x22] + mov w19, w6
;; size=68 bbWeight=1 PerfScore 13.00
-G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+G_M64833_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -84,8 +84,8 @@ G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 { str x25, [fp, #0x18] // [V07 loc0] ; GC ptr vars +{V07} ;; size=44 bbWeight=1 PerfScore 12.00
-G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw x0, w22
+G_M64833_IG03: ; bbWeight=1, gcVars=0000000000040000 {V07}, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=0000 {}, gcvars, byref, isz + sxtw x0, w19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -95,16 +95,16 @@ G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=290 mov x26, x0 ; gcrRegs +[x26] mov w27, wzr
- cmp w22, #0
+ cmp w19, #0
ble G_M64833_IG06 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w28, [x26, #0x08]
- cmp w28, w22
+ cmp w28, w19
blt G_M64833_IG14 ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -134,16 +134,16 @@ G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG05 ;; size=84 bbWeight=3.96 PerfScore 83.16
-G_M64833_IG06: ; bbWeight=1, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG06: ; bbWeight=1, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
str w24, [fp, #0x28] // [V09 loc2]
- cmp w24, w19
+ cmp w24, w20
bge G_M64833_IG19 ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref - mov x0, x23
+G_M64833_IG07: ; bbWeight=4, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref + mov x0, x21
; gcrRegs +[x0] mov w1, w24 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -152,12 +152,12 @@ G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRe ldr x2, [x11] blr x2 ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x19, x0 + ; gcrRegs +[x19]
mov x27, xzr ; gcrRegs +[x27] ;; size=36 bbWeight=4 PerfScore 40.00
-G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG08: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov w28, wzr ldr w0, [x26, #0x08] @@ -166,7 +166,7 @@ G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} cmp w3, #0 ble G_M64833_IG11 ;; size=24 bbWeight=32 PerfScore 208.00
-G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG09: ; bbWeight=64, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add x0, x26, #16 ; byrRegs +[x0] ldr x4, [x0, w28, UXTW #3] @@ -178,17 +178,17 @@ G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} ; byrRegs -[x0] cbnz x0, G_M64833_IG15 ;; size=20 bbWeight=64 PerfScore 544.00
-G_M64833_IG10: ; bbWeight=128, gcVars=0000000000400002 {V07 V17}, gcrefRegs=6D00010 {x4 x20 x22 x23 x25 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M64833_IG10: ; bbWeight=128, gcVars=0000000000040002 {V07 V17}, gcrefRegs=6680010 {x4 x19 x21 x22 x25 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x27] mov x27, x4 ; gcrRegs +[x27] ;; size=4 bbWeight=128 PerfScore 64.00
-G_M64833_IG11: ; bbWeight=32, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG11: ; bbWeight=32, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] ; GC ptr vars -{V17} cbnz x27, G_M64833_IG18 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG12: ; bbWeight=8, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -201,15 +201,15 @@ G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, b G_M64833_IG08 ;; size=28 bbWeight=8 PerfScore 56.00 G_M64833_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22-x23 x25-x27]
+ ; gcrRegs -[x19 x21-x22 x25-x27]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] blr x0 ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20 x23 x25-x26]
+G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x21-x22 x25-x26]
adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -241,12 +241,12 @@ G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG14 b G_M64833_IG06 ;; size=96 bbWeight=0.04 PerfScore 0.94
-G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRegs=ED00011 {x0 x4 x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x4 x22 x27]
+G_M64833_IG15: ; bbWeight=256, gcVars=0000000000040002 {V07 V17}, gcrefRegs=E680011 {x0 x4 x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0 x4 x19 x27]
; GC ptr vars +{V01 V17} add x2, fp, #52 // [V03 arg3] add x1, fp, #40 // [V09 loc2] @@ -283,7 +283,7 @@ G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRe ; gcrRegs +[x4] b G_M64833_IG10 ;; size=96 bbWeight=256 PerfScore 8064.00
-G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG16: ; bbWeight=64, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4 x28] +[x27] ; GC ptr vars -{V01 V17} add w28, w28, #1 @@ -292,33 +292,33 @@ G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED str w2, [fp, #0x24] // [V31 cse2] bgt G_M64833_IG09 ;; size=20 bbWeight=64 PerfScore 320.00
-G_M64833_IG17: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG17: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
b G_M64833_IG11 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG18: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG18: ; bbWeight=4, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add w3, w24, #1 mov x0, x27 ; gcrRegs +[x0] ldr w6, [fp, #0x34] // [V03 arg3]
- mov x1, x22
+ mov x1, x19
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x22
; gcrRegs +[x2]
- mov w4, w21
+ mov w4, w23
ldr w5, [fp, #0x28] // [V09 loc2] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x7, [x11] ...

+8 (+0.09%) : 22066.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

@@ -23,9 +23,9 @@ ;* V11 loc10 [V11 ] ( 0, 0 ) int -> zero-ref ptr ;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr <System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo> ; V13 loc12 [V13,T63] ( 5, 14 ) ref -> x24 class-hnd <System.String>
-; V14 loc13 [V14,T90] ( 3, 8 ) ubyte -> x25 -; V15 loc14 [V15,T82] ( 4, 10 ) ref -> x26 class-hnd <System.String> -; V16 loc15 [V16,T87] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
+; V14 loc13 [V14,T89] ( 3, 8 ) ubyte -> x25 +; V15 loc14 [V15,T81] ( 4, 10 ) ref -> x26 class-hnd <System.String> +; V16 loc15 [V16,T86] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
; V17 loc16 [V17,T148] ( 2, 4 ) int -> x24 ld-addr-op ;* V18 loc17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ptr <System.Collections.Generic.List`1[int]> ;* V19 loc18 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> @@ -34,7 +34,7 @@ ; V22 loc21 [V22,T23] ( 7, 28 ) ref -> x21 class-hnd <System.Type> ; V23 loc22 [V23,T58] ( 3, 16 ) ubyte -> x22 ; V24 loc23 [V24,T51] ( 7, 16 ) ref -> x23 class-hnd <System.String>
-; V25 loc24 [V25,T92] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
+; V25 loc24 [V25,T91] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
; V26 loc25 [V26,T59] ( 3, 16 ) ubyte -> x25 ; V27 loc26 [V27,T32] ( 3, 24 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]> ; V28 loc27 [V28,T06] ( 5, 68 ) int -> x26 @@ -50,22 +50,22 @@ ;* V38 loc37 [V38 ] ( 0, 0 ) long -> zero-ref ld-addr-op ptr ; V39 loc38 [V39 ] ( 2, 4 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op ptr ;* V40 loc39 [V40 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V41 loc40 [V41,T83] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> -; V42 loc41 [V42,T48] ( 5, 17 ) int -> x22
+; V41 loc40 [V41,T82] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V42 loc41 [V42,T49] ( 5, 17 ) int -> x22
; V43 loc42 [V43,T64] ( 5, 14 ) ref -> x23 class-hnd exact <System.String>
-; V44 loc43 [V44,T84] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
+; V44 loc43 [V44,T83] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
;# V45 OutArgs [V45 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V46 tmp1 [V46 ] ( 1, 1 ) struct (32) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V47 tmp2 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V48 tmp3 [V48,T106] ( 4, 6 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V49 tmp4 [V49 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V50 tmp5 [V50,T80] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V50 tmp5 [V50,T79] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
; V51 tmp6 [V51,T70] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V52 tmp7 [V52 ] ( 0, 0 ) ref -> zero-ref ptr
-; V53 tmp8 [V53,T38] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> -; V54 tmp9 [V54,T39] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V53 tmp8 [V53,T39] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> +; V54 tmp9 [V54,T40] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V55 tmp10 [V55 ] ( 0, 0 ) ref -> zero-ref ptr
-; V56 tmp11 [V56,T45] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V56 tmp11 [V56,T46] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V57 tmp12 [V57 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V58 tmp13 [V58,T107] ( 4, 6 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V59 tmp14 [V59 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -116,18 +116,18 @@ ; V104 tmp59 [V104,T126] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ulong]> ; V105 tmp60 [V105,T71] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V106 tmp61 [V106 ] ( 0, 0 ) ref -> zero-ref ptr
-; V107 tmp62 [V107,T40] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V107 tmp62 [V107,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
;* V108 tmp63 [V108 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[ushort]> ;* V109 tmp64 [V109 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V110 tmp65 [V110,T14] ( 8, 32 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V111 tmp66 [V111 ] ( 0, 0 ) ref -> zero-ref ptr ;* V112 tmp67 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "impAppendStmt" <System.Text.StringBuilder> ;* V113 tmp68 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp69 [V114,T46] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V114 tmp69 [V114,T47] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V115 tmp70 [V115 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V116 tmp71 [V116,T136] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V117 tmp72 [V117 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V118 tmp73 [V118,T88] ( 3, 8 ) ref -> x23
+; V118 tmp73 [V118,T87] ( 3, 8 ) ref -> x23
; V119 tmp74 [V119,T11] ( 8, 40 ) ref -> x24 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V120 tmp75 [V120 ] ( 0, 0 ) ref -> zero-ref ptr ;* V121 tmp76 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "non-inline candidate call" <System.Text.StringBuilder> @@ -156,10 +156,10 @@ ; V144 tmp99 [V144,T127] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]> ; V145 tmp100 [V145,T73] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V146 tmp101 [V146 ] ( 0, 0 ) ref -> zero-ref ptr
-; V147 tmp102 [V147,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V147 tmp102 [V147,T42] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
; V148 tmp103 [V148,T53] ( 4, 16 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V149 tmp104 [V149 ] ( 0, 0 ) ref -> zero-ref ptr
-; V150 tmp105 [V150,T47] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V150 tmp105 [V150,T48] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V151 tmp106 [V151 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V152 tmp107 [V152,T139] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V153 tmp108 [V153 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -175,8 +175,8 @@ ;* V163 tmp118 [V163 ] ( 0, 0 ) ref -> zero-ref ptr ;* V164 tmp119 [V164 ] ( 0, 0 ) ref -> zero-ref ;* V165 tmp120 [V165 ] ( 0, 0 ) ref -> zero-ref ptr
-; V166 tmp121 [V166,T81] ( 5, 10 ) ref -> x2 -; V167 tmp122 [V167,T42] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V166 tmp121 [V166,T80] ( 5, 10 ) ref -> x2 +; V167 tmp122 [V167,T43] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V168 tmp123 [V168 ] ( 0, 0 ) ref -> zero-ref ptr ; V169 tmp124 [V169,T74] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <<unknown class>> ; V170 tmp125 [V170,T75] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> @@ -186,7 +186,7 @@ ; V174 tmp129 [V174,T141] ( 4, 4 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V175 tmp130 [V175,T152] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V176 tmp131 [V176,T164] ( 2, 2 ) struct (40) [fp+0x60] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]>
-; V177 tmp132 [V177,T85] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V177 tmp132 [V177,T84] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V178 tmp133 [V178,T66] ( 4, 12 ) int -> x15 "Inline stloc first use temp" ; V179 tmp134 [V179,T165] ( 2, 2 ) struct (32) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]]> ;* V180 tmp135 [V180 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> @@ -195,7 +195,7 @@ ;* V183 tmp138 [V183 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V184 tmp139 [V184,T28] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V185 tmp140 [V185,T55] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V186 tmp141 [V186,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V186 tmp141 [V186,T96] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V187 tmp142 [V187 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V188 tmp143 [V188 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]> ;* V189 tmp144 [V189 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Type]> @@ -229,7 +229,7 @@ ;* V217 tmp172 [V217 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V218 tmp173 [V218,T29] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V219 tmp174 [V219,T57] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V220 tmp175 [V220,T98] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V220 tmp175 [V220,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V221 tmp176 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V222 tmp177 [V222 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ulong]> ; V223 tmp178 [V223,T30] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> @@ -239,10 +239,10 @@ ;* V227 tmp182 [V227 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V228 tmp183 [V228 ] ( 0, 0 ) int -> zero-ref ;* V229 tmp184 [V229 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V230 tmp185 [V230,T99] ( 2, 8 ) long -> x0 "Inlining Arg"
+; V230 tmp185 [V230,T98] ( 2, 8 ) long -> x0 "Inlining Arg"
;* V231 tmp186 [V231 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V232 tmp187 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V233 tmp188 [V233,T43] ( 5, 20 ) int -> x24 "Inlining Arg"
+; V233 tmp188 [V233,T44] ( 5, 20 ) int -> x24 "Inlining Arg"
;* V234 tmp189 [V234 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V235 tmp190 [V235 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V236 tmp191 [V236 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -255,7 +255,7 @@ ;* V243 tmp198 [V243 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V244 tmp199 [V244 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V245 tmp200 [V245 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V246 tmp201 [V246,T100] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V246 tmp201 [V246,T99] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V247 tmp202 [V247 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[ulong]> ;* V248 tmp203 [V248 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> ; V249 tmp204 [V249,T122] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -265,8 +265,8 @@ ;* V253 tmp208 [V253,T179] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V254 tmp209 [V254 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V255 tmp210 [V255 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V256 tmp211 [V256,T89] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP -; V257 tmp212 [V257,T91] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
+; V256 tmp211 [V256,T88] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP +; V257 tmp212 [V257,T90] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
; V258 tmp213 [V258,T27] ( 7, 24 ) ref -> x22 "field V10.value (fldOffset=0x0)" P-INDEP ; V259 tmp214 [V259,T123] ( 2, 6 ) int -> x23 "field V10.key (fldOffset=0x8)" P-INDEP ; V260 tmp215 [V260,T65] ( 4, 12.50) ref -> x21 single-def "field V19._list (fldOffset=0x0)" P-INDEP @@ -279,9 +279,9 @@ ; V267 tmp222 [V267 ] ( 3, 5 ) int -> [fp+0xAC] do-not-enreg[X] addr-exposed ptr "field V21._version (fldOffset=0x14)" P-DEP ;* V268 tmp223 [V268 ] ( 0, 0 ) byref -> zero-ref ptr "field V33._reference (fldOffset=0x0)" P-INDEP ;* V269 tmp224 [V269 ] ( 0, 0 ) int -> zero-ref ptr "field V33._length (fldOffset=0x8)" P-INDEP
-; V270 tmp225 [V270,T49] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
+; V270 tmp225 [V270,T38] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
; V271 tmp226 [V271,T24] ( 6, 21 ) int -> x23 "field V34._index (fldOffset=0x8)" P-INDEP
-; V272 tmp227 [V272,T86] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
+; V272 tmp227 [V272,T85] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
; V273 tmp228 [V273,T68] ( 3, 8 ) int -> x24 "field V34._current (fldOffset=0x10)" P-INDEP ; V274 tmp229 [V274,T50] ( 4, 12.50) ref -> x21 single-def "field V37._list (fldOffset=0x0)" P-INDEP ; V275 tmp230 [V275,T69] ( 3, 8 ) long -> x24 "field V37._current (fldOffset=0x8)" P-INDEP @@ -360,7 +360,7 @@ ; V348 tmp303 [V348,T178] ( 2, 1 ) int -> x1 "V179.[012..016)" ; V349 tmp304 [V349,T77] ( 3, 12 ) byref -> x0 "BlockOp address local" ; V350 tmp305 [V350,T160] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V351 tmp306 [V351,T93] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V351 tmp306 [V351,T92] ( 2, 8 ) ref -> x0 "argument with side effect"
; V352 tmp307 [V352,T161] ( 2, 2 ) ref -> x1 single-def "argument with side effect" ; V353 tmp308 [V353,T33] ( 3, 24 ) ref -> x1 "arr expr" ; V354 tmp309 [V354,T62] ( 2, 16 ) ref -> x1 "argument with side effect" @@ -369,9 +369,9 @@ ; V357 tmp312 [V357,T18] ( 2, 32 ) ref -> x4 "argument with side effect" ; V358 tmp313 [V358,T19] ( 2, 32 ) ref -> [fp+0x18] spill-single-def ptr "argument with side effect" ; V359 tmp314 [V359,T20] ( 2, 32 ) ref -> x25 "argument with side effect"
-; V360 tmp315 [V360,T94] ( 2, 8 ) ref -> x0 "argument with side effect" -; V361 tmp316 [V361,T95] ( 2, 8 ) ref -> x3 "argument with side effect" -; V362 tmp317 [V362,T96] ( 2, 8 ) ref -> x22 "argument with side effect"
+; V360 tmp315 [V360,T93] ( 2, 8 ) ref -> x0 "argument with side effect" +; V361 tmp316 [V361,T94] ( 2, 8 ) ref -> x3 "argument with side effect" +; V362 tmp317 [V362,T95] ( 2, 8 ) ref -> x22 "argument with side effect"
; V363 tmp318 [V363,T146] ( 2, 4 ) ref -> x1 single-def "argument with side effect" ; V364 tmp319 [V364,T34] ( 3, 24 ) ref -> x1 "arr expr" ; V365 tmp320 [V365,T162] ( 2, 2 ) ref -> x1 single-def "argument with side effect" @@ -383,9 +383,9 @@ ; V371 cse1 [V371,T04] ( 18, 72 ) ref -> x0 multi-def "CSE - aggressive" ; V372 cse2 [V372,T130] ( 3, 5 ) long -> x22 "CSE - conservative" ; V373 cse3 [V373,T131] ( 3, 5 ) long -> x21 "CSE - conservative"
-; V374 cse4 [V374,T44] ( 3, 20 ) long -> x1 "CSE - moderate" -; V375 cse5 [V375,T78] ( 2, 8 ) int -> x1 "CSE - conservative" -; V376 cse6 [V376,T79] ( 2, 8 ) int -> x1 "CSE - conservative"
+; V374 cse4 [V374,T45] ( 3, 20 ) long -> x1 "CSE - moderate" +; V375 cse5 [V375,T100] ( 2, 8 ) int -> x1 "CSE - conservative" +; V376 cse6 [V376,T78] ( 2, 8 ) int -> x1 "CSE - conservative"
; V377 cse7 [V377,T36] ( 3, 24 ) int -> x27 "CSE - moderate" ; V378 cse8 [V378,T00] (149,220 ) long -> [fp+0x38] multi-def "CSE - aggressive" ; @@ -1802,6 +1802,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 str x0, [fp, #0x20] // [V356 tmp311] @@ -1889,7 +1890,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by blr x3 ; gcrRegs -[x0 x25] ; byrRegs -[x1]
- ;; size=260 bbWeight=8 PerfScore 684.00
+ ;; size=264 bbWeight=8 PerfScore 708.00
G_M21650_IG68: ; bbWeight=8, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=100000 {x20}, byref mov w25, #1 ;; size=4 bbWeight=8 PerfScore 4.00 @@ -1930,6 +1931,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 ; gcrRegs -[x21] @@ -2000,7 +2002,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 blr x3 ; gcrRegs -[x0 x21] ; byrRegs -[x1]
- ;; size=212 bbWeight=2 PerfScore 144.00
+ ;; size=216 bbWeight=2 PerfScore 150.00
G_M21650_IG73: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref, isz ldr x21, [x19, #0x38] ; gcrRegs +[x21] @@ -3761,7 +3763,7 @@ G_M21650_IG150: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8476, prolog size 80, PerfScore 5811.50, instruction count 2119, allocated bytes for code 8476 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
+; Total bytes of code 8484, prolog size 80, PerfScore 5841.50, instruction count 2121, allocated bytes for code 8484 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -3772,7 +3774,7 @@ Unwind Info: E bit : 0 ...

+12 (+0.54%) : 200009.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -9,54 +9,55 @@ ; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T15] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T16] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T07] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T13] ( 6, 19.50) int -> x22 single-def -; V03 arg3 [V03,T10] ( 8, 29.50) ubyte -> x20 single-def -; V04 arg4 [V04,T30] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T12] ( 4, 20 ) int -> x21 single-def -; V06 arg6 [V06,T31] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T32] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> -; V08 arg8 [V08,T40] ( 1, 1 ) ubyte -> [fp+0xD0] single-def -; V09 arg9 [V09,T16] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> -; V10 arg10 [V10,T33] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T28] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T14] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T27] ( 5, 5.50) ubyte -> [fp+0x7C] -; V14 loc3 [V14,T29] ( 3, 5 ) int -> x26 single-def
+; V02 arg2 [V02,T14] ( 6, 19.50) int -> x22 single-def +; V03 arg3 [V03,T13] ( 7, 21.50) ubyte -> x21 single-def +; V04 arg4 [V04,T31] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T12] ( 4, 20 ) int -> x20 single-def +; V06 arg6 [V06,T32] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T33] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> +; V08 arg8 [V08,T41] ( 1, 1 ) ubyte -> [fp+0xD0] single-def +; V09 arg9 [V09,T17] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> +; V10 arg10 [V10,T34] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T29] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T15] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T28] ( 5, 5.50) ubyte -> [fp+0x7C] +; V14 loc3 [V14,T30] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T11] ( 6, 24.50) int -> x27
-; V16 loc5 [V16,T02] ( 15, 82 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V16 loc5 [V16,T02] ( 15, 74 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V17 loc6 [V17,T08] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> ; V18 loc7 [V18,T09] ( 9, 32 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> ; V19 loc8 [V19,T00] ( 8, 84 ) int -> [fp+0x78] ; V20 loc9 [V20,T01] ( 8, 84 ) int -> [fp+0x74]
-;* V21 loc10 [V21,T37] ( 0, 0 ) int -> zero-ref -; V22 loc11 [V22,T06] ( 4, 50 ) int -> [fp+0x70]
+;* V21 loc10 [V21,T38] ( 0, 0 ) int -> zero-ref +; V22 loc11 [V22,T05] ( 4, 50 ) int -> [fp+0x70]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T17] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V28 tmp2 [V28,T19] ( 8, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T18] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V28 tmp2 [V28,T20] ( 8, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V29 tmp3 [V29 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V30 tmp4 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V31 tmp5 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V32 tmp6 [V32,T18] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V33 tmp7 [V33,T38] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V34 tmp8 [V34,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V35 tmp9 [V35,T34] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> -; V36 tmp10 [V36,T25] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V37 tmp11 [V37,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V38 tmp12 [V38,T36] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> -; V39 tmp13 [V39,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V32 tmp6 [V32,T19] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V33 tmp7 [V33,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V34 tmp8 [V34,T40] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V35 tmp9 [V35,T35] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> +; V36 tmp10 [V36,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V37 tmp11 [V37,T27] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V38 tmp12 [V38,T37] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> +; V39 tmp13 [V39,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V40 tmp14 [V40,T03] ( 2, 64 ) ref -> x1 "argument with side effect" ; V41 tmp15 [V41,T04] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V42 tmp16 [V42,T23] ( 2, 8 ) int -> x3 "argument with side effect" -; V43 tmp17 [V43,T24] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" -; V44 tmp18 [V44,T20] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V45 tmp19 [V45,T21] ( 2, 8 ) ref -> x0 "argument with side effect" -; V46 tmp20 [V46,T22] ( 2, 8 ) ref -> x0 "argument with side effect" -; V47 cse0 [V47,T05] ( 5, 52 ) int -> x4 multi-def "CSE - aggressive"
+; V42 tmp16 [V42,T24] ( 2, 8 ) int -> x3 "argument with side effect" +; V43 tmp17 [V43,T25] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" +; V44 tmp18 [V44,T21] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" +; V45 tmp19 [V45,T22] ( 2, 8 ) ref -> x0 "argument with side effect" +; V46 tmp20 [V46,T23] ( 2, 8 ) ref -> x0 "argument with side effect" +; V47 cse0 [V47,T10] ( 5, 28 ) int -> x4 multi-def "CSE - aggressive" +; V48 cse1 [V48,T06] ( 5, 44 ) int -> [fp+0x50] multi-def "CSE - aggressive"
; TEMP_01 ref -> [fp+0x18] ; ; Lcl frame size = 128 @@ -78,10 +79,10 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] mov w22, w2
- mov w20, w3
+ mov w21, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w21, w5
+ mov w20, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -96,7 +97,7 @@ G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 tst w0, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000020000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -167,7 +168,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x19] ; byrRegs -[x14] str w22, [x1, #0x48]
- strb w20, [x1, #0x4C]
+ strb w21, [x1, #0x4C]
mov w14, #1 strb w14, [x1, #0x4F] add x14, x1, #8 @@ -229,7 +230,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=11080000 {x19 x24 x28}, byrefRe ; GC ptr vars +{V11} mov x19, x25 ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000010004000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000020008000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x23, G_M30168_IG06 mov x0, x23 @@ -306,7 +307,7 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ; GC ptr vars +{V16} cbz x1, G_M30168_IG35 ;; size=36 bbWeight=4 PerfScore 34.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000000010004004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000000020008004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x2, [x1, #0x18] ; gcrRegs +[x2] @@ -349,7 +350,7 @@ G_M30168_IG10: ; bbWeight=2, gcrefRegs=11880100 {x8 x19 x23 x24 x28}, byr mov w13, wzr mov w14, #1 str w14, [fp, #0x70] // [V22 loc11]
- cmp w21, #0
+ cmp w20, #0
ble G_M30168_IG26 ;; size=40 bbWeight=2 PerfScore 21.00 G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz @@ -382,7 +383,9 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x6, fp, #104 // [V23 loc12] str x6, [sp, #0x08] // [V26 OutArgs+0x08] ldrb w6, [x9, #0x4C]
- uxtb w3, w20
+ uxtb w15, w21 + str w15, [fp, #0x50] // [V48 cse1] + mov w3, w15
add x7, fp, #96 // [V24 loc13] ldr x2, [fp, #0x40] // [V12 loc1] ; gcrRegs +[x2] @@ -394,8 +397,8 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x11, x11, [LOW RELOC #0xD1FFAB1E] mov x0, xzr ; gcrRegs +[x0]
- ldr x15, [x11] - blr x15
+ ldr xip0, [x11] + blr xip0
; gcrRegs -[x0-x2 x4-x5 x8-x9 x12] ldrb w0, [fp, #0x68] // [V23 loc12] ldrb w11, [fp, #0x60] // [V24 loc13] @@ -406,11 +409,11 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, ldr w1, [fp, #0x78] // [V19 loc8] cmp w1, w22 bne G_M30168_IG13
- ;; size=160 bbWeight=16 PerfScore 808.00
+ ;; size=168 bbWeight=16 PerfScore 832.00
G_M30168_IG12: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- tst w20, #255 - bne G_M30168_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00
+ ldr w2, [fp, #0x50] // [V48 cse1] + cbnz w2, G_M30168_IG14 + ;; size=8 bbWeight=8 PerfScore 24.00
G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz adds w1, w1, #1 bvs G_M30168_IG43 @@ -418,48 +421,48 @@ G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ldr w1, [fp, #0x78] // [V19 loc8] ;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG14: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2] - ldr w0, [x2, #0x48] - ldr w3, [fp, #0x74] // [V20 loc9] - cmp w3, w0
+ ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3] + ldr w0, [x3, #0x48] + ldr w4, [fp, #0x74] // [V20 loc9] + cmp w4, w0
bne G_M30168_IG17 ;; size=20 bbWeight=16 PerfScore 136.00
-G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - ldrb w0, [x2, #0x4C]
+G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x3, #0x4C]
cbnz w0, G_M30168_IG18 ;; size=8 bbWeight=8 PerfScore 32.00 G_M30168_IG16: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] - ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2]
+ ; gcrRegs -[x3] + ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3]
;; size=4 bbWeight=4 PerfScore 8.00
-G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - adds w3, w3, #1
+G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + adds w4, w4, #1
bvs G_M30168_IG43
- str w3, [fp, #0x74] // [V20 loc9] - ldr w3, [fp, #0x74] // [V20 loc9]
+ str w4, [fp, #0x74] // [V20 loc9] + ldr w4, [fp, #0x74] // [V20 loc9]
;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG18: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ ; gcrRegs -[x3]
ldr w0, [fp, #0x70] // [V22 loc11] adds w0, w0, #1 bvs G_M30168_IG43
- cmp w0, w21
+ cmp w0, w20
str w0, [fp, #0x70] // [V22 loc11] ble G_M30168_IG25 ;; size=24 bbWeight=16 PerfScore 96.00
-G_M30168_IG19: ; bbWeight=8, gcVars=0000000010004204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M30168_IG19: ; bbWeight=8, gcVars=0000000020008204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- stp w3, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
+ stp w4, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
;; size=4 bbWeight=8 PerfScore 8.00 G_M30168_IG20: ; bbWeight=2, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x4, [x11] - blr x4
+ ldr x2, [x11]
...

libraries.pmi.osx.arm64.checked.mch

-20 (-11.90%) : 297351.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T02] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> x0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -18,22 +18,21 @@ ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP
-; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V10 PSPSym]
+ str x2, [fp, #0x18] // [V10 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref str xzr, [x19, #0x08] ldr x0, [x20, #0x18] @@ -49,12 +48,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=44 bbWeight=8 PerfScore 112.00
+ ;; size=40 bbWeight=8 PerfScore 108.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -66,35 +62,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=36 bbWeight=8 PerfScore 68.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 32, PerfScore 207.00, instruction count 42, allocated bytes for code 168 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 219.00, instruction count 37, allocated bytes for code 148 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -113,31 +104,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-40 (-7.94%) : 239167.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
@@ -8,57 +8,59 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 10, 68 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> -; V01 arg1 [V01,T11] ( 4, 18 ) byref -> x20 single-def -; V02 arg2 [V02,T13] ( 3, 10 ) ref -> x21 class-hnd single-def <System.Object[]> -; V03 arg3 [V03,T14] ( 3, 10 ) ref -> x22 class-hnd single-def <System.String[]> -; V04 loc0 [V04,T22] ( 3, 2 ) ref -> x0 class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V00 arg0 [V00,T03] ( 9, 67 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> +; V01 arg1 [V01,T12] ( 4, 18 ) byref -> x20 single-def +; V02 arg2 [V02,T15] ( 3, 10 ) ref -> x21 class-hnd single-def <System.Object[]> +; V03 arg3 [V03,T16] ( 3, 10 ) ref -> x22 class-hnd single-def <System.String[]> +; V04 loc0 [V04,T23] ( 3, 2 ) ref -> x0 class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ; V06 loc2 [V06,T04] ( 10, 54.50) ref -> x26 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V07 loc3 [V07,T07] ( 3, 26 ) ubyte -> x27
+; V07 loc3 [V07,T08] ( 3, 26 ) ubyte -> x27
;* V08 loc4 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V10 loc6 [V10,T09] ( 3, 24 ) ref -> x0 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V11 loc7 [V11 ] ( 2, 16 ) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V10 loc6 [V10,T10] ( 3, 24 ) ref -> x0 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V11 loc7 [V11 ] ( 2, 16 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V14 tmp2 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V15 tmp3 [V15,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-;* V17 tmp5 [V17,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp5 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V19 tmp7 [V19,T21] ( 2, 3 ) ref -> x24 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V20 tmp8 [V20,T16] ( 2, 6 ) ref -> x26 "field V05._current (fldOffset=0x8)" P-INDEP -; V21 tmp9 [V21,T08] ( 6, 21 ) int -> x25 "field V05._index (fldOffset=0x10)" P-INDEP -; V22 tmp10 [V22,T17] ( 2, 9 ) int -> x23 single-def "field V05._version (fldOffset=0x14)" P-INDEP -;* V23 tmp11 [V23,T25] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP -; V24 tmp12 [V24,T01] ( 9, 80 ) ref -> [fp+0x18] "field V08._current (fldOffset=0x8)" P-INDEP -; V25 tmp13 [V25,T00] ( 6, 82 ) int -> [fp+0x24] "field V08._index (fldOffset=0x10)" P-INDEP -; V26 tmp14 [V26,T12] ( 2, 18 ) int -> x28 "field V08._version (fldOffset=0x14)" P-INDEP -; V27 tmp15 [V27,T23] ( 2, 2 ) ref -> x5 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+;* V19 tmp7 [V19,T22] ( 0, 0 ) ref -> zero-ref single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V20 tmp8 [V20,T18] ( 2, 6 ) ref -> x26 "field V05._current (fldOffset=0x8)" P-INDEP +; V21 tmp9 [V21,T09] ( 6, 21 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP +; V22 tmp10 [V22,T19] ( 2, 9 ) int -> x23 single-def "field V05._version (fldOffset=0x14)" P-INDEP +;* V23 tmp11 [V23,T26] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP +; V24 tmp12 [V24,T01] ( 9, 80 ) ref -> [fp+0x10] "field V08._current (fldOffset=0x8)" P-INDEP +; V25 tmp13 [V25,T00] ( 6, 82 ) int -> x28 "field V08._index (fldOffset=0x10)" P-INDEP +; V26 tmp14 [V26,T14] ( 2, 18 ) int -> x25 "field V08._version (fldOffset=0x14)" P-INDEP +; V27 tmp15 [V27,T24] ( 2, 2 ) ref -> x5 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V29 tmp17 [V29,T27] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP -; V30 tmp18 [V30,T24] ( 2, 2 ) int -> x23 single-def "field V13._version (fldOffset=0x14)" P-INDEP -; V31 tmp19 [V31,T19] ( 2, 4 ) ref -> x5 "field V14._list (fldOffset=0x0)" P-INDEP
+;* V29 tmp17 [V29,T29] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP +; V30 tmp18 [V30,T25] ( 2, 2 ) int -> x23 single-def "field V13._version (fldOffset=0x14)" P-INDEP +;* V31 tmp19 [V31,T27] ( 0, 0 ) ref -> zero-ref "field V14._list (fldOffset=0x0)" P-INDEP
;* V32 tmp20 [V32 ] ( 0, 0 ) ref -> zero-ref "field V14._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp21 [V33,T26] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP -; V34 tmp22 [V34,T20] ( 2, 4 ) int -> x28 "field V14._version (fldOffset=0x14)" P-INDEP -; V35 tmp23 [V35,T10] ( 3, 24 ) ref -> x5 "arr expr"
+;* V33 tmp21 [V33,T28] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP +; V34 tmp22 [V34,T21] ( 2, 4 ) int -> x25 "field V14._version (fldOffset=0x14)" P-INDEP +; V35 tmp23 [V35,T11] ( 3, 24 ) ref -> x5 "arr expr"
; V36 tmp24 [V36,T02] ( 3, 96 ) ref -> x5 "arr expr"
-; V37 cse0 [V37,T05] ( 2, 32 ) int -> x5 "CSE - aggressive" -; V38 cse1 [V38,T15] ( 2, 8 ) int -> x5 "CSE - aggressive"
+; V37 cse0 [V37,T07] ( 2, 32 ) int -> x5 "CSE - aggressive" +; V38 cse1 [V38,T05] ( 2, 32 ) int -> x5 "CSE - aggressive" +; V39 cse2 [V39,T13] ( 3, 18 ) int -> x25 "CSE - aggressive" +; V40 cse3 [V40,T17] ( 2, 8 ) int -> x5 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M47424_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp
- str xzr, [fp, #0x28] // [V11 loc7]
+ str xzr, [fp, #0x18] // [V11 loc7]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 @@ -72,55 +74,46 @@ G_M47424_IG02: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=10 mov x5, x19 ; gcrRegs +[x5] ldr w23, [x5, #0x14]
- mov x24, x19 - ; gcrRegs +[x24] - mov w25, wzr - b G_M47424_IG12 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M47424_IG03: ; bbWeight=2, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz
+ mov w24, wzr + b G_M47424_IG10 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M47424_IG03: ; bbWeight=2, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x5] +[x26] ldrb w5, [x26, #0x4D]
- cbnz w5, G_M47424_IG12
+ cbnz w5, G_M47424_IG10
ldrb w5, [x26, #0x4E]
- cbnz w5, G_M47424_IG12
+ cbnz w5, G_M47424_IG10
mov w27, #1
- mov x5, x24 - ; gcrRegs +[x5] - ldr w28, [x5, #0x14] - mov w7, wzr - b G_M47424_IG10 - ;; size=36 bbWeight=2 PerfScore 27.00 -G_M47424_IG04: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x5] +[x8] - ldrb w5, [x8, #0x4D] - ldr w7, [fp, #0x24] // [V25 tmp13] - cbnz w5, G_M47424_IG10 - ldrb w5, [x8, #0x4E] - cbnz w5, G_M47424_IG10 - ldr x5, [x8, #0x08]
+ mov w28, wzr + b G_M47424_IG08 + ;; size=28 bbWeight=2 PerfScore 20.00 +G_M47424_IG04: ; bbWeight=8, gcrefRegs=4680080 {x7 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs +[x7] + ldrb w5, [x7, #0x4D] + cbnz w5, G_M47424_IG08 + ldrb w5, [x7, #0x4E] + cbnz w5, G_M47424_IG08 + ldr x5, [x7, #0x08]
; gcrRegs +[x5] ldr x0, [x26, #0x08] ; gcrRegs +[x0] cmp x5, x0
- bne G_M47424_IG07 - ldrb w5, [x8, #0x4C]
+ bne G_M47424_IG05 + ldrb w5, [x7, #0x4C]
; gcrRegs -[x5] ldrb w0, [x26, #0x4C] ; gcrRegs -[x0] cmp w5, w0
- beq G_M47424_IG10 - ;; size=52 bbWeight=8 PerfScore 200.00 -G_M47424_IG05: ; bbWeight=4, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref - str w7, [fp, #0x24] // [V25 tmp13] - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M47424_IG06: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, byref, isz - str wzr, [fp, #0x28] // [V11 loc7] - add x5, fp, #40 // [V11 loc7]
+ beq G_M47424_IG08 + ;; size=48 bbWeight=8 PerfScore 184.00 +G_M47424_IG05: ; bbWeight=8, gcrefRegs=4680080 {x7 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + str wzr, [fp, #0x18] // [V11 loc7] + add x5, fp, #24 // [V11 loc7]
mov x0, x26 ; gcrRegs +[x0]
- str x8, [fp, #0x18] // [V24 tmp12]
+ str x7, [fp, #0x10] // [V24 tmp12]
; GC ptr vars +{V24}
- mov x1, x8
+ mov x1, x7
; gcrRegs +[x1] mov x2, x21 ; gcrRegs +[x2] @@ -128,134 +121,125 @@ G_M47424_IG06: ; bbWeight=8, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, ; gcrRegs +[x3] mov w4, wzr mov w6, #1
- movz x9, #0xD1FFAB1E // code for <unknown method> - movk x9, #0xD1FFAB1E LSL #16 - movk x9, #1 LSL #32 - ldr x9, [x9] - blr x9 - ; gcrRegs -[x1-x3 x8]
+ movz x8, #0xD1FFAB1E // code for <unknown method> + movk x8, #0xD1FFAB1E LSL #16 + movk x8, #1 LSL #32 + ldr x8, [x8] + blr x8 + ; gcrRegs -[x1-x3 x7]
; gcr arg pop 0 cmp x0, x26
- bne G_M47424_IG08 - ldr x8, [fp, #0x18] // [V24 tmp12] - ; gcrRegs +[x8] - ldrb w0, [x8, #0x50]
+ bne G_M47424_IG06 + ldr x7, [fp, #0x10] // [V24 tmp12] + ; gcrRegs +[x7] + ldrb w0, [x7, #0x50]
; gcrRegs -[x0]
- ldr w7, [fp, #0x24] // [V25 tmp13] - cbnz w0, G_M47424_IG10
+ cbnz w0, G_M47424_IG08
mov w0, #1
- strb w0, [x8, #0x50] - b G_M47424_IG09 - ;; size=92 bbWeight=8 PerfScore 184.00 -G_M47424_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=5680100 {x8 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref - ; GC ptr vars -{V24} - str w7, [fp, #0x24] // [V25 tmp13] - b G_M47424_IG06 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M47424_IG08: ; bbWeight=8, gcVars=0000000000000002 {V24}, gcrefRegs=5680001 {x0 x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs -[x8] +[x0] - ; GC ptr vars +{V01 V24}
+ strb w0, [x7, #0x50] + b G_M47424_IG07 + ;; size=88 bbWeight=8 PerfScore 168.00 +G_M47424_IG06: ; bbWeight=8, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs -[x7] +[x0]
mov w27, wzr
- ldr x8, [fp, #0x18] // [V24 tmp12] - ; gcrRegs +[x8] - cmp x0, x8 - ldr w7, [fp, #0x24] // [V25 tmp13] - bne G_M47424_IG10
+ ldr x7, [fp, #0x10] // [V24 tmp12] + ; gcrRegs +[x7] + cmp x0, x7 + bne G_M47424_IG08
ldrb w0, [x26, #0x50] ; gcrRegs -[x0]
- cbnz w0, G_M47424_IG10
+ cbnz w0, G_M47424_IG08
mov w0, #1 strb w0, [x26, #0x50]
- ;; size=36 bbWeight=8 PerfScore 92.00 -G_M47424_IG09: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=5680000 {x19 x21 x22 x24 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz - ; gcrRegs -[x8] - ; GC ptr vars -{V01 V24}
+ ;; size=32 bbWeight=8 PerfScore 76.00 +G_M47424_IG07: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=100000 {x20}, gcvars, byref, isz + ; gcrRegs -[x7] + ; GC ptr vars -{V24}
ldr w0, [x20] subs w0, w0, #1
- bvs G_M47424_IG17
+ bvs G_M47424_IG15
...

-28 (-7.00%) : 261307.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)

@@ -8,66 +8,66 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T07] ( 3, 6 ) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T08] ( 3, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V00 this [V00,T11] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T08] ( 3, 6 ) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T09] ( 3, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
; V03 loc0 [V03,T06] ( 4, 10 ) ubyte -> x22
-; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> -; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 loc1 [V04,T16] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> +; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T13] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T12] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ; V13 tmp6 [V13,T02] ( 4, 17 ) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V14 tmp7 [V14,T05] ( 2, 8 ) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T04] ( 2, 8 ) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 21 ) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 13 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T07] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T14] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP
+;* V19 tmp12 [V19,T18] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T15] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP
; V21 tmp14 [V21,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T03] ( 3, 20 ) int -> x25 "CSE - aggressive" -; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V22 PSPSym [V22,T19] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T03] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V25 cse2 [V25,T17] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M52679_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x18] // [V05 loc2]
+ str xzr, [fp, #0x20] // [V05 loc2]
add x3, sp, #96
- str x3, [fp, #0x20] // [V22 PSPSym]
+ str x3, [fp, #0x28] // [V22 PSPSym]
mov x21, x0 ; gcrRegs +[x21] mov x19, x1 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=44 bbWeight=1 PerfScore 8.50
G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref mov w22, #1 ldr x0, [x21, #0x08] ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V04 loc1]
+ str x0, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x18] // [V05 loc2]
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000010000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x20] // [V05 loc2]
cbnz w1, G_M52679_IG08
- add x1, fp, #24 // [V05 loc2]
+ add x1, fp, #32 // [V05 loc2]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x18] // [V05 loc2]
+ ldrb w0, [fp, #0x20] // [V05 loc2]
cbnz w0, G_M52679_IG05 ;; size=24 bbWeight=1 PerfScore 7.50 G_M52679_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref @@ -90,19 +90,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 mov w24, wzr ;; size=12 bbWeight=1 PerfScore 6.50 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x21, #0x14] - cmp w23, w25 - bne G_M52679_IG09
+ ldr w0, [x21, #0x14] + cmp w23, w0 + bne G_M52679_IG10
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG12
+ bhs G_M52679_IG11
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG10
+ bhs G_M52679_IG09
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,16 +135,11 @@ G_M52679_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp w23, w25 - bne G_M52679_IG11 - b G_M52679_IG12 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -153,70 +148,67 @@ G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldrb w0, [fp, #0x18] // [V05 loc2] - cbz w0, G_M52679_IG14
+G_M52679_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x20] // [V05 loc2] + cbz w0, G_M52679_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x10] // [V04 loc1]
+G_M52679_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0] ; GC ptr vars -{V04} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+G_M52679_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V15}
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M52679_IG15: ; bbWeight=0, gcVars=0000000000010000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V16}
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x18] // [V05 loc2] - cbz w0, G_M52679_IG18 - ldr x0, [fp, #0x10] // [V04 loc1]
+ str x3, [sp, #0x18] + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M52679_IG16: ; bbWeight=0, gcVars=0000000000010000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x20] // [V05 loc2] + cbz w0, G_M52679_IG17 + ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0]
- ; GC ptr vars -{V04 V15}
+ ; GC ptr vars -{V04 V16}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc - ldr x25, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M52679_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 48, PerfScore 187.75, instruction count 100, allocated bytes for code 400 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 174.75, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -224,15 +216,12 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
E6 save_next E6 save_next
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
...

+8 (+0.28%) : 221307.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts)

@@ -8,81 +8,81 @@ ; 0 inlinees with PGO data; 75 single block inlinees; 20 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T21] ( 21, 16.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Xslt.XsltLoader> -; V01 arg1 [V01,T42] ( 4, 4 ) int -> x1 single-def -; V02 loc0 [V02,T89] ( 6, 2.38) ref -> x21 class-hnd exact single-def <System.String> -; V03 loc1 [V03,T105] ( 3, 1.50) ref -> x22 class-hnd exact single-def <System.String[]> -; V04 loc2 [V04,T02] ( 23, 85 ) ref -> x23 class-hnd exact single-def <<unknown class>> -; V05 loc3 [V05,T46] ( 2, 4.50) ref -> x22 class-hnd exact single-def <System.String[]> -; V06 loc4 [V06,T22] ( 5, 16.50) int -> x21 -; V07 loc5 [V07,T26] ( 8, 17.50) ref -> x25 class-hnd exact <System.String> -; V08 loc6 [V08,T23] ( 5, 16 ) ref -> x26 class-hnd <System.Xml.Xsl.Qil.QilName> -; V09 loc7 [V09,T09] ( 4, 36 ) ubyte -> x27
+; V00 this [V00,T22] ( 21, 16.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Xslt.XsltLoader> +; V01 arg1 [V01,T44] ( 4, 4 ) int -> x1 single-def +; V02 loc0 [V02,T90] ( 6, 2.38) ref -> x21 class-hnd exact single-def <System.String> +; V03 loc1 [V03,T106] ( 3, 1.50) ref -> x22 class-hnd exact single-def <System.String[]> +; V04 loc2 [V04,T02] ( 22, 83 ) ref -> x23 class-hnd exact single-def <<unknown class>> +; V05 loc3 [V05,T47] ( 2, 4.50) ref -> x22 class-hnd exact single-def <System.String[]> +; V06 loc4 [V06,T23] ( 5, 16.50) int -> x21 +; V07 loc5 [V07,T27] ( 8, 17.50) ref -> x25 class-hnd exact <System.String> +; V08 loc6 [V08,T24] ( 5, 16 ) ref -> x26 class-hnd <System.Xml.Xsl.Qil.QilName> +; V09 loc7 [V09,T10] ( 4, 36 ) ubyte -> x27
;* V10 loc8 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Xml.Xsl.Qil.QilName]>
-; V11 loc9 [V11,T11] ( 4, 32 ) ref -> [fp+0x18] class-hnd exact spill-single-def <System.Xml.Xsl.Qil.QilName>
+; V11 loc9 [V11,T12] ( 4, 32 ) ref -> [fp+0x18] class-hnd exact spill-single-def <System.Xml.Xsl.Qil.QilName>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T60] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp2 [V14,T27] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <System.String[]> -; V15 tmp3 [V15,T33] ( 2, 8 ) ref -> x26 class-hnd exact "impAppendStmt" <System.String> -; V16 tmp4 [V16,T91] ( 2, 2 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String> -; V17 tmp5 [V17,T92] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V18 tmp6 [V18,T93] ( 2, 2 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.String> -; V19 tmp7 [V19,T31] ( 4, 8 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput> -; V20 tmp8 [V20,T61] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
+; V13 tmp1 [V13,T61] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp2 [V14,T28] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <System.String[]> +; V15 tmp3 [V15,T35] ( 2, 8 ) ref -> x26 class-hnd exact "impAppendStmt" <System.String> +; V16 tmp4 [V16,T92] ( 2, 2 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String> +; V17 tmp5 [V17,T93] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V18 tmp6 [V18,T94] ( 2, 2 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.String> +; V19 tmp7 [V19,T33] ( 4, 8 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput> +; V20 tmp8 [V20,T62] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V22 tmp10 [V22,T112] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V23 tmp11 [V23,T62] ( 3, 3 ) ref -> x21 class-hnd exact single-def "dup spill" <System.String[]> -; V24 tmp12 [V24,T94] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+;* V22 tmp10 [V22,T113] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V23 tmp11 [V23,T63] ( 3, 3 ) ref -> x21 class-hnd exact single-def "dup spill" <System.String[]> +; V24 tmp12 [V24,T95] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
;* V25 tmp13 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
-; V26 tmp14 [V26,T63] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V27 tmp15 [V27,T47] ( 4, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V28 tmp16 [V28,T95] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V29 tmp17 [V29,T113] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V30 tmp18 [V30,T64] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> -; V31 tmp19 [V31,T48] ( 4, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <ushort[]>
+; V26 tmp14 [V26,T64] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V27 tmp15 [V27,T48] ( 4, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V28 tmp16 [V28,T96] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V29 tmp17 [V29,T114] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V30 tmp18 [V30,T65] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> +; V31 tmp19 [V31,T49] ( 4, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <ushort[]>
;* V32 tmp20 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T65] ( 3, 3 ) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.Compiler>
+; V34 tmp22 [V34,T66] ( 3, 3 ) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.Compiler>
;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection>
-; V36 tmp24 [V36,T49] ( 4, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V37 tmp25 [V37,T96] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <System.String[]> -; V38 tmp26 [V38,T97] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V39 tmp27 [V39,T114] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V40 tmp28 [V40,T66] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection>
+; V36 tmp24 [V36,T50] ( 4, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V37 tmp25 [V37,T97] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <System.String[]> +; V38 tmp26 [V38,T98] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V39 tmp27 [V39,T115] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V40 tmp28 [V40,T67] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection>
;* V41 tmp29 [V41 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V42 tmp30 [V42,T29] ( 2, 8 ) int -> x5 "spilling unroll qmark"
+; V42 tmp30 [V42,T31] ( 2, 8 ) int -> x5 "spilling unroll qmark"
;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V44 tmp32 [V44,T30] ( 2, 8 ) int -> x5 "spilling unroll qmark" -; V45 tmp33 [V45,T67] ( 3, 3 ) ref -> x22 class-hnd exact "dup spill" <System.String[]> -; V46 tmp34 [V46,T98] ( 2, 2 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
+; V44 tmp32 [V44,T32] ( 2, 8 ) int -> x5 "spilling unroll qmark" +; V45 tmp33 [V45,T68] ( 3, 3 ) ref -> x22 class-hnd exact "dup spill" <System.String[]> +; V46 tmp34 [V46,T99] ( 2, 2 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
;* V47 tmp35 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
-; V48 tmp36 [V48,T68] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <<unknown class>> -; V49 tmp37 [V49,T50] ( 4, 4 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V50 tmp38 [V50,T99] ( 2, 2 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V51 tmp39 [V51,T115] ( 2, 1 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V52 tmp40 [V52,T69] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection>
+; V48 tmp36 [V48,T69] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <<unknown class>> +; V49 tmp37 [V49,T51] ( 4, 4 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V50 tmp38 [V50,T100] ( 2, 2 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V51 tmp39 [V51,T116] ( 2, 1 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V52 tmp40 [V52,T70] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection>
;* V53 tmp41 [V53 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V54 tmp42 [V54,T45] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V55 tmp43 [V55,T51] ( 4, 4 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V56 tmp44 [V56,T100] ( 2, 2 ) ref -> x22 class-hnd exact "Inlining Arg" <System.String[]> -; V57 tmp45 [V57,T101] ( 2, 2 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V58 tmp46 [V58,T116] ( 2, 1 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V59 tmp47 [V59,T70] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> -; V60 tmp48 [V60,T55] ( 2, 4 ) ref -> x26 class-hnd exact "Inline return value spill temp" <System.Xml.Xsl.Qil.QilName>
+;* V54 tmp42 [V54,T46] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V55 tmp43 [V55,T52] ( 4, 4 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V56 tmp44 [V56,T101] ( 2, 2 ) ref -> x22 class-hnd exact "Inlining Arg" <System.String[]> +; V57 tmp45 [V57,T102] ( 2, 2 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V58 tmp46 [V58,T117] ( 2, 1 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V59 tmp47 [V59,T71] ( 3, 3 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> +; V60 tmp48 [V60,T56] ( 2, 4 ) ref -> x26 class-hnd exact "Inline return value spill temp" <System.Xml.Xsl.Qil.QilName>
; V61 tmp49 [V61 ] ( 3, 6 ) ref -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.String> ; V62 tmp50 [V62 ] ( 3, 6 ) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.String> ; V63 tmp51 [V63 ] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.String>
-; V64 tmp52 [V64,T34] ( 2, 8 ) ref -> x27 class-hnd exact "Inlining Arg" <System.String> -; V65 tmp53 [V65,T35] ( 2, 8 ) ref -> x28 class-hnd exact "Inlining Arg" <System.String> -; V66 tmp54 [V66,T36] ( 2, 8 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
+; V64 tmp52 [V64,T36] ( 2, 8 ) ref -> x27 class-hnd exact "Inlining Arg" <System.String> +; V65 tmp53 [V65,T37] ( 2, 8 ) ref -> x28 class-hnd exact "Inlining Arg" <System.String> +; V66 tmp54 [V66,T38] ( 2, 8 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
;* V67 tmp55 [V67 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Xml.Xsl.Qil.QilName]>
-; V68 tmp56 [V68,T18] ( 3, 24 ) ubyte -> x4 "Inline return value spill temp" -; V69 tmp57 [V69,T12] ( 4, 32 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Xml.Xsl.Qil.QilName> -;* V70 tmp58 [V70,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V68 tmp56 [V68,T19] ( 3, 24 ) ubyte -> x4 "Inline return value spill temp" +; V69 tmp57 [V69,T13] ( 4, 32 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Xml.Xsl.Qil.QilName> +;* V70 tmp58 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V71 tmp59 [V71,T03] ( 5, 80 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String> ; V72 tmp60 [V72,T04] ( 5, 80 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
-; V73 tmp61 [V73,T13] ( 2, 16 ) ubyte -> x0 "Inline return value spill temp" -; V74 tmp62 [V74,T15] ( 2, 32 ) byref -> x6 "impAppendStmt"
+; V73 tmp61 [V73,T14] ( 2, 16 ) ubyte -> x0 "Inline return value spill temp" +; V74 tmp62 [V74,T16] ( 2, 32 ) byref -> x6 "impAppendStmt"
;* V75 tmp63 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp64 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V77 tmp65 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -90,77 +90,78 @@ ;* V79 tmp67 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V80 tmp68 [V80,T05] ( 5, 80 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String> ; V81 tmp69 [V81,T06] ( 5, 80 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
-; V82 tmp70 [V82,T14] ( 4, 32 ) ubyte -> x4 "Inline return value spill temp" -; V83 tmp71 [V83,T16] ( 2, 32 ) byref -> x4 "impAppendStmt"
+; V82 tmp70 [V82,T15] ( 4, 32 ) ubyte -> x4 "Inline return value spill temp" +; V83 tmp71 [V83,T17] ( 2, 32 ) byref -> x4 "impAppendStmt"
;* V84 tmp72 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V85 tmp73 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp74 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp75 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp76 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V89 tmp77 [V89,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V89 tmp77 [V89,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V91 tmp79 [V91,T24] ( 4, 16 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V92 tmp80 [V92,T37] ( 2, 8 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V93 tmp81 [V93,T56] ( 2, 4 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V94 tmp82 [V94,T28] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> -; V95 tmp83 [V95,T43] ( 3, 6 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> -; V96 tmp84 [V96,T32] ( 4, 8 ) int -> x4 "Inline stloc first use temp"
+; V91 tmp79 [V91,T25] ( 4, 16 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V92 tmp80 [V92,T39] ( 2, 8 ) ref -> x1 class-hnd "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V93 tmp81 [V93,T57] ( 2, 4 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V94 tmp82 [V94,T29] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> +; V95 tmp83 [V95,T34] ( 4, 8 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> +; V96 tmp84 [V96,T30] ( 5, 10 ) int -> x5 "Inline stloc first use temp"
;* V97 tmp85 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
-; V98 tmp86 [V98,T71] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V99 tmp87 [V99,T108] ( 3, 1.50) int -> x2 "Inline stloc first use temp" -; V100 tmp88 [V100,T106] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V101 tmp89 [V101,T88] ( 5, 2.50) int -> x15 "Inline stloc first use temp" -; V102 tmp90 [V102,T72] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Qil.QilName> -; V103 tmp91 [V103,T73] ( 3, 3 ) ref -> x23 class-hnd exact single-def "dup spill" <System.String[]> -; V104 tmp92 [V104,T102] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+; V98 tmp86 [V98,T72] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V99 tmp87 [V99,T109] ( 3, 1.50) int -> x2 "Inline stloc first use temp" +; V100 tmp88 [V100,T107] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V101 tmp89 [V101,T89] ( 5, 2.50) int -> x15 "Inline stloc first use temp" +; V102 tmp90 [V102,T73] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Qil.QilName> +; V103 tmp91 [V103,T74] ( 3, 3 ) ref -> x23 class-hnd exact single-def "dup spill" <System.String[]> +; V104 tmp92 [V104,T103] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
;* V105 tmp93 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Xsl.Xslt.XsltInput>
-; V106 tmp94 [V106,T74] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V107 tmp95 [V107,T52] ( 4, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> -; V108 tmp96 [V108,T103] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> -; V109 tmp97 [V109,T117] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> -; V110 tmp98 [V110,T75] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> -; V111 tmp99 [V111,T54] ( 3, 4 ) ref -> x0 "Single return block return value" -;* V112 tmp100 [V112,T57] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP -; V113 tmp101 [V113,T08] ( 2, 24 ) ref -> x4 "field V10._current (fldOffset=0x8)" P-INDEP
+; V106 tmp94 [V106,T75] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V107 tmp95 [V107,T53] ( 4, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Xml.Xsl.Xslt.Compiler> +; V108 tmp96 [V108,T104] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.Xsl.ISourceLineInfo> +; V109 tmp97 [V109,T118] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.Xml.Xsl.Xslt.CompilerError> +; V110 tmp98 [V110,T76] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Xml.Xsl.Xslt.CompilerErrorCollection> +; V111 tmp99 [V111,T55] ( 3, 4 ) ref -> x0 "Single return block return value" +;* V112 tmp100 [V112,T58] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP +; V113 tmp101 [V113,T09] ( 2, 24 ) ref -> x4 "field V10._current (fldOffset=0x8)" P-INDEP
; V114 tmp102 [V114,T00] ( 6, 84 ) int -> [fp+0x24] "field V10._index (fldOffset=0x10)" P-INDEP
-; V115 tmp103 [V115,T10] ( 2, 36 ) int -> x28 "field V10._version (fldOffset=0x14)" P-INDEP
+; V115 tmp103 [V115,T11] ( 2, 36 ) int -> x28 "field V10._version (fldOffset=0x14)" P-INDEP
;* V116 tmp104 [V116 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP ;* V117 tmp105 [V117 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-; V118 tmp106 [V118,T107] ( 3, 1.50) byref -> registers "field V33._reference (fldOffset=0x0)" P-INDEP -; V119 tmp107 [V119,T109] ( 3, 1.50) int -> registers "field V33._length (fldOffset=0x8)" P-INDEP -; V120 tmp108 [V120,T38] ( 2, 8 ) ref -> x2 "field V67._list (fldOffset=0x0)" P-INDEP
+; V118 tmp106 [V118,T108] ( 3, 1.50) byref -> registers "field V33._reference (fldOffset=0x0)" P-INDEP +; V119 tmp107 [V119,T110] ( 3, 1.50) int -> registers "field V33._length (fldOffset=0x8)" P-INDEP +; V120 tmp108 [V120,T40] ( 2, 8 ) ref -> x2 "field V67._list (fldOffset=0x0)" P-INDEP
;* V121 tmp109 [V121 ] ( 0, 0 ) ref -> zero-ref "field V67._current (fldOffset=0x8)" P-INDEP
-;* V122 tmp110 [V122,T58] ( 0, 0 ) int -> zero-ref "field V67._index (fldOffset=0x10)" P-INDEP -; V123 tmp111 [V123,T40] ( 2, 8 ) int -> x28 "field V67._version (fldOffset=0x14)" P-INDEP -; V124 tmp112 [V124,T44] ( 3, 6 ) ref -> x3 single-def "arr expr" -; V125 tmp113 [V125,T76] ( 3, 3 ) ref -> x2 single-def "arr expr" -; V126 tmp114 [V126,T83] ( 3, 3 ) int -> x1 "index expr" -; V127 tmp115 [V127,T77] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V128 tmp116 [V128,T39] ( 2, 8 ) ref -> x0 "argument with side effect" -; V129 tmp117 [V129,T78] ( 3, 3 ) ref -> x1 "arr expr" -; V130 tmp118 [V130,T84] ( 3, 3 ) int -> x0 "index expr"
+;* V122 tmp110 [V122,T59] ( 0, 0 ) int -> zero-ref "field V67._index (fldOffset=0x10)" P-INDEP +; V123 tmp111 [V123,T42] ( 2, 8 ) int -> x28 "field V67._version (fldOffset=0x14)" P-INDEP +; V124 tmp112 [V124,T45] ( 3, 6 ) ref -> x3 single-def "arr expr" +; V125 tmp113 [V125,T77] ( 3, 3 ) ref -> x2 single-def "arr expr" +; V126 tmp114 [V126,T84] ( 3, 3 ) int -> x1 "index expr" +; V127 tmp115 [V127,T78] ( 3, 3 ) ref -> x0 single-def "argument with side effect" +; V128 tmp116 [V128,T41] ( 2, 8 ) ref -> x0 "argument with side effect" +; V129 tmp117 [V129,T79] ( 3, 3 ) ref -> x1 "arr expr" +; V130 tmp118 [V130,T85] ( 3, 3 ) int -> x0 "index expr"
; V131 tmp119 [V131,T01] ( 3, 96 ) ref -> x2 "arr expr"
-; V132 tmp120 [V132,T79] ( 3, 3 ) ref -> x2 single-def "arr expr" -; V133 tmp121 [V133,T85] ( 3, 3 ) int -> x1 "index expr" -; V134 tmp122 [V134,T104] ( 2, 2 ) int -> x1 "argument with side effect" -; V135 tmp123 [V135,T80] ( 3, 3 ) ref -> x0 single-def "arr expr" -; V136 tmp124 [V136,T81] ( 3, 3 ) ref -> x1 single-def "arr expr" -; V137 tmp125 [V137,T86] ( 3, 3 ) int -> x0 "index expr" -; V138 tmp126 [V138,T82] ( 3, 3 ) ref -> x1 single-def "arr expr" -; V139 tmp127 [V139,T87] ( 3, 3 ) int -> x0 "index expr" -; V140 cse0 [V140,T41] ( 5, 6 ) int -> x24 "CSE - moderate" -; V141 cse1 [V141,T110] ( 3, 1.50) int -> x12 "CSE - conservative" -; V142 cse2 [V142,T07] ( 3, 34 ) int -> x4 "CSE - aggressive" -; V143 cse3 [V143,T59] ( 4, 3 ) ref -> x0 "CSE - conservative" -; V144 cse4 [V144,T111] ( 3, 1.50) int -> x20 "CSE - conservative" -; V145 cse5 [V145,T19] ( 3, 24 ) int -> x0 "CSE - moderate"
+; V132 tmp120 [V132,T80] ( 3, 3 ) ref -> x2 single-def "arr expr" +; V133 tmp121 [V133,T86] ( 3, 3 ) int -> x1 "index expr" +; V134 tmp122 [V134,T105] ( 2, 2 ) int -> x1 "argument with side effect" +; V135 tmp123 [V135,T81] ( 3, 3 ) ref -> x0 single-def "arr expr" +; V136 tmp124 [V136,T82] ( 3, 3 ) ref -> x1 single-def "arr expr"
...

+16 (+0.60%) : 234402.dasm - System.Runtime.Serialization.SchemaImporter:ImportType(System.Xml.Schema.XmlSchemaType,System.Xml.XmlQualifiedName,ubyte):System.Runtime.Serialization.DataContracts.DataContract:this (FullOpts)

@@ -8,32 +8,32 @@ ; 0 inlinees with PGO data; 56 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 24, 17 ) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Runtime.Serialization.SchemaImporter> -; V01 arg1 [V01,T10] ( 11, 14 ) ref -> [fp+0x28] class-hnd EH-live single-def <System.Xml.Schema.XmlSchemaType> -; V02 arg2 [V02,T03] ( 32, 25 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Xml.XmlQualifiedName> -; V03 arg3 [V03,T25] ( 5, 3 ) ubyte -> [fp+0x44] EH-live single-def -; V04 loc0 [V04,T12] ( 17, 15 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Runtime.Serialization.DataContracts.DataContract>
+; V00 this [V00,T07] ( 24, 17 ) ref -> [fp+0x38] this class-hnd EH-live single-def <System.Runtime.Serialization.SchemaImporter> +; V01 arg1 [V01,T09] ( 11, 14 ) ref -> [fp+0x30] class-hnd EH-live single-def <System.Xml.Schema.XmlSchemaType> +; V02 arg2 [V02,T02] ( 32, 25 ) ref -> [fp+0x28] class-hnd EH-live single-def <System.Xml.XmlQualifiedName> +; V03 arg3 [V03,T26] ( 5, 3 ) ubyte -> [fp+0x4C] EH-live single-def +; V04 loc0 [V04,T12] ( 17, 15 ) ref -> [fp+0x20] do-not-enreg[M] class-hnd EH-live <System.Runtime.Serialization.DataContracts.DataContract>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V06 loc2 [V06 ] ( 3, 0 ) ref -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Type> -; V07 loc3 [V07,T65] ( 3, 0 ) ref -> x19 class-hnd exact single-def <<unknown class>> -; V08 loc4 [V08,T08] ( 5, 19 ) ref -> x20 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleType>
+; V06 loc2 [V06 ] ( 3, 0 ) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Type> +; V07 loc3 [V07,T66] ( 3, 0 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V08 loc4 [V08,T08] ( 5, 19 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleType>
;* V09 loc5 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Xml.Schema.XmlSchemaRedefine]> ;* V10 loc6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Xml.Schema.XmlSchemaRedefine>
-; V11 loc7 [V11,T19] ( 6, 6 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleTypeContent> -; V12 loc8 [V12,T24] ( 5, 5 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleTypeRestriction> -; V13 loc9 [V13,T16] ( 10, 10 ) ref -> x20 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexType> -; V14 loc10 [V14,T58] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaContentModel> -; V15 loc11 [V15,T20] ( 6, 6 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContent> -; V16 loc12 [V16,T21] ( 6, 6 ) ref -> x0 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContentExtension> -; V17 loc13 [V17,T22] ( 6, 6 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContentRestriction>
+; V11 loc7 [V11,T20] ( 6, 6 ) ref -> x22 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleTypeContent> +; V12 loc8 [V12,T25] ( 5, 5 ) ref -> x22 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleTypeRestriction> +; V13 loc9 [V13,T16] ( 10, 10 ) ref -> x21 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexType> +; V14 loc10 [V14,T59] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Xml.Schema.XmlSchemaContentModel> +; V15 loc11 [V15,T21] ( 6, 6 ) ref -> x22 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContent> +; V16 loc12 [V16,T22] ( 6, 6 ) ref -> x0 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContentExtension> +; V17 loc13 [V17,T23] ( 6, 6 ) ref -> x22 class-hnd single-def <System.Xml.Schema.XmlSchemaComplexContentRestriction>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Xml.XmlQualifiedName> ;* V19 loc15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.Serialization.DataContracts.DataContract> ;* V20 loc16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T70] ( 2, 0 ) ref -> x20 class-hnd exact "impAppendStmt" <System.String> -; V23 tmp2 [V23,T71] ( 2, 0 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
+; V22 tmp1 [V22,T71] ( 2, 0 ) ref -> x21 class-hnd exact "impAppendStmt" <System.String> +; V23 tmp2 [V23,T72] ( 2, 0 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
;* V24 tmp3 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V25 tmp4 [V25,T72] ( 2, 0 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+; V25 tmp4 [V25,T73] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.String>
;* V26 tmp5 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> @@ -53,103 +53,107 @@ ;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaParticle> ;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaObjectCollection> ;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaAnyAttribute>
-; V45 tmp24 [V45,T57] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V45 tmp24 [V45,T58] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V46 tmp25 [V46,T17] ( 5, 10 ) ref -> x2 class-hnd "spilling QMark2" <<unknown class>> ;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V48 tmp27 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V50 tmp29 [V50,T73] ( 2, 0 ) ref -> [fp+0x10] class-hnd EH-live single-def "impSpillSpecialSideEff" <<unknown class>> -; V51 tmp30 [V51,T66] ( 3, 0 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.DataContracts.DataContractSet>
+; V50 tmp29 [V50,T74] ( 2, 0 ) ref -> [fp+0x18] class-hnd EH-live single-def "impSpillSpecialSideEff" <<unknown class>> +; V51 tmp30 [V51,T67] ( 3, 0 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.DataContracts.DataContractSet>
;* V52 tmp31 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]>
-; V53 tmp32 [V53,T28] ( 2, 4 ) ref -> x20 class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]> -; V54 tmp33 [V54,T26] ( 4, 4 ) ref -> x20 -; V55 tmp34 [V55,T23] ( 3, 6 ) ref -> x20 class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]>
+; V53 tmp32 [V53,T29] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]> +; V54 tmp33 [V54,T27] ( 4, 4 ) ref -> x21 +; V55 tmp34 [V55,T24] ( 3, 6 ) ref -> x21 class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]>
;* V56 tmp35 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]> ;* V57 tmp36 [V57 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Xml.Schema.XmlSchemaRedefine]> ; V58 tmp37 [V58,T13] ( 2, 8 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Xml.Schema.XmlSchemaObject> ;* V59 tmp38 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable> ; V60 tmp39 [V60,T14] ( 2, 8 ) ref -> x1 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Xml.Schema.XmlSchemaObject>
-;* V61 tmp40 [V61,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp40 [V61,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V62 tmp41 [V62,T04] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <<unknown class>> ; V63 tmp42 [V63,T15] ( 3, 12 ) byref -> registers "Inline stloc first use temp"
-; V64 tmp43 [V64,T74] ( 2, 0 ) ref -> x22 class-hnd exact "Inlining Arg" <System.String> -;* V65 tmp44 [V65,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V64 tmp43 [V64,T75] ( 2, 0 ) ref -> x23 class-hnd exact "Inlining Arg" <System.String> +;* V65 tmp44 [V65,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaRedefine]>
-; V67 tmp46 [V67,T75] ( 2, 0 ) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.String>
+; V67 tmp46 [V67,T76] ( 2, 0 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
;* V68 tmp47 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName> ;* V69 tmp48 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName>
-; V70 tmp49 [V70,T67] ( 3, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataContractSet> -;* V71 tmp50 [V71,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V72 tmp51 [V72,T68] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> -; V73 tmp52 [V73,T76] ( 2, 0 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.XmlQualifiedName> -; V74 tmp53 [V74,T27] ( 4, 4 ) ref -> x0 "Single return block return value" -; V75 tmp54 [V75,T02] ( 4, 25 ) ref -> x20 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V70 tmp49 [V70,T68] ( 3, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataContractSet> +;* V71 tmp50 [V71,T82] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V72 tmp51 [V72,T69] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> +; V73 tmp52 [V73,T77] ( 2, 0 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Xml.XmlQualifiedName> +; V74 tmp53 [V74,T28] ( 4, 4 ) ref -> x0 "Single return block return value" +; V75 tmp54 [V75,T03] ( 4, 25 ) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
; V76 tmp55 [V76,T06] ( 2, 12 ) ref -> x1 "field V09._current (fldOffset=0x8)" P-INDEP
-; V77 tmp56 [V77,T00] ( 6, 41 ) int -> x22 "field V09._index (fldOffset=0x10)" P-INDEP -; V78 tmp57 [V78,T09] ( 3, 17 ) int -> x21 "field V09._version (fldOffset=0x14)" P-INDEP -; V79 tmp58 [V79,T59] ( 3, 3 ) ref -> x20 single-def "field V57._list (fldOffset=0x0)" P-INDEP
+; V77 tmp56 [V77,T00] ( 6, 41 ) int -> x23 "field V09._index (fldOffset=0x10)" P-INDEP +; V78 tmp57 [V78,T18] ( 2, 9 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP +; V79 tmp58 [V79,T60] ( 3, 3 ) ref -> x21 single-def "field V57._list (fldOffset=0x0)" P-INDEP
;* V80 tmp59 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V57._current (fldOffset=0x8)" P-INDEP
-;* V81 tmp60 [V81,T63] ( 0, 0 ) int -> zero-ref "field V57._index (fldOffset=0x10)" P-INDEP -; V82 tmp61 [V82,T62] ( 2, 2 ) int -> x21 "field V57._version (fldOffset=0x14)" P-INDEP
+;* V81 tmp60 [V81,T64] ( 0, 0 ) int -> zero-ref "field V57._index (fldOffset=0x10)" P-INDEP +; V82 tmp61 [V82,T63] ( 2, 2 ) int -> x22 "field V57._version (fldOffset=0x14)" P-INDEP
; V83 tmp62 [V83,T01] ( 3, 48 ) ref -> x1 "arr expr"
-; V84 tmp63 [V84,T77] ( 2, 0 ) ref -> x22 "argument with side effect" -; V85 tmp64 [V85,T78] ( 2, 0 ) ref -> x1 "argument with side effect" -; V86 tmp65 [V86,T79] ( 2, 0 ) ref -> x0 "argument with side effect" -; V87 tmp66 [V87,T29] ( 2, 4 ) ref -> x24 single-def "argument with side effect" -; V88 tmp67 [V88,T30] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V89 tmp68 [V89,T31] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V90 tmp69 [V90,T32] ( 2, 4 ) ref -> x23 single-def "argument with side effect" -; V91 tmp70 [V91,T33] ( 2, 4 ) ref -> x22 single-def "argument with side effect" -; V92 tmp71 [V92,T34] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V93 tmp72 [V93,T35] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V94 tmp73 [V94,T36] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V95 tmp74 [V95,T37] ( 2, 4 ) ref -> x22 single-def "argument with side effect" -; V96 tmp75 [V96,T38] ( 2, 4 ) ref -> x22 single-def "argument with side effect" -; V97 tmp76 [V97,T39] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V98 tmp77 [V98,T40] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V99 tmp78 [V99,T41] ( 2, 4 ) ref -> x21 single-def "argument with side effect" -; V100 tmp79 [V100,T42] ( 2, 4 ) ref -> x20 single-def "argument with side effect" -; V101 tmp80 [V101,T43] ( 2, 4 ) ref -> x22 single-def "argument with side effect" -; V102 tmp81 [V102,T44] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V103 tmp82 [V103,T45] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V104 tmp83 [V104,T46] ( 2, 4 ) ref -> x20 single-def "argument with side effect" -; V105 tmp84 [V105,T47] ( 2, 4 ) ref -> x21 single-def "argument with side effect" -; V106 tmp85 [V106,T48] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V107 tmp86 [V107,T49] ( 2, 4 ) ref -> x21 single-def "argument with side effect" -; V108 tmp87 [V108,T50] ( 2, 4 ) ref -> x22 single-def "argument with side effect" -; V109 tmp88 [V109,T51] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V110 tmp89 [V110,T52] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V111 tmp90 [V111,T53] ( 2, 4 ) ref -> x20 single-def "argument with side effect" -; V112 tmp91 [V112,T54] ( 2, 4 ) ref -> x21 single-def "argument with side effect" -; V113 tmp92 [V113,T80] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V114 tmp93 [V114,T55] ( 2, 4 ) ref -> x0 single-def "argument with side effect" -; V115 tmp94 [V115,T56] ( 2, 4 ) ref -> x20 single-def "argument with side effect" -; V116 tmp95 [V116,T69] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V117 PSPSym [V117,T64] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" -; V118 cse0 [V118,T61] ( 3, 3 ) long -> x22 "CSE - moderate" -; V119 cse1 [V119,T05] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V120 cse2 [V120,T60] ( 3, 3 ) ref -> x21 "CSE - moderate"
+; V84 tmp63 [V84,T78] ( 2, 0 ) ref -> x23 "argument with side effect" +; V85 tmp64 [V85,T79] ( 2, 0 ) ref -> x1 "argument with side effect" +; V86 tmp65 [V86,T80] ( 2, 0 ) ref -> x0 "argument with side effect" +; V87 tmp66 [V87,T30] ( 2, 4 ) ref -> x25 single-def "argument with side effect" +; V88 tmp67 [V88,T31] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V89 tmp68 [V89,T32] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V90 tmp69 [V90,T33] ( 2, 4 ) ref -> x24 single-def "argument with side effect" +; V91 tmp70 [V91,T34] ( 2, 4 ) ref -> x23 single-def "argument with side effect" +; V92 tmp71 [V92,T35] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V93 tmp72 [V93,T36] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V94 tmp73 [V94,T37] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V95 tmp74 [V95,T38] ( 2, 4 ) ref -> x23 single-def "argument with side effect" +; V96 tmp75 [V96,T39] ( 2, 4 ) ref -> x23 single-def "argument with side effect" +; V97 tmp76 [V97,T40] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V98 tmp77 [V98,T41] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V99 tmp78 [V99,T42] ( 2, 4 ) ref -> x22 single-def "argument with side effect" +; V100 tmp79 [V100,T43] ( 2, 4 ) ref -> x21 single-def "argument with side effect" +; V101 tmp80 [V101,T44] ( 2, 4 ) ref -> x23 single-def "argument with side effect" +; V102 tmp81 [V102,T45] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V103 tmp82 [V103,T46] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V104 tmp83 [V104,T47] ( 2, 4 ) ref -> x21 single-def "argument with side effect" +; V105 tmp84 [V105,T48] ( 2, 4 ) ref -> x22 single-def "argument with side effect" +; V106 tmp85 [V106,T49] ( 2, 4 ) ref -> x3 single-def "argument with side effect" +; V107 tmp86 [V107,T50] ( 2, 4 ) ref -> x22 single-def "argument with side effect" +; V108 tmp87 [V108,T51] ( 2, 4 ) ref -> x23 single-def "argument with side effect" +; V109 tmp88 [V109,T52] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V110 tmp89 [V110,T53] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V111 tmp90 [V111,T54] ( 2, 4 ) ref -> x21 single-def "argument with side effect" +; V112 tmp91 [V112,T55] ( 2, 4 ) ref -> x22 single-def "argument with side effect" +; V113 tmp92 [V113,T81] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V114 tmp93 [V114,T56] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V115 tmp94 [V115,T57] ( 2, 4 ) ref -> x21 single-def "argument with side effect" +; V116 tmp95 [V116,T70] ( 3, 0 ) ref -> x0 single-def "argument with side effect" +; V117 PSPSym [V117,T65] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym" +; V118 cse0 [V118,T62] ( 3, 3 ) long -> x23 "CSE - moderate" +; V119 cse1 [V119,T11] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V120 cse2 [V120,T05] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V121 cse3 [V121,T61] ( 3, 3 ) ref -> x22 "CSE - moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M196_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x50] - stp x21, x22, [sp, #0x60] - stp x23, x24, [sp, #0x70]
+ stp fp, lr, [sp, #-0x90]! + stp x19, x20, [sp, #0x58] + stp x21, x22, [sp, #0x68] + stp x23, x24, [sp, #0x78] + str x25, [sp, #0x88]
mov fp, sp
- str xzr, [fp, #0x38] // [V06 loc2] - add x4, sp, #128 - str x4, [fp, #0x48] // [V117 PSPSym] - stp x1, x0, [fp, #0x28] // [V01 arg1], [V00 this]
+ str xzr, [fp, #0x40] // [V06 loc2] + add x4, sp, #144 + str x4, [fp, #0x50] // [V117 PSPSym] + stp x1, x0, [fp, #0x30] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- str x2, [fp, #0x20] // [V02 arg2]
+ str x2, [fp, #0x28] // [V02 arg2]
; GC ptr vars +{V02}
- str w3, [fp, #0x44] // [V03 arg3]
+ str w3, [fp, #0x4C] // [V03 arg3] + mov x20, x1 + ; gcrRegs +[x20]
mov x19, x2 ; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50 -G_M196_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000488 {V00 V01 V02}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=56 bbWeight=1 PerfScore 12.00 +G_M196_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000284 {V00 V01 V02}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] ldr x0, [x0, #0x08] mov x1, x19 @@ -162,45 +166,45 @@ G_M196_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000488 {V00 V blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 loc0]
+ str x0, [fp, #0x20] // [V04 loc0]
; GC ptr vars +{V04}
- ldr x0, [fp, #0x18] // [V04 loc0]
+ ldr x0, [fp, #0x20] // [V04 loc0]
cbz x0, G_M196_IG03
- b G_M196_IG27
+ b G_M196_IG26
;; size=48 bbWeight=1 PerfScore 17.00
-G_M196_IG03: ; bbWeight=1, gcVars=00000000000000000000000000001488 {V00 V01 V02 V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M196_IG03: ; bbWeight=1, gcVars=00000000000000000000000000001284 {V00 V01 V02 V04}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x30] // [V00 this]
+ ldr x0, [fp, #0x38] // [V00 this]
; gcrRegs +[x0]
- ldr x20, [x0, #0x30]
...

+28 (+1.14%) : 239147.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,77 +8,77 @@ ; 0 inlinees with PGO data; 17 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.50) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T35] ( 10, 5.50) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x25 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T36] ( 10, 5.50) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T37] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x25 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T52] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 10 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T51] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T27] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 10 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T51] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T28] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T29] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T57] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T58] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T54] ( 3, 1.50) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V44 tmp18 [V44,T46] ( 4, 2 ) int -> x2 single-def "Inline stloc first use temp"
+; V44 tmp18 [V44,T47] ( 4, 2 ) int -> x2 single-def "Inline stloc first use temp"
; V45 tmp19 [V45,T55] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V46 tmp20 [V46,T47] ( 4, 2 ) int -> x15 single-def "Inline stloc first use temp"
+; V46 tmp20 [V46,T48] ( 4, 2 ) int -> x15 single-def "Inline stloc first use temp"
; V47 tmp21 [V47,T56] ( 3, 1.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V48 tmp22 [V48,T48] ( 4, 2 ) int -> x15 single-def "Inline stloc first use temp"
+; V48 tmp22 [V48,T49] ( 4, 2 ) int -> x15 single-def "Inline stloc first use temp"
; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x4 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x6 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T59] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T60] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T49] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T50] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T50] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG40 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000800000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000800000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -145,7 +145,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000800000000 {V11}, gcrefRegs= tbz w0, #0, G_M30168_IG55 ;; size=76 bbWeight=0.50 PerfScore 11.25 G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -155,7 +155,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG06
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -187,19 +187,19 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -242,11 +242,11 @@ G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG06: ; bbWeight=0.50, gcVars=0000000800080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG06: ; bbWeight=0.50, gcVars=0000001000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG08 mov x0, x24 @@ -318,18 +318,18 @@ G_M30168_IG09: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG39 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG10: ; bbWeight=2, gcVars=0000000800080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG10: ; bbWeight=2, gcVars=0000001000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -341,7 +341,7 @@ G_M30168_IG10: ; bbWeight=2, gcVars=0000000800080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 ...

libraries_tests.run.osx.arm64.Release.mch

-32 (-2.73%) : 58281.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)

@@ -8,27 +8,27 @@ ; 8 inlinees with PGO data; 32 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T19] ( 3, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T21] ( 3, 3 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T21] ( 4, 4 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T12] ( 8, 13 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T23] ( 4, 4 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T14] ( 8, 13 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T16] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T17] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T18] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T27] ( 0, 0 ) ref -> zero-ref single-def -;* V20 tmp11 [V20,T28] ( 0, 0 ) int -> zero-ref
+;* V19 tmp10 [V19,T29] ( 0, 0 ) ref -> zero-ref single-def +;* V20 tmp11 [V20,T30] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -36,39 +36,41 @@ ;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
-; V28 tmp19 [V28,T13] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V28 tmp19 [V28,T15] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V30 tmp21 [V30,T10] ( 3, 24 ) byref -> x0 "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp23 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp24 [V33,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V33 tmp24 [V33,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp25 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V35 tmp26 [V35 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V37 tmp28 [V37,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp28 [V37,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V38 tmp29 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V39 tmp30 [V39,T22] ( 2, 2 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V40 tmp31 [V40,T08] ( 5, 25 ) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V39 tmp30 [V39,T24] ( 2, 2 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V40 tmp31 [V40,T12] ( 4, 23.79) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V41 tmp32 [V41,T09] ( 5, 22.79) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
-; V42 tmp33 [V42,T06] ( 6, 36.15) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP -; V43 tmp34 [V43,T15] ( 3, 10.21) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V44 tmp35 [V44,T02] ( 5,129 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V42 tmp33 [V42,T07] ( 6, 36.15) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP +; V43 tmp34 [V43,T19] ( 2, 9 ) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V44 tmp35 [V44,T02] ( 4,124.15) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP
; V45 tmp36 [V45,T04] ( 3, 35.15) ref -> x22 "field V07._current (fldOffset=0x8)" P-INDEP ; V46 tmp37 [V46,T00] ( 6,141.59) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V47 tmp38 [V47,T03] ( 3, 69.85) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V48 tmp39 [V48,T23] ( 3, 3 ) ref -> x21 single-def "field V27._list (fldOffset=0x0)" P-INDEP
+; V47 tmp38 [V47,T05] ( 2, 65 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V48 tmp39 [V48,T25] ( 3, 3 ) ref -> x21 single-def "field V27._list (fldOffset=0x0)" P-INDEP
;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V27._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp41 [V50,T29] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP -; V51 tmp42 [V51,T25] ( 2, 2 ) int -> x22 "field V27._version (fldOffset=0x14)" P-INDEP -; V52 tmp43 [V52,T24] ( 3, 3 ) ref -> x19 single-def "field V35._list (fldOffset=0x0)" P-INDEP
+;* V50 tmp41 [V50,T31] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP +; V51 tmp42 [V51,T27] ( 2, 2 ) int -> x22 "field V27._version (fldOffset=0x14)" P-INDEP +; V52 tmp43 [V52,T26] ( 3, 3 ) ref -> x19 single-def "field V35._list (fldOffset=0x0)" P-INDEP
;* V53 tmp44 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._current (fldOffset=0x8)" P-INDEP
-;* V54 tmp45 [V54,T30] ( 0, 0 ) int -> zero-ref "field V35._index (fldOffset=0x10)" P-INDEP -; V55 tmp46 [V55,T26] ( 2, 2 ) int -> x20 "field V35._version (fldOffset=0x14)" P-INDEP -; V56 tmp47 [V56,T07] ( 3, 40.72) ref -> x2 "arr expr"
+;* V54 tmp45 [V54,T32] ( 0, 0 ) int -> zero-ref "field V35._index (fldOffset=0x10)" P-INDEP +; V55 tmp46 [V55,T28] ( 2, 2 ) int -> x20 "field V35._version (fldOffset=0x14)" P-INDEP +; V56 tmp47 [V56,T08] ( 3, 40.72) ref -> x2 "arr expr"
; V57 tmp48 [V57,T01] ( 3,162.89) ref -> x0 "arr expr"
-; V58 PSPSym [V58,T31] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V59 cse0 [V59,T14] ( 3, 12 ) byref -> x0 "CSE - aggressive" -; V60 cse1 [V60,T20] ( 4, 4 ) byref -> x1 "CSE - moderate"
+; V58 PSPSym [V58,T33] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V59 cse0 [V59,T03] ( 2, 64 ) int -> x0 "CSE - aggressive" +; V60 cse1 [V60,T11] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V61 cse2 [V61,T16] ( 3, 12 ) byref -> x0 "CSE - aggressive" +; V62 cse3 [V62,T22] ( 4, 4 ) byref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -86,7 +88,7 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=40 bbWeight=1 PerfScore 8.00
-G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 movz x0, #0xD1FFAB1E @@ -165,7 +167,7 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { str x21, [fp, #0x10] // [V04 loc1] ; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000021000 {V00 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000044000 {V00 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ldr x0, [fp, #0x18] // [V00 arg0] ; gcrRegs +[x0] @@ -196,13 +198,13 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=0 ldapur w0, [x24, #0x34] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M12834_IG17
+ bne G_M12834_IG15
add x0, x24, #32 ; byrRegs +[x0] ldapr x1, [x0] ; gcrRegs +[x1] cbnz x1, G_M12834_IG09
- cbz x0, G_M12834_IG15
+ cbz x0, G_M12834_IG13
ldr x1, [fp, #0x10] // [V04 loc1] mov x2, xzr bl <unknown method> @@ -225,22 +227,22 @@ G_M12834_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=0 blr x3 ; gcrRegs -[x0-x1 x24] ; gcr arg pop 0
- cbz w0, G_M12834_IG17
+ cbz w0, G_M12834_IG15
;; size=36 bbWeight=4 PerfScore 38.00 G_M12834_IG10: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ldr w2, [x21, #0x14] cmp w22, w2
- bne G_M12834_IG12
+ bne G_M12834_IG14
ldr w2, [x21, #0x10] cmp w23, w2
- bhs G_M12834_IG19
+ bhs G_M12834_IG17
;; size=24 bbWeight=8 PerfScore 72.00 G_M12834_IG11: ; bbWeight=6.79, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ldr x2, [x21, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w23, w3
- bhs G_M12834_IG14
+ bhs G_M12834_IG12
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -249,23 +251,13 @@ G_M12834_IG11: ; bbWeight=6.79, gcrefRegs=300000 {x20 x21}, byrefRegs=000 add w23, w23, #1 b G_M12834_IG08 ;; size=32 bbWeight=6.79 PerfScore 84.84
-G_M12834_IG12: ; bbWeight=1.21, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x24]
+G_M12834_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20-x21 x24]
; byrRegs -[x2]
- ldr w2, [x21, #0x14] - cmp w22, w2 - bne G_M12834_IG16 - ;; size=12 bbWeight=1.21 PerfScore 5.46 -G_M12834_IG13: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M12834_IG19 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12834_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12834_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M12834_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 @@ -274,7 +266,7 @@ G_M12834_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M12834_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x2, #0xD1FFAB1E LSL #16 movk x2, #2 LSL #32 @@ -283,7 +275,7 @@ G_M12834_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG15: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20-x21] ldr x1, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x1] @@ -293,7 +285,7 @@ G_M12834_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ldaddal w2, w0, [x0] ; byrRegs -[x0] sub w0, w0, #1
- cbnz w0, G_M12834_IG18
+ cbnz w0, G_M12834_IG16
mov x0, x1 ; gcrRegs +[x0] mov w1, wzr @@ -308,7 +300,7 @@ G_M12834_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ldr x1, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x1] ;; size=56 bbWeight=0 PerfScore 0.00
-G_M12834_IG18: ; bbWeight=0, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG16: ; bbWeight=0, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x1, #0x1C] tbz w0, #31, G_M12834_IG10 movz x0, #0xD1FFAB1E @@ -326,7 +318,7 @@ G_M12834_IG18: ; bbWeight=0, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=000 ; gcr arg pop 0 b G_M12834_IG10 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M12834_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M12834_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -347,14 +339,14 @@ G_M12834_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 str w0, [fp, #0x24] // [V03 loc0] ;; size=52 bbWeight=1 PerfScore 12.00
-G_M12834_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x28] // [V58 PSPSym]
- bl G_M12834_IG30
+ bl G_M12834_IG28
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG21: ; bbWeight=1, nogc, extend
+G_M12834_IG19: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG20: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00 V04} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -363,14 +355,14 @@ G_M12834_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ...

-32 (-1.97%) : 94646.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+d__11:MoveNext():this (Tier1-OSR)

@@ -14,7 +14,7 @@ ; V01 loc0 [V01,T45] ( 2, 0 ) int -> [fp+0x1BC] do-not-enreg[Z] EH-live tier0-frame ; V02 loc1 [V02,T36] ( 2, 1.57) ref -> x19 class-hnd <Xunit.Sdk.XunitTheoryTestCaseRunner> ; V03 loc2 [V03,T23] ( 4, 4.52) ref -> x20 class-hnd <Xunit.Sdk.RunSummary>
-; V04 loc3 [V04,T25] ( 3, 3.14) ref -> x20 class-hnd exact <Xunit.Sdk.ExecutionTimer>
+; V04 loc3 [V04,T24] ( 3, 3.14) ref -> x20 class-hnd exact <Xunit.Sdk.ExecutionTimer>
; V05 loc4 [V05,T05] ( 5, 492.14) ref -> x0 class-hnd <Xunit.Sdk.RunSummary> ; V06 loc5 [V06 ] ( 7, 394.71) struct ( 8) [fp+0x190] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.TaskAwaiter`1[Xunit.Sdk.RunSummary]> ; V07 loc6 [V07,T37] ( 1, 1 ) struct (24) [fp+0x178] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[System.IDisposable]> @@ -54,12 +54,12 @@ ; V41 tmp31 [V41 ] ( 3, 590.57) struct (16) [fp+0x58] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> ; V42 tmp32 [V42 ] ( 2, 393.71) struct (16) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> ;* V43 tmp33 [V43 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V44 tmp34 [V44,T14] ( 2, 200 ) ubyte -> x1 "Inline return value spill temp" -; V45 tmp35 [V45,T00] ( 12,1961.47) byref -> x20 "Inlining Arg"
+; V44 tmp34 [V44,T14] ( 2, 200 ) ubyte -> x14 "Inline return value spill temp" +; V45 tmp35 [V45,T00] ( 10,1884.28) byref -> x1 "Inlining Arg"
; V46 tmp36 [V46,T11] ( 4, 380.73) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ; V47 tmp37 [V47,T19] ( 3, 9.41) ref -> x21 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V48 tmp38 [V48 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IDisposable]>
-; V49 tmp39 [V49,T26] ( 3, 3.14) ubyte -> x0 "Inline return value spill temp"
+; V49 tmp39 [V49,T25] ( 3, 3.14) ubyte -> x0 "Inline return value spill temp"
;* V50 tmp40 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V51 tmp41 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V52 tmp42 [V52,T40] ( 2, 6.27) double -> d0 "Inlining Arg" @@ -74,12 +74,12 @@ ;* V61 tmp51 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V62 tmp52 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Xunit.Sdk.RunSummary> ;* V63 tmp53 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V64 tmp54 [V64,T27] ( 2, 3.14) int -> x24 single-def "field V19._flags (fldOffset=0x0)" P-INDEP -; V65 tmp55 [V65,T28] ( 2, 3.14) int -> x22 single-def "field V19._hi32 (fldOffset=0x4)" P-INDEP -; V66 tmp56 [V66,T29] ( 2, 3.14) long -> x23 single-def "field V19._lo64 (fldOffset=0x8)" P-INDEP -; V67 tmp57 [V67,T30] ( 2, 3.14) int -> x0 single-def "field V20._flags (fldOffset=0x0)" P-INDEP -; V68 tmp58 [V68,T31] ( 2, 3.14) int -> x1 single-def "field V20._hi32 (fldOffset=0x4)" P-INDEP -; V69 tmp59 [V69,T32] ( 2, 3.14) long -> x2 single-def "field V20._lo64 (fldOffset=0x8)" P-INDEP
+; V64 tmp54 [V64,T26] ( 2, 3.14) int -> x24 single-def "field V19._flags (fldOffset=0x0)" P-INDEP +; V65 tmp55 [V65,T27] ( 2, 3.14) int -> x22 single-def "field V19._hi32 (fldOffset=0x4)" P-INDEP +; V66 tmp56 [V66,T28] ( 2, 3.14) long -> x23 single-def "field V19._lo64 (fldOffset=0x8)" P-INDEP +; V67 tmp57 [V67,T29] ( 2, 3.14) int -> x0 single-def "field V20._flags (fldOffset=0x0)" P-INDEP +; V68 tmp58 [V68,T30] ( 2, 3.14) int -> x1 single-def "field V20._hi32 (fldOffset=0x4)" P-INDEP +; V69 tmp59 [V69,T31] ( 2, 3.14) long -> x2 single-def "field V20._lo64 (fldOffset=0x8)" P-INDEP
;* V70 tmp60 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._list (fldOffset=0x0)" P-INDEP ;* V71 tmp61 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._current (fldOffset=0x8)" P-INDEP ;* V72 tmp62 [V72 ] ( 0, 0 ) int -> zero-ref single-def "field V23._index (fldOffset=0x10)" P-INDEP @@ -95,7 +95,7 @@ ;* V82 tmp72 [V82 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._list (fldOffset=0x0)" P-INDEP ;* V83 tmp73 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._current (fldOffset=0x8)" P-INDEP ;* V84 tmp74 [V84 ] ( 0, 0 ) int -> zero-ref single-def "field V48._index (fldOffset=0x10)" P-INDEP
-; V85 tmp75 [V85,T33] ( 2, 3.14) int -> x22 single-def "field V48._version (fldOffset=0x14)" P-INDEP
+; V85 tmp75 [V85,T32] ( 2, 3.14) int -> x22 single-def "field V48._version (fldOffset=0x14)" P-INDEP
; V86 tmp76 [V86 ] ( 3, 7.84) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V53._flags (fldOffset=0x0)" P-DEP ; V87 tmp77 [V87 ] ( 3, 7.84) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V53._hi32 (fldOffset=0x4)" P-DEP ; V88 tmp78 [V88 ] ( 3, 7.84) long -> [fp+0x40] do-not-enreg[X] addr-exposed "field V53._lo64 (fldOffset=0x8)" P-DEP @@ -106,10 +106,10 @@ ; V93 tmp83 [V93 ] ( 2, 4.70) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V55._hi32 (fldOffset=0x4)" P-DEP ; V94 tmp84 [V94 ] ( 2, 4.70) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V55._lo64 (fldOffset=0x8)" P-DEP ;* V95 tmp85 [V95 ] ( 0, 0 ) ref -> zero-ref "field V61._source (fldOffset=0x0)" P-INDEP
-; V96 tmp86 [V96,T22] ( 6, 6.57) ref -> x21 single-def "V07.[000..008)"
+; V96 tmp86 [V96,T22] ( 5, 6.27) ref -> x21 single-def "V07.[000..008)"
; V97 tmp87 [V97,T35] ( 3, 1.57) ref -> x24 "V07.[008..016)" ; V98 tmp88 [V98,T20] ( 7, 8.50) int -> x23 "V07.[016..020)"
-; V99 tmp89 [V99,T24] ( 3, 3.44) int -> x22 single-def "V07.[020..024)"
+; V99 tmp89 [V99,T33] ( 2, 3.14) int -> x22 single-def "V07.[020..024)"
; V100 tmp90 [V100,T06] ( 3, 484.21) ref -> x14 "arr expr" ; V101 tmp91 [V101,T07] ( 3, 484.21) int -> x15 "index expr" ; V102 tmp92 [V102,T44] ( 2, 0 ) ref -> x2 "argument with side effect" @@ -174,7 +174,7 @@ G_M18700_IG03: ; bbWeight=98.43, gcrefRegs=80000 {x19}, byrefRegs=0001 {x ; gcr arg pop 0 ldr x0, [fp, #0x90] // [V25 tmp15+0x28] ; gcrRegs +[x0]
- cbz x0, G_M18700_IG16
+ cbz x0, G_M18700_IG15
;; size=92 bbWeight=98.43 PerfScore 2706.78 G_M18700_IG04: ; bbWeight=98.43, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ldrsb wzr, [x0] @@ -184,7 +184,7 @@ G_M18700_IG04: ; bbWeight=98.43, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs -[x0] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M18700_IG15
+ beq G_M18700_IG14
ldr x0, [fp, #0xD1FFAB1E] // [V06 loc5] ; gcrRegs +[x0] ldapur w1, [x0, #0x34] @@ -192,7 +192,7 @@ G_M18700_IG04: ; bbWeight=98.43, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 and w1, w1, w2 mov w2, #0xD1FFAB1E cmp w1, w2
- bne G_M18700_IG14
+ bne G_M18700_IG13
;; size=56 bbWeight=98.43 PerfScore 1870.14 G_M18700_IG05: ; bbWeight=98.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -262,65 +262,56 @@ G_M18700_IG07: ; bbWeight=98.43, gcrefRegs=180000 {x19 x20}, byrefRegs=00 ;; size=120 bbWeight=98.43 PerfScore 4380.07 G_M18700_IG08: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x20-x21]
- add x20, x0, #40 - ; byrRegs +[x20] - ldr x14, [x20]
+ add x1, x0, #40 + ; byrRegs +[x1] + ldr x14, [x1]
; gcrRegs +[x14]
- ldr w15, [x20, #0x14]
+ ldr w15, [x1, #0x14]
ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M18700_IG11
+ bne G_M18700_IG16
;; size=24 bbWeight=100 PerfScore 1100.00
-G_M18700_IG09: ; bbWeight=100.03, gcrefRegs=84000 {x14 x19}, byrefRegs=100001 {x0 x20}, byref, isz - ldr w15, [x20, #0x10]
+G_M18700_IG09: ; bbWeight=100.03, gcrefRegs=84000 {x14 x19}, byrefRegs=0003 {x0 x1}, byref, isz + ldr w15, [x1, #0x10]
ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M18700_IG12
+ bhs G_M18700_IG11
;; size=16 bbWeight=100.03 PerfScore 750.23
-G_M18700_IG10: ; bbWeight=80.70, gcrefRegs=84000 {x14 x19}, byrefRegs=100001 {x0 x20}, byref, isz
+G_M18700_IG10: ; bbWeight=80.70, gcrefRegs=84000 {x14 x19}, byrefRegs=0003 {x0 x1}, byref, isz
ldr x14, [x14, #0x08] ldr w12, [x14, #0x08] cmp w15, w12
- bhs G_M18700_IG18
+ bhs G_M18700_IG17
add x14, x14, #16 ; gcrRegs -[x14] ; byrRegs +[x14] ldr x15, [x14, w15, UXTW #3] ; gcrRegs +[x15]
- add x14, x20, #8
+ add x14, x1, #8
bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- ldr w14, [x20, #0x10]
+ ldr w14, [x1, #0x10]
add w14, w14, #1
- str w14, [x20, #0x10]
+ str w14, [x1, #0x10]
b G_M18700_IG03 ;; size=48 bbWeight=80.70 PerfScore 1452.64
-G_M18700_IG11: ; bbWeight=19.30, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref, isz - ldr w1, [x20, #0x14] - ldr x2, [x20] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M18700_IG17 - ;; size=20 bbWeight=19.30 PerfScore 202.63 -G_M18700_IG12: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref, isz - ldr x1, [x20] - ; gcrRegs +[x1] - ldr w1, [x1, #0x10] - ; gcrRegs -[x1] - add w1, w1, #1 - str w1, [x20, #0x10] - str xzr, [x20, #0x08] - mov w1, wzr - cbnz w1, G_M18700_IG03
+G_M18700_IG11: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0003 {x0 x1}, byref, isz + ldr x14, [x1] + ; gcrRegs +[x14] + ldr w14, [x14, #0x10] + ; gcrRegs -[x14] + add w14, w14, #1 + str w14, [x1, #0x10] + str xzr, [x1, #0x08] + mov w14, wzr + cbnz w14, G_M18700_IG03
;; size=28 bbWeight=100 PerfScore 1000.00
-G_M18700_IG13: ; bbWeight=1.57, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref - ; byrRegs -[x20] - b G_M18700_IG19
+G_M18700_IG12: ; bbWeight=1.57, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref + ; byrRegs -[x1] + b G_M18700_IG18
;; size=4 bbWeight=1.57 PerfScore 1.57
-G_M18700_IG14: ; bbWeight=0.08, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M18700_IG13: ; bbWeight=0.08, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] mov w1, wzr @@ -333,7 +324,7 @@ G_M18700_IG14: ; bbWeight=0.08, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcr arg pop 0 b G_M18700_IG05 ;; size=28 bbWeight=0.08 PerfScore 0.57
-G_M18700_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18700_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] str wzr, [fp, #0xD1FFAB1E] // [V01 loc0] ldr x21, [fp, #0xD1FFAB1E] // [V00 this] @@ -357,7 +348,7 @@ G_M18700_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ; byrRegs -[x1-x2 x13-x14]
+ ; byrRegs -[x1-x2 x13-x14 x21]
; gcr arg pop 0 mov x2, x0 ; gcrRegs +[x2] @@ -373,11 +364,10 @@ G_M18700_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x3 ; gcrRegs -[x2] ; gcr arg pop 0
- b G_M18700_IG29
+ b G_M18700_IG27
;; size=108 bbWeight=0 PerfScore 0.00
-G_M18700_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M18700_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- ; byrRegs -[x21]
add x0, fp, #144 // [V25 tmp15+0x28] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -391,7 +381,7 @@ G_M18700_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 b G_M18700_IG04 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M18700_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18700_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x1, #0xD1FFAB1E LSL #16 @@ -401,12 +391,12 @@ G_M18700_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M18700_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18700_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M18700_IG19: ; bbWeight=1.57, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
+G_M18700_IG18: ; bbWeight=1.57, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x19] ; byrRegs +[x0] stp xzr, xzr, [x0, #0x28] @@ -425,23 +415,23 @@ G_M18700_IG19: ; bbWeight=1.57, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 ldr w22, [x21, #0x14] mov w23, wzr ;; size=40 bbWeight=1.57 PerfScore 18.03
-G_M18700_IG20: ; bbWeight=1.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M18700_IG19: ; bbWeight=1.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x21, #0x14] ...

-20 (-1.93%) : 162452.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -32,7 +32,7 @@ ; V20 tmp15 [V20,T26] ( 3, 2.08) ref -> x4 class-hnd "Inline stloc first use temp" <<unknown class>> ; V21 tmp16 [V21,T19] ( 4, 2.60) int -> x0 "Inline stloc first use temp" ; V22 tmp17 [V22,T17] ( 3, 3.11) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
-; V23 tmp18 [V23,T00] ( 12, 11.93) byref -> x22 "Inlining Arg"
+; V23 tmp18 [V23,T00] ( 10, 11.14) byref -> x22 "Inlining Arg"
; V24 tmp19 [V24,T18] ( 4, 2.98) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ; V25 tmp20 [V25,T09] ( 2, 4 ) long -> x2 "argument with side effect" ; V26 tmp21 [V26,T11] ( 3, 3.58) ref -> x14 "arr expr" @@ -69,13 +69,13 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=32 bbWeight=1 PerfScore 6.50 G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0]
- cbz x19, G_M57116_IG41
+ cbz x19, G_M57116_IG40
ldr x20, [x0] mov x1, x20 ldr x2, [x1, #0x38] ldr x2, [x2] ldr x2, [x2, #0xA0]
- cbz x2, G_M57116_IG27
+ cbz x2, G_M57116_IG26
;; size=28 bbWeight=1 PerfScore 14.50 G_M57116_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -94,7 +94,7 @@ G_M57116_IG04: ; bbWeight=0.57, gcrefRegs=200000 {x21}, byrefRegs=0000 {} ldr x0, [x20, #0x38] ldr x0, [x0] ldr x11, [x0, #0xB8]
- cbz x11, G_M57116_IG28
+ cbz x11, G_M57116_IG27
;; size=16 bbWeight=0.57 PerfScore 5.72 G_M57116_IG05: ; bbWeight=0.57, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz mov x0, x21 @@ -104,14 +104,14 @@ G_M57116_IG05: ; bbWeight=0.57, gcrefRegs=200000 {x21}, byrefRegs=0000 {} ; gcrRegs -[x0] ; gcr arg pop 0 sxtw w19, w0
- cbnz w19, G_M57116_IG30
+ cbnz w19, G_M57116_IG29
;; size=20 bbWeight=0.57 PerfScore 3.43 G_M57116_IG06: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x80]
- cbz x0, G_M57116_IG29
+ cbz x0, G_M57116_IG28
;; size=16 bbWeight=0.57 PerfScore 5.72 G_M57116_IG07: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -139,7 +139,7 @@ G_M57116_IG09: ; bbWeight=0.43, gcVars=0000000000000002 {V00}, gcrefRegs= ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x80]
- cbz x0, G_M57116_IG37
+ cbz x0, G_M57116_IG36
;; size=16 bbWeight=0.43 PerfScore 4.28 G_M57116_IG10: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -157,7 +157,7 @@ G_M57116_IG10: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x0, [x20, #0x38] ldr x0, [x0] ldr x11, [x0, #0xA8]
- cbz x11, G_M57116_IG38
+ cbz x11, G_M57116_IG37
;; size=36 bbWeight=0.43 PerfScore 7.48 G_M57116_IG11: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov x0, x19 @@ -227,11 +227,11 @@ G_M57116_IG17: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w15, [x22, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M57116_IG25
+ bne G_M57116_IG24
ldr w15, [x22, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M57116_IG26
+ bhs G_M57116_IG25
;; size=40 bbWeight=0.80 PerfScore 14.72 G_M57116_IG18: ; bbWeight=0.60, gcrefRegs=4000 {x14}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x0] @@ -266,7 +266,7 @@ G_M57116_IG19: ; bbWeight=1.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cbnz w0, G_M57116_IG13 ;; size=24 bbWeight=1.21 PerfScore 7.83 G_M57116_IG20: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M57116_IG35
+ b G_M57116_IG34
;; size=4 bbWeight=0.43 PerfScore 0.43 G_M57116_IG21: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x20 @@ -310,17 +310,8 @@ G_M57116_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M57116_IG25: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+G_M57116_IG25: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; byrRegs +[x22]
- ldr w11, [x22, #0x14] - ldr x1, [x22] - ; gcrRegs +[x1] - ldr w1, [x1, #0x14] - ; gcrRegs -[x1] - cmp w11, w1 - bne G_M57116_IG24 - ;; size=20 bbWeight=0.20 PerfScore 2.09 -G_M57116_IG26: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
ldr x11, [x22] ; gcrRegs +[x11] ldr w11, [x11, #0x10] @@ -328,9 +319,9 @@ G_M57116_IG26: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=400000 {x22} add w11, w11, #1 str w11, [x22, #0x10] str xzr, [x22, #0x08]
- b G_M57116_IG35
+ b G_M57116_IG34
;; size=24 bbWeight=0.20 PerfScore 1.89
-G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ; byrRegs -[x22] ; GC ptr vars -{V04} @@ -343,7 +334,7 @@ G_M57116_IG27: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs= mov x2, x0 b G_M57116_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M57116_IG28: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x21] mov x0, x20 movz x1, #0xD1FFAB1E @@ -354,7 +345,7 @@ G_M57116_IG28: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=0000 {} mov x11, x0 b G_M57116_IG05 ;; size=28 bbWeight=0.11 PerfScore 0.52
-G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] mov x0, x20 movz x1, #0xD1FFAB1E @@ -364,17 +355,17 @@ G_M57116_IG29: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 b G_M57116_IG07 ;; size=24 bbWeight=0.11 PerfScore 0.46
-G_M57116_IG30: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG29: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21] ldr x1, [x20, #0x38] ldr x1, [x1] ldr x1, [x1, #0x88]
- cbz x1, G_M57116_IG39
+ cbz x1, G_M57116_IG38
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG31: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57116_IG30: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
mov x2, x1 ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG32: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M57116_IG31: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
sxtw x1, w19 mov x0, x2 bl CORINFO_HELP_NEWARR_1_OBJ @@ -392,9 +383,9 @@ G_M57116_IG32: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {} ldr x0, [x20, #0x38] ldr x0, [x0] ldr x11, [x0, #0xC0]
- cbz x11, G_M57116_IG40
+ cbz x11, G_M57116_IG39
;; size=44 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG33: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57116_IG32: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x2, [fp, #0x18] // [V00 this] ; gcrRegs +[x2] ldr x1, [x2, #0x08] @@ -411,13 +402,13 @@ G_M57116_IG33: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {} ; gcrRegs +[x2] str w19, [x2, #0x10] ;; size=32 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG34: ; bbWeight=0.00, epilog, nogc, extend
+G_M57116_IG33: ; bbWeight=0.00, epilog, nogc, extend
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG35: ; bbWeight=0.43, gcVars=0000000000000402 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG34: ; bbWeight=0.43, gcVars=0000000000000402 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x2] ; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc2] @@ -431,13 +422,13 @@ G_M57116_IG35: ; bbWeight=0.43, gcVars=0000000000000402 {V00 V04}, gcrefR ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=24 bbWeight=0.43 PerfScore 3.21
-G_M57116_IG36: ; bbWeight=0.43, epilog, nogc, extend
+G_M57116_IG35: ; bbWeight=0.43, epilog, nogc, extend
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=0.43 PerfScore 1.71
-G_M57116_IG37: ; bbWeight=0.09, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG36: ; bbWeight=0.09, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x20 movz x1, #0xD1FFAB1E @@ -447,7 +438,7 @@ G_M57116_IG37: ; bbWeight=0.09, gcVars=0000000000000002 {V00}, gcrefRegs= ; gcr arg pop 0 b G_M57116_IG10 ;; size=24 bbWeight=0.09 PerfScore 0.34
-G_M57116_IG38: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57116_IG37: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -457,7 +448,7 @@ G_M57116_IG38: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x11, x0 b G_M57116_IG11 ;; size=28 bbWeight=0.09 PerfScore 0.38
-G_M57116_IG39: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57116_IG38: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x21] mov x0, x20 movz x1, #0xD1FFAB1E @@ -466,9 +457,9 @@ G_M57116_IG39: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {} bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov x2, x0
- b G_M57116_IG32
+ b G_M57116_IG31
;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG40: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57116_IG39: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -476,9 +467,9 @@ G_M57116_IG40: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {} bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov x11, x0
- b G_M57116_IG33
+ b G_M57116_IG32
;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M57116_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] mov w0, #23 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentNullException(int) @@ -489,7 +480,7 @@ G_M57116_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ...

-4 (-0.09%) : 134632.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T01] ( 85,307.50) byref -> x19 single-def ; V01 arg1 [V01,T65] ( 12, 18 ) byref -> x21 single-def
-; V02 arg2 [V02,T79] ( 6, 12 ) struct (16) [fp+0xB8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T80] ( 6, 12 ) struct (16) [fp+0xB8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T62] ( 11, 21.50) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,49 +24,49 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x7 ; V14 loc10 [V14,T29] ( 11, 42 ) int -> [fp+0xA0] ptr ; V15 loc11 [V15,T69] ( 5, 18 ) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> registers ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> registers ptr
; V17 loc13 [V17,T72] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0x9C] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T11] ( 16, 71 ) int -> [fp+0x98] ptr
-; V21 loc17 [V21,T125] ( 3, 5 ) ubyte -> [fp+0x94]
+; V21 loc17 [V21,T126] ( 3, 5 ) ubyte -> [fp+0x94]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x8 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0x88] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T123] ( 5, 5.50) ref -> [fp+0x40] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T80] ( 6, 12.50) int -> [fp+0x84] ptr
+; V26 loc22 [V26,T124] ( 5, 5.50) ref -> [fp+0x40] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T81] ( 6, 12.50) int -> [fp+0x84] ptr
; V28 loc24 [V28,T71] ( 7, 17.50) int -> [fp+0x80] ptr
-; V29 loc25 [V29,T126] ( 3, 5 ) int -> [fp+0x7C] spill-single-def ptr -; V30 loc26 [V30,T91] ( 5, 11 ) int -> [fp+0x78] ptr -; V31 loc27 [V31,T148] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T127] ( 3, 5 ) int -> [fp+0x74] spill-single-def ptr -; V33 loc29 [V33,T92] ( 5, 10 ) ref -> [fp+0x38] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T127] ( 3, 5 ) int -> [fp+0x7C] spill-single-def ptr +; V30 loc26 [V30,T92] ( 5, 11 ) int -> [fp+0x78] ptr +; V31 loc27 [V31,T149] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T128] ( 3, 5 ) int -> [fp+0x74] spill-single-def ptr +; V33 loc29 [V33,T93] ( 5, 10 ) ref -> [fp+0x38] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T12] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x68] must-init pinned ptr ; V36 loc32 [V36,T37] ( 8, 33 ) long -> [fp+0x60] ptr
-; V37 loc33 [V37,T113] ( 3, 6 ) ubyte -> x5
+; V37 loc33 [V37,T114] ( 3, 6 ) ubyte -> x5
; V38 loc34 [V38,T53] ( 6, 24 ) int -> x6 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V43 tmp3 [V43,T144] ( 3, 2 ) int -> x2 -; V44 tmp4 [V44,T146] ( 2, 2 ) int -> x2 -; V45 tmp5 [V45,T147] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T149] ( 2, 1 ) int -> x2
+; V43 tmp3 [V43,T145] ( 3, 2 ) int -> x2 +; V44 tmp4 [V44,T147] ( 2, 2 ) int -> x2 +; V45 tmp5 [V45,T148] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T150] ( 2, 1 ) int -> x2
; V47 tmp7 [V47 ] ( 1, 1 ) struct (16) [fp+0xC8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V48 tmp8 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ; V49 tmp9 [V49,T55] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V50 tmp10 [V50,T77] ( 2, 16 ) int -> x1 "dup spill" -; V51 tmp11 [V51,T109] ( 2, 8 ) int -> x3 "impSpillLclRefs" -; V52 tmp12 [V52,T110] ( 2, 8 ) int -> x3 "impSpillLclRefs"
+; V50 tmp10 [V50,T78] ( 2, 16 ) int -> x1 "dup spill" +; V51 tmp11 [V51,T110] ( 2, 8 ) int -> x3 "impSpillLclRefs" +; V52 tmp12 [V52,T111] ( 2, 8 ) int -> x3 "impSpillLclRefs"
; V53 tmp13 [V53,T41] ( 2, 32 ) int -> x3 "impSpillLclRefs" ; V54 tmp14 [V54,T13] ( 2, 64 ) int -> x26 "dup spill"
-; V55 tmp15 [V55,T114] ( 3, 6 ) int -> x9 -; V56 tmp16 [V56,T86] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V57 tmp17 [V57,T103] ( 4, 8 ) int -> x1 -; V58 tmp18 [V58,T115] ( 3, 6 ) int -> x3
+; V55 tmp15 [V55,T115] ( 3, 6 ) int -> x9 +; V56 tmp16 [V56,T87] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V57 tmp17 [V57,T104] ( 4, 8 ) int -> x1 +; V58 tmp18 [V58,T116] ( 3, 6 ) int -> x3
; V59 tmp19 [V59,T42] ( 2, 32 ) int -> x5 "impSpillLclRefs" ;* V60 tmp20 [V60 ] ( 0, 0 ) byref -> zero-ref ptr ; V61 tmp21 [V61,T43] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -74,27 +74,27 @@ ; V63 tmp23 [V63,T56] ( 3, 24 ) int -> x4 ;* V64 tmp24 [V64 ] ( 0, 0 ) int -> zero-ref ;* V65 tmp25 [V65 ] ( 0, 0 ) int -> zero-ref ptr
-; V66 tmp26 [V66,T150] ( 2, 1 ) int -> x1 -; V67 tmp27 [V67,T151] ( 2, 1 ) int -> x9
+; V66 tmp26 [V66,T151] ( 2, 1 ) int -> x1 +; V67 tmp27 [V67,T152] ( 2, 1 ) int -> x9
;* V68 tmp28 [V68 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V69 tmp29 [V69,T54] ( 3, 24 ) byref -> x0 "dup spill"
-; V70 tmp30 [V70,T106] ( 3, 8 ) int -> x1
+; V70 tmp30 [V70,T107] ( 3, 8 ) int -> x1
; V71 tmp31 [V71,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V72 tmp32 [V72,T14] ( 2, 64 ) int -> x10 "dup spill" ; V73 tmp33 [V73,T03] ( 2,256 ) int -> x9 "dup spill" ; V74 tmp34 [V74,T04] ( 2,256 ) int -> x0 "impSpillLclRefs" ;* V75 tmp35 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V76 tmp36 [V76,T140] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
+; V76 tmp36 [V76,T141] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
;* V77 tmp37 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V78 tmp38 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V79 tmp39 [V79 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V80 tmp40 [V80 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V81 tmp41 [V81,T111] ( 2, 8.00) long -> x2 "Inlining Arg"
+; V81 tmp41 [V81,T112] ( 2, 8.00) long -> x2 "Inlining Arg"
;* V82 tmp42 [V82 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V83 tmp43 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V84 tmp44 [V84,T124] ( 5, 5 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V85 tmp45 [V85,T142] ( 5, 2.50) int -> x0 "Inline stloc first use temp" -; V86 tmp46 [V86,T141] ( 3, 3 ) byref -> x2 single-def "Span.get_Item ptrToSpan"
+; V84 tmp44 [V84,T125] ( 5, 5 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V85 tmp45 [V85,T143] ( 5, 2.50) int -> x0 "Inline stloc first use temp" +; V86 tmp46 [V86,T142] ( 3, 3 ) byref -> x2 single-def "Span.get_Item ptrToSpan"
;* V87 tmp47 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V88 tmp48 [V88,T38] ( 4, 32 ) int -> x4 "Inline stloc first use temp" ;* V89 tmp49 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> @@ -115,50 +115,50 @@ ; V104 tmp64 [V104,T40] ( 2, 32 ) byref -> x1 "Inlining Arg" ; V105 tmp65 [V105,T44] ( 2, 32 ) long -> x5 "Inlining Arg" ;* V106 tmp66 [V106 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V107 tmp67 [V107,T104] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
+; V107 tmp67 [V107,T105] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V109 tmp69 [V109,T31] ( 10, 40 ) ref -> [fp+0x20] class-hnd exact spill-single-def ptr "Inlining Arg" <System.String>
-; V110 tmp70 [V110,T93] ( 5, 10 ) int -> x1 "Inline stloc first use temp" -; V111 tmp71 [V111,T81] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan" -; V112 tmp72 [V112,T94] ( 5, 10.00) int -> [fp+0x54] spill-single-def ptr "Inline stloc first use temp"
+; V110 tmp70 [V110,T94] ( 5, 10 ) int -> x1 "Inline stloc first use temp" +; V111 tmp71 [V111,T82] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan" +; V112 tmp72 [V112,T95] ( 5, 10.00) int -> [fp+0x54] spill-single-def ptr "Inline stloc first use temp"
;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V114 tmp74 [V114,T82] ( 3, 12.00) byref -> x1 "Inlining Arg"
+; V114 tmp74 [V114,T83] ( 3, 12.00) byref -> x1 "Inlining Arg"
;* V115 tmp75 [V115 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V116 tmp76 [V116,T87] ( 3, 12.00) int -> [fp+0x50] spill-single-def ptr "Inlining Arg" -; V117 tmp77 [V117,T107] ( 2, 8.00) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
+; V116 tmp76 [V116,T88] ( 3, 12.00) int -> [fp+0x50] spill-single-def ptr "Inlining Arg" +; V117 tmp77 [V117,T108] ( 2, 8.00) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V118 tmp78 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V119 tmp79 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V120 tmp80 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V121 tmp81 [V121 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V122 tmp82 [V122,T108] ( 2, 8 ) byref -> x1 "Inlining Arg" -; V123 tmp83 [V123,T112] ( 2, 8 ) long -> x5 "Inlining Arg"
+; V122 tmp82 [V122,T109] ( 2, 8 ) byref -> x1 "Inlining Arg" +; V123 tmp83 [V123,T113] ( 2, 8 ) long -> x5 "Inlining Arg"
;* V124 tmp84 [V124 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V125 tmp85 [V125,T66] ( 5, 20 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
-; V126 tmp86 [V126,T95] ( 5, 10 ) int -> x2 "Inline stloc first use temp" -; V127 tmp87 [V127,T83] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
+; V126 tmp86 [V126,T96] ( 5, 10 ) int -> x2 "Inline stloc first use temp" +; V127 tmp87 [V127,T84] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
; V128 tmp88 [V128,T67] ( 5, 20 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
-; V129 tmp89 [V129,T96] ( 5, 10 ) int -> x3 "Inline stloc first use temp" -; V130 tmp90 [V130,T84] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
+; V129 tmp89 [V129,T97] ( 5, 10 ) int -> x3 "Inline stloc first use temp" +; V130 tmp90 [V130,T85] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
; V131 tmp91 [V131,T52] ( 6, 24 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
-; V132 tmp92 [V132,T97] ( 5, 10 ) int -> x3 "Inline stloc first use temp" -; V133 tmp93 [V133,T85] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
+; V132 tmp92 [V132,T98] ( 5, 10 ) int -> x3 "Inline stloc first use temp" +; V133 tmp93 [V133,T86] ( 3, 12 ) byref -> x5 "Span.get_Item ptrToSpan"
; V134 tmp94 [V134,T34] ( 5, 40 ) int -> x5 "Inline stloc first use temp" ;* V135 tmp95 [V135 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V136 tmp96 [V136,T24] ( 3, 48 ) ushort -> x1 "Inlining Arg"
-; V137 tmp97 [V137,T98] ( 5, 10 ) int -> x3 "Inline stloc first use temp"
+; V137 tmp97 [V137,T99] ( 5, 10 ) int -> x3 "Inline stloc first use temp"
;* V138 tmp98 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V139 tmp99 [V139,T88] ( 3, 12 ) ushort -> x1 "Inlining Arg" -; V140 tmp100 [V140,T99] ( 5, 10 ) int -> x6 "Inline stloc first use temp"
+; V139 tmp99 [V139,T89] ( 3, 12 ) ushort -> x1 "Inlining Arg" +; V140 tmp100 [V140,T100] ( 5, 10 ) int -> x6 "Inline stloc first use temp"
;* V141 tmp101 [V141 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V142 tmp102 [V142,T100] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V142 tmp102 [V142,T101] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V144 tmp104 [V144,T101] ( 5, 10 ) int -> x3 "Inline stloc first use temp"
+; V144 tmp104 [V144,T102] ( 5, 10 ) int -> x3 "Inline stloc first use temp"
;* V145 tmp105 [V145 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V146 tmp106 [V146,T70] ( 3, 18 ) ushort -> x1 "Inlining Arg" ; V147 tmp107 [V147,T35] ( 5, 40 ) int -> x3 "Inline stloc first use temp" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V149 tmp109 [V149,T25] ( 3, 48 ) ushort -> x1 "Inlining Arg"
-; V150 tmp110 [V150,T102] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V150 tmp110 [V150,T103] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V151 tmp111 [V151 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V152 tmp112 [V152,T68] ( 6, 19 ) byref -> [fp+0x10] ptr "field V19._reference (fldOffset=0x0)" P-INDEP ; V153 tmp113 [V153,T49] ( 9, 27 ) int -> [fp+0x4C] ptr "field V19._length (fldOffset=0x8)" P-INDEP @@ -166,75 +166,76 @@ ;* V155 tmp115 [V155 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP ;* V156 tmp116 [V156 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP ;* V157 tmp117 [V157 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-;* V158 tmp118 [V158,T152] ( 0, 0 ) byref -> zero-ref single-def ptr "field V42._reference (fldOffset=0x0)" P-INDEP -;* V159 tmp119 [V159,T153] ( 0, 0 ) int -> zero-ref ptr "field V42._length (fldOffset=0x8)" P-INDEP -; V160 tmp120 [V160,T145] ( 2, 2 ) byref -> x5 single-def "field V48._reference (fldOffset=0x0)" P-INDEP -;* V161 tmp121 [V161,T154] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP
+;* V158 tmp118 [V158,T153] ( 0, 0 ) byref -> zero-ref single-def ptr "field V42._reference (fldOffset=0x0)" P-INDEP +;* V159 tmp119 [V159,T154] ( 0, 0 ) int -> zero-ref ptr "field V42._length (fldOffset=0x8)" P-INDEP +; V160 tmp120 [V160,T146] ( 2, 2 ) byref -> x5 single-def "field V48._reference (fldOffset=0x0)" P-INDEP +;* V161 tmp121 [V161,T155] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP
;* V162 tmp122 [V162 ] ( 0, 0 ) byref -> zero-ref "field V68._reference (fldOffset=0x0)" P-INDEP ;* V163 tmp123 [V163 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP ;* V164 tmp124 [V164 ] ( 0, 0 ) byref -> zero-ref ptr "field V75._reference (fldOffset=0x0)" P-INDEP ;* V165 tmp125 [V165 ] ( 0, 0 ) int -> zero-ref ptr "field V75._length (fldOffset=0x8)" P-INDEP
-; V166 tmp126 [V166,T128] ( 2, 4.00) byref -> x0 "field V77._reference (fldOffset=0x0)" P-INDEP -; V167 tmp127 [V167,T136] ( 2, 4 ) int -> x2 "field V77._length (fldOffset=0x8)" P-INDEP
+; V166 tmp126 [V166,T129] ( 2, 4.00) byref -> x0 "field V77._reference (fldOffset=0x0)" P-INDEP +; V167 tmp127 [V167,T137] ( 2, 4 ) int -> x2 "field V77._length (fldOffset=0x8)" P-INDEP
;* V168 tmp128 [V168 ] ( 0, 0 ) byref -> zero-ref ptr "field V78._reference (fldOffset=0x0)" P-INDEP ;* V169 tmp129 [V169 ] ( 0, 0 ) int -> zero-ref ptr "field V78._length (fldOffset=0x8)" P-INDEP
-; V170 tmp130 [V170,T129] ( 2, 4.00) byref -> x1 "field V83._reference (fldOffset=0x0)" P-INDEP -; V171 tmp131 [V171,T137] ( 2, 4.00) int -> x4 "field V83._length (fldOffset=0x8)" P-INDEP
+; V170 tmp130 [V170,T130] ( 2, 4.00) byref -> x1 "field V83._reference (fldOffset=0x0)" P-INDEP +; V171 tmp131 [V171,T138] ( 2, 4.00) int -> x4 "field V83._length (fldOffset=0x8)" P-INDEP
;* V172 tmp132 [V172 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V87._reference (fldOffset=0x0)" P-INDEP ;* V173 tmp133 [V173 ] ( 0, 0 ) int -> zero-ref ptr "field V87._length (fldOffset=0x8)" P-INDEP
-; V174 tmp134 [V174,T74] ( 2, 16 ) byref -> x5 "field V89._reference (fldOffset=0x0)" P-INDEP -; V175 tmp135 [V175,T78] ( 2, 16 ) int -> x6 "field V89._length (fldOffset=0x8)" P-INDEP
+; V174 tmp134 [V174,T75] ( 2, 16 ) byref -> x5 "field V89._reference (fldOffset=0x0)" P-INDEP +; V175 tmp135 [V175,T79] ( 2, 16 ) int -> x6 "field V89._length (fldOffset=0x8)" P-INDEP
;* V176 tmp136 [V176 ] ( 0, 0 ) byref -> zero-ref "field V95._reference (fldOffset=0x0)" P-INDEP ;* V177 tmp137 [V177 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP ;* V178 tmp138 [V178 ] ( 0, 0 ) byref -> zero-ref ptr "field V97._reference (fldOffset=0x0)" P-INDEP ;* V179 tmp139 [V179 ] ( 0, 0 ) int -> zero-ref ptr "field V97._length (fldOffset=0x8)" P-INDEP ;* V180 tmp140 [V180 ] ( 0, 0 ) byref -> zero-ref ptr "field V102._reference (fldOffset=0x0)" P-INDEP ;* V181 tmp141 [V181 ] ( 0, 0 ) int -> zero-ref ptr "field V102._length (fldOffset=0x8)" P-INDEP
-; V182 tmp142 [V182,T130] ( 2, 4 ) byref -> x5 "field V108._reference (fldOffset=0x0)" P-INDEP -; V183 tmp143 [V183,T138] ( 2, 4 ) int -> x6 "field V108._length (fldOffset=0x8)" P-INDEP
+; V182 tmp142 [V182,T131] ( 2, 4 ) byref -> x5 "field V108._reference (fldOffset=0x0)" P-INDEP +; V183 tmp143 [V183,T139] ( 2, 4 ) int -> x6 "field V108._length (fldOffset=0x8)" P-INDEP
;* V184 tmp144 [V184 ] ( 0, 0 ) byref -> zero-ref "field V113._reference (fldOffset=0x0)" P-INDEP ;* V185 tmp145 [V185 ] ( 0, 0 ) int -> zero-ref "field V113._length (fldOffset=0x8)" P-INDEP ;* V186 tmp146 [V186 ] ( 0, 0 ) byref -> zero-ref ptr "field V115._reference (fldOffset=0x0)" P-INDEP ;* V187 tmp147 [V187 ] ( 0, 0 ) int -> zero-ref ptr "field V115._length (fldOffset=0x8)" P-INDEP ;* V188 tmp148 [V188 ] ( 0, 0 ) byref -> zero-ref ptr "field V120._reference (fldOffset=0x0)" P-INDEP ;* V189 tmp149 [V189 ] ( 0, 0 ) int -> zero-ref ptr "field V120._length (fldOffset=0x8)" P-INDEP
-; V190 tmp150 [V190,T75] ( 2, 16 ) byref -> x6 "field V135._reference (fldOffset=0x0)" P-INDEP
+; V190 tmp150 [V190,T76] ( 2, 16 ) byref -> x6 "field V135._reference (fldOffset=0x0)" P-INDEP
; V191 tmp151 [V191,T57] ( 3, 24 ) int -> x9 "field V135._length (fldOffset=0x8)" P-INDEP
-; V192 tmp152 [V192,T131] ( 2, 4 ) byref -> x5 "field V138._reference (fldOffset=0x0)" P-INDEP -; V193 tmp153 [V193,T116] ( 3, 6 ) int -> x6 "field V138._length (fldOffset=0x8)" P-INDEP -; V194 tmp154 [V194,T132] ( 2, 4 ) byref -> x1 "field V141._reference (fldOffset=0x0)" P-INDEP -; V195 tmp155 [V195,T117] ( 3, 6 ) int -> x5 "field V141._length (fldOffset=0x8)" P-INDEP -; V196 tmp156 [V196,T133] ( 2, 4 ) byref -> x5 "field V143._reference (fldOffset=0x0)" P-INDEP -; V197 tmp157 [V197,T118] ( 3, 6 ) int -> x6 "field V143._length (fldOffset=0x8)" P-INDEP -; V198 tmp158 [V198,T134] ( 2, 4 ) byref -> x5 "field V145._reference (fldOffset=0x0)" P-INDEP -; V199 tmp159 [V199,T119] ( 3, 6 ) int -> x6 "field V145._length (fldOffset=0x8)" P-INDEP -; V200 tmp160 [V200,T76] ( 2, 16 ) byref -> x4 "field V148._reference (fldOffset=0x0)" P-INDEP
+; V192 tmp152 [V192,T132] ( 2, 4 ) byref -> x5 "field V138._reference (fldOffset=0x0)" P-INDEP +; V193 tmp153 [V193,T117] ( 3, 6 ) int -> x6 "field V138._length (fldOffset=0x8)" P-INDEP
...

+0 (0.00%) : 3864.dasm - System.Globalization.Tests.InvariantModeTests:TestCasing():this (Tier1-OSR)

@@ -1398,7 +1398,7 @@ G_M5063_IG49: ; bbWeight=32.74, gcVars=0000000000000000000000000008000000 G_M5063_IG50: ; bbWeight=8.18, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0x8C] // [V327 tmp316] cmp w0, #9
- blo G_M5063_IG105
+ blo G_M5063_IG104
;; size=12 bbWeight=8.18 PerfScore 28.65 G_M5063_IG51: ; bbWeight=8.15, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref add x0, x27, #12 @@ -2313,7 +2313,7 @@ G_M5063_IG102: ; bbWeight=32.74, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 ; byrRegs +[x1] sxtw w2, w25 cmp w2, #8
- bge G_M5063_IG103
+ bge G_M5063_IG105
movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #2 LSL #32 @@ -2322,22 +2322,11 @@ G_M5063_IG102: ; bbWeight=32.74, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 ; gcrRegs -[x23-x24] ; byrRegs -[x0-x1] sxtw w22, w0
- b G_M5063_IG104 - ;; size=48 bbWeight=32.74 PerfScore 327.39 -G_M5063_IG103: ; bbWeight=32.74, gcrefRegs=1C100000 {x20 x26 x27 x28}, byrefRegs=0003 {x0 x1}, byref - ; byrRegs +[x0-x1] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #2 LSL #32 - ldr x3, [x3] - blr x3 - ; byrRegs -[x0-x1] - sxtw w22, w0 - ;; size=24 bbWeight=32.74 PerfScore 196.44 -G_M5063_IG104: ; bbWeight=32.74, gcrefRegs=1C100000 {x20 x26 x27 x28}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=32.74 PerfScore 294.65 +G_M5063_IG103: ; bbWeight=32.74, gcrefRegs=1C100000 {x20 x26 x27 x28}, byrefRegs=0000 {}, byref
b G_M5063_IG75 ;; size=4 bbWeight=32.74 PerfScore 32.74
-G_M5063_IG105: ; bbWeight=0.03, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref
+G_M5063_IG104: ; bbWeight=0.03, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref
; gcrRegs +[x23-x24] add x0, fp, #0xD1FFAB1E // [V08 loc7] mov x1, x27 @@ -2350,7 +2339,20 @@ G_M5063_IG105: ; bbWeight=0.03, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x ; gcrRegs -[x1] b G_M5063_IG52 ;; size=32 bbWeight=0.03 PerfScore 0.26
+G_M5063_IG105: ; bbWeight=32.74, gcrefRegs=1C100000 {x20 x26 x27 x28}, byrefRegs=0003 {x0 x1}, byref + ; gcrRegs -[x23-x24] + ; byrRegs +[x0-x1] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #2 LSL #32 + ldr x3, [x3] + blr x3 + ; byrRegs -[x0-x1] + sxtw w22, w0 + b G_M5063_IG103 + ;; size=28 bbWeight=32.74 PerfScore 229.17
G_M5063_IG106: ; bbWeight=0.03, gcrefRegs=1D900000 {x20 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x23-x24]
add x0, fp, #0xD1FFAB1E // [V08 loc7] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16

+12 (+0.18%) : 123695.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

@@ -147,7 +147,7 @@ ; V134 tmp124 [V134,T50] ( 2, 398.42) byref -> x0 "Inlining Arg" ;* V135 tmp125 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V136 tmp126 [V136 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V137 tmp127 [V137,T25] ( 5, 1799.82) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.String>
+; V137 tmp127 [V137,T25] ( 5, 1799.82) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
;* V138 tmp128 [V138 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V139 tmp129 [V139,T34] ( 4, 799.92) int -> x24 "Inlining Arg" ;* V140 tmp130 [V140 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -160,20 +160,20 @@ ;* V147 tmp137 [V147 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V148 tmp138 [V148 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V149 tmp139 [V149 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V150 tmp140 [V150,T41] ( 10, 470.33) ref -> x28 class-hnd "Inline stloc first use temp" <ushort[]> -; V151 tmp141 [V151,T52] ( 2, 386.71) ref -> x24 class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]> -; V152 tmp142 [V152,T79] ( 6, 116.41) ref -> x24 class-hnd exact "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[ushort]> -; V153 tmp143 [V153,T51] ( 8, 396.66) int -> x25 "Inline stloc first use temp" -; V154 tmp144 [V154,T53] ( 2, 386.71) ref -> x26 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V155 tmp145 [V155,T54] ( 5, 367.28) ref -> x26
+; V150 tmp140 [V150,T41] ( 10, 470.33) ref -> x25 class-hnd "Inline stloc first use temp" <ushort[]> +; V151 tmp141 [V151,T52] ( 2, 386.71) ref -> x26 class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]> +; V152 tmp142 [V152,T79] ( 6, 116.41) ref -> x26 class-hnd exact "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[ushort]> +; V153 tmp143 [V153,T51] ( 8, 396.66) int -> x27 "Inline stloc first use temp" +; V154 tmp144 [V154,T53] ( 2, 386.71) ref -> x28 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V155 tmp145 [V155,T54] ( 5, 367.28) ref -> x28
;* V156 tmp146 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]> ; V157 tmp147 [V157,T74] ( 4, 173.85) ubyte -> [fp+0x54] "Inline stloc first use temp" ; V158 tmp148 [V158,T80] ( 3, 106.65) ubyte -> [fp+0x50] "Inline stloc first use temp"
-; V159 tmp149 [V159,T73] ( 4, 174.02) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
+; V159 tmp149 [V159,T73] ( 4, 174.02) ref -> [fp+0x20] class-hnd exact "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
; V160 tmp150 [V160,T159] ( 2, 0 ) int -> [fp+0x4C] spill-single-def "impAppendStmt" ; V161 tmp151 [V161,T160] ( 2, 0 ) int -> [fp+0x48] spill-single-def "impAppendStmt" ; V162 tmp152 [V162,T161] ( 2, 0 ) int -> [fp+0x44] spill-single-def "impAppendStmt"
-; V163 tmp153 [V163,T162] ( 2, 0 ) int -> x28 "impAppendStmt"
+; V163 tmp153 [V163,T162] ( 2, 0 ) int -> x25 "impAppendStmt"
;* V164 tmp154 [V164 ] ( 0, 0 ) ref -> zero-ref ;* V165 tmp155 [V165 ] ( 0, 0 ) int -> zero-ref ;* V166 tmp156 [V166 ] ( 0, 0 ) int -> zero-ref @@ -196,7 +196,7 @@ ; V183 tmp173 [V183,T154] ( 3, 0 ) int -> x5 ; V184 tmp174 [V184,T56] ( 2, 347.34) int -> [fp+0x40] spill-single-def "impAppendStmt" ; V185 tmp175 [V185,T55] ( 4, 347.34) byref -> x0 "Inline stloc first use temp"
-; V186 tmp176 [V186,T42] ( 3, 487.93) ref -> x26 class-hnd "Inline stloc first use temp" <System.Array>
+; V186 tmp176 [V186,T42] ( 3, 487.93) ref -> x28 class-hnd "Inline stloc first use temp" <System.Array>
;* V187 tmp177 [V187 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray> ; V188 tmp178 [V188,T87] ( 2, 78.57) ref -> x2 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions> ; V189 tmp179 [V189,T88] ( 4, 58.94) ref -> x2 @@ -209,19 +209,19 @@ ;* V196 tmp186 [V196 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V197 tmp187 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V198 tmp188 [V198,T72] ( 3, 176.77) ubyte -> x3 "Inline return value spill temp"
-; V199 tmp189 [V199,T18] ( 6, 2533.75) ref -> [fp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V199 tmp189 [V199,T18] ( 6, 2533.75) ref -> [fp+0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V200 tmp190 [V200,T13] ( 7, 3456.89) int -> [fp+0x38] "Inline stloc first use temp" ; V201 tmp191 [V201,T24] ( 4, 1885.58) int -> [fp+0x34] "Inline stloc first use temp"
-; V202 tmp192 [V202,T19] ( 2, 2514.11) int -> x1 "dup spill"
+; V202 tmp192 [V202,T19] ( 2, 2514.11) int -> x2 "dup spill"
;* V203 tmp193 [V203 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V204 tmp194 [V204,T108] ( 4, 0 ) int -> [fp+0x30] "Inline return value spill temp" ; V205 tmp195 [V205,T75] ( 4, 117.85) int -> x2 "dup spill" ;* V206 tmp196 [V206 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V207 tmp197 [V207 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V208 tmp198 [V208,T27] ( 3, 1571.32) ubyte -> [fp+0x2C] "Inline stloc first use temp"
-; V209 tmp199 [V209,T09] ( 8, 8799.37) ref -> [fp+0x18] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V210 tmp200 [V210,T26] ( 3, 1571.32) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> -; V211 tmp201 [V211,T23] ( 5, 2199.84) int -> x0 "Inline stloc first use temp"
+; V209 tmp199 [V209,T09] ( 8, 8799.37) ref -> [fp+0x10] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V210 tmp200 [V210,T26] ( 3, 1571.32) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>> +; V211 tmp201 [V211,T23] ( 5, 2199.84) int -> x3 "Inline stloc first use temp"
; V212 tmp202 [V212,T164] ( 2, 0 ) int -> x4 "Inlining Arg" ;* V213 tmp203 [V213 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.Metadata.StringHandle> ;* V214 tmp204 [V214,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -239,7 +239,7 @@ ;* V226 tmp216 [V226 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V227 tmp217 [V227 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ubyte[]> ; V228 tmp218 [V228,T165] ( 2, 0 ) int -> x24 "Inlining Arg"
-; V229 tmp219 [V229,T111] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V229 tmp219 [V229,T111] ( 3, 0 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
; V230 tmp220 [V230,T166] ( 2, 0 ) int -> x27 "Inlining Arg" ; V231 tmp221 [V231,T112] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ; V232 tmp222 [V232,T167] ( 2, 0 ) int -> x19 "Inlining Arg" @@ -437,7 +437,7 @@ G_M20288_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=48 bbWeight=0.01 PerfScore 0.13 G_M20288_IG02: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cmp w20, #4, LSL #12
- bge G_M20288_IG93
+ bge G_M20288_IG94
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 @@ -461,7 +461,7 @@ G_M20288_IG03: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg blr x2 ; gcr arg pop 0 str x0, [fp, #0xD1FFAB1E] // [V05 loc4+0x08]
- cbz x0, G_M20288_IG82
+ cbz x0, G_M20288_IG83
add x24, x0, #16 ; byrRegs +[x24] ldr w25, [x0, #0x08] @@ -475,7 +475,7 @@ G_M20288_IG04: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG94
+ bhi G_M20288_IG95
ldr x1, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x1] ubfiz x2, x0, #1, #32 @@ -502,7 +502,7 @@ G_M20288_IG05: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe ; gcr arg pop 0 ;; size=40 bbWeight=399.96 PerfScore 3199.68 G_M20288_IG06: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref, isz
- cbz w25, G_M20288_IG41
+ cbz w25, G_M20288_IG67
;; size=4 bbWeight=99.99 PerfScore 99.99 G_M20288_IG07: ; bbWeight=99.60, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref movz x0, #0xD1FFAB1E @@ -518,13 +518,13 @@ G_M20288_IG08: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ; byrRegs -[x24] sxtw w24, w20 ldrb w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x14]
- cbnz w0, G_M20288_IG83
+ cbnz w0, G_M20288_IG84
;; size=12 bbWeight=99.99 PerfScore 349.97 G_M20288_IG09: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG94
+ bhi G_M20288_IG95
ldr x1, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x1] ubfiz x2, x0, #1, #32 @@ -558,7 +558,7 @@ G_M20288_IG11: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr x0, [fp, #0xD1FFAB1E] // [V05 loc4] ; gcrRegs +[x0] sxtw w1, w24
- tbnz w1, #31, G_M20288_IG31
+ tbnz w1, #31, G_M20288_IG54
;; size=20 bbWeight=99.99 PerfScore 449.96 G_M20288_IG12: ; bbWeight=99.78, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref, isz ; gcrRegs -[x0] @@ -704,7 +704,7 @@ G_M20288_IG23: ; bbWeight=99.78, gcrefRegs=A80000 {x19 x21 x23}, byrefReg str xzr, [fp, #0x58] // [V77 tmp67] ;; size=4 bbWeight=99.78 PerfScore 99.78 G_M20288_IG24: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
- cbz w0, G_M20288_IG84
+ cbz w0, G_M20288_IG85
ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0x60] // [V39 tmp29] add w0, w0, w1 @@ -714,7 +714,7 @@ G_M20288_IG25: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w1, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w0, w1
- bhi G_M20288_IG94
+ bhi G_M20288_IG95
ldr x1, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x1] ubfiz x2, x0, #1, #32 @@ -742,7 +742,7 @@ G_M20288_IG26: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe ; gcr arg pop 0 ;; size=40 bbWeight=399.96 PerfScore 3199.68 G_M20288_IG27: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref, isz
- cbz w25, G_M20288_IG54
+ cbz w25, G_M20288_IG71
;; size=4 bbWeight=99.99 PerfScore 99.99 G_M20288_IG28: ; bbWeight=99.60, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=1000000 {x24}, byref movz x0, #0xD1FFAB1E @@ -759,10 +759,10 @@ G_M20288_IG29: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefReg ldr w24, [fp, #0xD1FFAB1E] // [V05 loc4+0x10] ldr w0, [fp, #0xD1FFAB1E] // [V05 loc4+0x20] cmp w24, w0
- bhi G_M20288_IG94
+ bhi G_M20288_IG95
ldr x25, [fp, #0xD1FFAB1E] // [V05 loc4+0x18] ; byrRegs +[x25]
- tbz w24, #31, G_M20288_IG56
+ tbz w24, #31, G_M20288_IG31
;; size=24 bbWeight=99.99 PerfScore 849.92 G_M20288_IG30: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref movz x26, #0xD1FFAB1E @@ -779,14 +779,288 @@ G_M20288_IG30: ; bbWeight=399.96, gcrefRegs=A80000 {x19 x21 x23}, byrefRe blr x2 ; gcrRegs -[x0-x1] +[x26] ; gcr arg pop 0
+ mov x0, x26 + ; gcrRegs +[x0] + mov x1, x26 + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1 x26] + ; gcr arg pop 0 + ;; size=68 bbWeight=399.96 PerfScore 5799.42 +G_M20288_IG31: ; bbWeight=99.99, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=2000000 {x25}, byref, isz + mov x0, x25 + ; byrRegs +[x0] + sxtw w1, w24 + bl <unknown method> + ; gcrRegs +[x0] + ; byrRegs -[x0 x25] + ; gcr arg pop 0 + mov x24, x0 + ; gcrRegs +[x24] + ldr x25, [fp, #0xD1FFAB1E] // [V05 loc4+0x08] + ; gcrRegs +[x25] + stp xzr, xzr, [fp, #0xD1FFAB1E] + stp xzr, xzr, [fp, #0xD1FFAB1E] + str xzr, [fp, #0xD1FFAB1E] + cbz x25, G_M20288_IG39 + ;; size=36 bbWeight=99.99 PerfScore 849.92 +G_M20288_IG32: ; bbWeight=96.68, gcrefRegs=3A80000 {x19 x21 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x26, x21 + ; gcrRegs +[x26] + ldr w0, [x25, #0x08] + sub w0, w0, #1 + orr w0, w0, #15 + clz w0, w0 + eor w0, w0, #31 + sub w27, w0, #3 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + mov w1, #13 + bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS + ; byrRegs +[x0] + ; gcr arg pop 0 + ldr x28, [x0] + ; gcrRegs +[x28] + cbz x28, G_M20288_IG52 + ;; size=56 bbWeight=96.68 PerfScore 1256.82 +G_M20288_IG33: ; bbWeight=87.01, gcrefRegs=17A80000 {x19 x21 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0] + mov w2, wzr + mov w3, #1 + str w3, [fp, #0x50] // [V158 tmp148] + ldr w0, [x28, #0x08] + cmp w0, w27 + bls G_M20288_IG38 + ;; size=24 bbWeight=87.01 PerfScore 565.57 +G_M20288_IG34: ; bbWeight=86.83, gcrefRegs=17A80000 {x19 x21 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz + mov w2, #1 + str w2, [fp, #0x54] // [V157 tmp147] + ldr w4, [x25, #0x08] + str w4, [fp, #0x40] // [V184 tmp174]
...

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-20 (-11.90%) : 147949.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> -; V01 arg1 [V01,T02] ( 5, 22 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> -; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> x21
+; V00 this [V00,T02] ( 4, 18 ) ref -> x20 this class-hnd single-def <System.Net.HttpEndPointListener> +; V01 arg1 [V01,T01] ( 5, 26 ) ref -> x19 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> +; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> x0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket> @@ -18,22 +18,21 @@ ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP ;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP
-; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14120_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp add x2, sp, #48
- str x2, [fp, #0x10] // [V10 PSPSym]
+ str x2, [fp, #0x18] // [V10 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=32 bbWeight=8 PerfScore 48.00
+ ;; size=28 bbWeight=8 PerfScore 40.00
G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref str xzr, [x19, #0x08] ldr x0, [x20, #0x18] @@ -49,12 +48,9 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=44 bbWeight=8 PerfScore 112.00
+ ;; size=40 bbWeight=8 PerfScore 108.00
G_M14120_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w21, G_M14120_IG05 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M14120_IG04
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -66,35 +62,30 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M14120_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz w21, G_M14120_IG02 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M14120_IG02 + ;; size=36 bbWeight=8 PerfScore 68.00 +G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M14120_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M14120_IG06]
+ str x3, [sp, #0x18] + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M14120_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M14120_IG04]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 32, PerfScore 207.00, instruction count 42, allocated bytes for code 168 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 219.00, instruction count 37, allocated bytes for code 148 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -113,31 +104,29 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
+ E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0 E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
- E4 end - E4 end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)
+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
-16 (-4.12%) : 216621.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
@@ -8,7 +8,7 @@ ; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01 ] ( 3, 5 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Numerics.BigInteger> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Numerics.BigInteger> ; V03 loc2 [V03,T06] ( 3, 6 ) ref -> x19 class-hnd exact single-def <System.String> @@ -50,10 +50,10 @@ ;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "field V12._sign (fldOffset=0x8)" P-DEP ; V40 tmp34 [V40 ] ( 3, 10 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V14._bits (fldOffset=0x0)" P-DEP ; V41 tmp35 [V41 ] ( 3, 10 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V14._sign (fldOffset=0x8)" P-DEP
-; V42 tmp36 [V42,T12] ( 3, 4 ) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP -; V43 tmp37 [V43,T14] ( 3, 4 ) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP -; V44 tmp38 [V44,T13] ( 3, 4 ) byref -> x4 "field V19._reference (fldOffset=0x0)" P-INDEP -; V45 tmp39 [V45,T15] ( 3, 4 ) int -> x6 "field V19._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T11] ( 3, 5.07) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP +; V43 tmp37 [V43,T12] ( 3, 5.07) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP +; V44 tmp38 [V44,T14] ( 3, 4 ) byref -> x3 "field V19._reference (fldOffset=0x0)" P-INDEP +; V45 tmp39 [V45,T15] ( 3, 4 ) int -> x4 "field V19._length (fldOffset=0x8)" P-INDEP
; V46 tmp40 [V46 ] ( 3, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V22._bits (fldOffset=0x0)" P-DEP ; V47 tmp41 [V47 ] ( 3, 10 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V22._sign (fldOffset=0x8)" P-DEP ;* V48 tmp42 [V48 ] ( 0, 0 ) ref -> zero-ref "field V23._bits (fldOffset=0x0)" P-DEP @@ -108,7 +108,7 @@ G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x23, [fp, #0x38] // [V24 tmp18] ; gcrRegs +[x23] ldr w5, [fp, #0x40] // [V25 tmp19]
- cbnz x0, G_M64460_IG06
+ cbnz x0, G_M64460_IG08
cbnz x23, G_M64460_IG05 stp xzr, xzr, [fp, #0x28] smull x1, w2, w5 @@ -126,52 +126,43 @@ G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr w25, [fp, #0x30] // [V41 tmp35] b G_M64460_IG11 ;; size=60 bbWeight=2 PerfScore 40.00
-G_M64460_IG05: ; bbWeight=0.93, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M64460_IG05: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x24] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- mov w3, w1 - mov x1, x0 - ; byrRegs +[x1] - b G_M64460_IG07 - ;; size=20 bbWeight=0.93 PerfScore 2.80 -G_M64460_IG06: ; bbWeight=1.07, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ; byrRegs -[x0-x1]
+ ;; size=8 bbWeight=2 PerfScore 2.00 +G_M64460_IG06: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M64460_IG09 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M64460_IG07: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref + ; gcrRegs -[x23] + mov x3, xzr + ; byrRegs +[x3] + mov w4, wzr + b G_M64460_IG10 + ;; size=12 bbWeight=0.93 PerfScore 1.87 +G_M64460_IG08: ; bbWeight=1.07, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x23] + ; byrRegs -[x0 x3]
add x1, x0, #16 ; byrRegs +[x1] ldr w0, [x0, #0x08] ; gcrRegs -[x0] sxtw w3, w0
- ;; size=12 bbWeight=1.07 PerfScore 4.27 -G_M64460_IG07: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref, isz - cbnz x23, G_M64460_IG09 - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M64460_IG08: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref - ; gcrRegs -[x23] - mov x4, xzr - ; byrRegs +[x4] - mov w6, wzr - b G_M64460_IG10 - ;; size=12 bbWeight=0.93 PerfScore 1.87 -G_M64460_IG09: ; bbWeight=1.07, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref - ; gcrRegs +[x23] - ; byrRegs -[x4] - add x4, x23, #16 - ; byrRegs +[x4] - ldr w6, [x23, #0x08] - ;; size=8 bbWeight=1.07 PerfScore 3.74 -G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4}, byref - ; gcrRegs -[x23]
mov x0, x1 ; byrRegs +[x0] mov w1, w3 ; byrRegs -[x1]
- mov x3, x4
+ b G_M64460_IG06 + ;; size=24 bbWeight=1.07 PerfScore 6.40 +G_M64460_IG09: ; bbWeight=1.07, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref + add x3, x23, #16
; byrRegs +[x3]
- mov w4, w6 - ; byrRegs -[x4]
+ ldr w4, [x23, #0x08] + ;; size=8 bbWeight=1.07 PerfScore 3.74 +G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref + ; gcrRegs -[x23]
movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 movk x6, #1 LSL #32 @@ -183,7 +174,7 @@ G_M64460_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4 mov x24, x0 ; gcrRegs +[x24] mov w25, w1
- ;; size=44 bbWeight=2 PerfScore 17.00
+ ;; size=28 bbWeight=2 PerfScore 13.00
G_M64460_IG11: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] stp xzr, xzr, [fp, #0x18] @@ -228,7 +219,7 @@ G_M64460_IG14: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 388, prolog size 44, PerfScore 167.67, instruction count 97, allocated bytes for code 388 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 165.00, instruction count 93, allocated bytes for code 372 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +230,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-4.12%) : 540.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)

@@ -8,30 +8,31 @@ ; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T06] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T07] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> -; V03 loc0 [V03,T05] ( 4, 8.70) ubyte -> x22 -; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T07] ( 3, 5.35) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T08] ( 3, 5.35) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> +; V03 loc0 [V03,T06] ( 4, 8.70) ubyte -> x22 +; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T02] ( 4, 16.34) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP +; V14 tmp7 [V14,T04] ( 2, 6.70) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 18.39) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 9.65) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T13] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V21 tmp14 [V21,T02] ( 3, 20.09) ref -> x0 "arr expr" -; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T15] ( 3, 1.50) ref -> x1 "CSE - moderate"
+;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V21 tmp14 [V21,T01] ( 3, 20.09) ref -> x0 "arr expr" +; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T03] ( 2, 7.99) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -58,7 +59,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 str x0, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc2] cbnz w1, G_M52679_IG09 add x1, fp, #32 // [V05 loc2] @@ -90,19 +91,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14] cmp w23, w0
- bne G_M52679_IG10
+ bne G_M52679_IG11
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG14
+ bhs G_M52679_IG12
;; size=12 bbWeight=4.00 PerfScore 17.98 G_M52679_IG08: ; bbWeight=3.35, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG12
+ bhs G_M52679_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,21 +136,11 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG10: ; bbWeight=0.65, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w23, w0 - bne G_M52679_IG13 - ;; size=12 bbWeight=0.65 PerfScore 2.93 -G_M52679_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M52679_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -158,11 +149,11 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG16
+ cbz w0, G_M52679_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -170,18 +161,18 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V14}
+G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V15}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -189,17 +180,17 @@ G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG19: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG20
+ cbz w0, G_M52679_IG18
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04 V15}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -207,7 +198,7 @@ G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 44, PerfScore 168.63, instruction count 97, allocated bytes for code 388 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 161.70, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -218,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -255,4 +246,4 @@ Unwind Info: *************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)
+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
+12 (+1.14%) : 53375.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T31] ( 4, 4 ) ref -> x20 class-hnd <Microsoft.Extensions.Logging.LogValuesFormatter> ; V02 loc1 [V02,T06] ( 6, 21 ) int -> x19 ; V03 loc2 [V03 ] ( 1, 4 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.Logging.FormattedLogValues>
-; V04 loc3 [V04 ] ( 18, 63.99) struct (40) [fp+0x70] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 loc3 [V04 ] ( 20, 59.99) struct (40) [fp+0x70] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.Extensions.Logging.FormattedLogValues> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 3, 24 ) ref -> x23 class-hnd exact "dup spill" <<unknown class>> @@ -50,7 +50,7 @@ ;* V39 tmp33 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V40 tmp34 [V40,T15] ( 2, 8 ) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.String> ;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V42 tmp36 [V42,T02] ( 4, 32 ) int -> x21 "Inlining Arg"
+; V42 tmp36 [V42,T02] ( 6, 24.00) int -> x21 "Inlining Arg"
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V44 tmp38 [V44,T08] ( 2, 16 ) byref -> x22 "Inlining Arg" ;* V45 tmp39 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -165,7 +165,7 @@ G_M64132_IG05: ; bbWeight=4.00, gcrefRegs=100000 {x20}, byrefRegs=200000 ldr w0, [fp, #0x80] // [V04 loc3+0x10] ldr w1, [fp, #0x90] // [V04 loc3+0x20] cmp w0, w1
- bhi G_M64132_IG21
+ bhi G_M64132_IG18
;; size=60 bbWeight=4.00 PerfScore 64.00 G_M64132_IG06: ; bbWeight=4.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr x2, [fp, #0x88] // [V04 loc3+0x18] @@ -194,9 +194,9 @@ G_M64132_IG07: ; bbWeight=2.00, gcrefRegs=100000 {x20}, byrefRegs=200000 ;; size=40 bbWeight=2.00 PerfScore 16.00 G_M64132_IG08: ; bbWeight=4.00, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz cmp w22, #3
- blo G_M64132_IG12
+ blo G_M64132_IG17
;; size=8 bbWeight=4.00 PerfScore 6.00
-G_M64132_IG09: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+G_M64132_IG09: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -207,17 +207,17 @@ G_M64132_IG09: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=200000 ldr w0, [fp, #0x80] // [V04 loc3+0x10] add w0, w0, #3 str w0, [fp, #0x80] // [V04 loc3+0x10]
- ;; size=40 bbWeight=1.99 PerfScore 25.90 -G_M64132_IG10: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x21]
ldr w21, [fp, #0x80] // [V04 loc3+0x10]
+ ; byrRegs -[x21]
ldr w0, [fp, #0x90] // [V04 loc3+0x20] cmp w21, w0
- bhi G_M64132_IG21
+ bhi G_M64132_IG18 + ;; size=56 bbWeight=1.99 PerfScore 36.86 +G_M64132_IG10: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x22, [fp, #0x88] // [V04 loc3+0x18] ; byrRegs +[x22]
- tbz w21, #31, G_M64132_IG14 - ;; size=24 bbWeight=4 PerfScore 34.00
+ tbz w21, #31, G_M64132_IG12 + ;; size=8 bbWeight=4 PerfScore 12.00
G_M64132_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref movz x23, #8 movk x23, #0xD1FFAB1E LSL #16 @@ -232,25 +232,6 @@ G_M64132_IG11: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x23]
- b G_M64132_IG13 - ;; size=44 bbWeight=2 PerfScore 18.00 -G_M64132_IG12: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] - ; byrRegs -[x22] - add x0, fp, #112 // [V04 loc3] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #2 LSL #32 - ldr x2, [x2] - blr x2 - b G_M64132_IG10 - ;; size=40 bbWeight=0.01 PerfScore 0.07 -G_M64132_IG13: ; bbWeight=2, gcrefRegs=900000 {x20 x23}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x23] - ; byrRegs +[x22]
mov x0, x23 ; gcrRegs +[x0] mov x1, x23 @@ -261,8 +242,8 @@ G_M64132_IG13: ; bbWeight=2, gcrefRegs=900000 {x20 x23}, byrefRegs=400000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x23]
- ;; size=28 bbWeight=2 PerfScore 13.00 -G_M64132_IG14: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=68 bbWeight=2 PerfScore 29.00 +G_M64132_IG12: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
mov x0, x22 ; byrRegs +[x0] sxtw w1, w21 @@ -276,9 +257,9 @@ G_M64132_IG14: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 stp xzr, xzr, [fp, #0x70] stp xzr, xzr, [fp, #0x80] str xzr, [fp, #0x90]
- cbz x1, G_M64132_IG16
+ cbz x1, G_M64132_IG14
;; size=36 bbWeight=4 PerfScore 34.00
-G_M64132_IG15: ; bbWeight=1.93, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
+G_M64132_IG13: ; bbWeight=1.93, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x20 ; gcrRegs +[x0] @@ -290,7 +271,7 @@ G_M64132_IG15: ; bbWeight=1.93, gcrefRegs=300002 {x1 x20 x21}, byrefRegs= blr x3 ; gcrRegs -[x0-x1] ;; size=28 bbWeight=1.93 PerfScore 12.57
-G_M64132_IG16: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M64132_IG14: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #2 LSL #32 @@ -330,7 +311,7 @@ G_M64132_IG16: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { cmp w19, #0xD1FFAB1E blt G_M64132_IG03 ;; size=108 bbWeight=4 PerfScore 76.00
-G_M64132_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64132_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] mov x0, x22 mov x1, #1 @@ -477,15 +458,40 @@ G_M64132_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp x20, x2 beq G_M64132_IG20 ;; size=380 bbWeight=1 PerfScore 77.00
-G_M64132_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M64132_IG16: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0xD0] ldp x21, x22, [sp, #0xC0] ldp x19, x20, [sp, #0xB0] ldp fp, lr, [sp], #0xE0 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M64132_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M64132_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2]
+ add x0, fp, #112 // [V04 loc3] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #2 LSL #32 + ldr x2, [x2] + blr x2 + ldr w21, [fp, #0x80] // [V04 loc3+0x10] + ldr w0, [fp, #0x90] // [V04 loc3+0x20] + cmp w21, w0 + bls G_M64132_IG10 + ;; size=52 bbWeight=0.01 PerfScore 0.11 +G_M64132_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #2 LSL #32 + ldr x0, [x0] + blr x0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M64132_IG19: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20]
mov x21, xzr ; byrRegs +[x21] mov w22, wzr @@ -502,17 +508,10 @@ G_M64132_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] bl CORINFO_HELP_THROW ; gcrRegs -[x0]
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M64132_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #2 LSL #32 - ldr x0, [x0] - blr x0
brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1052, prolog size 48, PerfScore 462.04, instruction count 263, allocated bytes for code 1052 (MethodHash=f538057b) for method Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
+; Total bytes of code 1064, prolog size 48, PerfScore 449.04, instruction count 266, allocated bytes for code 1064 (MethodHash=f538057b) for method Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
; ============================================================ Unwind Info: @@ -523,7 +522,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 263 (0x00107) Actual length = 1052 (0x00041c)
+ Function Length : 266 (0x0010a) Actual length = 1064 (0x000428)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+1.24%) : 58076.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,49 +8,49 @@ ; 6 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.37) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T36] ( 10, 5.46) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T35] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x26 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T37] ( 10, 5.46) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T49] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 9.91) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T28] ( 9, 8.91) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 9.91) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T29] ( 9, 8.91) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T27] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T54] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T55] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T58] ( 3, 1.46) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V44 tmp18 [V44,T51] ( 4, 1.91) int -> x2 single-def "Inline stloc first use temp" ; V45 tmp19 [V45,T59] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -58,27 +58,27 @@ ; V47 tmp21 [V47,T60] ( 3, 1.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V48 tmp22 [V48,T53] ( 4, 1.91) int -> x15 single-def "Inline stloc first use temp" ; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x1 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T56] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T57] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T46] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T47] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T47] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000002000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -138,7 +138,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcr arg pop 0 cmp w0, #8 bne G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -148,7 +148,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -180,19 +180,19 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -235,11 +235,11 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000001000080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000002000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG06 mov x0, x24 @@ -301,18 +301,18 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG35 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000002000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -324,7 +324,7 @@ G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 beq G_M30168_IG09
- ldr x1, [fp, #0x38] // [V16 loc5]
+ ldr x1, [fp, #0x30] // [V16 loc5]
...

+16 (+1.38%) : 205233.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)

@@ -55,7 +55,7 @@ ;* V44 tmp35 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]> ;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]> ; V46 tmp37 [V46 ] ( 6,128.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V47 tmp38 [V47,T18] ( 8, 24 ) int -> x24 "Inline return value spill temp"
+; V47 tmp38 [V47,T18] ( 8, 24 ) int -> x25 "Inline return value spill temp"
; V48 tmp39 [V48,T04] ( 2, 64 ) long -> x0 "impAppendStmt" ; V49 tmp40 [V49,T14] ( 2, 32.00) long -> x0 "impAppendStmt" ; V50 tmp41 [V50,T37] ( 3, 16.00) int -> x24 "Inline stloc first use temp" @@ -84,10 +84,10 @@ ;* V73 tmp64 [V73 ] ( 0, 0 ) int -> zero-ref "field V23._sign (fldOffset=0x8)" P-DEP ; V74 tmp65 [V74 ] ( 3, 40 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V25._bits (fldOffset=0x0)" P-DEP ; V75 tmp66 [V75 ] ( 3, 40 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V25._sign (fldOffset=0x8)" P-DEP
-; V76 tmp67 [V76,T29] ( 3, 16 ) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP -; V77 tmp68 [V77,T33] ( 3, 16 ) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP -; V78 tmp69 [V78,T30] ( 3, 16 ) byref -> x3 "field V30._reference (fldOffset=0x0)" P-INDEP -; V79 tmp70 [V79,T34] ( 3, 16 ) int -> x4 "field V30._length (fldOffset=0x8)" P-INDEP
+; V76 tmp67 [V76,T29] ( 3, 20.27) byref -> x0 "field V27._reference (fldOffset=0x0)" P-INDEP +; V77 tmp68 [V77,T31] ( 3, 20.27) int -> x1 "field V27._length (fldOffset=0x8)" P-INDEP +; V78 tmp69 [V78,T33] ( 3, 16 ) byref -> x3 "field V30._reference (fldOffset=0x0)" P-INDEP +; V79 tmp70 [V79,T35] ( 3, 16 ) int -> x4 "field V30._length (fldOffset=0x8)" P-INDEP
; V80 tmp71 [V80,T20] ( 3, 24 ) ref -> x25 "field V32._bits (fldOffset=0x0)" P-INDEP ; V81 tmp72 [V81,T24] ( 3, 24 ) int -> x26 "field V32._sign (fldOffset=0x8)" P-INDEP ; V82 tmp73 [V82,T17] ( 4, 24.54) ref -> x24 "field V33._bits (fldOffset=0x0)" P-INDEP @@ -102,9 +102,9 @@ ;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "field V37._sign (fldOffset=0x8)" P-DEP ; V92 tmp83 [V92 ] ( 3, 40 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V39._bits (fldOffset=0x0)" P-DEP ; V93 tmp84 [V93 ] ( 3, 40 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V39._sign (fldOffset=0x8)" P-DEP
-; V94 tmp85 [V94,T31] ( 3, 16 ) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP -; V95 tmp86 [V95,T35] ( 3, 16 ) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP -; V96 tmp87 [V96,T32] ( 3, 16 ) byref -> x3 "field V44._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp85 [V94,T30] ( 3, 20.27) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP +; V95 tmp86 [V95,T32] ( 3, 20.27) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP +; V96 tmp87 [V96,T34] ( 3, 16 ) byref -> x3 "field V44._reference (fldOffset=0x0)" P-INDEP
; V97 tmp88 [V97,T36] ( 3, 16 ) int -> x4 "field V44._length (fldOffset=0x8)" P-INDEP ; V98 tmp89 [V98 ] ( 4, 56.00) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V46._flags (fldOffset=0x0)" P-DEP ; V99 tmp90 [V99 ] ( 3, 64.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V46._hi32 (fldOffset=0x4)" P-DEP @@ -154,7 +154,7 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w20, wzr ldr w21, [x19, #0x08] cmp w21, #0
- ble G_M48799_IG31
+ ble G_M48799_IG37
;; size=48 bbWeight=1 PerfScore 12.00 G_M48799_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -167,7 +167,7 @@ G_M48799_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr w1, [x1, #0x08] ; gcrRegs -[x1] cmp w20, w1
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ldr x1, [fp, #0xA8] // [V01 loc1] ; gcrRegs +[x1] mov w0, #24 @@ -198,7 +198,7 @@ G_M48799_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, b ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w22, w0
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ldr x0, [fp, #0xA8] // [V01 loc1] ; gcrRegs +[x0] mov x2, #24 @@ -221,7 +221,7 @@ G_M48799_IG08: ; bbWeight=16, isz, extend ; byrRegs -[x1] sub w23, w1, w0 cmp w23, #0
- ble G_M48799_IG17
+ ble G_M48799_IG20
;; size=20 bbWeight=16 PerfScore 80.00 G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x24, [fp, #0x60] // [V14 tmp5+0x08] @@ -233,7 +233,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x1, [x1] ; gcrRegs +[x1] cmp w23, #60
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
ubfiz x0, x23, #4, #32 add x0, x0, #16 add x1, x1, x0 @@ -242,7 +242,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x23, [x1] ; gcrRegs +[x23] ldr w5, [x1, #0x08]
- cbnz x24, G_M48799_IG11
+ cbnz x24, G_M48799_IG13
cbnz x23, G_M48799_IG10 stp xzr, xzr, [fp, #0x38] smull x1, w2, w5 @@ -258,41 +258,66 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x1, [fp, #0x38] // [V74 tmp65] ; gcrRegs +[x1] ldr w2, [fp, #0x40] // [V75 tmp66]
- b G_M48799_IG16
+ b G_M48799_IG19
;; size=104 bbWeight=8 PerfScore 272.00
-G_M48799_IG10: ; bbWeight=3.73, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M48799_IG10: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- b G_M48799_IG12 - ;; size=12 bbWeight=3.73 PerfScore 7.46 -G_M48799_IG11: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref - ; gcrRegs +[x24] - ; byrRegs -[x0] - add x0, x24, #16 - ; byrRegs +[x0] - ldr w1, [x24, #0x08] - ;; size=8 bbWeight=4.27 PerfScore 14.94 -G_M48799_IG12: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz - ; gcrRegs -[x24] - cbnz x23, G_M48799_IG14
+ ;; size=8 bbWeight=8 PerfScore 8.00 +G_M48799_IG11: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M48799_IG17
;; size=4 bbWeight=8 PerfScore 8.00
-G_M48799_IG13: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
+G_M48799_IG12: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
; gcrRegs -[x23] mov x3, xzr ; byrRegs +[x3] mov w4, wzr
- b G_M48799_IG15
+ b G_M48799_IG18
;; size=12 bbWeight=3.73 PerfScore 7.46
-G_M48799_IG14: ; bbWeight=4.27, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref
+G_M48799_IG13: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref + ; gcrRegs +[x23-x24] + ; byrRegs -[x0 x3] + add x0, x24, #16 + ; byrRegs +[x0] + ldr w1, [x24, #0x08] + b G_M48799_IG11 + ;; size=12 bbWeight=4.27 PerfScore 19.21 +G_M48799_IG14: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23-x24] + ; byrRegs -[x0] + ldp x1, x2, [fp, #0x60] // [V14 tmp5+0x08], [V14 tmp5+0x10] + ; gcrRegs +[x1] + add x0, fp, #136 // [V04 loc4+0x08] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #2 LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x1] + ; gcr arg pop 0 + sxtw w23, w0 + ;; size=32 bbWeight=8 PerfScore 76.00 +G_M48799_IG15: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr q16, [fp, #0x70] // [V06 loc6] + str q16, [fp, #0x18] // [V46 tmp37] + ldr x0, [fp, #0x20] // [V100 tmp91] + ldr w1, [fp, #0x1C] // [V99 tmp90] + orr x0, x0, x1 + cbnz x0, G_M48799_IG35 + ;; size=24 bbWeight=16 PerfScore 136.00 +G_M48799_IG16: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M48799_IG32 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M48799_IG17: ; bbWeight=4.27, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x23]
- ; byrRegs -[x3]
+ ; byrRegs +[x0]
add x3, x23, #16 ; byrRegs +[x3] ldr w4, [x23, #0x08] ;; size=8 bbWeight=4.27 PerfScore 14.94
-G_M48799_IG15: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref
+G_M48799_IG18: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref
; gcrRegs -[x23] movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 @@ -306,7 +331,7 @@ G_M48799_IG15: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 mov x1, x0 ; gcrRegs +[x1] ;; size=28 bbWeight=8 PerfScore 52.00
-G_M48799_IG16: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M48799_IG19: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add x0, fp, #136 // [V04 loc4+0x08] movz x3, #0xD1FFAB1E // code for <unknown method> @@ -317,10 +342,10 @@ G_M48799_IG16: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x1] ; gcr arg pop 0 sxtw w23, w0
- b G_M48799_IG26
+ b G_M48799_IG15
;; size=32 bbWeight=8 PerfScore 60.00
-G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - tbz w23, #31, G_M48799_IG25
+G_M48799_IG20: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + tbz w23, #31, G_M48799_IG14
ldr x24, [fp, #0x88] // [V04 loc4+0x08] ; gcrRegs +[x24] ldr w2, [fp, #0x90] // [V04 loc4+0x10] @@ -331,7 +356,7 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] neg w0, w23 cmp w0, #60
- bhs G_M48799_IG35
+ bhs G_M48799_IG38
neg w0, w23 ubfiz x0, x0, #4, #32 add x0, x0, #16 @@ -341,8 +366,8 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x23, [x1] ; gcrRegs +[x23] ldr w5, [x1, #0x08]
- cbnz x24, G_M48799_IG19 - cbnz x23, G_M48799_IG18
+ cbnz x24, G_M48799_IG24 + cbnz x23, G_M48799_IG21
stp xzr, xzr, [fp, #0x28] smull x1, w2, w5 ; byrRegs -[x1] @@ -357,41 +382,65 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x25, [fp, #0x28] // [V92 tmp83] ; gcrRegs +[x25] ldr w26, [fp, #0x30] // [V93 tmp84]
- b G_M48799_IG24
+ b G_M48799_IG31
;; size=116 bbWeight=8 PerfScore 288.00
-G_M48799_IG18: ; bbWeight=3.73, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M48799_IG21: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x25] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- b G_M48799_IG20 - ;; size=12 bbWeight=3.73 PerfScore 7.46 -G_M48799_IG19: ; bbWeight=4.27, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref - ; gcrRegs +[x24] - ; byrRegs -[x0] - add x0, x24, #16 - ; byrRegs +[x0] - ldr w1, [x24, #0x08] - ;; size=8 bbWeight=4.27 PerfScore 14.94 -G_M48799_IG20: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz - ; gcrRegs -[x24] - cbnz x23, G_M48799_IG22
+ ;; size=8 bbWeight=8 PerfScore 8.00 +G_M48799_IG22: ; bbWeight=8, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbnz x23, G_M48799_IG29
;; size=4 bbWeight=8 PerfScore 8.00
-G_M48799_IG21: ; bbWeight=3.73, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
...

realworld.run.osx.arm64.checked.mch

-12 (-2.73%) : 29079.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)

@@ -8,34 +8,35 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> -; V01 loc0 [V01,T09] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T19] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V00 arg0 [V00,T09] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> +; V01 loc0 [V01,T10] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T20] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V03 loc2 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V04 loc3 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x21 single-def
+; V06 tmp1 [V06,T11] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x21 single-def
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp4 [V09,T11] ( 4, 3.50) ref -> x2 -; V10 tmp5 [V10,T07] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp6 [V11,T15] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V09 tmp4 [V09,T12] ( 4, 3.50) ref -> x2 +; V10 tmp5 [V10,T08] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V11 tmp6 [V11,T16] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp9 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V16 tmp11 [V16,T02] ( 4, 17 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V17 tmp12 [V17,T04] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V17 tmp12 [V17,T03] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V18 tmp13 [V18,T00] ( 6, 21 ) int -> x1 "field V04._index (fldOffset=0x10)" P-INDEP
-; V19 tmp14 [V19,T05] ( 3, 13 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V20 tmp15 [V20,T13] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T06] ( 2, 9 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V20 tmp15 [V20,T14] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V22 tmp17 [V22,T17] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP -; V23 tmp18 [V23,T16] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+;* V22 tmp17 [V22,T18] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP +; V23 tmp18 [V23,T17] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V24 tmp19 [V24,T01] ( 3, 24 ) ref -> x2 "arr expr"
-; V25 PSPSym [V25,T18] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V26 cse0 [V26,T03] ( 3, 20 ) int -> x2 "CSE - aggressive" -; V27 cse1 [V27,T12] ( 4, 3 ) long -> x20 "CSE - aggressive"
+; V25 PSPSym [V25,T19] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V26 cse0 [V26,T05] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V27 cse1 [V27,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V28 cse2 [V28,T13] ( 4, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -108,7 +109,7 @@ G_M45525_IG04: ; bbWeight=1, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=000 ; GC ptr vars +{V02} str wzr, [fp, #0x18] // [V03 loc2] ;; size=40 bbWeight=1 PerfScore 9.00
-G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG05: ; bbWeight=1, gcVars=0000000000100000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldrb w1, [fp, #0x18] // [V03 loc2] cbnz w1, G_M45525_IG08 @@ -131,17 +132,17 @@ G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=800 G_M45525_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x14] cmp w0, w2
- bne G_M45525_IG09
+ bne G_M45525_IG10
;; size=12 bbWeight=8 PerfScore 36.00 G_M45525_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x10] cmp w1, w2
- bhs G_M45525_IG12
+ bhs G_M45525_IG11
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w1, w3
- bhs G_M45525_IG10
+ bhs G_M45525_IG09
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -168,16 +169,11 @@ G_M45525_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp w0, w2 - bne G_M45525_IG11 - b G_M45525_IG12 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -186,11 +182,11 @@ G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M45525_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG14
+ cbz w0, G_M45525_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V02} @@ -198,38 +194,38 @@ G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45525_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M45525_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M45525_IG15: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V19}
+G_M45525_IG14: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V20}
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] add x3, fp, #64 str x3, [sp, #0x10] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M45525_IG16: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG15: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG17
+ cbz w0, G_M45525_IG16
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V02 V19}
+ ; GC ptr vars -{V02 V20}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M45525_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M45525_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 32, PerfScore 199.00, instruction count 110, allocated bytes for code 440 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
+; Total bytes of code 428, prolog size 32, PerfScore 189.00, instruction count 107, allocated bytes for code 428 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +236,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -275,4 +271,4 @@ Unwind Info: *************** EH table for System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M45525_IG05..G_M45525_IG12) handled by [G_M45525_IG15..END) (fault)
+EH#0: try [G_M45525_IG05..G_M45525_IG11) handled by [G_M45525_IG14..END) (fault)
-12 (-2.00%) : 5027.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
@@ -10,8 +10,8 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -20,20 +20,21 @@ ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp3 [V11,T05] ( 3, 12 ) ref -> x24 class-hnd "Inlining Arg" <System.AggregateException>
-;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp6 [V14,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V15 tmp7 [V15,T03] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V14 tmp6 [V14,T04] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V15 tmp7 [V15,T02] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V17 tmp9 [V17,T07] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V17 tmp9 [V17,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V18 tmp10 [V18,T14] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V21 tmp13 [V21,T14] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp12 [V20,T18] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V21 tmp13 [V21,T15] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V23 PSPSym [V23,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T06] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V25 cse1 [V25,T04] ( 4, 14 ) byref -> x25 "CSE - aggressive"
+; V23 PSPSym [V23,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V25 cse1 [V25,T06] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse2 [V26,T03] ( 4, 14 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -64,7 +65,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x1] ldar x21, [x1] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG13
+ cbz x21, G_M37406_IG12
;; size=40 bbWeight=1 PerfScore 11.00 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x1] @@ -72,7 +73,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x18] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x18] // [V04 loc2] cbnz w1, G_M37406_IG07 add x1, fp, #24 // [V04 loc2] @@ -92,17 +93,17 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs= mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M37406_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG08
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG11
+ bhs G_M37406_IG10
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M37406_IG09
+ bhs G_M37406_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -200,18 +201,11 @@ G_M37406_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cmp w22, w24 - bne G_M37406_IG10 - b G_M37406_IG11 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M37406_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -220,10 +214,10 @@ G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19] ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG12
+ cbz w0, G_M37406_IG11
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -231,12 +225,12 @@ G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M37406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #40 ; byrRegs +[x0] stlr xzr, [x0] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M37406_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -246,8 +240,8 @@ G_M37406_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG14: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03 V16}
+G_M37406_IG13: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03 V17}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -256,17 +250,17 @@ G_M37406_IG14: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37406_IG15: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG14: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG16
+ cbz w0, G_M37406_IG15
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V03 V16}
+ ; GC ptr vars -{V03 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -275,7 +269,7 @@ G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 40, PerfScore 282.75, instruction count 150, allocated bytes for code 600 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 588, prolog size 40, PerfScore 272.75, instruction count 147, allocated bytes for code 588 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -286,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 130 (0x00082) Actual length = 520 (0x000208)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -325,4 +319,4 @@ Unwind Info: *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG11) handled by [G_M37406_IG14..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG10) handled by [G_M37406_IG13..END) (fault)
-12 (-1.60%) : 29047.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
@@ -8,40 +8,41 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 4, 3.50) ref -> x19 class-hnd single-def <System.String> -; V01 loc0 [V01,T08] ( 5, 5 ) ref -> x21 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T23] ( 3, 0.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V00 arg0 [V00,T08] ( 4, 3.50) ref -> x19 class-hnd single-def <System.String> +; V01 loc0 [V01,T09] ( 5, 5 ) ref -> x21 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T24] ( 3, 0.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
; V03 loc2 [V03 ] ( 6, 5 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V04 loc3 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Management.Automation.Language.PSGetMemberBinder>
-; V06 loc5 [V06,T10] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Management.Automation.Language.PSGetMemberBinder>
+; V06 loc5 [V06,T11] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Management.Automation.Language.PSGetMemberBinder>
; V07 loc6 [V07 ] ( 6, 12 ) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> -; V10 tmp2 [V10,T12] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V09 tmp1 [V09,T12] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> +; V10 tmp2 [V10,T13] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref single-def ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp5 [V13,T13] ( 4, 3.50) ref -> x2 -; V14 tmp6 [V14,T09] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp7 [V15,T15] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V13 tmp5 [V13,T14] ( 4, 3.50) ref -> x2 +; V14 tmp6 [V14,T10] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp7 [V15,T16] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]>
-;* V17 tmp9 [V17,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp9 [V17,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V19 tmp11 [V19,T03] ( 4, 17 ) ref -> x21 single-def "field V04._list (fldOffset=0x0)" P-INDEP ; V20 tmp12 [V20,T02] ( 7, 18 ) ref -> x22 "field V04._current (fldOffset=0x8)" P-INDEP ; V21 tmp13 [V21,T00] ( 6, 21 ) int -> x20 "field V04._index (fldOffset=0x10)" P-INDEP
-; V22 tmp14 [V22,T05] ( 3, 13 ) int -> x19 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V23 tmp15 [V23,T16] ( 3, 3 ) ref -> x21 single-def "field V16._list (fldOffset=0x0)" P-INDEP
+; V22 tmp14 [V22,T06] ( 2, 9 ) int -> x19 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V23 tmp15 [V23,T17] ( 3, 3 ) ref -> x21 single-def "field V16._list (fldOffset=0x0)" P-INDEP
;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._current (fldOffset=0x8)" P-INDEP
-;* V25 tmp17 [V25,T20] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP -; V26 tmp18 [V26,T18] ( 2, 2 ) int -> x19 single-def "field V16._version (fldOffset=0x14)" P-INDEP
+;* V25 tmp17 [V25,T21] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP +; V26 tmp18 [V26,T19] ( 2, 2 ) int -> x19 single-def "field V16._version (fldOffset=0x14)" P-INDEP
; V27 tmp19 [V27,T01] ( 3, 24 ) ref -> x1 "arr expr"
-; V28 PSPSym [V28,T21] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" -;* V29 cse0 [V29,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V30 cse1 [V30,T04] ( 3, 20 ) int -> x22 "CSE - aggressive" -; V31 cse2 [V31,T17] ( 3, 2 ) long -> x20 "CSE - aggressive" -; V32 cse3 [V32,T14] ( 4, 3 ) long -> x20 "CSE - aggressive" -; V33 rat0 [V33,T19] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V28 PSPSym [V28,T22] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +;* V29 cse0 [V29,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V30 cse1 [V30,T05] ( 2, 8 ) int -> x1 "CSE - aggressive" +; V31 cse2 [V31,T04] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V32 cse3 [V32,T18] ( 3, 2 ) long -> x20 "CSE - aggressive" +; V33 cse4 [V33,T15] ( 4, 3 ) long -> x20 "CSE - aggressive" +; V34 rat0 [V34,T20] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
; ; Lcl frame size = 48 @@ -65,7 +66,7 @@ G_M5921_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr w1, [x1]
- tbz w1, #0, G_M5921_IG23
+ tbz w1, #0, G_M5921_IG22
;; size=36 bbWeight=1 PerfScore 7.50 G_M5921_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -77,7 +78,7 @@ G_M5921_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M5921_IG24
+ tbz w0, #0, G_M5921_IG23
;; size=36 bbWeight=1 PerfScore 10.00 G_M5921_IG04: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -99,7 +100,7 @@ G_M5921_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 ; gcrRegs +[x2] ldr x15, [x20, #-0x10] ; gcrRegs +[x15]
- cbz x15, G_M5921_IG25
+ cbz x15, G_M5921_IG24
add x14, x2, #8 ; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF @@ -134,7 +135,7 @@ G_M5921_IG06: ; bbWeight=1, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=0000 ; GC ptr vars +{V02} str wzr, [fp, #0x30] // [V03 loc2] ;; size=44 bbWeight=1 PerfScore 12.00
-G_M5921_IG07: ; bbWeight=1, gcVars=0000000000800000 {V02}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5921_IG07: ; bbWeight=1, gcVars=0000000001000000 {V02}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldrb w1, [fp, #0x30] // [V03 loc2] cbnz w1, G_M5921_IG16 @@ -174,19 +175,19 @@ G_M5921_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by mov w20, wzr ;; size=8 bbWeight=1 PerfScore 3.50 G_M5921_IG10: ; bbWeight=8, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w22, [x21, #0x14] - cmp w19, w22 - bne G_M5921_IG17
+ ldr w1, [x21, #0x14] + cmp w19, w1 + bne G_M5921_IG18
;; size=12 bbWeight=8 PerfScore 36.00 G_M5921_IG11: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz ldr w1, [x21, #0x10] cmp w20, w1
- bhs G_M5921_IG20
+ bhs G_M5921_IG19
ldr x1, [x21, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w20, w0
- bhs G_M5921_IG18
+ bhs G_M5921_IG17
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -197,7 +198,7 @@ G_M5921_IG11: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by ; GC ptr vars +{V06} str wzr, [fp, #0x28] // [V07 loc6] ;; size=48 bbWeight=4 PerfScore 72.00
-G_M5921_IG12: ; bbWeight=2, gcVars=0000000000800400 {V02 V06}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5921_IG12: ; bbWeight=2, gcVars=0000000001000800 {V02 V06}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x1] ldrb w1, [fp, #0x28] // [V07 loc6] cbz w1, G_M5921_IG14 @@ -233,7 +234,7 @@ G_M5921_IG14: ; bbWeight=2, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {} mov w0, #1 strb w0, [x22, #0x28] ;; size=56 bbWeight=2 PerfScore 31.00
-G_M5921_IG15: ; bbWeight=2, gcVars=0000000000800000 {V02}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5921_IG15: ; bbWeight=2, gcVars=0000000001000000 {V02}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06} ldrb w0, [fp, #0x28] // [V07 loc6] cbz w0, G_M5921_IG10 @@ -254,16 +255,11 @@ G_M5921_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M5921_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp w19, w22 - bne G_M5921_IG19 - b G_M5921_IG20 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M5921_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5921_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M5921_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5921_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -272,11 +268,11 @@ G_M5921_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M5921_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M5921_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x30] // [V03 loc2]
- cbz w0, G_M5921_IG22
+ cbz w0, G_M5921_IG21
;; size=8 bbWeight=1 PerfScore 3.00
-G_M5921_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5921_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V02 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V02} @@ -284,20 +280,20 @@ G_M5921_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M5921_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M5921_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x50] ldp x19, x20, [sp, #0x40] ldp fp, lr, [sp], #0x60 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M5921_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M5921_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov w1, #0xD1FFAB1E bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE ; gcr arg pop 0 b G_M5921_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M5921_IG24: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M5921_IG23: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21] mov x0, x20 mov w1, #0xD1FFAB1E @@ -305,7 +301,7 @@ G_M5921_IG24: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {} ; gcr arg pop 0 b G_M5921_IG04 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M5921_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5921_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21] movz x0, #0xD1FFAB1E // code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance() movk x0, #0xD1FFAB1E LSL #16 @@ -315,40 +311,40 @@ G_M5921_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M5921_IG26: ; bbWeight=0, gcVars=0000000000800400 {V02 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V06 V10 V23}
+G_M5921_IG25: ; bbWeight=0, gcVars=0000000001000800 {V02 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V06}
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #96 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M5921_IG27: ; bbWeight=0, gcVars=0000000000800400 {V02 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5921_IG26: ; bbWeight=0, gcVars=0000000001000800 {V02 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x28] // [V07 loc6]
- cbz w0, G_M5921_IG28
+ cbz w0, G_M5921_IG27
ldr x0, [fp, #0x18] // [V06 loc5] ; gcrRegs +[x0]
- ; GC ptr vars -{V06 V10 V23}
+ ; GC ptr vars -{V06}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M5921_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M5921_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M5921_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M5921_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #96 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00 ...

-4 (-0.18%) : 1749.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 64 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T49] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T48] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T46] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T46] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x12 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -171,7 +171,7 @@ ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V161 tmp136 [V161,T44] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -184,35 +184,35 @@ ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V174 tmp149 [V174,T45] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
+ add w1, w27, #1 + sxtw w26, w1 + cmp w27, w24
bhs G_M9731_IG73
- ldrh w1, [x23, w25, UXTW #2] - sxtw w25, w1
...

-8 (-0.15%) : 1406.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

+16 (+1.44%) : 11260.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 13 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T20] ( 7, 196 ) ref -> x20 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T00] ( 16,1249 ) ref -> x21 class-hnd single-def <<unknown class>>
+; V00 loc0 [V00,T21] ( 7, 196 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T00] ( 15,1121 ) ref -> x21 class-hnd single-def <<unknown class>>
; V02 loc2 [V02,T05] ( 9, 641 ) ref -> x22 class-hnd single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 8, 392 ) int -> registers
-; V04 loc4 [V04,T36] ( 2, 0 ) ref -> [fp+0x20] class-hnd exact EH-live single-def <<unknown class>> -; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V06 loc6 [V06,T23] ( 2, 192 ) long -> x23 -; V07 loc7 [V07,T26] ( 3, 80 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> -; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
+; V04 loc4 [V04,T37] ( 2, 0 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <<unknown class>> +; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op +; V06 loc6 [V06,T24] ( 2, 192 ) long -> x23 +; V07 loc7 [V07,T27] ( 3, 80 ) ref -> [fp+0x10] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> +; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T01] ( 11,1088 ) int -> x25 ; V10 loc10 [V10,T07] ( 5, 448 ) ref -> x1 class-hnd exact <System.Threading.TimerQueue> ; V11 loc11 [V11,T10] ( 4, 384 ) long -> x26 @@ -24,62 +24,64 @@ ;* V13 loc13 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]> ;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T34] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
+; V16 tmp1 [V16,T35] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V18 tmp3 [V18,T29] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V19 tmp4 [V19,T18] ( 2, 256 ) ubyte -> x0 "Inlining Arg" -; V20 tmp5 [V20,T21] ( 3, 192 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> -; V21 tmp6 [V21,T14] ( 4, 256 ) int -> x15 "Inline stloc first use temp" -; V22 tmp7 [V22,T16] ( 2, 256 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
+;* V18 tmp3 [V18,T30] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V19 tmp4 [V19,T19] ( 2, 256 ) ubyte -> x0 "Inlining Arg" +; V20 tmp5 [V20,T22] ( 3, 192 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> +; V21 tmp6 [V21,T15] ( 4, 256 ) int -> x15 "Inline stloc first use temp" +; V22 tmp7 [V22,T17] ( 2, 256 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
-;* V24 tmp9 [V24,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp9 [V24,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V26 tmp11 [V26,T13] ( 3, 272 ) int -> x2 "Inline stloc first use temp" -;* V27 tmp12 [V27,T32] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP -; V28 tmp13 [V28,T12] ( 2, 192 ) ref -> x26 "field V13._current (fldOffset=0x8)" P-INDEP
+; V26 tmp11 [V26,T14] ( 3, 272 ) int -> x2 "Inline stloc first use temp" +;* V27 tmp12 [V27,T33] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP +; V28 tmp13 [V28,T13] ( 2, 192 ) ref -> x27 "field V13._current (fldOffset=0x8)" P-INDEP
; V29 tmp14 [V29,T02] ( 6, 656 ) int -> x25 "field V13._index (fldOffset=0x10)" P-INDEP
-; V30 tmp15 [V30,T24] ( 2, 144 ) int -> x23 "field V13._version (fldOffset=0x14)" P-INDEP -; V31 tmp16 [V31,T30] ( 2, 32 ) ref -> x0 "field V23._list (fldOffset=0x0)" P-INDEP
+; V30 tmp15 [V30,T25] ( 2, 144 ) int -> x23 "field V13._version (fldOffset=0x14)" P-INDEP +; V31 tmp16 [V31,T31] ( 2, 32 ) ref -> x0 "field V23._list (fldOffset=0x0)" P-INDEP
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp18 [V33,T33] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP -; V34 tmp19 [V34,T31] ( 2, 32 ) int -> x23 "field V23._version (fldOffset=0x14)" P-INDEP -; V35 tmp20 [V35,T37] ( 2, 0 ) ref -> x2 "argument with side effect"
+;* V33 tmp18 [V33,T34] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP +; V34 tmp19 [V34,T32] ( 2, 32 ) int -> x23 "field V23._version (fldOffset=0x14)" P-INDEP +; V35 tmp20 [V35,T38] ( 2, 0 ) ref -> x2 "argument with side effect"
; V36 tmp21 [V36,T03] ( 3, 768 ) ref -> x14 "arr expr" ; V37 tmp22 [V37,T11] ( 3, 384 ) ref -> x2 "arr expr" ; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> x0 "arr expr"
-; V39 tmp24 [V39,T17] ( 2, 256 ) ref -> x0 "argument with side effect" -; V40 PSPSym [V40,T35] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" -; V41 cse0 [V41,T06] ( 3, 384 ) int -> x2 "CSE - aggressive" -; V42 cse1 [V42,T15] ( 4, 256 ) int -> x0 "CSE - moderate" -; V43 cse2 [V43,T22] ( 3, 192 ) ref -> x1 "CSE - moderate" -; V44 cse3 [V44,T27] ( 5, 68 ) long -> x19 "CSE - moderate" -; V45 cse4 [V45,T25] ( 2, 128 ) int -> x12 "CSE - moderate" -; V46 cse5 [V46,T28] ( 6, 51 ) ref -> x1 multi-def "CSE - moderate"
+; V39 tmp24 [V39,T18] ( 2, 256 ) ref -> x0 "argument with side effect" +; V40 PSPSym [V40,T36] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V41 cse0 [V41,T12] ( 3, 384 ) int -> x26 "CSE - aggressive" +; V42 cse1 [V42,T06] ( 3, 384 ) int -> x2 "CSE - aggressive" +; V43 cse2 [V43,T16] ( 4, 256 ) int -> x0 "CSE - moderate" +; V44 cse3 [V44,T23] ( 3, 192 ) ref -> x1 "CSE - moderate" +; V45 cse4 [V45,T28] ( 5, 68 ) long -> x19 "CSE - moderate" +; V46 cse5 [V46,T26] ( 2, 128 ) int -> x12 "CSE - moderate" +; V47 cse6 [V47,T29] ( 6, 51 ) ref -> x1 multi-def "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M45973_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70]
+ stp x19, x20, [sp, #0x38] + stp x21, x22, [sp, #0x48] + stp x23, x24, [sp, #0x58] + stp x25, x26, [sp, #0x68] + str x27, [sp, #0x78]
mov fp, sp add x0, sp, #128
- str x0, [fp, #0x38] // [V40 PSPSym] - ;; size=32 bbWeight=1 PerfScore 7.00
+ str x0, [fp, #0x30] // [V40 PSPSym] + ;; size=36 bbWeight=1 PerfScore 8.00
G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #2 LSL #32 ldp x21, x20, [x19, #0xD1FFAB1E] ; gcrRegs +[x20-x21]
- str x20, [fp, #0x20] // [V04 loc4]
+ str x20, [fp, #0x18] // [V04 loc4]
; GC ptr vars +{V04}
- str wzr, [fp, #0x30] // [V05 loc5]
+ str wzr, [fp, #0x28] // [V05 loc5]
;; size=24 bbWeight=1 PerfScore 7.50
-G_M45973_IG03: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x30] // [V05 loc5]
+G_M45973_IG03: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x28] // [V05 loc5]
cbz w1, G_M45973_IG05 ;; size=8 bbWeight=1 PerfScore 3.00 G_M45973_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -94,13 +96,13 @@ G_M45973_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M45973_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20-x21]
- add x1, fp, #48 // [V05 loc5]
+ add x1, fp, #40 // [V05 loc5]
mov x0, x20 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x30] // [V05 loc5]
+ ldrb w0, [fp, #0x28] // [V05 loc5]
cbnz w0, G_M45973_IG06 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -121,7 +123,7 @@ G_M45973_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ;; size=4 bbWeight=1 PerfScore 3.00 G_M45973_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V04}
- ldrb w0, [fp, #0x30] // [V05 loc5]
+ ldrb w0, [fp, #0x28] // [V05 loc5]
cbz w0, G_M45973_IG08 mov x0, x20 ; gcrRegs +[x0] @@ -153,20 +155,20 @@ G_M45973_IG09: ; bbWeight=64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0 mov x23, x0 movn w1, #0xD1FFAB1E LSL #16 sxtw w24, w1
- str x20, [fp, #0x18] // [V07 loc7]
+ str x20, [fp, #0x10] // [V07 loc7]
; GC ptr vars +{V07}
- str wzr, [fp, #0x28] // [V08 loc8]
+ str wzr, [fp, #0x20] // [V08 loc8]
;; size=72 bbWeight=64 PerfScore 896.00
-G_M45973_IG10: ; bbWeight=64, gcVars=0000000004000000 {V07}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x28] // [V08 loc8]
+G_M45973_IG10: ; bbWeight=64, gcVars=0000000008000000 {V07}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x20] // [V08 loc8]
cbnz w1, G_M45973_IG23
- add x1, fp, #40 // [V08 loc8]
+ add x1, fp, #32 // [V08 loc8]
mov x0, x20 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x28] // [V08 loc8]
+ ldrb w0, [fp, #0x20] // [V08 loc8]
cbnz w0, G_M45973_IG12 ;; size=28 bbWeight=64 PerfScore 512.00 G_M45973_IG11: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref @@ -328,11 +330,11 @@ G_M45973_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M45973_IG24: ; bbWeight=64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20-x22]
- ldrb w0, [fp, #0x28] // [V08 loc8]
+ ldrb w0, [fp, #0x20] // [V08 loc8]
cbz w0, G_M45973_IG26 ;; size=8 bbWeight=64 PerfScore 192.00 G_M45973_IG25: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V07 loc7]
+ ldr x0, [fp, #0x10] // [V07 loc7]
; gcrRegs +[x0] ; GC ptr vars -{V07} bl <unknown method> @@ -351,18 +353,18 @@ G_M45973_IG27: ; bbWeight=16, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0 mov w25, wzr b G_M45973_IG30 ;; size=16 bbWeight=16 PerfScore 80.00
-G_M45973_IG28: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x26]
+G_M45973_IG28: ; bbWeight=64, gcrefRegs=8700000 {x20 x21 x22 x27}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] +[x27]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr w0, [x0] tbz w0, #0, G_M45973_IG36 ;; size=20 bbWeight=64 PerfScore 352.00
-G_M45973_IG29: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M45973_IG29: ; bbWeight=64, gcrefRegs=8700000 {x20 x21 x22 x27}, byrefRegs=0000 {}, byref
ldr x0, [x19] ; gcrRegs +[x0]
- mov x1, x26
+ mov x1, x27
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this movk x2, #0xD1FFAB1E LSL #16 @@ -370,12 +372,12 @@ G_M45973_IG29: ; bbWeight=64, gcrefRegs=4700000 {x20 x21 x22 x26}, byrefR ldr x2, [x2] ldr wzr, [x0] blr x2
- ; gcrRegs -[x0-x1 x26]
+ ; gcrRegs -[x0-x1 x27]
; gcr arg pop 0 ;; size=32 bbWeight=64 PerfScore 768.00 G_M45973_IG30: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x14] - cmp w23, w0
+ ldr w26, [x21, #0x14] + cmp w23, w26
bne G_M45973_IG38 ldr w2, [x21, #0x10] cmp w25, w2 @@ -388,20 +390,19 @@ G_M45973_IG30: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs= add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x26, [x0, w25, UXTW #3] - ; gcrRegs +[x26]
+ ldr x27, [x0, w25, UXTW #3] + ; gcrRegs +[x27]
add w25, w25, #1 b G_M45973_IG28 ;; size=56 bbWeight=128 PerfScore 2752.00 G_M45973_IG31: ; bbWeight=128, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x26]
+ ; gcrRegs -[x27]
; byrRegs -[x0]
- ldr w0, [x21, #0x14] - add w0, w0, #1
+ add w0, w26, #1
stp wzr, w0, [x21, #0x10] cmp w2, #0 ble G_M45973_IG33
- ;; size=20 bbWeight=128 PerfScore 768.00
+ ;; size=16 bbWeight=128 PerfScore 384.00
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 18 18 0 0 -140 +0
benchmarks.run_pgo.osx.arm64.checked.mch 34 17 17 0 -364 +244
benchmarks.run_tiered.osx.arm64.checked.mch 9 9 0 0 -76 +0
coreclr_tests.run.osx.arm64.checked.mch 52 48 2 2 -808 +8
libraries.crossgen2.osx.arm64.checked.mch 26 23 2 1 -236 +20
libraries.pmi.osx.arm64.checked.mch 162 153 5 4 -2,128 +68
libraries_tests.run.osx.arm64.Release.mch 29 27 1 1 -484 +12
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 217 183 13 21 -2,564 +100
realworld.run.osx.arm64.checked.mch 29 28 1 0 -264 +16
576 506 41 29 -7,064 +468

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,839 6 24,833 50 (0.20%) 50 (0.20%)
benchmarks.run_pgo.osx.arm64.checked.mch 66,699 47,211 19,488 45 (0.07%) 45 (0.07%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,278 37,393 10,885 48 (0.10%) 48 (0.10%)
coreclr_tests.run.osx.arm64.checked.mch 506,784 301,369 205,415 116 (0.02%) 116 (0.02%)
libraries.crossgen2.osx.arm64.checked.mch 264,502 15 264,487 1 (0.00%) 1 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,412 18 316,394 46 (0.01%) 48 (0.02%)
libraries_tests.run.osx.arm64.Release.mch 173,214 153,670 19,544 350 (0.20%) 350 (0.20%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 301,291 21,618 279,673 2,236 (0.74%) 2,238 (0.74%)
realworld.run.osx.arm64.checked.mch 31,596 3 31,593 10 (0.03%) 10 (0.03%)
1,733,615 561,303 1,172,312 2,902 (0.17%) 2,906 (0.17%)

jit-analyze output

benchmarks.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11101028 (overridden on cmd)
Total bytes of diff: 11100888 (overridden on cmd)
Total bytes of delta: -140 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 1761.dasm (-0.35 % of base)
         -12 : 59.dasm (-1.03 % of base)
         -12 : 13461.dasm (-0.60 % of base)
         -12 : 5302.dasm (-1.94 % of base)
         -12 : 1064.dasm (-1.44 % of base)
          -8 : 4800.dasm (-0.33 % of base)
          -8 : 8142.dasm (-0.90 % of base)
          -8 : 968.dasm (-0.15 % of base)
          -8 : 21688.dasm (-0.60 % of base)
          -8 : 5086.dasm (-1.82 % of base)
          -8 : 9162.dasm (-0.15 % of base)
          -8 : 1961.dasm (-1.49 % of base)
          -4 : 22305.dasm (-0.43 % of base)
          -4 : 3518.dasm (-0.60 % of base)
          -4 : 4524.dasm (-0.38 % of base)
          -4 : 7814.dasm (-0.29 % of base)
          -4 : 11641.dasm (-0.04 % of base)
          -4 : 22410.dasm (-0.19 % of base)

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

Top method improvements (bytes):
         -12 (-0.35 % of base) : 1761.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
         -12 (-1.44 % of base) : 1064.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.03 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.60 % of base) : 13461.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -12 (-1.94 % of base) : 5302.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-0.15 % of base) : 9162.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-0.60 % of base) : 21688.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
          -8 (-1.49 % of base) : 1961.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-1.82 % of base) : 5086.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -8 (-0.33 % of base) : 4800.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -8 (-0.15 % of base) : 968.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-0.90 % of base) : 8142.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.60 % of base) : 3518.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-0.43 % of base) : 22305.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.19 % of base) : 22410.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -4 (-0.04 % of base) : 11641.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 7814.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.38 % of base) : 4524.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -12 (-1.94 % of base) : 5302.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 5086.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -8 (-1.49 % of base) : 1961.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.44 % of base) : 1064.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.03 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.90 % of base) : 8142.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.60 % of base) : 3518.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.60 % of base) : 21688.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -12 (-0.60 % of base) : 13461.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -4 (-0.43 % of base) : 22305.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.38 % of base) : 4524.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
         -12 (-0.35 % of base) : 1761.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -8 (-0.33 % of base) : 4800.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 7814.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.19 % of base) : 22410.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.15 % of base) : 9162.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-0.15 % of base) : 968.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.04 % of base) : 11641.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 24782000 (overridden on cmd)
Total bytes of diff: 24781880 (overridden on cmd)
Total bytes of delta: -120 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 24687.dasm (1.57 % of base)
          36 : 33204.dasm (1.09 % of base)
          20 : 32525.dasm (0.60 % of base)
          20 : 66163.dasm (0.59 % of base)
          16 : 58909.dasm (0.48 % of base)
          12 : 60440.dasm (0.36 % of base)
           8 : 38572.dasm (0.39 % of base)
           8 : 37572.dasm (0.39 % of base)
           8 : 34559.dasm (0.39 % of base)
           8 : 52372.dasm (0.39 % of base)
           8 : 53705.dasm (0.39 % of base)
           8 : 54733.dasm (0.39 % of base)
           8 : 60570.dasm (0.39 % of base)
           8 : 35518.dasm (0.39 % of base)
           8 : 51833.dasm (0.39 % of base)
           8 : 53606.dasm (0.39 % of base)
           8 : 64037.dasm (0.51 % of base)

Top file improvements (bytes):
         -40 : 53375.dasm (-2.14 % of base)
         -40 : 52974.dasm (-2.14 % of base)
         -40 : 55907.dasm (-1.77 % of base)
         -40 : 56348.dasm (-1.77 % of base)
         -40 : 57629.dasm (-1.63 % of base)
         -40 : 64417.dasm (-1.62 % of base)
         -40 : 66300.dasm (-1.62 % of base)
         -24 : 6489.dasm (-4.92 % of base)
         -20 : 59711.dasm (-2.87 % of base)
          -8 : 2596.dasm (-0.15 % of base)
          -8 : 8397.dasm (-0.90 % of base)
          -4 : 55603.dasm (-0.19 % of base)
          -4 : 56221.dasm (-0.21 % of base)
          -4 : 54706.dasm (-0.43 % of base)
          -4 : 55587.dasm (-0.14 % of base)
          -4 : 61485.dasm (-3.23 % of base)
          -4 : 61500.dasm (-0.12 % of base)

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

Top method regressions (bytes):
          52 (1.57 % of base) : 24687.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.09 % of base) : 33204.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.60 % of base) : 32525.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.59 % of base) : 66163.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          16 (0.48 % of base) : 58909.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          12 (0.36 % of base) : 60440.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
           8 (0.51 % of base) : 64037.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (0.39 % of base) : 38572.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 37572.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 34559.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 52372.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 53705.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 54733.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 60570.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 35518.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 51833.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 53606.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (bytes):
         -40 (-2.14 % of base) : 53375.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-2.14 % of base) : 52974.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.63 % of base) : 57629.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.77 % of base) : 56348.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-1.77 % of base) : 55907.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 64417.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 66300.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -24 (-4.92 % of base) : 6489.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -20 (-2.87 % of base) : 59711.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
          -8 (-0.15 % of base) : 2596.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -8 (-0.90 % of base) : 8397.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.12 % of base) : 61500.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
          -4 (-0.43 % of base) : 54706.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.19 % of base) : 55603.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -4 (-0.14 % of base) : 55587.dasm - System.IO.Tests.Perf_Directory:SetupEnumerateFiles():this (Tier1-OSR)
          -4 (-3.23 % of base) : 61485.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
          -4 (-0.21 % of base) : 56221.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)

Top method regressions (percentages):
          52 (1.57 % of base) : 24687.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.09 % of base) : 33204.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.60 % of base) : 32525.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.59 % of base) : 66163.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
           8 (0.51 % of base) : 64037.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          16 (0.48 % of base) : 58909.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
           8 (0.39 % of base) : 38572.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 37572.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 34559.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 52372.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 53705.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 54733.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 60570.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 35518.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 51833.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
           8 (0.39 % of base) : 53606.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.36 % of base) : 60440.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 6489.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-3.23 % of base) : 61485.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -20 (-2.87 % of base) : 59711.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -40 (-2.14 % of base) : 53375.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-2.14 % of base) : 52974.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.77 % of base) : 56348.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -40 (-1.77 % of base) : 55907.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.63 % of base) : 57629.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 64417.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 66300.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
          -8 (-0.90 % of base) : 8397.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.43 % of base) : 54706.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.21 % of base) : 56221.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
          -4 (-0.19 % of base) : 55603.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2596.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -4 (-0.14 % of base) : 55587.dasm - System.IO.Tests.Perf_Directory:SetupEnumerateFiles():this (Tier1-OSR)
          -4 (-0.12 % of base) : 61500.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)

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


benchmarks.run_tiered.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15471752 (overridden on cmd)
Total bytes of diff: 15471676 (overridden on cmd)
Total bytes of delta: -76 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 8247.dasm (-4.92 % of base)
         -12 : 5343.dasm (-1.03 % of base)
          -8 : 24843.dasm (-0.33 % of base)
          -8 : 4889.dasm (-0.90 % of base)
          -8 : 2436.dasm (-0.15 % of base)
          -4 : 11683.dasm (-0.29 % of base)
          -4 : 44101.dasm (-0.43 % of base)
          -4 : 20239.dasm (-0.60 % of base)
          -4 : 44402.dasm (-0.19 % of base)

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

Top method improvements (bytes):
         -24 (-4.92 % of base) : 8247.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.03 % of base) : 5343.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.33 % of base) : 24843.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -8 (-0.15 % of base) : 2436.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -8 (-0.90 % of base) : 4889.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 20239.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 44101.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.19 % of base) : 44402.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -4 (-0.29 % of base) : 11683.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 8247.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.03 % of base) : 5343.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.90 % of base) : 4889.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 20239.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 44101.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -8 (-0.33 % of base) : 24843.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -4 (-0.29 % of base) : 11683.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
          -4 (-0.19 % of base) : 44402.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2436.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)

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


coreclr_tests.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 390213652 (overridden on cmd)
Total bytes of diff: 390212852 (overridden on cmd)
Total bytes of delta: -800 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 414146.dasm (0.35 % of base)
           4 : 421672.dasm (0.08 % of base)

Top file improvements (bytes):
         -60 : 488528.dasm (-0.62 % of base)
         -40 : 389070.dasm (-5.29 % of base)
         -36 : 12473.dasm (-1.05 % of base)
         -36 : 444632.dasm (-14.75 % of base)
         -36 : 505330.dasm (-0.97 % of base)
         -36 : 505103.dasm (-0.65 % of base)
         -28 : 504923.dasm (-0.85 % of base)
         -28 : 505200.dasm (-1.01 % of base)
         -28 : 504477.dasm (-0.23 % of base)
         -28 : 505244.dasm (-1.87 % of base)
         -24 : 504529.dasm (-0.55 % of base)
         -20 : 280627.dasm (-0.59 % of base)
         -16 : 418568.dasm (-0.76 % of base)
         -16 : 489737.dasm (-0.33 % of base)
         -16 : 504146.dasm (-0.95 % of base)
         -16 : 506672.dasm (-0.51 % of base)
         -16 : 837.dasm (-1.00 % of base)
         -16 : 505079.dasm (-0.66 % of base)
         -16 : 506701.dasm (-0.53 % of base)
         -12 : 208623.dasm (-1.11 % of base)

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

Top method regressions (bytes):
           4 (0.08 % of base) : 421672.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
           4 (0.35 % of base) : 414146.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)

Top method improvements (bytes):
         -60 (-0.62 % of base) : 488528.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -40 (-5.29 % of base) : 389070.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -36 (-0.65 % of base) : 505103.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -36 (-14.75 % of base) : 444632.dasm - Program:M49() (FullOpts)
         -36 (-0.97 % of base) : 505330.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -36 (-1.05 % of base) : 12473.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -28 (-1.87 % of base) : 505244.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -28 (-0.85 % of base) : 504923.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -28 (-0.23 % of base) : 504477.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
         -28 (-1.01 % of base) : 505200.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -24 (-0.55 % of base) : 504529.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement):this (FullOpts)
         -20 (-0.59 % of base) : 280627.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1-OSR)
         -16 (-0.33 % of base) : 489737.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (FullOpts)
         -16 (-0.66 % of base) : 505079.dasm - Microsoft.Build.BackEnd.TargetBuilder+<PushTargets>d__26:MoveNext():this (FullOpts)
         -16 (-0.95 % of base) : 504146.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -16 (-0.76 % of base) : 418568.dasm - StackFrame:Validate(System.String,StackFrame[]) (FullOpts)
         -16 (-1.00 % of base) : 837.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -16 (-0.53 % of base) : 506701.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_ConfigValidation>d__6:MoveNext():this (FullOpts)
         -16 (-0.51 % of base) : 506672.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsNoSuspend>d__1:MoveNext():this (FullOpts)
         -12 (-0.22 % of base) : 421183.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)

Top method regressions (percentages):
           4 (0.35 % of base) : 414146.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.08 % of base) : 421672.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)

Top method improvements (percentages):
         -36 (-14.75 % of base) : 444632.dasm - Program:M49() (FullOpts)
         -40 (-5.29 % of base) : 389070.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -12 (-4.55 % of base) : 450399.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -12 (-1.90 % of base) : 443294.dasm - Mutate:TestEntryPoint():int (FullOpts)
         -28 (-1.87 % of base) : 505244.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -12 (-1.44 % of base) : 488105.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.38 % of base) : 276662.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.12 % of base) : 490011.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
         -12 (-1.11 % of base) : 208623.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (Instrumented Tier1)
         -36 (-1.05 % of base) : 12473.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -12 (-1.04 % of base) : 488043.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -28 (-1.01 % of base) : 505200.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -12 (-1.01 % of base) : 276462.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -16 (-1.00 % of base) : 837.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -12 (-0.97 % of base) : 208632.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -36 (-0.97 % of base) : 505330.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -16 (-0.95 % of base) : 504146.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -12 (-0.95 % of base) : 490002.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
         -12 (-0.89 % of base) : 285235.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
         -12 (-0.88 % of base) : 504822.dasm - Microsoft.Build.BackEnd.Scheduler:DumpConfigurations():this (FullOpts)


libraries.crossgen2.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63645568 (overridden on cmd)
Total bytes of diff: 63645352 (overridden on cmd)
Total bytes of delta: -216 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 200009.dasm (0.54 % of base)
           8 : 22066.dasm (0.09 % of base)

Top file improvements (bytes):
         -24 : 20531.dasm (-2.87 % of base)
         -24 : 22481.dasm (-4.65 % of base)
         -20 : 254963.dasm (-11.11 % of base)
         -16 : 23074.dasm (-1.63 % of base)
         -12 : 204680.dasm (-0.55 % of base)
         -12 : 12301.dasm (-1.52 % of base)
         -12 : 17483.dasm (-1.07 % of base)
         -12 : 220573.dasm (-0.55 % of base)
         -12 : 23073.dasm (-2.40 % of base)
         -12 : 17481.dasm (-1.20 % of base)
         -12 : 21927.dasm (-1.74 % of base)
          -8 : 21657.dasm (-0.40 % of base)
          -8 : 233546.dasm (-0.14 % of base)
          -8 : 259101.dasm (-1.10 % of base)
          -8 : 259106.dasm (-0.95 % of base)
          -8 : 21867.dasm (-1.05 % of base)
          -4 : 10711.dasm (-0.41 % of base)
          -4 : 204116.dasm (-0.33 % of base)
          -4 : 256285.dasm (-0.09 % of base)
          -4 : 176848.dasm (-0.07 % of base)

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

Top method regressions (bytes):
          12 (0.54 % of base) : 200009.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 22066.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (bytes):
         -24 (-4.65 % of base) : 22481.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.87 % of base) : 20531.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -20 (-11.11 % of base) : 254963.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -16 (-1.63 % of base) : 23074.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-0.55 % of base) : 204680.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 220573.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-2.40 % of base) : 23073.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.20 % of base) : 17481.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.07 % of base) : 17483.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-1.52 % of base) : 12301.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.74 % of base) : 21927.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.05 % of base) : 21867.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.40 % of base) : 21657.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -8 (-0.14 % of base) : 233546.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-1.10 % of base) : 259101.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-0.95 % of base) : 259106.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.33 % of base) : 204116.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.09 % of base) : 256285.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.41 % of base) : 10711.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.17 % of base) : 17420.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)

Top method regressions (percentages):
          12 (0.54 % of base) : 200009.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 22066.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (percentages):
         -20 (-11.11 % of base) : 254963.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -24 (-4.65 % of base) : 22481.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.87 % of base) : 20531.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -12 (-2.40 % of base) : 23073.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.74 % of base) : 21927.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
         -16 (-1.63 % of base) : 23074.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-1.52 % of base) : 12301.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.20 % of base) : 17481.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.10 % of base) : 259101.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.07 % of base) : 17483.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-1.05 % of base) : 21867.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.95 % of base) : 259106.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 204680.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 220573.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -4 (-0.41 % of base) : 10711.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -8 (-0.40 % of base) : 21657.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -4 (-0.34 % of base) : 22841.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          -4 (-0.33 % of base) : 204116.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.17 % of base) : 17420.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.14 % of base) : 233546.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


libraries.pmi.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80235780 (overridden on cmd)
Total bytes of diff: 80233720 (overridden on cmd)
Total bytes of delta: -2060 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 239147.dasm (1.14 % of base)
          16 : 234402.dasm (0.60 % of base)
          12 : 225883.dasm (0.15 % of base)
           8 : 221307.dasm (0.28 % of base)
           4 : 7768.dasm (0.06 % of base)

Top file improvements (bytes):
         -64 : 191056.dasm (-2.22 % of base)
         -44 : 297763.dasm (-0.46 % of base)
         -44 : 37177.dasm (-0.56 % of base)
         -40 : 239167.dasm (-7.94 % of base)
         -32 : 203959.dasm (-0.73 % of base)
         -32 : 311215.dasm (-2.20 % of base)
         -32 : 186421.dasm (-2.31 % of base)
         -28 : 186398.dasm (-4.61 % of base)
         -28 : 186835.dasm (-1.26 % of base)
         -28 : 195057.dasm (-6.67 % of base)
         -28 : 195882.dasm (-0.49 % of base)
         -28 : 207795.dasm (-1.26 % of base)
         -28 : 247410.dasm (-0.72 % of base)
         -28 : 261307.dasm (-7.00 % of base)
         -28 : 289014.dasm (-1.45 % of base)
         -28 : 299520.dasm (-4.49 % of base)
         -24 : 288780.dasm (-6.90 % of base)
         -24 : 72969.dasm (-4.32 % of base)
         -24 : 190195.dasm (-5.08 % of base)
         -24 : 192122.dasm (-0.72 % of base)

62 total files with Code Size differences (57 improved, 5 regressed), 4 unchanged.

Top method regressions (bytes):
          28 (1.14 % of base) : 239147.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          16 (0.60 % of base) : 234402.dasm - System.Runtime.Serialization.SchemaImporter:ImportType(System.Xml.Schema.XmlSchemaType,System.Xml.XmlQualifiedName,ubyte):System.Runtime.Serialization.DataContracts.DataContract:this (FullOpts)
          12 (0.15 % of base) : 225883.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           8 (0.28 % of base) : 221307.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts)
           4 (0.06 % of base) : 7768.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)

Top method improvements (bytes):
         -64 (-2.22 % of base) : 191056.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -44 (-0.46 % of base) : 297763.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -44 (-0.56 % of base) : 37177.dasm - Microsoft.CodeAnalysis.CommonCompiler:CompileAndEmit(Microsoft.CodeAnalysis.TouchedFileLogger,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],Microsoft.CodeAnalysis.AnalyzerConfigSet,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken,byref,byref,byref):this (FullOpts)
         -40 (-7.94 % of base) : 239167.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -32 (-2.31 % of base) : 186421.dasm - Newtonsoft.Json.Linq.JsonPath.FieldMultipleFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -32 (-2.20 % of base) : 311215.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-0.73 % of base) : 203959.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -28 (-0.49 % of base) : 195882.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -28 (-6.67 % of base) : 195057.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
         -28 (-4.61 % of base) : 186398.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -28 (-1.45 % of base) : 289014.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -28 (-1.26 % of base) : 186835.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -28 (-1.26 % of base) : 207795.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -28 (-0.72 % of base) : 247410.dasm - System.Data.DataTable:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
         -28 (-4.49 % of base) : 299520.dasm - System.Diagnostics.Metrics.AggregationManager:GetInstrumentState(System.Diagnostics.Metrics.Instrument):System.Diagnostics.Metrics.InstrumentState:this (FullOpts)
         -28 (-7.00 % of base) : 261307.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -24 (-2.33 % of base) : 269333.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -24 (-4.92 % of base) : 193298.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
         -24 (-0.72 % of base) : 192122.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -24 (-5.08 % of base) : 190195.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)

Top method regressions (percentages):
          28 (1.14 % of base) : 239147.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          16 (0.60 % of base) : 234402.dasm - System.Runtime.Serialization.SchemaImporter:ImportType(System.Xml.Schema.XmlSchemaType,System.Xml.XmlQualifiedName,ubyte):System.Runtime.Serialization.DataContracts.DataContract:this (FullOpts)
           8 (0.28 % of base) : 221307.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts)
          12 (0.15 % of base) : 225883.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           4 (0.06 % of base) : 7768.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)

Top method improvements (percentages):
         -20 (-11.90 % of base) : 297351.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -40 (-7.94 % of base) : 239167.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -28 (-7.00 % of base) : 261307.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -24 (-6.90 % of base) : 288780.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -28 (-6.67 % of base) : 195057.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
         -24 (-5.83 % of base) : 261306.dasm - Xunit.AggregateMessageSink:Dispose():this (FullOpts)
         -24 (-5.22 % of base) : 297362.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
         -24 (-5.08 % of base) : 190195.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)
         -24 (-4.92 % of base) : 193298.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
         -24 (-4.92 % of base) : 452.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -28 (-4.61 % of base) : 186398.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -28 (-4.49 % of base) : 299520.dasm - System.Diagnostics.Metrics.AggregationManager:GetInstrumentState(System.Diagnostics.Metrics.Instrument):System.Diagnostics.Metrics.InstrumentState:this (FullOpts)
         -24 (-4.32 % of base) : 72969.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
         -12 (-2.59 % of base) : 259534.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
          -8 (-2.47 % of base) : 302720.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
         -12 (-2.44 % of base) : 30962.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -24 (-2.33 % of base) : 269333.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -32 (-2.31 % of base) : 186421.dasm - Newtonsoft.Json.Linq.JsonPath.FieldMultipleFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -12 (-2.31 % of base) : 301309.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1[ubyte,System.Nullable`1[int]]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
         -12 (-2.31 % of base) : 302205.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[ubyte]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)


libraries_tests.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 72839284 (overridden on cmd)
Total bytes of diff: 72838812 (overridden on cmd)
Total bytes of delta: -472 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 123695.dasm (0.18 % of base)

Top file improvements (bytes):
         -40 : 58279.dasm (-1.21 % of base)
         -32 : 116431.dasm (-1.27 % of base)
         -32 : 32319.dasm (-1.70 % of base)
         -32 : 58281.dasm (-2.73 % of base)
         -32 : 94646.dasm (-1.97 % of base)
         -24 : 124289.dasm (-1.31 % of base)
         -24 : 124260.dasm (-1.20 % of base)
         -24 : 124262.dasm (-1.55 % of base)
         -24 : 94236.dasm (-0.23 % of base)
         -24 : 124261.dasm (-1.12 % of base)
         -24 : 124265.dasm (-1.31 % of base)
         -20 : 131044.dasm (-1.92 % of base)
         -20 : 162452.dasm (-1.93 % of base)
         -20 : 12100.dasm (-1.83 % of base)
         -20 : 35551.dasm (-1.87 % of base)
         -16 : 58344.dasm (-1.89 % of base)
         -12 : 133198.dasm (-1.66 % of base)
         -12 : 80341.dasm (-0.72 % of base)
          -8 : 148157.dasm (-0.23 % of base)
          -8 : 648.dasm (-0.47 % of base)

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

Top method regressions (bytes):
          12 (0.18 % of base) : 123695.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

Top method improvements (bytes):
         -40 (-1.21 % of base) : 58279.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -32 (-1.70 % of base) : 32319.dasm - System.Collections.Concurrent.Tests.RangePartitionerHelpers:CompareSequences[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int]):ubyte (Tier1-OSR)
         -32 (-1.27 % of base) : 116431.dasm - System.PrivateUri.Tests.UriRelativeResolutionTest:Uri_Unicode_SurrogatePairs_Scheme():this (Tier1-OSR)
         -32 (-2.73 % of base) : 58281.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -32 (-1.97 % of base) : 94646.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier1-OSR)
         -24 (-1.20 % of base) : 124260.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.12 % of base) : 124261.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeCustomAttributeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.31 % of base) : 124289.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.55 % of base) : 124262.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldMarshalTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.31 % of base) : 124265.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-0.23 % of base) : 94236.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
         -20 (-1.92 % of base) : 131044.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.93 % of base) : 162452.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.83 % of base) : 12100.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.87 % of base) : 35551.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.89 % of base) : 58344.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Instrumented Tier1)
         -12 (-1.66 % of base) : 133198.dasm - System.Numerics.Tests.MyBigIntImp:Remainder(System.Collections.Generic.List`1[ubyte],System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (Tier1-OSR)
         -12 (-0.72 % of base) : 80341.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (Instrumented Tier1)
          -8 (-0.50 % of base) : 6293.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -8 (-0.47 % of base) : 648.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)

Top method regressions (percentages):
          12 (0.18 % of base) : 123695.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)

Top method improvements (percentages):
         -32 (-2.73 % of base) : 58281.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -32 (-1.97 % of base) : 94646.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier1-OSR)
         -20 (-1.93 % of base) : 162452.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.92 % of base) : 131044.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.89 % of base) : 58344.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Instrumented Tier1)
         -20 (-1.87 % of base) : 35551.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.83 % of base) : 12100.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -32 (-1.70 % of base) : 32319.dasm - System.Collections.Concurrent.Tests.RangePartitionerHelpers:CompareSequences[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int]):ubyte (Tier1-OSR)
         -12 (-1.66 % of base) : 133198.dasm - System.Numerics.Tests.MyBigIntImp:Remainder(System.Collections.Generic.List`1[ubyte],System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (Tier1-OSR)
         -24 (-1.55 % of base) : 124262.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldMarshalTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.31 % of base) : 124289.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.31 % of base) : 124265.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -32 (-1.27 % of base) : 116431.dasm - System.PrivateUri.Tests.UriRelativeResolutionTest:Uri_Unicode_SurrogatePairs_Scheme():this (Tier1-OSR)
         -40 (-1.21 % of base) : 58279.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -24 (-1.20 % of base) : 124260.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -24 (-1.12 % of base) : 124261.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeCustomAttributeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
          -8 (-0.83 % of base) : 145409.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)
         -12 (-0.72 % of base) : 80341.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (Instrumented Tier1)
          -8 (-0.50 % of base) : 6293.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -8 (-0.47 % of base) : 648.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)

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


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 159909600 (overridden on cmd)
Total bytes of diff: 159907136 (overridden on cmd)
Total bytes of delta: -2464 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 58076.dasm (1.24 % of base)
          16 : 205233.dasm (1.38 % of base)
          12 : 53375.dasm (1.14 % of base)
           8 : 142363.dasm (0.42 % of base)
           4 : 163864.dasm (0.05 % of base)
           4 : 207803.dasm (0.35 % of base)
           4 : 208201.dasm (0.37 % of base)
           4 : 207843.dasm (0.37 % of base)
           4 : 208080.dasm (0.33 % of base)
           4 : 208412.dasm (0.35 % of base)
           4 : 25057.dasm (0.35 % of base)
           4 : 126329.dasm (0.49 % of base)
           4 : 79062.dasm (0.48 % of base)

Top file improvements (bytes):
         -48 : 158462.dasm (-1.20 % of base)
         -48 : 834.dasm (-1.06 % of base)
         -36 : 151451.dasm (-2.51 % of base)
         -36 : 151173.dasm (-2.51 % of base)
         -36 : 86594.dasm (-1.89 % of base)
         -32 : 121358.dasm (-1.11 % of base)
         -32 : 295417.dasm (-0.98 % of base)
         -32 : 87933.dasm (-1.65 % of base)
         -32 : 292980.dasm (-1.08 % of base)
         -32 : 4463.dasm (-1.87 % of base)
         -28 : 2342.dasm (-1.65 % of base)
         -28 : 294684.dasm (-1.19 % of base)
         -28 : 20487.dasm (-1.12 % of base)
         -28 : 299181.dasm (-0.78 % of base)
         -24 : 214532.dasm (-0.90 % of base)
         -24 : 218203.dasm (-0.90 % of base)
         -24 : 22023.dasm (-1.47 % of base)
         -24 : 80812.dasm (-0.96 % of base)
         -24 : 97424.dasm (-0.56 % of base)
         -20 : 147949.dasm (-11.90 % of base)

55 total files with Code Size differences (42 improved, 13 regressed), 20 unchanged.

Top method regressions (bytes):
          28 (1.24 % of base) : 58076.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          16 (1.38 % of base) : 205233.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          12 (1.14 % of base) : 53375.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
           8 (0.42 % of base) : 142363.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:BasicDecodingInvalidInputLength():this (FullOpts)
           4 (0.48 % of base) : 79062.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           4 (0.49 % of base) : 126329.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.35 % of base) : 25057.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.37 % of base) : 207843.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
           4 (0.37 % of base) : 208201.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
           4 (0.33 % of base) : 208080.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           4 (0.35 % of base) : 208412.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
           4 (0.35 % of base) : 207803.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           4 (0.05 % of base) : 163864.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (bytes):
         -48 (-1.20 % of base) : 158462.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (FullOpts)
         -48 (-1.06 % of base) : 834.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -36 (-1.89 % of base) : 86594.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -36 (-2.51 % of base) : 151451.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 151173.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-1.87 % of base) : 4463.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -32 (-1.65 % of base) : 87933.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -32 (-1.11 % of base) : 121358.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
         -32 (-1.08 % of base) : 292980.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
         -32 (-0.98 % of base) : 295417.dasm - System.Threading.Tasks.Dataflow.Tests.BatchBlockTests+<TestNonGreedyLostMessages>d__17:MoveNext():this (FullOpts)
         -28 (-1.12 % of base) : 20487.dasm - NuGet.Protocol.HttpSourceAuthenticationHandler+<SendAsync>d__9:MoveNext():this (FullOpts)
         -28 (-1.19 % of base) : 294684.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<BufferBlocksToBatchNonGreedyToAction>d__8:MoveNext():this (FullOpts)
         -28 (-0.78 % of base) : 299181.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         -28 (-1.65 % of base) : 2342.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -24 (-1.47 % of base) : 22023.dasm - NuGet.Packaging.Signing.SignedPackageArchiveUtility:GetPackageContentHash(System.IO.BinaryReader):System.String (FullOpts)
         -24 (-0.96 % of base) : 80812.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
         -24 (-0.56 % of base) : 97424.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<TestActivityCreationProperties>b__9_0():this (FullOpts)
         -24 (-0.90 % of base) : 214532.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
         -24 (-0.90 % of base) : 218203.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
         -20 (-11.90 % of base) : 147949.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)

Top method regressions (percentages):
          16 (1.38 % of base) : 205233.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          28 (1.24 % of base) : 58076.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (1.14 % of base) : 53375.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
           4 (0.49 % of base) : 126329.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.48 % of base) : 79062.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           8 (0.42 % of base) : 142363.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:BasicDecodingInvalidInputLength():this (FullOpts)
           4 (0.37 % of base) : 208201.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
           4 (0.37 % of base) : 207843.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
           4 (0.35 % of base) : 25057.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.35 % of base) : 207803.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           4 (0.35 % of base) : 208412.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
           4 (0.33 % of base) : 208080.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           4 (0.05 % of base) : 163864.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (percentages):
         -20 (-11.90 % of base) : 147949.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
         -16 (-4.12 % of base) : 216621.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
         -16 (-4.12 % of base) : 540.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -12 (-3.57 % of base) : 33481.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -16 (-3.39 % of base) : 37296.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -12 (-3.03 % of base) : 126320.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
         -16 (-2.88 % of base) : 153779.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
         -16 (-2.76 % of base) : 218668.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountExceedingDefaultLimit_MemberData>d__18:MoveNext():ubyte:this (FullOpts)
         -16 (-2.74 % of base) : 218966.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
         -12 (-2.68 % of base) : 147975.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
         -16 (-2.65 % of base) : 217914.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
         -12 (-2.59 % of base) : 20492.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-2.59 % of base) : 146063.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -16 (-2.55 % of base) : 146343.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.55 % of base) : 20565.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -36 (-2.51 % of base) : 151451.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 151173.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -16 (-2.50 % of base) : 212287.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-2.46 % of base) : 29002.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
         -16 (-2.34 % of base) : 20469.dasm - System.Net.Http.Headers.HttpHeaders:CloneHeaderInfo(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo):System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo (FullOpts)


realworld.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15078748 (overridden on cmd)
Total bytes of diff: 15078500 (overridden on cmd)
Total bytes of delta: -248 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 11260.dasm (1.44 % of base)

Top file improvements (bytes):
         -12 : 14283.dasm (-0.56 % of base)
         -12 : 31573.dasm (-1.45 % of base)
         -12 : 29079.dasm (-2.73 % of base)
         -12 : 29722.dasm (-0.54 % of base)
         -12 : 29931.dasm (-1.24 % of base)
         -12 : 1504.dasm (-1.44 % of base)
         -12 : 29047.dasm (-1.60 % of base)
         -12 : 29683.dasm (-0.63 % of base)
         -12 : 30846.dasm (-0.26 % of base)
         -12 : 12432.dasm (-0.27 % of base)
         -12 : 29704.dasm (-0.31 % of base)
         -12 : 29941.dasm (-0.80 % of base)
         -12 : 5027.dasm (-2.00 % of base)
         -12 : 59.dasm (-1.03 % of base)
          -8 : 13036.dasm (-0.88 % of base)
          -8 : 28480.dasm (-1.49 % of base)
          -8 : 29667.dasm (-0.50 % of base)
          -8 : 12025.dasm (-0.38 % of base)
          -8 : 29489.dasm (-0.83 % of base)
          -8 : 29980.dasm (-1.13 % of base)

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

Top method regressions (bytes):
          16 (1.44 % of base) : 11260.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (bytes):
         -12 (-0.56 % of base) : 14283.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
         -12 (-0.27 % of base) : 12432.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
         -12 (-0.80 % of base) : 29941.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
         -12 (-1.24 % of base) : 29931.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
         -12 (-0.63 % of base) : 29683.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -12 (-1.44 % of base) : 1504.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.03 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.54 % of base) : 29722.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
         -12 (-1.60 % of base) : 29047.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
         -12 (-2.73 % of base) : 29079.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -12 (-0.31 % of base) : 29704.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
         -12 (-1.45 % of base) : 31573.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -12 (-0.26 % of base) : 30846.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
         -12 (-2.00 % of base) : 5027.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.13 % of base) : 29980.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
          -8 (-0.38 % of base) : 12025.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadBigValues(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
          -8 (-1.49 % of base) : 28480.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-1.43 % of base) : 29658.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
          -8 (-0.50 % of base) : 29667.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)
          -8 (-0.83 % of base) : 29489.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)

Top method regressions (percentages):
          16 (1.44 % of base) : 11260.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -12 (-2.73 % of base) : 29079.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -12 (-2.00 % of base) : 5027.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
         -12 (-1.60 % of base) : 29047.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
          -8 (-1.49 % of base) : 28480.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.45 % of base) : 31573.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -12 (-1.44 % of base) : 1504.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.43 % of base) : 29658.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -12 (-1.24 % of base) : 29931.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
          -8 (-1.13 % of base) : 29980.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
         -12 (-1.03 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.96 % of base) : 31552.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
          -8 (-0.88 % of base) : 13036.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-0.83 % of base) : 29489.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -12 (-0.80 % of base) : 29941.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
          -8 (-0.68 % of base) : 31550.dasm - System.Management.Automation.Runspaces.LocalRunspace:StopOrDisconnectAllJobs():this (FullOpts)
          -4 (-0.63 % of base) : 5344.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -12 (-0.63 % of base) : 29683.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
          -4 (-0.60 % of base) : 29752.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
         -12 (-0.56 % of base) : 14283.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
         -12 (-0.54 % of base) : 29722.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)

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



windows arm64

Diffs are based on 1,478,006 contexts (263,527 MinOpts, 1,214,479 FullOpts).

MISSED contexts: base: 2,751 (0.19%), diff: 2,755 (0.19%)

Overall (-6,524 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,887,636 -148
benchmarks.run_pgo.windows.arm64.checked.mch 36,162,312 +688
benchmarks.run_tiered.windows.arm64.checked.mch 15,269,056 -76
coreclr_tests.run.windows.arm64.checked.mch 277,085,768 -736
libraries.crossgen2.windows.arm64.checked.mch 66,990,496 -196
libraries.pmi.windows.arm64.checked.mch 79,832,108 -2,556
libraries_tests.run.windows.arm64.Release.mch 6,478,404 -448
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 168,103,524 -2,532
realworld.run.windows.arm64.checked.mch 15,900,008 -400
smoke_tests.nativeaot.windows.arm64.checked.mch 3,865,048 -120

FullOpts (-6,524 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,887,100 -148
benchmarks.run_pgo.windows.arm64.checked.mch 23,135,448 +688
benchmarks.run_tiered.windows.arm64.checked.mch 4,070,224 -76
coreclr_tests.run.windows.arm64.checked.mch 138,793,200 -736
libraries.crossgen2.windows.arm64.checked.mch 66,988,860 -196
libraries.pmi.windows.arm64.checked.mch 79,712,124 -2,556
libraries_tests.run.windows.arm64.Release.mch 5,254,404 -448
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 155,044,244 -2,532
realworld.run.windows.arm64.checked.mch 15,336,032 -400
smoke_tests.nativeaot.windows.arm64.checked.mch 3,864,036 -120

Example diffs

benchmarks.run.windows.arm64.checked.mch

-24 (-4.92%) : 3190.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-12 (-1.94%) : 6831.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)

@@ -10,8 +10,8 @@ ; ; V00 this [V00,T10] ( 3, 4 ) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task> ; V01 arg1 [V01,T09] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>
-; V02 loc0 [V02,T12] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 loc0 [V02,T13] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> +; V03 loc1 [V03,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> @@ -24,20 +24,21 @@ ; V13 tmp5 [V13,T05] ( 3, 12 ) ref -> x24 class-hnd "Inlining Arg" <System.AggregateException> ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp8 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp8 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V18 tmp10 [V18,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V19 tmp11 [V19,T03] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V18 tmp10 [V18,T03] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V19 tmp11 [V19,T02] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V20 tmp12 [V20,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V21 tmp13 [V21,T07] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V22 tmp14 [V22,T13] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
+; V21 tmp13 [V21,T12] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V22 tmp14 [V22,T14] ( 3, 1.50) ref -> x21 single-def "field V09._list (fldOffset=0x0)" P-INDEP
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
-;* V24 tmp16 [V24,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP -; V25 tmp17 [V25,T14] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
+;* V24 tmp16 [V24,T18] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP +; V25 tmp17 [V25,T15] ( 2, 1 ) int -> x22 "field V09._version (fldOffset=0x14)" P-INDEP
; V26 tmp18 [V26,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V27 PSPSym [V27,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V28 cse0 [V28,T06] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V29 cse1 [V29,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
+; V27 PSPSym [V27,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V28 cse0 [V28,T08] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V29 cse1 [V29,T06] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V30 cse2 [V30,T04] ( 4, 12 ) byref -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -68,7 +69,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs +[x1] ldapr x21, [x1] ; gcrRegs +[x21]
- cbz x21, G_M37406_IG15
+ cbz x21, G_M37406_IG14
;; size=40 bbWeight=1 PerfScore 11.00 G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x1] @@ -76,7 +77,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; GC ptr vars +{V03} str wzr, [fp, #0x18] // [V04 loc2] ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000020000 {V03}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x18] // [V04 loc2] cbnz w1, G_M37406_IG09 add x1, fp, #24 // [V04 loc2] @@ -96,17 +97,17 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=0000000000010000 {V03}, gcrefRegs= mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 8.00 G_M37406_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M37406_IG10
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M37406_IG11
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M37406_IG13
+ bhs G_M37406_IG12
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M37406_IG11
+ bhs G_M37406_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -213,18 +214,11 @@ G_M37406_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cmp w22, w24 - bne G_M37406_IG12 - b G_M37406_IG13 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M37406_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37406_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -233,10 +227,10 @@ G_M37406_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19] ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG14
+ cbz w0, G_M37406_IG13
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V03} @@ -244,12 +238,12 @@ G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #40 ; byrRegs +[x0] stlr xzr, [x0] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37406_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ; byrRegs -[x0] ldr x25, [sp, #0x58] @@ -259,8 +253,8 @@ G_M37406_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V03 V16}
+G_M37406_IG15: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V03}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -269,17 +263,17 @@ G_M37406_IG16: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37406_IG17: ; bbWeight=0, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37406_IG16: ; bbWeight=0, gcVars=0000000000020000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M37406_IG18
+ cbz w0, G_M37406_IG17
ldr x0, [fp, #0x10] // [V03 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V03 V16}
+ ; GC ptr vars -{V03}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37406_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -288,7 +282,7 @@ G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 620, prolog size 40, PerfScore 268.75, instruction count 155, allocated bytes for code 620 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
+; Total bytes of code 608, prolog size 40, PerfScore 258.75, instruction count 152, allocated bytes for code 608 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
; ============================================================ Unwind Info: @@ -299,7 +293,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
+ Function Length : 135 (0x00087) Actual length = 540 (0x00021c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -338,4 +332,4 @@ Unwind Info: *************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37406_IG04..G_M37406_IG13) handled by [G_M37406_IG16..END) (fault)
+EH#0: try [G_M37406_IG04..G_M37406_IG12) handled by [G_M37406_IG15..END) (fault)
-8 (-1.82%) : 6573.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
@@ -10,62 +10,63 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> x19 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> x2 class-hnd exact <System.String>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> x2 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> x20 single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> x2 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> x21 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> x22 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> x21 "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x28] + stp x21, x22, [sp, #0x38] + str x23, [sp, #0x48]
mov fp, sp
- add x2, sp, #96 - str x2, [fp, #0x28] // [V24 PSPSym]
+ add x2, sp, #80 + str x2, [fp, #0x20] // [V24 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.00 G_M53769_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- str x19, [fp, #0x18] // [V02 loc0]
+ str x19, [fp, #0x10] // [V02 loc0]
; GC ptr vars +{V02}
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1]
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1]
cbnz w1, G_M53769_IG06
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x20] // [V03 loc1]
+ ldrb w0, [fp, #0x18] // [V03 loc1]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -74,7 +75,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=180 ; gcr arg pop 0 ldr x21, [x19, #0x08] ; gcrRegs +[x21]
- cbz x21, G_M53769_IG12
+ cbz x21, G_M53769_IG11
;; size=52 bbWeight=1 PerfScore 16.50 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x1, x21 @@ -85,24 +86,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M53769_IG11
+ cbz x0, G_M53769_IG10
mov x21, x0 ldr w22, [x21, #0x14] mov w23, wzr ;; size=36 bbWeight=0.50 PerfScore 4.00 G_M53769_IG05: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M53769_IG07
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M53769_IG09
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M53769_IG08
+ bhs G_M53769_IG07
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M53769_IG09
+ bhs G_M53769_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -133,21 +134,17 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
- cmp w22, w24 - bne G_M53769_IG10 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08]
- b G_M53769_IG12
+ b G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 8.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -156,7 +153,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21] mov x2, x21 ; gcrRegs +[x2] @@ -177,56 +174,56 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs blr x3 ; gcrRegs -[x0-x2 x20-x21] ; gcr arg pop 0
- b G_M53769_IG08
+ b G_M53769_IG07
;; size=60 bbWeight=0.50 PerfScore 6.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG14
+ ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0] ; GC ptr vars -{V02} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x60
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M53769_IG15: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16} - stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - add x3, fp, #96 - str x3, [sp, #0x18]
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M53769_IG14: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17} + stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38] + add x3, fp, #80 + str x3, [sp, #0x10]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M53769_IG17 - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M53769_IG16 + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50
+G_M53769_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 36, PerfScore 171.75, instruction count 110, allocated bytes for code 440 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
+; Total bytes of code 432, prolog size 36, PerfScore 166.75, instruction count 108, allocated bytes for code 432 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
...

-8 (-0.15%) : 9070.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)

@@ -10,212 +10,213 @@ ; ; V00 this [V00,T00] ( 86,251 ) ref -> [fp+0x70] this class-hnd EH-live single-def <Jil.Deserialize.InlineDeserializer`1[System.__Canon]> ; V01 arg1 [V01,T32] ( 15, 12 ) ref -> x19 class-hnd single-def <System.Type>
-; V02 loc0 [V02,T53] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V03 loc1 [V03,T80] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
+; V02 loc0 [V02,T54] ( 6, 6 ) ref -> x20 class-hnd exact single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V03 loc1 [V03,T81] ( 4, 4 ) ref -> x21 class-hnd single-def <Sigil.Label>
; V04 loc2 [V04,T23] ( 12, 18 ) ref -> [fp+0x68] class-hnd exact EH-live spill-single-def <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ; V05 loc3 [V05,T22] ( 8, 22 ) ref -> x22 class-hnd <<unknown class>> ; V06 loc4 [V06,T24] ( 5, 18 ) ref -> x24 class-hnd single-def <Sigil.Label>
-; V07 loc5 [V07,T140] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> -; V08 loc6 [V08,T72] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
+; V07 loc5 [V07,T141] ( 2, 2 ) ref -> x25 class-hnd single-def <System.Type> +; V08 loc6 [V08,T73] ( 5, 5 ) ref -> x25 class-hnd single-def <System.Type>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T133] ( 3, 3 ) ref -> x28 class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T134] ( 3, 3 ) ref -> x28 class-hnd single-def <<unknown class>>
; V11 loc9 [V11,T39] ( 4, 11 ) ref -> x25 class-hnd <System.Reflection.MethodInfo>
-; V12 loc10 [V12,T141] ( 2, 2 ) ref -> x26 class-hnd single-def <Sigil.Label[]>
+; V12 loc10 [V12,T142] ( 2, 2 ) ref -> x26 class-hnd single-def <Sigil.Label[]>
; V13 loc11 [V13,T43] ( 3, 10 ) ref -> x27 class-hnd single-def <Sigil.Label> ; V14 loc12 [V14,T20] ( 3, 24 ) ref -> x26 class-hnd single-def <Sigil.Label>
-; V15 loc13 [V15,T134] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
+; V15 loc13 [V15,T135] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Reflection.ConstructorInfo>
;* V16 loc14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V17 loc15 [V17,T79] ( 7, 4 ) ref -> [fp+0x60] class-hnd EH-live spill-single-def <Sigil.Local> -; V18 loc16 [V18,T135] ( 3, 3 ) ref -> [fp+0x58] class-hnd spill-single-def <Sigil.Label>
+; V17 loc15 [V17,T80] ( 7, 4 ) ref -> [fp+0x60] class-hnd EH-live spill-single-def <Sigil.Local> +; V18 loc16 [V18,T136] ( 3, 3 ) ref -> [fp+0x58] class-hnd spill-single-def <Sigil.Label>
;* V19 loc17 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V20 loc18 [V20,T49] ( 2, 8 ) ref -> [fp+0x50] class-hnd exact spill-single-def <System.String>
+; V20 loc18 [V20,T50] ( 2, 8 ) ref -> [fp+0x50] class-hnd exact spill-single-def <System.String>
; V21 loc19 [V21,T36] ( 3, 12 ) ref -> x1 class-hnd <Sigil.Label>
-; V22 loc20 [V22,T26] ( 4, 16 ) ref -> [fp+0x48] class-hnd spill-single-def <System.Reflection.MemberInfo[]> -; V23 loc21 [V23,T50] ( 2, 8 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MemberInfo>
+; V22 loc20 [V22,T25] ( 4, 16 ) ref -> [fp+0x48] class-hnd spill-single-def <System.Reflection.MemberInfo[]> +; V23 loc21 [V23,T51] ( 2, 8 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MemberInfo>
;# V24 OutArgs [V24 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V25 tmp1 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> ;* V26 tmp2 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp3 [V27,T87] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V28 tmp4 [V28,T88] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V27 tmp3 [V27,T88] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V28 tmp4 [V28,T89] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V29 tmp5 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_1[System.__Canon]> ;* V30 tmp6 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V31 tmp7 [V31,T89] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V32 tmp8 [V32,T44] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V33 tmp9 [V33,T90] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V34 tmp10 [V34,T45] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
+; V31 tmp7 [V31,T90] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V32 tmp8 [V32,T45] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V33 tmp9 [V33,T91] ( 2, 4 ) ref -> x24 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V34 tmp10 [V34,T46] ( 4, 8 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Type[]>
;* V35 tmp11 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType>
-; V36 tmp12 [V36,T74] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V37 tmp13 [V37,T139] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
+; V36 tmp12 [V36,T75] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V37 tmp13 [V37,T140] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
; V38 tmp14 [V38,T37] ( 7, 11.50) ref -> x26 class-hnd "spilling QMark2" <<unknown class>> ;* V39 tmp15 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V40 tmp16 [V40,T91] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
+; V40 tmp16 [V40,T92] ( 2, 4 ) ref -> x28 class-hnd single-def "dup spill" <<unknown class>>
;* V41 tmp17 [V41 ] ( 0, 0 ) ref -> zero-ref single-def
-; V42 tmp18 [V42,T73] ( 5, 5 ) ref -> x28 -; V43 tmp19 [V43,T46] ( 4, 8 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V44 tmp20 [V44,T92] ( 2, 4 ) ref -> [fp+0x38] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> -; V45 tmp21 [V45,T55] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
+; V42 tmp18 [V42,T74] ( 5, 5 ) ref -> x28 +; V43 tmp19 [V43,T47] ( 4, 8 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V44 tmp20 [V44,T93] ( 2, 4 ) ref -> [fp+0x38] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> +; V45 tmp21 [V45,T56] ( 3, 6 ) ref -> x5 class-hnd exact single-def "dup spill" <System.Type[]>
;* V46 tmp22 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V47 tmp23 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V48 tmp24 [V48,T93] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V48 tmp24 [V48,T94] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V49 tmp25 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
-; V50 tmp26 [V50,T81] ( 4, 4 ) ref -> x2 -; V51 tmp27 [V51,T94] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V52 tmp28 [V52,T95] ( 2, 4 ) ref -> [fp+0x30] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V53 tmp29 [V53,T96] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V54 tmp30 [V54,T56] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
+; V50 tmp26 [V50,T82] ( 4, 4 ) ref -> x2 +; V51 tmp27 [V51,T95] ( 2, 4 ) ref -> x27 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V52 tmp28 [V52,T96] ( 2, 4 ) ref -> [fp+0x30] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V53 tmp29 [V53,T97] ( 2, 4 ) ref -> [fp+0x28] class-hnd spill-single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V54 tmp30 [V54,T57] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
;* V55 tmp31 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]>
-; V56 tmp32 [V56,T06] ( 2, 32 ) ref -> x26 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V56 tmp32 [V56,T05] ( 2, 32 ) ref -> x26 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V57 tmp33 [V57,T01] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]> ; V58 tmp34 [V58,T02] ( 4, 64 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Object[]>
-; V59 tmp35 [V59,T97] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -;* V60 tmp36 [V60,T146] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V59 tmp35 [V59,T98] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +;* V60 tmp36 [V60,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V61 tmp37 [V61,T40] ( 5, 10 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V62 tmp38 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V63 tmp39 [V63,T57] ( 3, 6 ) ref -> [fp+0x20] class-hnd exact spill-single-def "dup spill" <System.Type[]> -; V64 tmp40 [V64,T98] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> -;* V65 tmp41 [V65,T147] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V63 tmp39 [V63,T58] ( 3, 6 ) ref -> [fp+0x20] class-hnd exact spill-single-def "dup spill" <System.Type[]> +; V64 tmp40 [V64,T99] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> +;* V65 tmp41 [V65,T148] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V66 tmp42 [V66,T41] ( 5, 10 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V67 tmp43 [V67 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V68 tmp44 [V68,T99] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V68 tmp44 [V68,T100] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
;* V69 tmp45 [V69 ] ( 0, 0 ) ref -> zero-ref single-def ;* V70 tmp46 [V70 ] ( 0, 0 ) ref -> zero-ref single-def ;* V71 tmp47 [V71 ] ( 0, 0 ) ref -> zero-ref single-def
-; V72 tmp48 [V72,T153] ( 3, 0 ) ref -> x20 -; V73 tmp49 [V73,T154] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V74 tmp50 [V74,T47] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V72 tmp48 [V72,T154] ( 3, 0 ) ref -> x20 +; V73 tmp49 [V73,T155] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V74 tmp50 [V74,T48] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V75 tmp51 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V76 tmp52 [V76,T100] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
+; V76 tmp52 [V76,T101] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
;* V77 tmp53 [V77 ] ( 0, 0 ) ref -> zero-ref single-def ;* V78 tmp54 [V78 ] ( 0, 0 ) int -> zero-ref single-def
-; V79 tmp55 [V79,T82] ( 4, 4 ) ref -> x23 -; V80 tmp56 [V80,T48] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V81 tmp57 [V81,T148] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V79 tmp55 [V79,T83] ( 4, 4 ) ref -> x23 +; V80 tmp56 [V80,T49] ( 4, 8 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V81 tmp57 [V81,T149] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V82 tmp58 [V82,T42] ( 5, 10 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V83 tmp59 [V83 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V84 tmp60 [V84,T101] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V85 tmp61 [V85,T102] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V84 tmp60 [V84,T102] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V85 tmp61 [V85,T103] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V86 tmp62 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V87 tmp63 [V87,T58] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V88 tmp64 [V88,T103] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V87 tmp63 [V87,T59] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V88 tmp64 [V88,T104] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
;* V89 tmp65 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo>
-; V90 tmp66 [V90,T104] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V90 tmp66 [V90,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V91 tmp67 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V92 tmp68 [V92,T105] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V92 tmp68 [V92,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V93 tmp69 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 tmp70 [V94,T106] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V95 tmp71 [V95,T107] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V94 tmp70 [V94,T107] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V95 tmp71 [V95,T108] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V96 tmp72 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Local>
-; V97 tmp73 [V97,T108] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V97 tmp73 [V97,T109] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V98 tmp74 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V99 tmp75 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Object[]> ;* V100 tmp76 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeInfo> ;* V101 tmp77 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V102 tmp78 [V102,T59] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V102 tmp78 [V102,T60] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V103 tmp79 [V103,T33] ( 7, 14 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V104 tmp80 [V104 ] ( 0, 0 ) ref -> zero-ref ;* V105 tmp81 [V105 ] ( 0, 0 ) ref -> zero-ref ;* V106 tmp82 [V106 ] ( 0, 0 ) ref -> zero-ref ;* V107 tmp83 [V107 ] ( 0, 0 ) ref -> zero-ref
-; V108 tmp84 [V108,T60] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> -; V109 tmp85 [V109,T142] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V110 tmp86 [V110,T150] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V108 tmp84 [V108,T61] ( 3, 6 ) ref -> x12 class-hnd exact single-def "Inlining Arg" <Jil.Deserialize.InlineDeserializer`1+<>c__DisplayClass89_0[System.__Canon]> +; V109 tmp85 [V109,T143] ( 2, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V110 tmp86 [V110,T151] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V111 tmp87 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V112 tmp88 [V112,T34] ( 6, 12 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V113 tmp89 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V114 tmp90 [V114 ] ( 2, 2 ) struct ( 8) [fp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-; V115 tmp91 [V115,T61] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V116 tmp92 [V116,T109] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V117 tmp93 [V117,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V118 tmp94 [V118,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V119 tmp95 [V119,T112] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V120 tmp96 [V120,T113] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V121 tmp97 [V121,T114] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V122 tmp98 [V122,T115] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V123 tmp99 [V123,T62] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V124 tmp100 [V124,T116] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V125 tmp101 [V125,T117] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V126 tmp102 [V126,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V127 tmp103 [V127,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V128 tmp104 [V128,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V129 tmp105 [V129,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V130 tmp106 [V130,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V131 tmp107 [V131,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V132 tmp108 [V132,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V133 tmp109 [V133,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V115 tmp91 [V115,T62] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V116 tmp92 [V116,T110] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V117 tmp93 [V117,T111] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V118 tmp94 [V118,T112] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V119 tmp95 [V119,T113] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V120 tmp96 [V120,T114] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V121 tmp97 [V121,T115] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V122 tmp98 [V122,T116] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V123 tmp99 [V123,T63] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V124 tmp100 [V124,T117] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V125 tmp101 [V125,T118] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V126 tmp102 [V126,T119] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V127 tmp103 [V127,T120] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V128 tmp104 [V128,T121] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V129 tmp105 [V129,T122] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V130 tmp106 [V130,T123] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V131 tmp107 [V131,T124] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V132 tmp108 [V132,T125] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V133 tmp109 [V133,T126] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V134 tmp110 [V134 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[<>f__AnonymousType0`4[int,System.String,System.Reflection.MemberInfo[],Sigil.Label]]>
-; V135 tmp111 [V135,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V136 tmp112 [V136,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V137 tmp113 [V137,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -; V138 tmp114 [V138,T30] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> -;* V139 tmp115 [V139,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V135 tmp111 [V135,T26] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V136 tmp112 [V136,T27] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V137 tmp113 [V137,T28] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +; V138 tmp114 [V138,T29] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <Sigil.NonGeneric.Emit> +;* V139 tmp115 [V139,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V140 tmp116 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V141 tmp117 [V141,T07] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V142 tmp118 [V142,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V143 tmp119 [V143,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V144 tmp120 [V144,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V145 tmp121 [V145,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V146 tmp122 [V146,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V147 tmp123 [V147,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V141 tmp117 [V141,T06] ( 2, 32 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V142 tmp118 [V142,T07] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V143 tmp119 [V143,T08] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V144 tmp120 [V144,T09] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V145 tmp121 [V145,T10] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V146 tmp122 [V146,T11] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V147 tmp123 [V147,T12] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
;* V148 tmp124 [V148 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Label>
-; V149 tmp125 [V149,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V150 tmp126 [V150,T15] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V151 tmp127 [V151,T16] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V152 tmp128 [V152,T17] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V153 tmp129 [V153,T18] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V154 tmp130 [V154,T126] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V155 tmp131 [V155,T127] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> -; V156 tmp132 [V156,T128] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
+; V149 tmp125 [V149,T13] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> +; V150 tmp126 [V150,T14] ( 2, 32 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit>
...

-8 (-0.15%) : 828.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

-4 (-0.04%) : 21110.dasm - System.Net.WebSockets.ManagedWebSocket+d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc3 [V04 ] ( 10, 10 ) struct (16) [fp+0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ; V06 loc5 [V06,T39] ( 3, 12 ) ref -> x0 class-hnd exact <System.String>
-; V07 loc6 [V07,T29] ( 4, 16 ) long -> x20
+; V07 loc6 [V07,T29] ( 4, 16 ) long -> x1
; V08 loc7 [V08 ] ( 11, 35 ) struct (16) [fp+0x188] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]> ; V09 loc8 [V09 ] ( 8, 20 ) struct (16) [fp+0x178] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask`1[int]> ;* V10 loc9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]> @@ -81,17 +81,17 @@ ;* V70 tmp40 [V70 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V71 tmp41 [V71 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V72 tmp42 [V72 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V73 tmp43 [V73,T102] ( 2, 8 ) int -> x2
+; V73 tmp43 [V73,T101] ( 2, 8 ) int -> x2
;* V74 tmp44 [V74 ] ( 0, 0 ) int -> zero-ref ; V75 tmp45 [V75,T46] ( 3, 12 ) int -> x3 ;* V76 tmp46 [V76 ] ( 0, 0 ) int -> zero-ref "dup spill" ; V77 tmp47 [V77,T23] ( 3, 24 ) int -> x1 "Span.get_Item index" ;* V78 tmp48 [V78 ] ( 0, 0 ) int -> zero-ref ;* V79 tmp49 [V79 ] ( 0, 0 ) int -> zero-ref
-; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x21 -; V81 tmp51 [V81,T103] ( 2, 8 ) int -> x1
+; V80 tmp50 [V80,T47] ( 3, 12 ) int -> x2 +; V81 tmp51 [V81,T102] ( 2, 8 ) int -> x2
;* V82 tmp52 [V82 ] ( 0, 0 ) int -> zero-ref
-; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x2
+; V83 tmp53 [V83,T30] ( 4, 16 ) int -> x1
;* V84 tmp54 [V84 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V85 tmp55 [V85 ] ( 0, 0 ) int -> zero-ref ;* V86 tmp56 [V86 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -119,7 +119,7 @@ ;* V108 tmp78 [V108 ] ( 0, 0 ) byref -> zero-ref single-def ;* V109 tmp79 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ; V110 tmp80 [V110,T149] ( 5, 5 ) ref -> x21
-; V111 tmp81 [V111,T63] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
+; V111 tmp81 [V111,T62] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]>
; V112 tmp82 [V112,T325] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception> ; V113 tmp83 [V113,T131] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V114 tmp84 [V114 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration> @@ -320,10 +320,10 @@ ; V309 tmp279 [V309 ] ( 4, 8 ) struct ( 8) [fp+0x40] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Net.WebSockets.ValueWebSocketReceiveResult> ;* V310 tmp280 [V310 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V311 tmp281 [V311 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V312 tmp282 [V312,T79] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V312 tmp282 [V312,T78] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V313 tmp283 [V313 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V314 tmp284 [V314,T64] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V315 tmp285 [V315,T68] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V314 tmp284 [V314,T63] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V315 tmp285 [V315,T67] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V316 tmp286 [V316 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V317 tmp287 [V317 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V318 tmp288 [V318,T135] ( 3, 6 ) int -> x21 "Inlining Arg" @@ -336,8 +336,8 @@ ;* V325 tmp295 [V325 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V326 tmp296 [V326,T125] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V327 tmp297 [V327,T120] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V328 tmp298 [V328,T80] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V329 tmp299 [V329,T74] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V328 tmp298 [V328,T79] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V329 tmp299 [V329,T73] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V330 tmp300 [V330 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V331 tmp301 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V332 tmp302 [V332 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -354,8 +354,8 @@ ;* V343 tmp313 [V343 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V344 tmp314 [V344,T126] ( 6, 6 ) byref -> x25 "Inline stloc first use temp" ; V345 tmp315 [V345,T121] ( 7, 7 ) int -> x26 "Inline stloc first use temp"
-; V346 tmp316 [V346,T81] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" -; V347 tmp317 [V347,T75] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V346 tmp316 [V346,T80] ( 4, 8 ) byref -> x24 single-def "Inlining Arg" +; V347 tmp317 [V347,T74] ( 9, 9 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V348 tmp318 [V348 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V349 tmp319 [V349 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V350 tmp320 [V350 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -366,10 +366,10 @@ ;* V355 tmp325 [V355 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V356 tmp326 [V356,T171] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V357 tmp327 [V357 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V358 tmp328 [V358,T82] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V358 tmp328 [V358,T81] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V359 tmp329 [V359 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V360 tmp330 [V360,T65] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> -; V361 tmp331 [V361,T69] ( 5, 10 ) int -> x0 "Inlining Arg"
+; V360 tmp330 [V360,T64] ( 5, 10 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]> +; V361 tmp331 [V361,T68] ( 5, 10 ) int -> x0 "Inlining Arg"
;* V362 tmp332 [V362 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V363 tmp333 [V363 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V364 tmp334 [V364,T140] ( 3, 6 ) int -> x24 "Inlining Arg" @@ -380,14 +380,14 @@ ; V369 tmp339 [V369,T196] ( 2, 4 ) long -> x3 "Inlining Arg" ; V370 tmp340 [V370,T141] ( 3, 6 ) int -> x2 "Inlining Arg" ; V371 tmp341 [V371,T142] ( 3, 6 ) int -> x20 "Inlining Arg"
-; V372 tmp342 [V372,T83] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
+; V372 tmp342 [V372,T82] ( 4, 8 ) byref -> x1 single-def "Inlining Arg"
;* V373 tmp343 [V373 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V374 tmp344 [V374,T66] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
+; V374 tmp344 [V374,T65] ( 5, 10 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Object>
; V375 tmp345 [V375,T233] ( 3, 3 ) int -> registers ; V376 tmp346 [V376,T197] ( 2, 4 ) int -> x22 "Inlining Arg"
-; V377 tmp347 [V377,T84] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> -; V378 tmp348 [V378,T85] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> -; V379 tmp349 [V379,T90] ( 4, 8 ) int -> x1 "Inlining Arg"
+; V377 tmp347 [V377,T83] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater> +; V378 tmp348 [V378,T84] ( 4, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <ubyte[]> +; V379 tmp349 [V379,T89] ( 4, 8 ) int -> x1 "Inlining Arg"
;* V380 tmp350 [V380 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V381 tmp351 [V381,T143] ( 3, 6 ) int -> x3 "Inlining Arg" ; V382 tmp352 [V382,T144] ( 3, 6 ) int -> x20 "Inlining Arg" @@ -423,8 +423,8 @@ ;* V412 tmp382 [V412 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V413 tmp383 [V413,T127] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V414 tmp384 [V414,T122] ( 7, 7 ) int -> x22 "Inline stloc first use temp"
-; V415 tmp385 [V415,T86] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V416 tmp386 [V416,T76] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V415 tmp385 [V415,T85] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V416 tmp386 [V416,T75] ( 9, 9 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V417 tmp387 [V417 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V418 tmp388 [V418 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V419 tmp389 [V419 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -435,25 +435,25 @@ ;* V424 tmp394 [V424 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V425 tmp395 [V425,T174] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V426 tmp396 [V426 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V427 tmp397 [V427,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V427 tmp397 [V427,T90] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V428 tmp398 [V428 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V429 tmp399 [V429,T175] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
-; V430 tmp400 [V430,T87] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
+; V430 tmp400 [V430,T86] ( 4, 8 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Net.WebSockets.Compression.WebSocketInflater>
;* V431 tmp401 [V431 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V432 tmp402 [V432,T67] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> -; V433 tmp403 [V433,T70] ( 5, 10 ) int -> x1 "Inlining Arg"
+; V432 tmp402 [V432,T66] ( 5, 10 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]> +; V433 tmp403 [V433,T69] ( 5, 10 ) int -> x1 "Inlining Arg"
;* V434 tmp404 [V434 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V435 tmp405 [V435 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]> ; V436 tmp406 [V436,T146] ( 3, 6 ) int -> x21 "Inlining Arg" ; V437 tmp407 [V437,T176] ( 2, 4 ) byref -> x20 single-def "Inlining Arg"
-; V438 tmp408 [V438,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V438 tmp408 [V438,T91] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V439 tmp409 [V439 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V440 tmp410 [V440,T177] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V441 tmp411 [V441 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V442 tmp412 [V442,T128] ( 6, 6 ) byref -> x23 "Inline stloc first use temp" ; V443 tmp413 [V443,T123] ( 7, 7 ) int -> x24 "Inline stloc first use temp"
-; V444 tmp414 [V444,T88] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" -; V445 tmp415 [V445,T77] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V444 tmp414 [V444,T87] ( 4, 8 ) byref -> x22 single-def "Inlining Arg" +; V445 tmp415 [V445,T76] ( 9, 9 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V446 tmp416 [V446 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V447 tmp417 [V447 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V448 tmp418 [V448 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -470,8 +470,8 @@ ;* V459 tmp429 [V459 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V460 tmp430 [V460,T129] ( 6, 6 ) byref -> x21 "Inline stloc first use temp" ; V461 tmp431 [V461,T124] ( 7, 7 ) int -> x23 "Inline stloc first use temp"
-; V462 tmp432 [V462,T89] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" -; V463 tmp433 [V463,T78] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V462 tmp432 [V462,T88] ( 4, 8 ) byref -> x20 single-def "Inlining Arg" +; V463 tmp433 [V463,T77] ( 9, 9 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V464 tmp434 [V464 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V465 tmp435 [V465 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V466 tmp436 [V466 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -482,7 +482,7 @@ ;* V471 tmp441 [V471 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V472 tmp442 [V472,T179] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" ;* V473 tmp443 [V473 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V474 tmp444 [V474,T93] ( 4, 8 ) int -> x20 "Inlining Arg"
+; V474 tmp444 [V474,T92] ( 4, 8 ) int -> x20 "Inlining Arg"
;* V475 tmp445 [V475 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V476 tmp446 [V476,T180] ( 2, 4 ) byref -> x21 single-def "Inlining Arg" ;* V477 tmp447 [V477 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> @@ -511,9 +511,9 @@ ; V500 tmp470 [V500,T159] ( 4, 4 ) int -> [fp+0x30] do-not-enreg[Z] EH-live "field V03._messageType (fldOffset=0x4)" P-INDEP ; V501 tmp471 [V501 ] ( 6, 6 ) ref -> [fp+0x198] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V502 tmp472 [V502 ] ( 6, 6 ) int -> [fp+0x1A0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
-; V503 tmp473 [V503,T71] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP -; V504 tmp474 [V504,T72] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP -; V505 tmp475 [V505,T73] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
+; V503 tmp473 [V503,T70] ( 4, 10 ) ref -> [fp+0x178] do-not-enreg[] "field V09._obj (fldOffset=0x0)" P-DEP +; V504 tmp474 [V504,T71] ( 4, 10 ) int -> [fp+0x180] do-not-enreg[] "field V09._result (fldOffset=0x8)" P-DEP +; V505 tmp475 [V505,T72] ( 4, 10 ) short -> [fp+0x184] do-not-enreg[] "field V09._token (fldOffset=0xc)" P-DEP
; V506 tmp476 [V506,T154] ( 2, 5 ) ubyte -> [fp+0x186] do-not-enreg[] "field V09._continueOnCapturedContext (fldOffset=0xe)" P-DEP ; V507 tmp477 [V507,T03] ( 12, 36 ) ref -> [fp+0x158] do-not-enreg[] "field V12._obj (fldOffset=0x0)" P-DEP ; V508 tmp478 [V508,T04] ( 12, 36 ) short -> [fp+0x160] do-not-enreg[] "field V12._token (fldOffset=0x8)" P-DEP @@ -551,43 +551,43 @@ ; V540 tmp510 [V540,T45] ( 3, 12 ) ref -> [fp+0xC8] do-not-enreg[] "field V155._object (fldOffset=0x0)" P-DEP ; V541 tmp511 [V541,T59] ( 3, 12 ) int -> [fp+0xD0] do-not-enreg[] "field V155._index (fldOffset=0x8)" P-DEP ; V542 tmp512 [V542,T60] ( 3, 12 ) int -> [fp+0xD4] do-not-enreg[] "field V155._length (fldOffset=0xc)" P-DEP
-; V543 tmp513 [V543,T94] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP -; V544 tmp514 [V544,T104] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP -; V545 tmp515 [V545,T105] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
+; V543 tmp513 [V543,T93] ( 2, 8 ) ref -> x0 "field V156._obj (fldOffset=0x0)" P-INDEP +; V544 tmp514 [V544,T103] ( 2, 8 ) int -> x2 "field V156._result (fldOffset=0x8)" P-INDEP +; V545 tmp515 [V545,T104] ( 2, 8 ) short -> x1 "field V156._token (fldOffset=0xc)" P-INDEP
;* V546 tmp516 [V546,T208] ( 0, 0 ) ubyte -> zero-ref "field V156._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V547 tmp517 [V547,T95] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
+; V547 tmp517 [V547,T94] ( 2, 8 ) ref -> x1 "field V182._source (fldOffset=0x0)" P-INDEP
;* V548 tmp518 [V548 ] ( 0, 0 ) ref -> zero-ref "field V183.m_task (fldOffset=0x0)" P-INDEP
-; V549 tmp519 [V549,T96] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP -; V550 tmp520 [V550,T106] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
+; V549 tmp519 [V549,T95] ( 2, 8 ) ref -> x0 "field V184._obj (fldOffset=0x0)" P-INDEP +; V550 tmp520 [V550,T105] ( 2, 8 ) short -> x1 "field V184._token (fldOffset=0x8)" P-INDEP
;* V551 tmp521 [V551,T209] ( 0, 0 ) ubyte -> zero-ref "field V184._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V552 tmp522 [V552 ] ( 0, 0 ) ref -> zero-ref "field V185._obj (fldOffset=0x0)" P-INDEP ;* V553 tmp523 [V553 ] ( 0, 0 ) short -> zero-ref "field V185._token (fldOffset=0x8)" P-INDEP ;* V554 tmp524 [V554 ] ( 0, 0 ) ubyte -> zero-ref "field V185._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V555 tmp525 [V555 ] ( 0, 0 ) byref -> zero-ref "field V205._reference (fldOffset=0x0)" P-INDEP ;* V556 tmp526 [V556 ] ( 0, 0 ) int -> zero-ref "field V205._length (fldOffset=0x8)" P-INDEP
-; V557 tmp527 [V557,T97] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP -; V558 tmp528 [V558,T107] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
+; V557 tmp527 [V557,T96] ( 2, 8 ) byref -> x21 "field V210._reference (fldOffset=0x0)" P-INDEP +; V558 tmp528 [V558,T106] ( 2, 8 ) int -> x22 "field V210._length (fldOffset=0x8)" P-INDEP
;* V559 tmp529 [V559 ] ( 0, 0 ) byref -> zero-ref "field V212._reference (fldOffset=0x0)" P-DEP ;* V560 tmp530 [V560 ] ( 0, 0 ) int -> zero-ref "field V212._length (fldOffset=0x8)" P-DEP
-; V561 tmp531 [V561,T98] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP -; V562 tmp532 [V562,T108] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
+; V561 tmp531 [V561,T97] ( 2, 8 ) byref -> x21 "field V213._reference (fldOffset=0x0)" P-INDEP +; V562 tmp532 [V562,T107] ( 2, 8 ) int -> x22 "field V213._length (fldOffset=0x8)" P-INDEP
;* V563 tmp533 [V563 ] ( 0, 0 ) byref -> zero-ref "field V219._reference (fldOffset=0x0)" P-INDEP ;* V564 tmp534 [V564 ] ( 0, 0 ) int -> zero-ref "field V219._length (fldOffset=0x8)" P-INDEP
-; V565 tmp535 [V565,T99] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP -; V566 tmp536 [V566,T109] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
+; V565 tmp535 [V565,T98] ( 2, 8 ) ref -> x0 "field V220._obj (fldOffset=0x0)" P-INDEP +; V566 tmp536 [V566,T108] ( 2, 8 ) short -> x1 "field V220._token (fldOffset=0x8)" P-INDEP
;* V567 tmp537 [V567,T210] ( 0, 0 ) ubyte -> zero-ref "field V220._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V568 tmp538 [V568 ] ( 0, 0 ) ref -> zero-ref "field V221._obj (fldOffset=0x0)" P-INDEP ;* V569 tmp539 [V569 ] ( 0, 0 ) short -> zero-ref "field V221._token (fldOffset=0x8)" P-INDEP ;* V570 tmp540 [V570 ] ( 0, 0 ) ubyte -> zero-ref "field V221._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V571 tmp541 [V571 ] ( 0, 0 ) ref -> zero-ref "field V240.m_task (fldOffset=0x0)" P-INDEP
-; V572 tmp542 [V572,T100] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP -; V573 tmp543 [V573,T110] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
+; V572 tmp542 [V572,T99] ( 2, 8 ) ref -> x0 "field V241._obj (fldOffset=0x0)" P-INDEP +; V573 tmp543 [V573,T109] ( 2, 8 ) short -> x1 "field V241._token (fldOffset=0x8)" P-INDEP
;* V574 tmp544 [V574,T211] ( 0, 0 ) ubyte -> zero-ref "field V241._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V575 tmp545 [V575 ] ( 0, 0 ) ref -> zero-ref "field V242._obj (fldOffset=0x0)" P-INDEP ;* V576 tmp546 [V576 ] ( 0, 0 ) short -> zero-ref "field V242._token (fldOffset=0x8)" P-INDEP ;* V577 tmp547 [V577 ] ( 0, 0 ) ubyte -> zero-ref "field V242._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
-; V578 tmp548 [V578,T101] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP -; V579 tmp549 [V579,T111] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
+; V578 tmp548 [V578,T100] ( 2, 8 ) ref -> x0 "field V260._obj (fldOffset=0x0)" P-INDEP +; V579 tmp549 [V579,T110] ( 2, 8 ) short -> x1 "field V260._token (fldOffset=0x8)" P-INDEP
;* V580 tmp550 [V580,T212] ( 0, 0 ) ubyte -> zero-ref "field V260._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ;* V581 tmp551 [V581 ] ( 0, 0 ) ref -> zero-ref "field V261._obj (fldOffset=0x0)" P-INDEP ;* V582 tmp552 [V582 ] ( 0, 0 ) short -> zero-ref "field V261._token (fldOffset=0x8)" P-INDEP @@ -728,8 +728,8 @@ ; V717 PSPSym [V717,T317] ( 1, 1 ) long -> [fp+0x1B0] do-not-enreg[V] "PSPSym" ;* V718 cse0 [V718,T318] ( 0, 0 ) long -> zero-ref "CSE - conservative" ...

benchmarks.run_pgo.windows.arm64.checked.mch

-4 (-3.23%) : 66152.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8097
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8097
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]> @@ -30,20 +30,20 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2] cmp w1, w3
- bne G_M264_IG10
+ bne G_M264_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref sxtw w4, w3 ;; size=4 bbWeight=0.97 PerfScore 0.48 G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz sub w4, w4, #1
- tbnz w4, #31, G_M264_IG08
+ tbnz w4, #31, G_M264_IG12
cmp w4, w1
- bhs G_M264_IG13
+ bhs G_M264_IG11
mov w5, w4 ldr w6, [x0, x5, LSL #2] cmp w4, w3
- bhs G_M264_IG13
+ bhs G_M264_IG11
ldr w5, [x2, x5, LSL #2] cmp w6, w5 beq G_M264_IG04 @@ -51,7 +51,7 @@ G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x2] cmp w5, w6
- bhi G_M264_IG11
+ bhi G_M264_IG09
;; size=8 bbWeight=0.97 PerfScore 1.45 G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #1 @@ -60,31 +60,30 @@ G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.74 PerfScore 1.47
-G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0.97 PerfScore 0.48 -G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.97 PerfScore 1.94 -G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M264_IG08: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, w3 bge G_M264_IG06 ;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG09: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG10: ; bbWeight=0.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.26 PerfScore 0.53
-G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- brk_windows #0
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M264_IG13: ; bbWeight=0, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 22.37, instruction count 31, allocated bytes for code 124 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 120, prolog size 8, PerfScore 19.95, instruction count 30, allocated bytes for code 120 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.87%) : 63676.dasm - System.Linq.Enumerable:CountSystem.__Canon:int (Tier1)

@@ -25,7 +25,7 @@ ; V13 tmp7 [V13,T09] ( 2, 154.56) int -> x0 "guarded devirt return temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V16 tmp10 [V16,T00] ( 12,1085.88) byref -> x23 "Inlining Arg"
+; V16 tmp10 [V16,T00] ( 10,1081.92) byref -> x23 "Inlining Arg"
; V17 tmp11 [V17,T07] ( 4, 308.13) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T01] ( 3, 457.73) ref -> x14 "arr expr" @@ -54,12 +54,12 @@ G_M54795_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=40 bbWeight=1 PerfScore 7.50 G_M54795_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M54795_IG24 - cbz x19, G_M54795_IG25
+ cbz x21, G_M54795_IG23 + cbz x19, G_M54795_IG24
mov w22, wzr ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M54795_IG20
+ cbz x11, G_M54795_IG19
;; size=24 bbWeight=1 PerfScore 9.50 G_M54795_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref mov x0, x21 @@ -143,11 +143,11 @@ G_M54795_IG10: ; bbWeight=77.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {} ldr w15, [x23, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M54795_IG18
+ bne G_M54795_IG17
ldr w15, [x23, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M54795_IG19
+ bhs G_M54795_IG18
;; size=56 bbWeight=77.28 PerfScore 1932.00 G_M54795_IG11: ; bbWeight=76.29, gcrefRegs=84000 {x14 x19}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs -[x0] @@ -183,7 +183,7 @@ G_M54795_IG12: ; bbWeight=77.28, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ;; size=24 bbWeight=77.28 PerfScore 502.32 G_M54795_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M54795_IG14: ; bbWeight=5.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] @@ -211,17 +211,8 @@ G_M54795_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M54795_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
; byrRegs +[x23]
- ldr w11, [x23, #0x14] - ldr x1, [x23] - ; gcrRegs +[x1] - ldr w1, [x1, #0x14] - ; gcrRegs -[x1] - cmp w11, w1 - bne G_M54795_IG17 - ;; size=20 bbWeight=0.99 PerfScore 10.41 -G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
ldr x11, [x23] ; gcrRegs +[x11] ldr w11, [x11, #0x10] @@ -229,9 +220,9 @@ G_M54795_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=800000 {x23} add w11, w11, #1 str w11, [x23, #0x10] str xzr, [x23, #0x08]
- b G_M54795_IG21
+ b G_M54795_IG20
;; size=24 bbWeight=0.99 PerfScore 9.42
-G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG19: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x21] ; byrRegs -[x23] ; GC ptr vars -{V04} @@ -244,28 +235,28 @@ G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=280 mov x11, x0 b G_M54795_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M54795_IG21: ; bbWeight=1.00, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG20: ; bbWeight=1.00, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] ldr x1, [x0] cmp x1, x21
- bne G_M54795_IG26
+ bne G_M54795_IG25
;; size=16 bbWeight=1.00 PerfScore 6.50
-G_M54795_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V04} mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M54795_IG22: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x48] ldp x21, x22, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #17 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -275,7 +266,7 @@ G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -285,7 +276,7 @@ G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG25: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04} ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0] @@ -297,9 +288,9 @@ G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M54795_IG22
+ b G_M54795_IG21
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -308,16 +299,16 @@ G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 add x3, fp, #80 str x3, [sp, #0x10] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x0]
- cbz x0, G_M54795_IG29
+ cbz x0, G_M54795_IG28
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- beq G_M54795_IG29
+ beq G_M54795_IG28
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -327,7 +318,7 @@ G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=0 PerfScore 0.00
-G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M54795_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -335,7 +326,7 @@ G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 696, prolog size 40, PerfScore 6930.20, instruction count 174, allocated bytes for code 696 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
+; Total bytes of code 676, prolog size 40, PerfScore 6919.79, instruction count 169, allocated bytes for code 676 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -346,7 +337,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 150 (0x00096) Actual length = 600 (0x000258)
+ Function Length : 145 (0x00091) Actual length = 580 (0x000244)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -381,4 +372,4 @@ Unwind Info: *************** EH table for System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M54795_IG04..G_M54795_IG20) handled by [G_M54795_IG27..END) (fault)
+EH#0: try [G_M54795_IG04..G_M54795_IG19) handled by [G_M54795_IG26..END) (fault)
-12 (-2.52%) : 12200.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
@@ -8,28 +8,28 @@ ; 3 inlinees with PGO data; 12 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T18] ( 3, 3 ) long -> x20 single-def
+; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def
; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T19] ( 4, 11 ) long -> x20
+; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T08] ( 7, 83.36) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>>
+; V08 tmp1 [V08,T09] ( 7, 83.36) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T27] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T20] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T21] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T06] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T05] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T10] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp14 [V21,T11] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp16 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V24 tmp17 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 16.68) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 17.36) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T16] ( 3, 19.36) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V34 tmp27 [V34,T24] ( 3, 16.68) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 17.36) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T17] ( 3, 19.36) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" ; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP ; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP
-; V40 tmp33 [V40,T02] ( 5, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 18.70) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V40 tmp33 [V40,T04] ( 4, 23.70) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 18.70) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 35.79) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T11] ( 3, 10.30) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T12] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T14] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T12] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T22] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T23] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T25] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T24] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP -; V52 tmp45 [V52,T09] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP -; V53 tmp46 [V53,T04] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T13] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T15] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP +; V52 tmp45 [V52,T10] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP +; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,7 +79,8 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 40.19) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T26] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T27] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T03] ( 2, 16 ) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -110,7 +111,7 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08] ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG12
+ cbz w2, G_M19804_IG11
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -150,15 +151,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG15
+ cbnz w0, G_M19804_IG14
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x14] cmp w21, w2
- bne G_M19804_IG11
+ bne G_M19804_IG10
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG12
+ bhs G_M19804_IG11
;; size=24 bbWeight=8 PerfScore 72.00 G_M19804_IG08: ; bbWeight=6.70, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x2, [x19, #0x08] @@ -189,14 +190,7 @@ G_M19804_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M19804_IG11: ; bbWeight=1.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - ldr w0, [x19, #0x14] - cmp w21, w0 - bne G_M19804_IG10 - ;; size=12 bbWeight=1.30 PerfScore 5.86 -G_M19804_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19]
+G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19] add x0, fp, #40 // [V02 loc0] @@ -216,9 +210,9 @@ G_M19804_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG14
+ bls G_M19804_IG13
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG13: ; bbWeight=0.68, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=0.68, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -231,9 +225,9 @@ G_M19804_IG13: ; bbWeight=0.68, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG15
+ b G_M19804_IG14
;; size=28 bbWeight=0.68 PerfScore 3.73
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -245,18 +239,18 @@ G_M19804_IG14: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V37 tmp30] bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x50] ldp x19, x20, [sp, #0x40] ldp fp, lr, [sp], #0x60 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M19804_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -264,7 +258,7 @@ G_M19804_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, fp, #96 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,16 +271,16 @@ G_M19804_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG15]
+ adr x0, [G_M19804_IG14]
;; size=40 bbWeight=0 PerfScore 0.00
-G_M19804_IG19: ; bbWeight=0, funclet epilog, nogc, extend
+G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 476, prolog size 36, PerfScore 455.81, instruction count 119, allocated bytes for code 476 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
+; Total bytes of code 464, prolog size 36, PerfScore 449.95, instruction count 116, allocated bytes for code 464 (MethodHash=86b0b2a3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
; ============================================================ Unwind Info: @@ -297,7 +291,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -334,4 +328,4 @@ Unwind Info: *************** EH table for System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M19804_IG03..G_M19804_IG15) handled by [G_M19804_IG17..END) (class: 2000089)
+EH#0: try [G_M19804_IG03..G_M19804_IG14) handled by [G_M19804_IG16..END) (class: 2000089)
+40 (+1.21%) : 68400.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
@@ -11,22 +11,22 @@ ; ; V00 loc0 [V00,T02] ( 26, 9.67) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T05] ( 18, 8.11) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
-; V02 loc2 [V02 ] ( 11, 8.62) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object> -; V03 loc3 [V03,T31] ( 6, 3.77) ref -> x21 class-hnd single-def <System.Object>
+; V02 loc2 [V02 ] ( 11, 8.62) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object> +; V03 loc3 [V03,T31] ( 8, 3.77) ref -> x21 class-hnd single-def <System.Object>
; V04 loc4 [V04,T09] ( 13, 6.87) ref -> x23 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T67] ( 3, 1.52) int -> x24 ; V06 loc6 [V06,T57] ( 2, 2.04) ubyte -> x0 ;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V08 loc8 [V08 ] ( 3, 1.25) ubyte -> [fp+0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V09 loc9 [V09,T41] ( 5, 2.99) int -> x27 -; V10 loc10 [V10 ] ( 3, 1.52) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc8 [V08 ] ( 3, 1.25) ubyte -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op +; V09 loc9 [V09,T41] ( 5, 2.99) int -> x26 +; V10 loc10 [V10 ] ( 3, 1.52) ubyte -> [fp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref ; V13 tmp2 [V13,T28] ( 4, 4 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V14 tmp3 [V14,T39] ( 6, 3.02) ref -> x22 ; V15 tmp4 [V15,T83] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V16 tmp5 [V16,T64] ( 3, 1.58) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
-; V17 tmp6 [V17 ] ( 12, 6.01) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V17 tmp6 [V17 ] ( 12, 6.01) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V18 tmp7 [V18,T62] ( 3, 1.72) int -> x23 "Inline stloc first use temp" ; V19 tmp8 [V19,T51] ( 2, 2.28) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V20 tmp9 [V20,T74] ( 3, 1.15) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> @@ -42,7 +42,7 @@ ; V30 tmp19 [V30,T08] ( 10, 7.05) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ;* V31 tmp20 [V31,T69] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V32 tmp21 [V32,T30] ( 5, 3.91) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp22 [V33 ] ( 2, 1.00) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
+; V33 tmp22 [V33 ] ( 2, 1.00) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V34 tmp23 [V34,T17] ( 9, 5.35) int -> x26 "Inline stloc first use temp" ; V35 tmp24 [V35,T35] ( 3, 3.02) int -> x0 "Inline stloc first use temp" ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -59,17 +59,17 @@ ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V50 tmp39 [V50,T72] ( 3, 1.19) ref -> x1 class-hnd "Inline return value spill temp" <System.Object> -; V51 tmp40 [V51 ] ( 11, 4.21) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V50 tmp39 [V50,T72] ( 3, 1.19) ref -> x0 class-hnd "Inline return value spill temp" <System.Object> +; V51 tmp40 [V51 ] ( 13, 4.21) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V52 tmp41 [V52,T71] ( 3, 1.30) int -> x26 "Inline stloc first use temp" ; V53 tmp42 [V53,T60] ( 2, 1.72) ref -> x25 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V54 tmp43 [V54,T33] ( 4, 3.44) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> ; V55 tmp44 [V55,T10] ( 9, 6.46) int -> x27 "Inline stloc first use temp"
-; V56 tmp45 [V56,T61] ( 2, 1.72) int -> [fp+0x1C] "Inline stloc first use temp"
+; V56 tmp45 [V56,T61] ( 2, 1.72) int -> [fp+0x2C] "Inline stloc first use temp"
; V57 tmp46 [V57,T11] ( 6, 6.44) int -> x26 "Inline stloc first use temp"
-; V58 tmp47 [V58,T23] ( 5, 4.33) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> -; V59 tmp48 [V59,T48] ( 3, 2.58) int -> x0 -; V60 tmp49 [V60,T68] ( 3, 1.52) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V58 tmp47 [V58,T23] ( 5, 4.33) ref -> [fp+0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> +; V59 tmp48 [V59,T48] ( 3, 2.58) int -> x1 +; V60 tmp49 [V60,T68] ( 4, 1.52) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V61 tmp50 [V61,T19] ( 4, 4.55) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T53] ( 2, 1.52) ubyte -> x0 "Inline return value spill temp" ; V63 tmp52 [V63,T20] ( 3, 4.55) ref -> x28 class-hnd "Inlining Arg" <<unknown class>> @@ -103,25 +103,25 @@ ;* V91 tmp80 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V93 tmp82 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 tmp83 [V94,T07] ( 8, 7.47) ref -> x28 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V94 tmp83 [V94,T07] ( 8, 7.47) ref -> x27 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
;* V95 tmp84 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V97 tmp86 [V97,T24] ( 3, 3.74) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V97 tmp86 [V97,T24] ( 5, 3.74) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V98 tmp87 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V99 tmp88 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V100 tmp89 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V101 tmp90 [V101,T54] ( 3, 2.24) int -> x0 "Inline stloc first use temp"
+; V101 tmp90 [V101,T54] ( 5, 2.24) int -> x28 "Inline stloc first use temp"
;* V102 tmp91 [V102,T79] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V103 tmp92 [V103,T55] ( 3, 2.24) int -> x0 "Inline stloc first use temp" ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V105 tmp94 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V106 tmp95 [V106 ] ( 3, 0 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts>
+; V106 tmp95 [V106 ] ( 3, 0 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts>
;* V107 tmp96 [V107 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V108 tmp97 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V109 tmp98 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V110 tmp99 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V111 tmp100 [V111 ] ( 2, 1.00) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V33._count (fldOffset=0x0)" P-DEP -; V112 tmp101 [V112 ] ( 3, 0 ) long -> [fp+0x10] do-not-enreg[X] addr-exposed "field V106._data (fldOffset=0x0)" P-DEP
+; V111 tmp100 [V111 ] ( 2, 1.00) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V33._count (fldOffset=0x0)" P-DEP +; V112 tmp101 [V112 ] ( 3, 0 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V106._data (fldOffset=0x0)" P-DEP
; V113 cse0 [V113,T49] ( 3, 2.47) byref -> x28 "CSE - moderate" ; V114 cse1 [V114,T44] ( 4, 2.90) long -> x27 "CSE - moderate" ; V115 cse2 [V115,T32] ( 5, 3.75) long -> x19 "CSE - moderate" @@ -135,19 +135,19 @@ ; V123 rat4 [V123,T21] ( 5, 4.48) long -> x0 "TLS access" ; V124 rat5 [V124,T22] ( 3, 4.48) long -> x0 "ThreadStaticBlockBase access" ;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M63069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]! - stp x19, x20, [sp, #0x50] - stp x21, x22, [sp, #0x60] - stp x23, x24, [sp, #0x70] - stp x25, x26, [sp, #0x80] - stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0xB0]! + stp x19, x20, [sp, #0x60] + stp x21, x22, [sp, #0x70] + stp x23, x24, [sp, #0x80] + stp x25, x26, [sp, #0x90] + stp x27, x28, [sp, #0xA0]
mov fp, sp
- str xzr, [fp, #0x48] // [V02 loc2] - str xzr, [fp, #0x30] // [V17 tmp6] - str xzr, [fp, #0x20] // [V51 tmp40]
+ str xzr, [fp, #0x58] // [V02 loc2] + str xzr, [fp, #0x40] // [V17 tmp6] + str xzr, [fp, #0x30] // [V51 tmp40]
;; size=40 bbWeight=1 PerfScore 9.50 G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movz x19, #0xD1FFAB1E @@ -159,34 +159,34 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [x0, #0x10] ldr w1, [x0, #0xD0] cmp w1, #4
- blt G_M63069_IG94
+ blt G_M63069_IG89
ldr x0, [x0, #0xD8] ldr x0, [x0, #0x20]
- cbz x0, G_M63069_IG94
+ cbz x0, G_M63069_IG89
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 ; byrRegs +[x21] ldr x22, [x21, #0x38] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG95
+ cbz x22, G_M63069_IG90
;; size=64 bbWeight=1 PerfScore 29.50 G_M63069_IG03: ; bbWeight=1.02, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x21] str wzr, [x20, #0xB4] dmb ish
- str xzr, [fp, #0x48] // [V02 loc2]
+ str xzr, [fp, #0x58] // [V02 loc2]
ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG96
+ cbnz w0, G_M63069_IG91
;; size=20 bbWeight=1.02 PerfScore 16.32 G_M63069_IG04: ; bbWeight=1.02, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x48] // [V02 loc2]
+ ldr x0, [fp, #0x58] // [V02 loc2]
; gcrRegs +[x0]
- cbnz x0, G_M63069_IG42
+ cbnz x0, G_M63069_IG29
;; size=8 bbWeight=1.02 PerfScore 3.06 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- str wzr, [fp, #0x40] // [V08 loc8]
+ str wzr, [fp, #0x50] // [V08 loc8]
ldr x0, [x22, #0x18] ; gcrRegs +[x0] add x1, x0, #20 @@ -198,16 +198,16 @@ G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldapr w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG97
+ blt G_M63069_IG92
mov x2, xzr ; gcrRegs +[x2] ;; size=36 bbWeight=1.00 PerfScore 13.06 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- str x2, [fp, #0x30] // [V17 tmp6] - ldr x0, [fp, #0x30] // [V17 tmp6]
+ str x2, [fp, #0x40] // [V17 tmp6] + ldr x0, [fp, #0x40] // [V17 tmp6]
; gcrRegs +[x0]
- cbnz x0, G_M63069_IG100
+ cbnz x0, G_M63069_IG95
ldrb w0, [x22, #0x3C] ; gcrRegs -[x0] cbnz w0, G_M63069_IG11 @@ -215,7 +215,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs= G_M63069_IG07: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2] ldr w0, [x20, #0x30]
- cbnz w0, G_M63069_IG101
+ cbnz w0, G_M63069_IG96
;; size=8 bbWeight=1.01 PerfScore 4.03 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -226,7 +226,7 @@ G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ; gcrRegs +[x24] ldr x25, [x24, #0x08] ; gcrRegs +[x25]
- str wzr, [fp, #0x28] // [V33 tmp22]
+ str wzr, [fp, #0x38] // [V33 tmp22]
;; size=20 bbWeight=1.00 PerfScore 10.55 G_M63069_IG09: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] @@ -238,7 +238,7 @@ G_M63069_IG09: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w0, w26, w0 ldr w21, [x25, #0x08] cmp w0, w21
- bhs G_M63069_IG93
+ bhs G_M63069_IG88
ubfiz x0, x0, #4, #32 add x27, x0, #16 add x0, x25, x27 @@ -249,7 +249,7 @@ G_M63069_IG09: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x0] add w1, w26, #1 sub w0, w0, w1
- cbnz w0, G_M63069_IG34
+ cbnz w0, G_M63069_IG21
;; size=60 bbWeight=1.01 PerfScore 19.15 G_M63069_IG10: ; bbWeight=0.43, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=10000000 {x28}, byref, isz add x0, x24, #160 @@ -266,7 +266,7 @@ G_M63069_IG11: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ; byrRegs -[x0 x28] ldr x0, [x20, #0x10] ; gcrRegs +[x0]
- add x1, fp, #48 // [V17 tmp6]
+ add x1, fp, #64 // [V17 tmp6]
movz x2, #0xD1FFAB1E // code for System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:TryDequeue(byref):ubyte:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -275,7 +275,7 @@ G_M63069_IG11: ; bbWeight=0.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG100
+ cbnz w0, G_M63069_IG95
strb wzr, [x22, #0x3C] b G_M63069_IG08 ;; size=44 bbWeight=0.00 PerfScore 0.02 @@ -305,7 +305,7 @@ G_M63069_IG14: ; bbWeight=2.99, gcrefRegs=F00000 {x20 x21 x22 x23}, byref ;; size=20 bbWeight=2.99 PerfScore 16.43 G_M63069_IG15: ; bbWeight=0.75, gcrefRegs=F00001 {x0 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz cmp x23, x0
- bne G_M63069_IG83
+ bne G_M63069_IG114
;; size=8 bbWeight=0.75 PerfScore 1.12 G_M63069_IG16: ; bbWeight=0.75, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ...

+48 (+1.27%) : 71839.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,13 +12,13 @@ ; V00 loc0 [V00,T17] ( 26,187.30) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T26] ( 18,126.40) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11,305.64) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T12] ( 6,243.90) ref -> x21 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T12] ( 8,243.90) ref -> x21 class-hnd single-def <System.Object>
; V04 loc4 [V04,T05] ( 14,367.53) ref -> x23 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T34] ( 3, 61.50) int -> x24 ; V06 loc6 [V06,T70] ( 2, 2.01) ubyte -> x0 ;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc8 [V08 ] ( 3, 1.33) ubyte -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T13] ( 5,243.25) int -> x26
+; V09 loc9 [V09,T13] ( 5,243.25) int -> x25
; V10 loc10 [V10 ] ( 3, 60.35) ubyte -> [fp+0x48] do-not-enreg[X] addr-exposed ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref @@ -59,16 +59,16 @@ ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V50 tmp39 [V50,T36] ( 3, 60.65) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V50 tmp39 [V50,T36] ( 3, 60.65) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
; V51 tmp40 [V51 ] ( 14,360.21) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object> ; V52 tmp41 [V52,T67] ( 3, 2.89) int -> x25 "Inline stloc first use temp"
-; V53 tmp42 [V53,T59] ( 2, 3.91) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V53 tmp42 [V53,T59] ( 2, 3.91) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; V54 tmp43 [V54,T52] ( 3, 4.87) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> ; V55 tmp44 [V55,T39] ( 9, 14.62) int -> [fp+0x2C] "Inline stloc first use temp" ; V56 tmp45 [V56,T60] ( 2, 3.91) int -> [fp+0x28] "Inline stloc first use temp" ; V57 tmp46 [V57,T38] ( 6, 14.75) int -> x25 "Inline stloc first use temp" ; V58 tmp47 [V58,T40] ( 5, 9.87) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V59 tmp48 [V59,T50] ( 3, 5.90) int -> x1
+; V59 tmp48 [V59,T50] ( 3, 5.90) int -> x0
; V60 tmp49 [V60,T30] ( 3,119.37) ref -> x2 class-hnd "Inline return value spill temp" <System.Object> ; V61 tmp50 [V61,T08] ( 4,358.11) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T68] ( 2, 1.38) ubyte -> x0 "Inline return value spill temp" @@ -97,19 +97,19 @@ ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V88 tmp77 [V88,T00] ( 11,775.87) ref -> x25 class-hnd "Inlining Arg" <System.Object>
+; V88 tmp77 [V88,T00] ( 11,775.87) ref -> x28 class-hnd "Inlining Arg" <System.Object>
; V89 tmp78 [V89,T27] ( 7,121.73) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task> ;* V90 tmp79 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.IThreadPoolWorkItem> ;* V91 tmp80 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]]> ;* V92 tmp81 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Channels.AsyncOperation`1[ubyte]> ;* V93 tmp82 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V94 tmp83 [V94,T101] ( 2, 0 ) ref -> x1 class-hnd exact "dup spill" <System.Threading.ContextCallback>
-; V95 tmp84 [V95,T102] ( 2, 0 ) ref -> x26 class-hnd exact "impAppendStmt" <System.Threading.ExecutionContext>
+; V95 tmp84 [V95,T102] ( 2, 0 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Threading.ExecutionContext>
;* V96 tmp85 [V96 ] ( 0, 0 ) ref -> zero-ref ; V97 tmp86 [V97,T98] ( 4, 0 ) ref -> x1
-; V98 tmp87 [V98,T97] ( 5, 0 ) ref -> x27 class-hnd exact "NewObj constructor temp" <System.Threading.ContextCallback> -; V99 tmp88 [V99,T31] ( 4,119.10) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>> -; V100 tmp89 [V100,T24] ( 4,178.64) ref -> x27 "guarded devirt arg temp"
+; V98 tmp87 [V98,T97] ( 5, 0 ) ref -> x26 class-hnd exact "NewObj constructor temp" <System.Threading.ContextCallback> +; V99 tmp88 [V99,T31] ( 4,119.10) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>> +; V100 tmp89 [V100,T24] ( 4,178.64) ref -> x26 "guarded devirt arg temp"
;* V101 tmp90 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Threading.ThreadPool+<>c> ; V102 tmp91 [V102,T25] ( 6,150.66) ref -> x0 class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox> ;* V103 tmp92 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]]> @@ -120,14 +120,14 @@ ;* V108 tmp97 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V109 tmp98 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V110 tmp99 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V111 tmp100 [V111,T01] ( 8,729.82) ref -> x25 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V111 tmp100 [V111,T01] ( 8,729.82) ref -> x28 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
;* V112 tmp101 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V113 tmp102 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V114 tmp103 [V114,T10] ( 3,304.03) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V114 tmp103 [V114,T10] ( 5,304.03) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V115 tmp104 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V116 tmp105 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V117 tmp106 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V118 tmp107 [V118,T18] ( 3,182.42) int -> x0 "Inline stloc first use temp"
+; V118 tmp107 [V118,T18] ( 5,182.42) int -> x1 "Inline stloc first use temp"
;* V119 tmp108 [V119,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V120 tmp109 [V120,T19] ( 3,182.42) int -> x0 "Inline stloc first use temp" ;* V121 tmp110 [V121 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -154,7 +154,7 @@ ; V142 rat1 [V142,T48] ( 3, 6 ) long -> x0 "TLS access" ; V143 rat2 [V143,T49] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access" ; V144 rat3 [V144,T14] ( 3,243.23) byref -> x25 "TLS field access"
-; V145 rat4 [V145,T06] ( 5,364.84) long -> x27 "TLS access"
+; V145 rat4 [V145,T06] ( 5,364.84) long -> x26 "TLS access"
; V146 rat5 [V146,T07] ( 3,364.84) long -> x0 "ThreadStaticBlockBase access" ; ; Lcl frame size = 80 @@ -181,10 +181,10 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [x0, #0x10] ldr w1, [x0, #0xD0] cmp w1, #4
- blt G_M63069_IG115
+ blt G_M63069_IG122
ldr x0, [x0, #0xD8] ldr x0, [x0, #0x20]
- cbz x0, G_M63069_IG115
+ cbz x0, G_M63069_IG122
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 @@ -194,7 +194,7 @@ G_M63069_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2 ; byrRegs -[x0] ldr x22, [x21, #0x38] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG39
+ cbz x22, G_M63069_IG24
;; size=8 bbWeight=1 PerfScore 4.00 G_M63069_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x21] @@ -202,12 +202,12 @@ G_M63069_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG116
+ cbnz w0, G_M63069_IG123
;; size=20 bbWeight=1.00 PerfScore 16.04 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG65
+ cbnz x0, G_M63069_IG63
;; size=8 bbWeight=1.00 PerfScore 3.01 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -223,7 +223,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldapr w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG121
+ blt G_M63069_IG36
mov x2, xzr ; gcrRegs +[x2] ;; size=36 bbWeight=1.00 PerfScore 13.02 @@ -232,7 +232,7 @@ G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs= str x2, [fp, #0x40] // [V17 tmp6] ldr x0, [fp, #0x40] // [V17 tmp6] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG120
+ cbnz x0, G_M63069_IG23
ldrb w0, [x22, #0x3C] ; gcrRegs -[x0] cbnz w0, G_M63069_IG13 @@ -240,7 +240,7 @@ G_M63069_IG07: ; bbWeight=1.00, gcrefRegs=500004 {x2 x20 x22}, byrefRegs= G_M63069_IG08: ; bbWeight=0.99, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2] ldr w0, [x20, #0x30]
- cbnz w0, G_M63069_IG117
+ cbnz w0, G_M63069_IG124
;; size=8 bbWeight=0.99 PerfScore 3.96 G_M63069_IG09: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -262,7 +262,7 @@ G_M63069_IG10: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w0, w27, w0 ldr w21, [x25, #0x08] cmp w0, w21
- bhs G_M63069_IG114
+ bhs G_M63069_IG121
ubfiz x0, x0, #4, #32 add x28, x0, #16 add x0, x25, x28 @@ -273,7 +273,7 @@ G_M63069_IG10: ; bbWeight=1.01, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x0] add w1, w27, #1 sub w0, w0, w1
- cbnz w0, G_M63069_IG44
+ cbnz w0, G_M63069_IG37
;; size=56 bbWeight=1.01 PerfScore 18.73 G_M63069_IG11: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=4000004 {x2 x26}, byref, isz add w0, w27, #1 @@ -285,7 +285,7 @@ G_M63069_IG11: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, G_M63069_IG12: ; bbWeight=1.00, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0004 {x2}, byref ; gcrRegs -[x23] ; byrRegs -[x26]
- b G_M63069_IG53
+ b G_M63069_IG47
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M63069_IG13: ; bbWeight=0.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24-x25] @@ -301,7 +301,7 @@ G_M63069_IG13: ; bbWeight=0.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG120
+ cbnz w0, G_M63069_IG23
strb wzr, [x22, #0x3C] b G_M63069_IG09 ;; size=44 bbWeight=0.01 PerfScore 0.17 @@ -331,7 +331,7 @@ G_M63069_IG16: ; bbWeight=243.23, gcrefRegs=F00000 {x20 x21 x22 x23}, byr ;; size=20 bbWeight=243.23 PerfScore 1337.75 G_M63069_IG17: ; bbWeight=60.81, gcrefRegs=F00001 {x0 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz cmp x23, x0
- bne G_M63069_IG137
+ bne G_M63069_IG140
;; size=8 bbWeight=60.81 PerfScore 91.21 G_M63069_IG18: ; bbWeight=60.81, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -340,89 +340,73 @@ G_M63069_IG18: ; bbWeight=60.81, gcrefRegs=F00000 {x20 x21 x22 x23}, byre bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG138
+ cbz w0, G_M63069_IG141
;; size=12 bbWeight=60.81 PerfScore 152.02 G_M63069_IG19: ; bbWeight=60.81, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldrb w0, [x23, #0x38]
- cbnz w0, G_M63069_IG139
+ cbnz w0, G_M63069_IG142
;; size=8 bbWeight=60.81 PerfScore 243.23 G_M63069_IG20: ; bbWeight=60.81, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- sxtw w26, w0 - ldr x25, [x19, #0xD1FFAB1E] - ; gcrRegs +[x25] - cbz x21, G_M63069_IG140 - ;; size=16 bbWeight=60.81 PerfScore 334.44 -G_M63069_IG21: ; bbWeight=60.81, gcrefRegs=2F00000 {x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - mov x0, x21 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG23 - ;; size=8 bbWeight=60.81 PerfScore 91.21 -G_M63069_IG22: ; bbWeight=30.40, gcrefRegs=2F00001 {x0 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0]
+ sxtw w25, w0 + ldr x28, [x19, #0xD1FFAB1E] + ; gcrRegs +[x28] + cbz x21, G_M63069_IG143 + mov x1, x21 + ; gcrRegs +[x1] + cbz x1, G_M63069_IG144 + ;; size=24 bbWeight=60.81 PerfScore 425.65 +G_M63069_IG21: ; bbWeight=30.40, gcrefRegs=10F00002 {x1 x20 x21 x22 x23 x28}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1]
movz x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M63069_IG24
+ bne G_M63069_IG144
;; size=24 bbWeight=30.40 PerfScore 182.42
-G_M63069_IG23: ; bbWeight=60.81, gcrefRegs=2F00000 {x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref - movz x0, #8 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32
...

+44 (+1.35%) : 71558.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -12,7 +12,7 @@ ; V00 loc0 [V00,T01] ( 26, 9.88) ref -> x20 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T03] ( 18, 8.27) ref -> x22 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 11, 8.88) ref -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T27] ( 6, 4.07) ref -> x24 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T27] ( 8, 4.07) ref -> x24 class-hnd single-def <System.Object>
; V04 loc4 [V04,T08] ( 13, 7.33) ref -> x21 class-hnd exact single-def <System.Threading.Thread> ; V05 loc5 [V05,T72] ( 3, 1.63) int -> x25 ; V06 loc6 [V06,T63] ( 2, 2.01) ubyte -> x0 @@ -59,17 +59,17 @@ ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp38 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V50 tmp39 [V50,T77] ( 3, 1.26) ref -> x1 class-hnd "Inline return value spill temp" <System.Object> -; V51 tmp40 [V51 ] ( 12, 4.81) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
+; V50 tmp39 [V50,T77] ( 3, 1.26) ref -> x0 class-hnd "Inline return value spill temp" <System.Object> +; V51 tmp40 [V51 ] ( 14, 4.81) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V52 tmp41 [V52,T76] ( 3, 1.35) int -> x23 "Inline stloc first use temp" ; V53 tmp42 [V53,T66] ( 2, 1.78) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V54 tmp43 [V54,T35] ( 4, 3.55) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue[]> ; V55 tmp44 [V55,T10] ( 9, 6.68) int -> x28 "Inline stloc first use temp" ; V56 tmp45 [V56,T67] ( 2, 1.78) int -> [fp+0x2C] "Inline stloc first use temp" ; V57 tmp46 [V57,T11] ( 6, 6.64) int -> x23 "Inline stloc first use temp"
-; V58 tmp47 [V58,T25] ( 5, 4.42) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> -; V59 tmp48 [V59,T50] ( 3, 2.66) int -> x0 -; V60 tmp49 [V60,T73] ( 3, 1.61) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V58 tmp47 [V58,T25] ( 5, 4.42) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> +; V59 tmp48 [V59,T50] ( 3, 2.66) int -> x1 +; V60 tmp49 [V60,T73] ( 4, 1.61) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
; V61 tmp50 [V61,T22] ( 4, 4.84) ref -> x0 class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> ; V62 tmp51 [V62,T57] ( 2, 1.61) ubyte -> x0 "Inline return value spill temp" ; V63 tmp52 [V63,T23] ( 3, 4.84) ref -> x23 class-hnd "Inlining Arg" <<unknown class>> @@ -108,11 +108,11 @@ ; V96 tmp85 [V96,T06] ( 8, 8.14) ref -> x27 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V97 tmp86 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V98 tmp87 [V98 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V99 tmp88 [V99,T24] ( 3, 4.07) ref -> x0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V99 tmp88 [V99,T24] ( 5, 4.07) ref -> x1 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V101 tmp90 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V102 tmp91 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V103 tmp92 [V103,T54] ( 3, 2.44) int -> x0 "Inline stloc first use temp"
+; V103 tmp92 [V103,T54] ( 5, 2.44) int -> x28 "Inline stloc first use temp"
;* V104 tmp93 [V104,T86] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V105 tmp94 [V105,T55] ( 3, 2.44) int -> x0 "Inline stloc first use temp" ;* V106 tmp95 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -164,17 +164,17 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [x0, #0x10] ldr w1, [x0, #0xD0] cmp w1, #4
- blt G_M63069_IG95
+ blt G_M63069_IG96
ldr x0, [x0, #0xD8] ldr x0, [x0, #0x20]
- cbz x0, G_M63069_IG95
+ cbz x0, G_M63069_IG96
ldr x0, [x0] ; byrRegs +[x0] add x21, x0, #16 ; byrRegs +[x21] ldr x22, [x21, #0x38] ; gcrRegs +[x22]
- cbz x22, G_M63069_IG96
+ cbz x22, G_M63069_IG97
;; size=64 bbWeight=1 PerfScore 29.50 G_M63069_IG03: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0 x21] @@ -182,12 +182,12 @@ G_M63069_IG03: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 dmb ish str xzr, [fp, #0x58] // [V02 loc2] ldrb w0, [x20, #0x35]
- cbnz w0, G_M63069_IG97
+ cbnz w0, G_M63069_IG98
;; size=20 bbWeight=1.01 PerfScore 16.10 G_M63069_IG04: ; bbWeight=1.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x58] // [V02 loc2] ; gcrRegs +[x0]
- cbnz x0, G_M63069_IG58
+ cbnz x0, G_M63069_IG41
;; size=8 bbWeight=1.01 PerfScore 3.02 G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -203,12 +203,12 @@ G_M63069_IG05: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ldapr w2, [x2] ; byrRegs -[x2] cmp w1, w2
- blt G_M63069_IG98
+ blt G_M63069_IG99
mov x2, xzr ; gcrRegs +[x2] str x2, [fp, #0x40] // [V17 tmp6] ldr x0, [fp, #0x40] // [V17 tmp6]
- cbnz x0, G_M63069_IG99
+ cbnz x0, G_M63069_IG100
;; size=48 bbWeight=1.00 PerfScore 16.96 G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2] @@ -217,7 +217,7 @@ G_M63069_IG06: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=000 ;; size=8 bbWeight=1.00 PerfScore 3.99 G_M63069_IG07: ; bbWeight=0.99, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x30]
- cbnz w0, G_M63069_IG100
+ cbnz w0, G_M63069_IG101
;; size=8 bbWeight=0.99 PerfScore 3.95 G_M63069_IG08: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ldr x23, [x20, #0x08] @@ -240,7 +240,7 @@ G_M63069_IG09: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, and w0, w26, w0 ldr w21, [x25, #0x08] cmp w0, w21
- bhs G_M63069_IG94
+ bhs G_M63069_IG95
ubfiz x0, x0, #4, #32 add x27, x0, #16 add x0, x25, x27 @@ -251,7 +251,7 @@ G_M63069_IG09: ; bbWeight=1.00, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, ; byrRegs -[x0] add w1, w26, #1 sub w0, w0, w1
- cbnz w0, G_M63069_IG39
+ cbnz w0, G_M63069_IG21
;; size=60 bbWeight=1.00 PerfScore 19.07 G_M63069_IG10: ; bbWeight=0.45, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, byrefRegs=10000000 {x28}, byref, isz add x0, x24, #160 @@ -261,7 +261,7 @@ G_M63069_IG10: ; bbWeight=0.45, gcrefRegs=3D00000 {x20 x22 x23 x24 x25}, casal w2, w1, [x0] cmp w2, w26 bne G_M63069_IG09
- b G_M63069_IG47
+ b G_M63069_IG28
;; size=28 bbWeight=0.45 PerfScore 3.16 G_M63069_IG11: ; bbWeight=0.01, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23-x25] @@ -277,7 +277,7 @@ G_M63069_IG11: ; bbWeight=0.01, gcrefRegs=500000 {x20 x22}, byrefRegs=000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M63069_IG99
+ cbnz w0, G_M63069_IG100
strb wzr, [x22, #0x3C] b G_M63069_IG08 ;; size=44 bbWeight=0.01 PerfScore 0.16 @@ -307,7 +307,7 @@ G_M63069_IG14: ; bbWeight=3.25, gcrefRegs=1700000 {x20 x21 x22 x24}, byre ;; size=20 bbWeight=3.25 PerfScore 17.90 G_M63069_IG15: ; bbWeight=0.81, gcrefRegs=1700001 {x0 x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz cmp x21, x0
- bne G_M63069_IG118
+ bne G_M63069_IG119
;; size=8 bbWeight=0.81 PerfScore 1.22 G_M63069_IG16: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -316,11 +316,11 @@ G_M63069_IG16: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byre bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M63069_IG119
+ cbz w0, G_M63069_IG120
;; size=12 bbWeight=0.81 PerfScore 2.03 G_M63069_IG17: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz ldrb w0, [x21, #0x38]
- cbnz w0, G_M63069_IG120
+ cbnz w0, G_M63069_IG121
;; size=8 bbWeight=0.81 PerfScore 3.25 G_M63069_IG18: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz bl <unknown method> @@ -328,231 +328,28 @@ G_M63069_IG18: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byre sxtw w26, w0 ldr x27, [x19, #0xD1FFAB1E] ; gcrRegs +[x27]
- cbz x24, G_M63069_IG121 - ;; size=16 bbWeight=0.81 PerfScore 4.48 -G_M63069_IG19: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz - mov x0, x24 - ; gcrRegs +[x0] - cbz x0, G_M63069_IG21 - ;; size=8 bbWeight=0.81 PerfScore 1.22 -G_M63069_IG20: ; bbWeight=0.41, gcrefRegs=9700001 {x0 x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0] - ; gcrRegs -[x0]
+ cbz x24, G_M63069_IG122 + mov x1, x24 + ; gcrRegs +[x1] + cbz x1, G_M63069_IG123 + ;; size=24 bbWeight=0.81 PerfScore 5.70 +G_M63069_IG19: ; bbWeight=0.41, gcrefRegs=9700002 {x1 x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1]
movz x1, #0xD1FFAB1E
+ ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M63069_IG22
+ bne G_M63069_IG123
;; size=24 bbWeight=0.41 PerfScore 2.44
-G_M63069_IG21: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref - movz x0, #8 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcr arg pop 0 - ;; size=44 bbWeight=0.81 PerfScore 6.92 -G_M63069_IG22: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG20: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x24, #0x20]
- add w0, w0, #1 - cbz w0, G_M63069_IG122 - str w0, [x24, #0x20]
+ add w28, w0, #1 + cbz w28, G_M63069_IG124 + b G_M63069_IG88
;; size=16 bbWeight=0.81 PerfScore 4.48
-G_M63069_IG23: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz - str w26, [x27, #0xD1FFAB1E] - add x0, x27, #0xD1FFAB1E - ; byrRegs +[x0] - ldapr w0, [x0] - ; byrRegs -[x0] - sub w1, w26, w0 - ldr w2, [x27, #0xD1FFAB1E] - sub w0, w2, w0 - cmp w1, w0 - bhs G_M63069_IG123 - ;; size=32 bbWeight=0.81 PerfScore 8.14 -G_M63069_IG24: ; bbWeight=0.81, gcrefRegs=9700000 {x20 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz - mov x0, x27 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0 x27] - ; gcr arg pop 0 - cbnz w0, G_M63069_IG91 - ;; size=28 bbWeight=0.81 PerfScore 5.70 -G_M63069_IG25: ; bbWeight=0.81, gcrefRegs=1700000 {x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz - sub w0, w26, w25 - cmp w0, #30 - bhs G_M63069_IG35 - ;; size=12 bbWeight=0.81 PerfScore 1.63 -G_M63069_IG26: ; bbWeight=1.63, gcrefRegs=1700000 {x20 x21 x22 x24}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x58] // [V02 loc2] - ; gcrRegs +[x0]
...

benchmarks.run_tiered.windows.arm64.checked.mch

-24 (-4.92%) : 8071.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,26 +79,26 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V71 PSPSym]
+ str x2, [fp, #0x38] // [V71 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -111,9 +111,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -123,9 +123,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -153,15 +153,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=40 bbWeight=4 PerfScore 38.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -191,13 +191,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -214,9 +210,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=60 bbWeight=8 PerfScore 172.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -229,9 +225,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -243,28 +239,26 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x48] ldr x1, [x1, #0x08] @@ -277,17 +271,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ...

-12 (-1.06%) : 5823.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)

@@ -8,28 +8,28 @@ ; 0 inlinees with PGO data; 21 single block inlinees; 14 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T38] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
+; V00 loc0 [V00,T39] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
; V01 loc1 [V01 ] ( 6, 2.50) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc2 [V02,T03] ( 6, 26.50) ref -> x20 class-hnd exact single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 6, 17 ) ref -> x21 class-hnd <System.Diagnostics.Tracing.EventListener> ; V04 loc4 [V04,T15] ( 4, 10.50) int -> x21 ;* V05 loc5 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
-; V07 loc7 [V07,T17] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
+; V07 loc7 [V07,T16] ( 4, 8 ) ref -> x25 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
; V08 loc8 [V08,T00] ( 11,468 ) ref -> x25 class-hnd <<unknown class>> ; V09 loc9 [V09 ] ( 7, 42 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]> ; V10 loc10 [V10,T01] ( 2,144 ) ref -> x27 class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T31] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp2 [V13,T34] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
+; V12 tmp1 [V12,T32] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp2 [V13,T35] ( 2, 2 ) ubyte -> x0 "Inlining Arg"
;* V14 tmp3 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp5 [V16,T33] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V16 tmp5 [V16,T34] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ; V20 tmp9 [V20,T24] ( 3, 6 ) ref -> x25 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V21 tmp10 [V21,T11] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
+; V21 tmp10 [V21,T10] ( 5, 14 ) long -> x0 "Inline stloc first use temp"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> ; V23 tmp12 [V23,T25] ( 3, 6 ) ref -> x25 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> @@ -37,47 +37,48 @@ ; V26 tmp15 [V26,T13] ( 3, 12 ) ref -> x25 class-hnd "updating class info" <System.ComAwareWeakReference> ;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp18 [V29,T20] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> -; V30 tmp19 [V30,T18] ( 4, 8 ) ref -> x0
+; V29 tmp18 [V29,T19] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object> +; V30 tmp19 [V30,T17] ( 4, 8 ) ref -> x0
;* V31 tmp20 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp21 [V32,T02] ( 2, 64 ) ref -> x1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V35 tmp24 [V35,T21] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> -; V36 tmp25 [V36,T19] ( 4, 8 ) ref -> x1 -; V37 tmp26 [V37,T10] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V35 tmp24 [V35,T20] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> +; V36 tmp25 [V36,T18] ( 4, 8 ) ref -> x1 +; V37 tmp26 [V37,T09] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>
-; V40 tmp29 [V40,T22] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
+; V40 tmp29 [V40,T21] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp32 [V43,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp32 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V45 tmp34 [V45,T09] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V46 tmp35 [V46,T12] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
+; V45 tmp34 [V45,T12] ( 4, 12.50) ref -> x19 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V46 tmp35 [V46,T11] ( 3, 10 ) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V47 tmp36 [V47,T04] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V48 tmp37 [V48,T16] ( 3, 8.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
+; V48 tmp37 [V48,T29] ( 2, 4.50) int -> x22 "field V05._version (fldOffset=0x14)" P-INDEP
; V49 tmp38 [V49 ] ( 3, 20 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP ; V50 tmp39 [V50 ] ( 4, 36 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x8)" P-DEP ; V51 tmp40 [V51 ] ( 3, 20 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x10)" P-DEP ; V52 tmp41 [V52 ] ( 3, 20 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0x14)" P-DEP
-; V53 tmp42 [V53,T37] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V53 tmp42 [V53,T38] ( 3, 1.50) ref -> x19 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V55 tmp44 [V55,T41] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V56 tmp45 [V56,T39] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
+;* V55 tmp44 [V55,T42] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V56 tmp45 [V56,T40] ( 2, 1 ) int -> x22 "field V17._version (fldOffset=0x14)" P-INDEP
; V57 tmp46 [V57,T26] ( 3, 6 ) ref -> x0 "field V39._dictionary (fldOffset=0x0)" P-INDEP
-;* V58 tmp47 [V58,T35] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP -;* V59 tmp48 [V59,T36] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP -; V60 tmp49 [V60,T30] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
+;* V58 tmp47 [V58,T36] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP +;* V59 tmp48 [V59,T37] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP +; V60 tmp49 [V60,T31] ( 2, 4 ) int -> x1 "field V39._version (fldOffset=0x14)" P-INDEP
; V61 tmp50 [V61,T05] ( 3, 24 ) ref -> x0 "arr expr"
-; V62 PSPSym [V62,T40] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V63 cse0 [V63,T14] ( 3, 12 ) int -> x24 "CSE - moderate" -; V64 cse1 [V64,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" -; V65 cse2 [V65,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" -; V66 cse3 [V66,T32] ( 4, 2 ) long -> x19 "CSE - moderate" -; V67 rat0 [V67,T29] ( 3, 4 ) long -> x0 "TLS field access" -; V68 rat1 [V68,T27] ( 3, 6 ) long -> x0 "TLS access" -; V69 rat2 [V69,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V62 PSPSym [V62,T41] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V63 cse0 [V63,T23] ( 2, 8 ) int -> x0 "CSE - moderate" +; V64 cse1 [V64,T14] ( 2, 8 ) int -> x0 "CSE - moderate" +; V65 cse2 [V65,T06] ( 3, 20 ) byref -> x24 "CSE - aggressive" +; V66 cse3 [V66,T07] ( 3, 20 ) long -> x26 "CSE - aggressive" +; V67 cse4 [V67,T33] ( 4, 2 ) long -> x19 "CSE - moderate" +; V68 rat0 [V68,T30] ( 3, 4 ) long -> x0 "TLS field access" +; V69 rat1 [V69,T27] ( 3, 6 ) long -> x0 "TLS access" +; V70 rat2 [V70,T28] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
; ; Lcl frame size = 56 @@ -98,10 +99,10 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [x0, #0x10] ldr w1, [x0, #0xC0] cmp w1, #2
- blt G_M15982_IG39
+ blt G_M15982_IG38
ldr x0, [x0, #0xC8] ldr x0, [x0, #0x10]
- cbz x0, G_M15982_IG39
+ cbz x0, G_M15982_IG38
;; size=32 bbWeight=1 PerfScore 17.50 G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x0, #0xD1FFAB1E] @@ -128,7 +129,7 @@ G_M15982_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; GC ptr vars +{V00} str wzr, [fp, #0x38] // [V01 loc1] ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M15982_IG06: ; bbWeight=0.50, gcVars=0000004000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG06: ; bbWeight=0.50, gcVars=0000008000000000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x38] // [V01 loc1] cbnz w1, G_M15982_IG32 add x1, fp, #56 // [V01 loc1] @@ -239,17 +240,17 @@ G_M15982_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w23, wzr ;; size=16 bbWeight=0.50 PerfScore 3.50 G_M15982_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x19, #0x14] - cmp w22, w24 - bne G_M15982_IG35
+ ldr w0, [x19, #0x14] + cmp w22, w0 + bne G_M15982_IG36
ldr w0, [x19, #0x10] cmp w23, w0
- bhs G_M15982_IG38
+ bhs G_M15982_IG37
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M15982_IG36
+ bhs G_M15982_IG35
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -482,17 +483,12 @@ G_M15982_IG34: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs -[x24] b G_M15982_IG13 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M15982_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- cmp w22, w24 - bne G_M15982_IG37 - b G_M15982_IG38 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -501,7 +497,7 @@ G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1] cbz w0, G_M15982_IG04 ldr x0, [fp, #0x18] // [V00 loc0] @@ -512,13 +508,13 @@ G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 b G_M15982_IG04 ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M15982_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #2 bl CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; gcr arg pop 0 b G_M15982_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M15982_IG39: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00} stp fp, lr, [sp, #-0x60]! stp x19, x20, [sp, #0x18] @@ -529,9 +525,9 @@ G_M15982_IG40: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 add x3, fp, #144 str x3, [sp, #0x10] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG40: ; bbWeight=0, gcVars=0000008000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x38] // [V01 loc1]
- cbz w0, G_M15982_IG42
+ cbz w0, G_M15982_IG41
ldr x0, [fp, #0x18] // [V00 loc0] ; gcrRegs +[x0] ; GC ptr vars -{V00} @@ -539,7 +535,7 @@ G_M15982_IG41: ; bbWeight=0, gcVars=0000004000000000 {V00}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M15982_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x27, [sp, #0x58] ldp x25, x26, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -549,7 +545,7 @@ G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1136, prolog size 40, PerfScore 2112.00, instruction count 284, allocated bytes for code 1136 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
+; Total bytes of code 1124, prolog size 40, PerfScore 2102.00, instruction count 281, allocated bytes for code 1124 (MethodHash=ddb2c191) for method System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
; ============================================================ Unwind Info: @@ -560,7 +556,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 265 (0x00109) Actual length = 1060 (0x000424)
+ Function Length : 262 (0x00106) Actual length = 1048 (0x000418)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -603,4 +599,4 @@ Unwind Info: *************** EH table for System.Diagnostics.Tracing.EventListener:Validate() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M15982_IG06..G_M15982_IG38) handled by [G_M15982_IG40..END) (fault)
+EH#0: try [G_M15982_IG06..G_M15982_IG37) handled by [G_M15982_IG39..END) (fault)
-8 (-0.90%) : 8678.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
@@ -8,27 +8,27 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T22] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T18] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T23] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T19] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T20] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 8, 32 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T22] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T24] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T26] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def -;* V20 tmp11 [V20,T31] ( 0, 0 ) int -> zero-ref
+;* V19 tmp10 [V19,T32] ( 0, 0 ) ref -> zero-ref single-def +;* V20 tmp11 [V20,T33] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -36,44 +36,46 @@ ;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
-; V28 tmp19 [V28,T13] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
+; V28 tmp19 [V28,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp"
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp21 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V32 tmp23 [V32,T09] ( 3, 24 ) byref -> x1 "Inlining Arg" ;* V33 tmp24 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp25 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp26 [V35,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp26 [V35,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V39 tmp30 [V39,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp30 [V39,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V41 tmp32 [V41,T20] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V42 tmp33 [V42,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V43 tmp34 [V43,T06] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
+; V41 tmp32 [V41,T21] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V42 tmp33 [V42,T06] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V43 tmp34 [V43,T05] ( 5, 24 ) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
; V44 tmp35 [V44,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V45 tmp36 [V45,T12] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V45 tmp36 [V45,T24] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V46 tmp37 [V46,T07] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V47 tmp38 [V47,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V48 tmp39 [V48,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V49 tmp40 [V49,T23] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V50 tmp41 [V50,T26] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
+; V49 tmp40 [V49,T25] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V50 tmp41 [V50,T28] ( 3, 3 ) ref -> x22 single-def "field V27._list (fldOffset=0x0)" P-INDEP
;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V27._current (fldOffset=0x8)" P-INDEP
-;* V52 tmp43 [V52,T32] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP -; V53 tmp44 [V53,T28] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP -; V54 tmp45 [V54,T27] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
+;* V52 tmp43 [V52,T34] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x10)" P-INDEP +; V53 tmp44 [V53,T30] ( 2, 2 ) int -> x23 "field V27._version (fldOffset=0x14)" P-INDEP +; V54 tmp45 [V54,T29] ( 3, 3 ) ref -> x19 single-def "field V37._list (fldOffset=0x0)" P-INDEP
;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._current (fldOffset=0x8)" P-INDEP
-;* V56 tmp47 [V56,T33] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP -; V57 tmp48 [V57,T29] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
+;* V56 tmp47 [V56,T35] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP +; V57 tmp48 [V57,T31] ( 2, 2 ) int -> x20 "field V37._version (fldOffset=0x14)" P-INDEP
; V58 tmp49 [V58,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V59 tmp50 [V59,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V60 PSPSym [V60,T34] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V61 cse0 [V61,T10] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V62 cse1 [V62,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" -; V63 cse2 [V63,T16] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" -; V64 cse3 [V64,T17] ( 3, 12 ) byref -> x1 "CSE - aggressive" -; V65 cse4 [V65,T25] ( 4, 4 ) byref -> x1 "CSE - moderate"
+; V60 PSPSym [V60,T36] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V61 cse0 [V61,T15] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V62 cse1 [V62,T10] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V63 cse2 [V63,T16] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V64 cse3 [V64,T11] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V65 cse4 [V65,T17] ( 8, 14 ) ref -> x1 multi-def "CSE - aggressive" +; V66 cse5 [V66,T18] ( 3, 12 ) byref -> x1 "CSE - aggressive" +; V67 cse6 [V67,T27] ( 4, 4 ) byref -> x1 "CSE - moderate"
; ; Lcl frame size = 40 @@ -92,7 +94,7 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=44 bbWeight=1 PerfScore 9.00
-G_M12834_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 movz x0, #0xD1FFAB1E @@ -171,7 +173,7 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { str x21, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x22, x0 @@ -261,12 +263,12 @@ G_M12834_IG10: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=52 bbWeight=4 PerfScore 50.00 G_M12834_IG11: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG15
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG14
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG16
+ bhs G_M12834_IG15
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w2, [x1, #0x08] @@ -305,12 +307,8 @@ G_M12834_IG14: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG15: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov w1, w19 @@ -325,19 +323,19 @@ G_M12834_IG16: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcr arg pop 0 str w0, [fp, #0x2C] // [V03 loc0] ;; size=36 bbWeight=8 PerfScore 64.00
-G_M12834_IG17: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M12834_IG16: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V60 PSPSym]
- bl G_M12834_IG21
+ bl G_M12834_IG20
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG18: ; bbWeight=1, nogc, extend
+G_M12834_IG17: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M12834_IG19: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x68] ldp x23, x24, [sp, #0x58] ldp x21, x22, [sp, #0x48] @@ -345,7 +343,7 @@ G_M12834_IG20: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M12834_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -354,19 +352,19 @@ G_M12834_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #112 str x3, [sp, #0x10] ;; size=28 bbWeight=1 PerfScore 6.50
-G_M12834_IG22: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG21: ; bbWeight=1, gcVars=0000000000800010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04} ldr w0, [fp, #0x2C] // [V03 loc0]
- cbnz w0, G_M12834_IG27
+ cbnz w0, G_M12834_IG26
ldr x0, [fp, #0x20] // [V00 arg0] ; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] mov w21, wzr
- b G_M12834_IG24
+ b G_M12834_IG23
;; size=28 bbWeight=1 PerfScore 10.00
-G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG22: ; bbWeight=4, gcVars=0000000000000010 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00} add x1, x0, #52 ; byrRegs +[x1] @@ -374,7 +372,7 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; byrRegs -[x1] mov w2, #0xD1FFAB1E tst w1, w2
- bne G_M12834_IG24
+ bne G_M12834_IG23
ldr x1, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -385,18 +383,18 @@ G_M12834_IG23: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=800 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=4 PerfScore 52.00
-G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG23: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14] cmp w20, w0
- bne G_M12834_IG26
+ bne G_M12834_IG25
ldr w0, [x19, #0x10] cmp w21, w0
- bhs G_M12834_IG27
+ bhs G_M12834_IG26
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M12834_IG25
+ bhs G_M12834_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -404,15 +402,15 @@ G_M12834_IG24: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x0] ; byrRegs -[x0] add w21, w21, #1
- b G_M12834_IG23
+ b G_M12834_IG22
;; size=56 bbWeight=8 PerfScore 172.00
-G_M12834_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.29%) : 22038.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 24 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 20, 34 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 19, 33 ) byref -> x19 this single-def
; V01 loc0 [V01,T01] ( 13, 39 ) ref -> x21 class-hnd <System.Text.RegularExpressions.RegexNode> ; V02 loc1 [V02,T02] ( 12, 38 ) int -> x22
-; V03 loc2 [V03,T49] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
+; V03 loc2 [V03,T50] ( 2, 2 ) ref -> x22 class-hnd single-def <int[]>
; V04 loc3 [V04,T34] ( 5, 4 ) ref -> x21 class-hnd exact single-def <System.String[]> ;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]> @@ -55,16 +55,16 @@ ; V44 tmp35 [V44,T15] ( 6, 10 ) int -> x20 "Inlining Arg" ; V45 tmp36 [V45,T26] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" ;* V46 tmp37 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V47 tmp38 [V47,T47] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
+; V47 tmp38 [V47,T48] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V49 tmp40 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V51 tmp42 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V52 tmp43 [V52,T48] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> -; V53 tmp44 [V53,T56] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> -; V54 tmp45 [V54,T50] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
+; V52 tmp43 [V52,T49] ( 3, 2 ) ref -> x22 class-hnd "Inline return value spill temp" <int[]> +; V53 tmp44 [V53,T57] ( 3, 1.50) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <int[]> +; V54 tmp45 [V54,T51] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V55 tmp46 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V56 tmp47 [V56,T51] ( 2, 2 ) long -> x2 "Inlining Arg"
+; V56 tmp47 [V56,T52] ( 2, 2 ) long -> x2 "Inlining Arg"
;* V57 tmp48 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V58 tmp49 [V58,T27] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V59 tmp50 [V59,T28] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -76,14 +76,14 @@ ;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V66 tmp57 [V66,T19] ( 2, 8 ) ref -> x15 "field V08.key (fldOffset=0x0)" P-INDEP ; V67 tmp58 [V67,T11] ( 3, 12 ) int -> x14 "field V08.value (fldOffset=0x8)" P-INDEP
-; V68 tmp59 [V68,T57] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP -; V69 tmp60 [V69,T52] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP -; V70 tmp61 [V70,T58] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V71 tmp62 [V71,T53] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
+; V68 tmp59 [V68,T58] ( 2, 1.50) byref -> x2 single-def "field V15._reference (fldOffset=0x0)" P-INDEP +; V69 tmp60 [V69,T53] ( 2, 2 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP +; V70 tmp61 [V70,T59] ( 2, 1.50) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V71 tmp62 [V71,T54] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
; V72 tmp63 [V72,T36] ( 2, 4 ) byref -> x2 "field V30._reference (fldOffset=0x0)" P-INDEP ; V73 tmp64 [V73,T41] ( 2, 4 ) int -> x3 "field V30._length (fldOffset=0x8)" P-INDEP
-; V74 tmp65 [V74,T59] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP -; V75 tmp66 [V75,T54] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
+; V74 tmp65 [V74,T60] ( 2, 1.50) byref -> x2 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V75 tmp66 [V75,T55] ( 2, 2 ) int -> x3 "field V41._length (fldOffset=0x8)" P-INDEP
;* V76 tmp67 [V76 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp68 [V77 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V78 tmp69 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP @@ -93,17 +93,18 @@ ;* V82 tmp73 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp74 [V83 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP ;* V84 tmp75 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "V60.[000..008)"
-; V85 tmp76 [V85,T55] ( 2, 2 ) int -> x0 "V60.[008..012)"
+; V85 tmp76 [V85,T56] ( 2, 2 ) int -> x0 "V60.[008..012)"
;* V86 tmp77 [V86 ] ( 0, 0 ) int -> zero-ref "V60.[012..016)" ;* V87 tmp78 [V87 ] ( 0, 0 ) int -> zero-ref "V60.[016..020)" ; V88 tmp79 [V88,T10] ( 3, 12 ) ref -> x0 "arr expr"
-; V89 cse0 [V89,T46] ( 3, 3 ) int -> x22 "CSE - moderate"
+; V89 cse0 [V89,T47] ( 3, 3 ) int -> x22 "CSE - moderate"
; V90 cse1 [V90,T29] ( 3, 6 ) ref -> x1 "CSE - moderate" ; V91 cse2 [V91,T45] ( 3, 3 ) ref -> x20 "CSE - moderate" ; V92 cse3 [V92,T30] ( 3, 6 ) long -> x20 "CSE - moderate" ; V93 cse4 [V93,T33] ( 2, 4.50) byref -> x24 hoist "CSE - moderate" ; V94 cse5 [V94,T21] ( 4, 6.50) int -> x23 hoist multi-def "CSE - moderate" ; V95 cse6 [V95,T31] ( 5, 5 ) byref -> x20 "CSE - moderate"
+; V96 cse7 [V96,T46] ( 3, 3 ) ref -> x14 "CSE - moderate"
; ; Lcl frame size = 80 @@ -581,7 +582,6 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { ; gcrRegs +[x14] ldr x15, [x14, #0x10] ; gcrRegs +[x15]
- ldr x14, [x19]
ldr w1, [x14, #0x38] ldr w19, [x19, #0x10] ; byrRegs -[x19] @@ -623,7 +623,7 @@ G_M2365_IG42: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 { str w19, [x20, #0x2C] mov x0, x20 ; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 34.00
+ ;; size=116 bbWeight=1 PerfScore 31.00
G_M2365_IG43: ; bbWeight=1, epilog, nogc, extend ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -652,7 +652,7 @@ G_M2365_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1380, prolog size 40, PerfScore 659.00, instruction count 345, allocated bytes for code 1380 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
+; Total bytes of code 1376, prolog size 40, PerfScore 656.00, instruction count 344, allocated bytes for code 1376 (MethodHash=a52ef6c2) for method System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
; ============================================================ Unwind Info: @@ -663,7 +663,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 345 (0x00159) Actual length = 1380 (0x000564)
+ Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.19%) : 44428.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 66 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T47] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T46] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T44] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T44] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x10 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -169,9 +169,9 @@ ;* V158 tmp133 [V158 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V159 tmp134 [V159 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V161 tmp136 [V161,T47] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V161 tmp136 [V161,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -182,37 +182,37 @@ ;* V171 tmp146 [V171 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V172 tmp147 [V172 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp"
-; V174 tmp149 [V174,T48] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
+; V174 tmp149 [V174,T49] ( 2, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo>
; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
...

-8 (-0.15%) : 2237.dasm - System.Number:NumberToStringFormatushort (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

coreclr_tests.run.windows.arm64.checked.mch

-36 (-14.75%) : 251101.dasm - Program:M49() (FullOpts)

@@ -10,11 +10,12 @@ ; V00 loc0 [V00,T01] ( 4, 13 ) int -> x19 ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> x1 "arr expr" -; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> x0 "arr expr" -; V05 PSPSym [V05,T05] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" -; V06 cse0 [V06,T03] ( 3, 12 ) int -> x0 "CSE - aggressive" -; V07 cse1 [V07,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x0 "arr expr" +;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref "arr expr" +; V05 PSPSym [V05,T06] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" +; V06 cse0 [V06,T02] ( 3, 12 ) byref -> x0 "CSE - aggressive" +; V07 cse1 [V07,T03] ( 2, 8 ) ref -> x0 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 4, 9 ) long -> x20 hoist "CSE - aggressive"
; ; Lcl frame size = 16 @@ -34,7 +35,7 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; gcr arg pop 0 cmp w0, #0
- ble G_M37813_IG08
+ ble G_M37813_IG06
;; size=32 bbWeight=1 PerfScore 7.50 G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x20, #0xD1FFAB1E @@ -43,32 +44,7 @@ G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20]
- cbnz w0, G_M37813_IG06 - ;; size=8 bbWeight=4 PerfScore 16.00 -G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - ; gcrRegs +[x1] - ldr w2, [x1, #0x08] - cmp w2, #0 - bls G_M37813_IG13 - str wzr, [x1, #0x10] - ;; size=32 bbWeight=2 PerfScore 20.00 -G_M37813_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - cbz w0, G_M37813_IG09 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M37813_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - str wzr, [x20, #-0x08] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M37813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbnz w0, G_M37813_IG05
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -77,17 +53,28 @@ G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldr w1, [x0, #0x08] cmp w1, #0 bls G_M37813_IG10
- ldr w1, [x20, #-0x08] - str w1, [x0, #0x10] - b G_M37813_IG11 - ;; size=40 bbWeight=4 PerfScore 56.00 -G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, x0, #16
; gcrRegs -[x0]
- bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - brk_windows #0 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs +[x0] + str wzr, [x0] + b G_M37813_IG07 + ;; size=48 bbWeight=4 PerfScore 62.00 +G_M37813_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + str wzr, [x20, #-0x08] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M37813_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M37813_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref + ; byrRegs +[x0] + ldr w1, [x20, #-0x08] + str w1, [x0] + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M37813_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 @@ -98,27 +85,27 @@ G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp w0, w19 bgt G_M37813_IG04 ;; size=32 bbWeight=4 PerfScore 30.00
-G_M37813_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M37813_IG08
+G_M37813_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M37813_IG06
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #48 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 20, PerfScore 142.25, instruction count 61, allocated bytes for code 244 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 124.25, instruction count 52, allocated bytes for code 208 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
; ============================================================ Unwind Info: @@ -129,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,4 +149,4 @@ Unwind Info: *************** EH table for Program:M49() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37813_IG09..G_M37813_IG11) handled by [G_M37813_IG14..END) (fault)
+EH#0: try [G_M37813_IG07..G_M37813_IG08) handled by [G_M37813_IG11..END) (fault)
-28 (-10.61%) : 257016.dasm - Test.BB:TestEntryPoint() (FullOpts)
@@ -8,29 +8,27 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [fp+0x10] class-hnd exact EH-live single-def <<unknown class>>
+; V00 loc0 [V00,T06] ( 2, 0 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2" ; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp3 [V04,T02] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 10 ) long -> x2 "fgMakeTemp is creating a new local variable"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]> ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [fp+0x1C] spill-single-def "bubbling QMark2" -; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> x19 single-def "CASTCLASS eval op1" -; V09 tmp8 [V09,T06] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> -; V11 PSPSym [V11,T03] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V12 cse0 [V12,T01] ( 5, 24 ) ref -> x19 multi-def "CSE - aggressive"
+; V07 tmp6 [V07,T07] ( 2, 0 ) float -> [fp+0x24] spill-single-def "bubbling QMark2" +; V08 tmp7 [V08,T04] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1" +; V09 tmp8 [V09,T05] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable" +; V10 tmp9 [V10,T03] ( 5, 0 ) ref -> x0 class-hnd "spilling QMark2" <double[]> +; V11 PSPSym [V11,T02] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
mov fp, sp add x0, sp, #48
- str x0, [fp, #0x20] // [V11 PSPSym] - ;; size=20 bbWeight=1 PerfScore 4.00
+ str x0, [fp, #0x28] // [V11 PSPSym] + ;; size=16 bbWeight=1 PerfScore 3.00
G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -39,10 +37,10 @@ G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
- str x0, [fp, #0x10] // [V00 loc0]
+ str x0, [fp, #0x18] // [V00 loc0]
; GC ptr vars +{V00} ;; size=24 bbWeight=1 PerfScore 4.00
-G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] mov w0, #2 cmp w0, #3 @@ -50,13 +48,11 @@ G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=000 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x19, [x0] - ; gcrRegs +[x19] - mov x1, x19
+ ldr x1, [x0]
; gcrRegs +[x1]
- cbz x1, G_M52695_IG07 - ;; size=36 bbWeight=8 PerfScore 64.00 -G_M52695_IG04: ; bbWeight=2, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M52695_IG03 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M52695_IG04: ; bbWeight=2, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 @@ -64,7 +60,7 @@ G_M52695_IG04: ; bbWeight=2, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, cmp x0, x2 beq G_M52695_IG07 ;; size=24 bbWeight=2 PerfScore 12.00
-G_M52695_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x2 bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0] @@ -72,59 +68,50 @@ G_M52695_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, b G_M52695_IG07 ;; size=12 bbWeight=1 PerfScore 2.50 G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52695_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19] - cbz x19, G_M52695_IG03 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M52695_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc - ; gcrRegs -[x19]
+G_M52695_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; GC ptr vars -{V00}
- ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M52695_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
add x3, fp, #48
- str x3, [sp, #0x10] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V07} - ldr x0, [fp, #0x10] // [V00 loc0]
+ str x3, [sp, #0x18] + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M52695_IG09: ; bbWeight=0, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00} + ldr x0, [fp, #0x18] // [V00 loc0]
; gcrRegs +[x0] ldr s0, [x0, #0x10]
- str s0, [fp, #0x1C] // [V07 tmp6]
+ str s0, [fp, #0x24] // [V07 tmp6]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x19, [x0] - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - cbz x0, G_M52695_IG11
ldr x1, [x0]
- movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - beq G_M52695_IG11 - mov x0, x2 - ; gcrRegs -[x0] - mov x1, x19
; gcrRegs +[x1]
- ; GC ptr vars -{V00 V07}
+ mov x0, x1 + ; gcrRegs +[x0] + cbz x0, G_M52695_IG10 + ldr x2, [x0] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M52695_IG10 + mov x0, x3 + ; gcrRegs -[x0] + ; GC ptr vars -{V00}
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=72 bbWeight=0 PerfScore 0.00 -G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr s0, [fp, #0x1C] // [V07 tmp6]
+ ;; size=68 bbWeight=0 PerfScore 0.00 +G_M52695_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr s0, [fp, #0x24] // [V07 tmp6]
movz x1, #0xD1FFAB1E // code for Test.BB:Method1(float,double[]) movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -132,26 +119,25 @@ G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M52695_IG08]
+ adr x0, [G_M52695_IG07]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend - ldr x19, [sp, #0x18]
+G_M52695_IG11: ; bbWeight=0, funclet epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 20, PerfScore 98.50, instruction count 66, allocated bytes for code 264 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
+; Total bytes of code 236, prolog size 16, PerfScore 83.50, instruction count 59, allocated bytes for code 236 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,12 +145,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end - E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -174,14 +157,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end
+ E4 end + E4 end
*************** EH table for Test.BB:TestEntryPoint() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52695_IG03..G_M52695_IG08) handled by [G_M52695_IG09..END) (class: 1000008)
+EH#0: try [G_M52695_IG03..G_M52695_IG07) handled by [G_M52695_IG08..END) (class: 1000008)
-40 (-5.29%) : 189214.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -25,7 +25,7 @@ ; V13 tmp9 [V13,T08] ( 6, 12 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[int]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T00] ( 25,158.20) byref -> x11 "Inlining Arg"
+; V16 tmp12 [V16,T00] ( 21,154.20) byref -> x11 "Inlining Arg"
; V17 tmp13 [V17,T03] ( 8, 43 ) ref -> x1 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp15 [V19,T12] ( 3, 3 ) ref -> x15 single-def "field V14._list (fldOffset=0x0)" P-INDEP @@ -57,9 +57,9 @@ G_M48461_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M48461_IG25
+ bne G_M48461_IG24
ldr w0, [x19, #0x10]
- cbz w0, G_M48461_IG24
+ cbz w0, G_M48461_IG23
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 @@ -83,13 +83,13 @@ G_M48461_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; GC ptr vars +{V02} ;; size=4 bbWeight=1 PerfScore 1.00 G_M48461_IG04: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x0, G_M48461_IG13
+ cbz x0, G_M48461_IG12
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- bne G_M48461_IG13
+ bne G_M48461_IG12
b G_M48461_IG06 ;; size=32 bbWeight=1 PerfScore 8.00 G_M48461_IG05: ; bbWeight=9.90, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref @@ -104,11 +104,11 @@ G_M48461_IG06: ; bbWeight=10.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG11
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG12
+ bhs G_M48461_IG11
;; size=40 bbWeight=10.89 PerfScore 201.46 G_M48461_IG07: ; bbWeight=9.90, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz ldr x3, [x1, #0x08] @@ -155,19 +155,10 @@ G_M48461_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w22, w0 ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- b G_M48461_IG15
+ b G_M48461_IG14
;; size=36 bbWeight=0 PerfScore 0.00
-G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG11: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
; byrRegs +[x11]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.99 PerfScore 10.39 -G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -175,39 +166,26 @@ G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} add w1, w1, #1 str w1, [x11, #0x08] str wzr, [x11, #0x10]
- b G_M48461_IG21
+ b G_M48461_IG20
;; size=24 bbWeight=0.99 PerfScore 9.40
-G_M48461_IG13: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG12: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x11] ldr xzr, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- b G_M48461_IG16
+ b G_M48461_IG15
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG13: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w22, [x0, #0x18] ;; size=4 bbWeight=0.10 PerfScore 0.30
-G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add w20, w20, w22 ;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M48461_IG16: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG15: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x11, [x0] cmp x11, x21
- beq G_M48461_IG17 - movz x11, #80 - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M48461_IG10 - ldr x0, [fp, #0x10] // [V02 loc1] - ; gcrRegs +[x0] - b G_M48461_IG21 - ;; size=44 bbWeight=0.11 PerfScore 1.54 -G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ bne G_M48461_IG17
add x11, x0, #8 ; byrRegs +[x11] ldr x1, [x11] @@ -215,13 +193,13 @@ G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldr w2, [x11, #0x0C] ldr w3, [x1, #0x14] cmp w2, w3
- bne G_M48461_IG19
+ bne G_M48461_IG09
ldr w2, [x11, #0x08] ldr w3, [x1, #0x10] cmp w2, w3
- bhs G_M48461_IG20 - ;; size=40 bbWeight=0.11 PerfScore 2.04 -G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
+ bhs G_M48461_IG19 + ;; size=52 bbWeight=0.11 PerfScore 2.53 +G_M48461_IG16: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x11}, byref, isz
ldr x3, [x1, #0x08] ; gcrRegs +[x3] ldr w2, [x11, #0x08] @@ -237,19 +215,27 @@ G_M48461_IG18: ; bbWeight=0.10, gcrefRegs=0003 {x0 x1}, byrefRegs=0800 {x ldr w1, [x11, #0x08] add w1, w1, #1 str w1, [x11, #0x08]
- b G_M48461_IG14
+ b G_M48461_IG13
;; size=48 bbWeight=0.10 PerfScore 2.05
-G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref, isz
+G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
- ldr w1, [x11, #0x0C] - ldr x2, [x11] - ; gcrRegs +[x2] - ldr w2, [x2, #0x14] - ; gcrRegs -[x2] - cmp w1, w2 - bne G_M48461_IG09 - ;; size=20 bbWeight=0.01 PerfScore 0.11 -G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref
+ ; byrRegs -[x11] + movz x11, #80 + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + cbnz w0, G_M48461_IG10 + ;; size=24 bbWeight=0.11 PerfScore 0.72 +G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc1] + ; gcrRegs +[x0] + b G_M48461_IG20 + ;; size=8 bbWeight=0.11 PerfScore 0.33 +G_M48461_IG19: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11}, byref + ; byrRegs +[x11]
ldr x1, [x11] ; gcrRegs +[x1] ldr w1, [x1, #0x10] @@ -258,24 +244,24 @@ G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0800 {x11} str w1, [x11, #0x08] str wzr, [x11, #0x10] ;; size=20 bbWeight=0.01 PerfScore 0.09
-G_M48461_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG20: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x11] ldr x1, [x0] cmp x1, x21
- bne G_M48461_IG26
+ bne G_M48461_IG25
;; size=12 bbWeight=1 PerfScore 4.50
-G_M48461_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V02} mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M48461_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M48461_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -289,7 +275,7 @@ G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x0] b G_M48461_IG03 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M48461_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -302,7 +288,7 @@ G_M48461_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 b G_M48461_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V02 V05} movz x11, #96 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -312,9 +298,9 @@ G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M48461_IG22
+ b G_M48461_IG21
;; size=24 bbWeight=0 PerfScore 0.00
-G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V05} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -322,16 +308,16 @@ G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 add x3, fp, #64 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00 ...

+4 (+0.08%) : 220823.dasm - GenClass1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass1[System.Canon],GenClass1[System.__Canon],GenClass1[System.Canon]) (FullOpts)

@@ -15,20 +15,20 @@ ; V04 arg3 [V04,T56] ( 3, 6 ) ref -> x22 class-hnd single-def <GenClass`1[System.__Canon]> ; V05 loc0 [V05,T06] ( 7, 23 ) int -> x24 ; V06 loc1 [V06 ] (153,301.93) struct (40) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc2 [V07,T07] ( 7, 23 ) int -> x26
+; V07 loc2 [V07,T07] ( 7, 23 ) int -> x27
; V08 loc3 [V08,T08] ( 7, 23 ) int -> x25
-; V09 loc4 [V09,T09] ( 7, 23 ) int -> x26
+; V09 loc4 [V09,T09] ( 7, 23 ) int -> x27
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T38] ( 5, 12 ) ref -> x25 ;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref ; V13 tmp3 [V13,T34] ( 7, 12 ) ref -> x26
-; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x27
+; V14 tmp4 [V14,T39] ( 5, 12 ) ref -> x28
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref ; V16 tmp6 [V16,T35] ( 6, 12 ) ref -> x1
-; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x28
+; V17 tmp7 [V17,T40] ( 5, 12 ) ref -> x26
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref ; V19 tmp9 [V19,T36] ( 6, 12 ) ref -> x1
-; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x27
+; V20 tmp10 [V20,T41] ( 5, 12 ) ref -> x28
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref ; V22 tmp12 [V22,T37] ( 6, 12 ) ref -> x24 ;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -89,7 +89,7 @@ ;* V78 tmp68 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]> ;* V79 tmp69 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> ;* V80 tmp70 [V80 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V81 tmp71 [V81,T12] ( 5, 20.00) ref -> x0 class-hnd "dup spill" <ushort[]>
+; V81 tmp71 [V81,T12] ( 5, 20 ) ref -> x0 class-hnd "dup spill" <ushort[]>
;* V82 tmp72 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ushort[]> ;* V83 tmp73 [V83 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V84 tmp74 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -134,8 +134,8 @@ ;* V123 tmp113 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V124 tmp114 [V124,T25] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V125 tmp115 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V126 tmp116 [V126,T46] ( 3, 12 ) int -> x24 "Inlining Arg" -; V127 tmp117 [V127,T94] ( 2, 7.99) byref -> x21 "Inlining Arg"
+; V126 tmp116 [V126,T46] ( 3, 12 ) int -> x21 "Inlining Arg" +; V127 tmp117 [V127,T94] ( 2, 7.99) byref -> x26 "Inlining Arg"
;* V128 tmp118 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V129 tmp119 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V130 tmp120 [V130,T185] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -206,7 +206,7 @@ ; V195 tmp185 [V195,T29] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V196 tmp186 [V196 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V197 tmp187 [V197,T50] ( 3, 12 ) int -> x21 "Inlining Arg"
-; V198 tmp188 [V198,T98] ( 2, 7.99) byref -> x27 "Inlining Arg"
+; V198 tmp188 [V198,T98] ( 2, 7.99) byref -> x28 "Inlining Arg"
;* V199 tmp189 [V199 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V200 tmp190 [V200 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V201 tmp191 [V201,T189] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -273,7 +273,7 @@ ; V262 tmp252 [V262,T33] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V263 tmp253 [V263 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V264 tmp254 [V264,T54] ( 3, 12 ) int -> x20 "Inlining Arg"
-; V265 tmp255 [V265,T102] ( 2, 7.99) byref -> x28 "Inlining Arg"
+; V265 tmp255 [V265,T102] ( 2, 7.99) byref -> x26 "Inlining Arg"
;* V266 tmp256 [V266,T193] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V267 tmp257 [V267 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V268 tmp258 [V268 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -294,7 +294,7 @@ ;* V283 tmp273 [V283 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V284 tmp274 [V284 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V285 tmp275 [V285,T90] ( 2, 8 ) int -> x24 "Inlining Arg"
-; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x27 "Inlining Arg"
+; V286 tmp276 [V286,T66] ( 2, 8 ) byref -> x28 "Inlining Arg"
; V287 tmp277 [V287,T120] ( 3, 4 ) byref -> x26 "field V28._reference (fldOffset=0x0)" P-INDEP ; V288 tmp278 [V288,T128] ( 3, 4 ) int -> x27 "field V28._length (fldOffset=0x8)" P-INDEP ;* V289 tmp279 [V289 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP @@ -351,8 +351,8 @@ ; V340 tmp330 [V340,T169] ( 2, 4 ) int -> x3 "field V111._length (fldOffset=0x8)" P-INDEP ;* V341 tmp331 [V341 ] ( 0, 0 ) byref -> zero-ref "field V112._reference (fldOffset=0x0)" P-INDEP ;* V342 tmp332 [V342 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x8)" P-INDEP
-; V343 tmp333 [V343,T122] ( 3, 4 ) byref -> x28 "field V122._reference (fldOffset=0x0)" P-INDEP -; V344 tmp334 [V344,T130] ( 3, 4 ) int -> x2 "field V122._length (fldOffset=0x8)" P-INDEP
+; V343 tmp333 [V343,T122] ( 3, 4 ) byref -> x2 "field V122._reference (fldOffset=0x0)" P-INDEP +; V344 tmp334 [V344,T130] ( 3, 4 ) int -> x3 "field V122._length (fldOffset=0x8)" P-INDEP
;* V345 tmp335 [V345 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP ;* V346 tmp336 [V346 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP ;* V347 tmp337 [V347 ] ( 0, 0 ) byref -> zero-ref "field V125._reference (fldOffset=0x0)" P-INDEP @@ -560,7 +560,7 @@ G_M13079_IG03: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 mov x25, x0 ; gcrRegs +[x25] str xzr, [fp, #0x10] // [V06 loc1]
- cbz w24, G_M13079_IG26
+ cbz w24, G_M13079_IG29
;; size=60 bbWeight=4 PerfScore 88.00 G_M13079_IG04: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -623,7 +623,7 @@ G_M13079_IG06: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ;; size=96 bbWeight=2 PerfScore 49.00 G_M13079_IG07: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #8
- blo G_M13079_IG16
+ blo G_M13079_IG19
;; size=8 bbWeight=2 PerfScore 3.00 G_M13079_IG08: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -673,7 +673,7 @@ G_M13079_IG09: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ;; size=108 bbWeight=2 PerfScore 54.00 G_M13079_IG10: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #3
- blo G_M13079_IG18
+ blo G_M13079_IG24
;; size=8 bbWeight=2 PerfScore 3.00 G_M13079_IG11: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -733,7 +733,7 @@ G_M13079_IG12: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ; gcrRegs -[x0-x1] ;; size=128 bbWeight=2 PerfScore 65.00 G_M13079_IG13: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref, isz
- cbz w27, G_M13079_IG19
+ cbz w27, G_M13079_IG26
;; size=4 bbWeight=2 PerfScore 2.00 G_M13079_IG14: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -753,7 +753,7 @@ G_M13079_IG15: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe bhi G_M13079_IG104 ldr x27, [fp, #0x28] // [V06 loc1+0x18] ; byrRegs +[x27]
- tbz w26, #31, G_M13079_IG23
+ tbz w26, #31, G_M13079_IG16
movz x28, #8 movk x28, #0xD1FFAB1E LSL #16 movk x28, #0xD1FFAB1E LSL #32 @@ -767,25 +767,6 @@ G_M13079_IG15: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x28]
- b G_M13079_IG22 - ;; size=68 bbWeight=2 PerfScore 35.00 -G_M13079_IG16: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; gcrRegs -[x28] - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG09 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M13079_IG17: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs +[x28] - ; byrRegs +[x27]
mov x0, x28 ; gcrRegs +[x0] mov x1, x28 @@ -796,35 +777,8 @@ G_M13079_IG17: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, by ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x28]
- b G_M13079_IG20 - ;; size=32 bbWeight=2 PerfScore 15.00 -G_M13079_IG18: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - ; byrRegs -[x27] - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG12 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M13079_IG19: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V06 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M13079_IG15 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M13079_IG20: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - ; byrRegs +[x27]
+ ;; size=92 bbWeight=2 PerfScore 46.00 +G_M13079_IG16: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz
mov x0, x27 ; byrRegs +[x0] sxtw w1, w26 @@ -838,43 +792,9 @@ G_M13079_IG20: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRe stp xzr, xzr, [fp, #0x10] stp xzr, xzr, [fp, #0x20] str xzr, [fp, #0x30]
- cbz x1, G_M13079_IG30
+ cbz x1, G_M13079_IG18
;; size=36 bbWeight=2 PerfScore 17.00
-G_M13079_IG21: ; bbWeight=1.94, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M13079_IG29 - ;; size=4 bbWeight=1.94 PerfScore 1.94 -G_M13079_IG22: ; bbWeight=2, gcrefRegs=12700000 {x20 x21 x22 x25 x28}, byrefRegs=8000000 {x27}, byref - ; gcrRegs -[x1 x26] +[x28] - ; byrRegs +[x27] - mov x0, x28 - ; gcrRegs +[x0] - mov x1, x28 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x28] - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M13079_IG23: ; bbWeight=2, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=8000000 {x27}, byref, isz - mov x0, x27 - ; byrRegs +[x0] - sxtw w1, w26 - bl <unknown method> - ; gcrRegs +[x0] - ; byrRegs -[x0 x27] - mov x26, x0 - ; gcrRegs +[x26] - ldr x1, [fp, #0x18] // [V06 loc1+0x08] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #0x10] - stp xzr, xzr, [fp, #0x20] - str xzr, [fp, #0x30] - cbz x1, G_M13079_IG25 - ;; size=36 bbWeight=2 PerfScore 17.00 -G_M13079_IG24: ; bbWeight=1.94, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
+G_M13079_IG17: ; bbWeight=1.94, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -890,37 +810,29 @@ G_M13079_IG24: ; bbWeight=1.94, gcrefRegs=6700002 {x1 x20 x21 x22 x25 x26 blr x3 ; gcrRegs -[x0-x1] ;; size=44 bbWeight=1.94 PerfScore 26.26
-G_M13079_IG25: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref - b G_M13079_IG30
+G_M13079_IG18: ; bbWeight=2, gcrefRegs=6700000 {x20 x21 x22 x25 x26}, byrefRegs=0000 {}, byref + b G_M13079_IG27
;; size=4 bbWeight=2 PerfScore 2.00
-G_M13079_IG26: ; bbWeight=2.00, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M13079_IG19: ; bbWeight=0.01, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref
...

+4 (+0.14%) : 254100.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)

@@ -241,7 +241,7 @@ G_M15401_IG02: ; bbWeight=1, gcVars=00000000000000000000000000004000 {V04 ; gcr arg pop 0 str x19, [fp, #0xA0] // [V01 arg1] ; GC ptr vars +{V01}
- cbz x0, G_M15401_IG24
+ cbz x0, G_M15401_IG23
;; size=80 bbWeight=1 PerfScore 23.00 G_M15401_IG03: ; bbWeight=0.50, gcrefRegs=9600000 {x21 x22 x24 x27}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] @@ -279,11 +279,11 @@ G_M15401_IG06: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byr str wzr, [fp, #0xE8] // [V11 loc5+0x10] strb wzr, [fp, #0xEC] // [V11 loc5+0x14] ldrb w0, [fp, #0xEC] // [V11 loc5+0x14]
- cbnz w0, G_M15401_IG20
+ cbnz w0, G_M15401_IG25
;; size=24 bbWeight=4 PerfScore 28.00 G_M15401_IG07: ; bbWeight=2, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2]
- cbz x27, G_M15401_IG20
+ cbz x27, G_M15401_IG25
ldr w0, [fp, #0xE8] // [V11 loc5+0x10] ldr w1, [fp, #0xF8] // [V11 loc5+0x20] cmp w0, w1 @@ -318,7 +318,7 @@ G_M15401_IG08: ; bbWeight=2, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byr str w4, [fp, #0xB4] // [V176 cse10] ldr w3, [fp, #0xD4] // [V36 tmp21] cmp w4, w3
- bhi G_M15401_IG20
+ bhi G_M15401_IG25
;; size=20 bbWeight=2 PerfScore 15.00 G_M15401_IG09: ; bbWeight=2.00, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref add x1, x27, #12 @@ -375,7 +375,7 @@ G_M15401_IG11: ; bbWeight=2, gcVars=00000000000000000000000000104000 {V04 G_M15401_IG12: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ldr w3, [fp, #0xD0] // [V49 tmp34] cmp w3, #2
- blo G_M15401_IG26
+ blo G_M15401_IG28
;; size=12 bbWeight=4 PerfScore 14.00 G_M15401_IG13: ; bbWeight=2.00, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -433,7 +433,7 @@ G_M15401_IG15: ; bbWeight=2, gcVars=00000000000000000000000000204000 {V04 ;; size=40 bbWeight=2 PerfScore 16.00 G_M15401_IG16: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz ldr w3, [fp, #0xCC] // [V60 tmp45]
- cbz w3, G_M15401_IG29
+ cbz w3, G_M15401_IG31
;; size=8 bbWeight=4 PerfScore 12.00 G_M15401_IG17: ; bbWeight=2.00, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -460,7 +460,7 @@ G_M15401_IG18: ; bbWeight=4, gcVars=00000000000000000000000000004000 {V04 ; byrRegs +[x2] str x2, [fp, #0x68] // [V74 tmp59] ; GC ptr vars +{V74}
- tbz w1, #31, G_M15401_IG21
+ tbz w1, #31, G_M15401_IG20
;; size=36 bbWeight=4 PerfScore 44.00 G_M15401_IG19: ; bbWeight=2, gcVars=00000000000000000000000000004800 {V04 V74}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x2] @@ -482,24 +482,20 @@ G_M15401_IG19: ; bbWeight=2, gcVars=00000000000000000000000000004800 {V04 blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- b G_M15401_IG30 - ;; size=52 bbWeight=2 PerfScore 21.00 -G_M15401_IG20: ; bbWeight=0.00, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V74 V173} - add x0, fp, #216 // [V11 loc5] - mov x1, x27
+ ldr x0, [fp, #0x58] // [V173 cse7] + ; gcrRegs +[x0] + mov x1, x0
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
+ ; GC ptr vars -{V173}
blr x2
- ; gcrRegs -[x1]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M15401_IG10 - ;; size=32 bbWeight=0.00 PerfScore 0.03 -G_M15401_IG21: ; bbWeight=4, gcVars=00000000000000000000000000004800 {V04 V74}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V74}
+ ;; size=76 bbWeight=2 PerfScore 35.00 +G_M15401_IG20: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x68] // [V74 tmp59] ; byrRegs +[x0] ldr w1, [fp, #0xC8] // [V72 tmp57] @@ -515,23 +511,25 @@ G_M15401_IG21: ; bbWeight=4, gcVars=00000000000000000000000000004800 {V04 stp xzr, xzr, [fp, #0xD8] stp xzr, xzr, [fp, #0xE8] str xzr, [fp, #0xF8]
- cbz x1, G_M15401_IG23
+ cbz x1, G_M15401_IG22
;; size=36 bbWeight=4 PerfScore 48.00
-G_M15401_IG22: ; bbWeight=1.94, gcVars=00000000000000000000000008004000 {V04 V70}, gcrefRegs=9680002 {x1 x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG21: ; bbWeight=1.94, gcVars=00000000000000000000000008004000 {V04 V70}, gcrefRegs=9680002 {x1 x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] mov w2, wzr
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3
+ movz x4, #0xD1FFAB1E // code for <unknown method> + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4
; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=28 bbWeight=1.94 PerfScore 12.64
-G_M15401_IG23: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz - ldr x2, [fp, #0x70] // [V70 tmp55]
+G_M15401_IG22: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, byref, isz + ldr x3, [fp, #0x70] // [V70 tmp55] + ; gcrRegs +[x3] + mov x2, x3
; gcrRegs +[x2] ldr x0, [x21, #0x10] ; gcrRegs +[x0] @@ -540,6 +538,7 @@ G_M15401_IG23: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byr mov x1, x2 ; gcrRegs +[x1] ldr x3, [x0]
+ ; gcrRegs -[x3]
ldr x3, [x3, #0x50] ldr x3, [x3, #0x20] ; GC ptr vars -{V70} @@ -547,12 +546,12 @@ G_M15401_IG23: ; bbWeight=4, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byr ; gcrRegs -[x1-x2] ; gcr arg pop 0 cbnz x0, G_M15401_IG04
- ;; size=36 bbWeight=4 PerfScore 70.00 -G_M15401_IG24: ; bbWeight=1, gcrefRegs=1600000 {x21 x22 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=4 PerfScore 72.00 +G_M15401_IG23: ; bbWeight=1, gcrefRegs=1600000 {x21 x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19 x27]
- cbnz w28, G_M15401_IG31
+ cbnz w28, G_M15401_IG35
;; size=4 bbWeight=1 PerfScore 1.00
-G_M15401_IG25: ; bbWeight=0.50, gcrefRegs=1600000 {x21 x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M15401_IG24: ; bbWeight=0.50, gcrefRegs=1600000 {x21 x22 x24}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x08] add w1, w1, #1 sxtw x1, w1 @@ -586,24 +585,24 @@ G_M15401_IG25: ; bbWeight=0.50, gcrefRegs=1600000 {x21 x22 x24}, byrefReg ; gcr arg pop 0 mov x22, x19 ; gcrRegs +[x22]
- b G_M15401_IG31
+ b G_M15401_IG35
;; size=108 bbWeight=0.50 PerfScore 13.00
-G_M15401_IG26: ; bbWeight=0.01, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG25: ; bbWeight=0.00, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x27] ; GC ptr vars -{V01} add x0, fp, #216 // [V11 loc5]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32
+ mov x1, x27 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
+ ; gcrRegs -[x1]
; gcr arg pop 0
- b G_M15401_IG14 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M15401_IG27: ; bbWeight=0.50, gcVars=0000000000000000000000000040C000 {V00 V04 V12}, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M15401_IG10 + ;; size=32 bbWeight=0.00 PerfScore 0.03 +G_M15401_IG26: ; bbWeight=0.50, gcVars=0000000000000000000000000040C000 {V00 V04 V12}, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x21-x22 x24 x27] +[x26] ; GC ptr vars +{V00 V12 V22} mov w22, wzr @@ -611,13 +610,13 @@ G_M15401_IG27: ; bbWeight=0.50, gcVars=0000000000000000000000000040C000 { ; gcrRegs +[x20] ldr w0, [x20, #0x08] cmp w0, #0
- ble G_M15401_IG48
+ ble G_M15401_IG33
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M15401_IG28: ; bbWeight=0.25, gcVars=00000000000000000000000000408000 {V00 V12}, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG27: ; bbWeight=0.25, gcVars=00000000000000000000000000408000 {V00 V12}, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V22}
- b G_M15401_IG42
+ b G_M15401_IG29
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M15401_IG29: ; bbWeight=0.01, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
+G_M15401_IG28: ; bbWeight=0.01, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20 x26] +[x21-x22 x24 x27] ; GC ptr vars -{V00 V12} +{V04} add x0, fp, #216 // [V11 loc5] @@ -630,31 +629,84 @@ G_M15401_IG29: ; bbWeight=0.01, gcVars=00000000000000000000000000004000 { ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M15401_IG18
+ b G_M15401_IG14
;; size=40 bbWeight=0.01 PerfScore 0.05
-G_M15401_IG30: ; bbWeight=2, gcVars=00000000000000000000000000004820 {V04 V74 V173}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V05 V74 V173} - ldr x0, [fp, #0x58] // [V173 cse7]
+G_M15401_IG29: ; bbWeight=4, gcVars=00000000000000000000000000408000 {V00 V12}, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x21-x22 x24 x27] +[x20 x26] + ; GC ptr vars -{V04} +{V00 V12 V22} + add x0, x20, #16 + ; byrRegs +[x0] + ldr x3, [x0, w22, UXTW #3] + ; gcrRegs +[x3] + mov x0, x3
; gcrRegs +[x0]
- mov x1, x0 - ; gcrRegs +[x1]
+ ; byrRegs -[x0] + cbz x0, G_M15401_IG32 + ;; size=16 bbWeight=4 PerfScore 20.00 +G_M15401_IG30: ; bbWeight=1.86, gcrefRegs=4180009 {x0 x3 x19 x20 x26}, byrefRegs=0000 {}, byref + b G_M15401_IG46 + ;; size=4 bbWeight=1.86 PerfScore 1.86 +G_M15401_IG31: ; bbWeight=0.01, gcVars=00000000000000000000000000004000 {V04}, gcrefRegs=9680000 {x19 x21 x22 x24 x27}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x3 x20 x26] +[x21-x22 x24 x27] + ; GC ptr vars -{V00 V12 V22} +{V04} + add x0, fp, #216 // [V11 loc5] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ; GC ptr vars -{V05 V173}
blr x2
- ; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M15401_IG21 - ;; size=32 bbWeight=2 PerfScore 18.00 -G_M15401_IG31: ; bbWeight=1, gcVars=00000000000000000000000000005000 {V01 V04}, gcrefRegs=1600000 {x21 x22 x24}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x19 x27] - ; GC ptr vars -{V74} +{V01 V12}
+ b G_M15401_IG18
...

+4 (+0.26%) : 295277.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker:LogErrors(System.Action`1[System.String]):this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T30] ( 4, 4 ) ref -> x20 this class-hnd single-def <ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker> ; V01 arg1 [V01,T06] ( 10, 16 ) ref -> x19 class-hnd single-def <System.Action`1[System.String]> ; V02 loc0 [V02,T36] ( 5, 5 ) ref -> x21 class-hnd single-def <<unknown class>>
-; V03 loc1 [V03 ] ( 40, 90.99) struct (40) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V03 loc1 [V03 ] ( 42, 86.99) struct (40) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V04 loc2 [V04,T38] ( 2, 5.00) ref -> x21 class-hnd exact single-def <<unknown class>> ; V05 loc3 [V05,T07] ( 5, 17 ) int -> x20 ;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ValueTuple`2[Internal.TypeSystem.TypeDesc,System.String]> @@ -77,11 +77,11 @@ ;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V67 tmp60 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V68 tmp61 [V68 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V69 tmp62 [V69,T18] ( 2, 8 ) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.String>
+; V69 tmp62 [V69,T18] ( 2, 8 ) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
;* V70 tmp63 [V70 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V71 tmp64 [V71,T02] ( 4, 32 ) int -> x25 "Inlining Arg"
+; V71 tmp64 [V71,T02] ( 6, 24.00) int -> x24 "Inlining Arg"
;* V72 tmp65 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V73 tmp66 [V73,T09] ( 2, 16 ) byref -> x24 "Inlining Arg"
+; V73 tmp66 [V73,T09] ( 2, 16 ) byref -> x25 "Inlining Arg"
;* V74 tmp67 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V75 tmp68 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp69 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -293,7 +293,7 @@ G_M18368_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=10 ldr w0, [fp, #0x20] // [V03 loc1+0x10] ldr w1, [fp, #0x30] // [V03 loc1+0x20] cmp w0, w1
- bhi G_M18368_IG40
+ bhi G_M18368_IG33
ldr x1, [fp, #0x28] // [V03 loc1+0x18] ; byrRegs +[x1] ubfiz x2, x0, #1, #32 @@ -372,7 +372,7 @@ G_M18368_IG13: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcrRegs -[x0] mov w20, wzr cmp w22, #0
- ble G_M18368_IG30
+ ble G_M18368_IG29
;; size=76 bbWeight=1 PerfScore 24.00 G_M18368_IG14: ; bbWeight=4.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ubfiz x0, x20, #4, #32 @@ -422,7 +422,7 @@ G_M18368_IG16: ; bbWeight=4, gcrefRegs=3280000 {x19 x21 x24 x25}, byrefRe ldr w0, [fp, #0x20] // [V03 loc1+0x10] ldr w1, [fp, #0x30] // [V03 loc1+0x20] cmp w0, w1
- bhi G_M18368_IG40
+ bhi G_M18368_IG33
ldr x2, [fp, #0x28] // [V03 loc1+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -449,7 +449,7 @@ G_M18368_IG17: ; bbWeight=2, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=4 ;; size=40 bbWeight=2 PerfScore 16.00 G_M18368_IG18: ; bbWeight=4, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=4000000 {x26}, byref, isz cmp w27, #2
- blo G_M18368_IG26
+ blo G_M18368_IG31
;; size=8 bbWeight=4 PerfScore 6.00 G_M18368_IG19: ; bbWeight=2.00, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=4000000 {x26}, byref movz x0, #0xD1FFAB1E @@ -471,7 +471,7 @@ G_M18368_IG21: ; bbWeight=2, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0 ldr w0, [fp, #0x20] // [V03 loc1+0x10] ldr w1, [fp, #0x30] // [V03 loc1+0x20] cmp w0, w1
- bhi G_M18368_IG40
+ bhi G_M18368_IG33
ldr x2, [fp, #0x28] // [V03 loc1+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -499,7 +499,7 @@ G_M18368_IG22: ; bbWeight=2, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=1 cmp w27, w26 bhi G_M18368_IG32 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M18368_IG23: ; bbWeight=2.00, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=1000000 {x24}, byref
+G_M18368_IG23: ; bbWeight=2.00, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=1000000 {x24}, byref, isz
add x1, x25, #12 ; byrRegs +[x1] mov w2, w27 @@ -516,17 +516,17 @@ G_M18368_IG23: ; bbWeight=2.00, gcrefRegs=2280000 {x19 x21 x25}, byrefReg ldr w0, [fp, #0x20] // [V03 loc1+0x10] add w0, w0, w27 str w0, [fp, #0x20] // [V03 loc1+0x10]
- ;; size=48 bbWeight=2.00 PerfScore 22.96 -G_M18368_IG24: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ldr w25, [fp, #0x20] // [V03 loc1+0x10]
+ ldr w24, [fp, #0x20] // [V03 loc1+0x10]
ldr w0, [fp, #0x30] // [V03 loc1+0x20]
- cmp w25, w0 - bhi G_M18368_IG40 - ldr x24, [fp, #0x28] // [V03 loc1+0x18] - ; byrRegs +[x24] - tbz w25, #31, G_M18368_IG27 - ;; size=24 bbWeight=4 PerfScore 34.00 -G_M18368_IG25: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
+ cmp w24, w0 + bhi G_M18368_IG33 + ;; size=64 bbWeight=2.00 PerfScore 33.93 +G_M18368_IG24: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + ldr x25, [fp, #0x28] // [V03 loc1+0x18] + ; byrRegs +[x25] + tbz w24, #31, G_M18368_IG26 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M18368_IG25: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=2000000 {x25}, byref
movz x27, #8 movk x27, #0xD1FFAB1E LSL #16 movk x27, #0xD1FFAB1E LSL #32 @@ -540,41 +540,34 @@ G_M18368_IG25: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x27]
- b G_M18368_IG33 - ;; size=44 bbWeight=2 PerfScore 18.00 -G_M18368_IG26: ; bbWeight=0.01, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref - ; gcrRegs -[x27] +[x25] - ; byrRegs -[x24] - add x0, fp, #16 // [V03 loc1] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x27 + ; gcrRegs +[x0] + mov x1, x27 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M18368_IG20 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M18368_IG27: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x25] - ; byrRegs +[x24] - mov x0, x24
+ ; gcrRegs -[x0-x1 x27] + ;; size=68 bbWeight=2 PerfScore 29.00 +G_M18368_IG26: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=2000000 {x25}, byref, isz + mov x0, x25
; byrRegs +[x0]
- sxtw w1, w25
+ sxtw w1, w24
bl <unknown method> ; gcrRegs +[x0]
- ; byrRegs -[x0 x24] - mov x26, x0 - ; gcrRegs +[x26]
+ ; byrRegs -[x0 x25] + mov x24, x0 + ; gcrRegs +[x24]
ldr x1, [fp, #0x18] // [V03 loc1+0x08] ; gcrRegs +[x1] stp xzr, xzr, [fp, #0x10] stp xzr, xzr, [fp, #0x20] str xzr, [fp, #0x30]
- cbz x1, G_M18368_IG29
+ cbz x1, G_M18368_IG28
;; size=36 bbWeight=4 PerfScore 34.00
-G_M18368_IG28: ; bbWeight=1.94, gcrefRegs=4280002 {x1 x19 x21 x26}, byrefRegs=0000 {}, byref
+G_M18368_IG27: ; bbWeight=1.94, gcrefRegs=1280002 {x1 x19 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [x23] ; gcrRegs +[x0] @@ -587,19 +580,19 @@ G_M18368_IG28: ; bbWeight=1.94, gcrefRegs=4280002 {x1 x19 x21 x26}, byref blr x3 ; gcrRegs -[x0-x1] ;; size=32 bbWeight=1.94 PerfScore 23.34
-G_M18368_IG29: ; bbWeight=4, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz - mov x1, x26
+G_M18368_IG28: ; bbWeight=4, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=0000 {}, byref, isz + mov x1, x24
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr x2, [x19, #0x18] blr x2
- ; gcrRegs -[x0-x1 x26]
+ ; gcrRegs -[x0-x1 x24]
add w20, w20, #1 cmp w22, w20 bgt G_M18368_IG14 ;; size=28 bbWeight=4 PerfScore 38.00
-G_M18368_IG30: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M18368_IG29: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -610,7 +603,7 @@ G_M18368_IG30: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x2 ; gcrRegs -[x0 x19] ;; size=24 bbWeight=1 PerfScore 8.50
-G_M18368_IG31: ; bbWeight=1, epilog, nogc, extend
+G_M18368_IG30: ; bbWeight=1, epilog, nogc, extend
ldr x27, [sp, #0x78] ldp x25, x26, [sp, #0x68] ldp x23, x24, [sp, #0x58] @@ -619,8 +612,20 @@ G_M18368_IG31: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x80 ret lr ;; size=28 bbWeight=1 PerfScore 8.00
-G_M18368_IG32: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M18368_IG31: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x21 x25]
+ add x0, fp, #16 // [V03 loc1] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + b G_M18368_IG20 + ;; size=40 bbWeight=0.01 PerfScore 0.05 +G_M18368_IG32: ; bbWeight=0.00, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
add x0, fp, #16 // [V03 loc1] mov x1, x25 ; gcrRegs +[x1] @@ -630,26 +635,22 @@ G_M18368_IG32: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=228 ldr x2, [x2] blr x2 ; gcrRegs -[x1 x25]
- b G_M18368_IG24 - ;; size=32 bbWeight=0.00 PerfScore 0.03 -G_M18368_IG33: ; bbWeight=2, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=1000000 {x24}, byref - ; gcrRegs +[x27] - ; byrRegs +[x24] - mov x0, x27 - ; gcrRegs +[x0] - mov x1, x27 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x27] - b G_M18368_IG27 - ;; size=32 bbWeight=2 PerfScore 15.00
+ ldr w24, [fp, #0x20] // [V03 loc1+0x10] + ldr w0, [fp, #0x30] // [V03 loc1+0x20] + cmp w24, w0 + bls G_M18368_IG24 + ;; size=44 bbWeight=0.00 PerfScore 0.05 +G_M18368_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x21] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0
...

libraries.crossgen2.windows.arm64.checked.mch

-24 (-4.65%) : 24095.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -9,10 +9,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -20,14 +20,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x3 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x11 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x3 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x11 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -41,30 +41,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x11 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x3 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x11 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x3 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -80,27 +80,27 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 tmp64 [V71,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V72 PSPSym [V72,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V73 cse0 [V73,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V74 cse1 [V74,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 tmp64 [V71,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V72 PSPSym [V72,T29] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" +; V73 cse0 [V73,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse1 [V74,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V75 cse2 [V75,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x20] // [V02 loc0]
+ str xzr, [fp, #0x28] // [V02 loc0]
add x2, sp, #96
- str x2, [fp, #0x30] // [V72 PSPSym]
+ str x2, [fp, #0x38] // [V72 PSPSym]
mov x19, x0 mov x20, x1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #16 // [V37 tmp30]
+ add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -115,9 +115,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -127,9 +127,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x20] // [V38 tmp31]
+ ldr x0, [fp, #0x28] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x28] // [V39 tmp32]
+ ldr w1, [fp, #0x30] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x11, xzr ; byrRegs +[x11] @@ -156,15 +156,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0801 {x0 x1 blr x3 ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=36 bbWeight=4 PerfScore 36.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -196,13 +196,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #32 // [V02 loc0]
+ add x0, fp, #40 // [V02 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -218,9 +214,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=56 bbWeight=8 PerfScore 168.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -236,9 +232,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 blr x12 ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=40 bbWeight=1 PerfScore 9.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -249,31 +245,29 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #16 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V37 tmp30]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // function address add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] blr x1 ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38]
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
add x3, fp, #96
- str x3, [sp, #0x10] - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x3, [sp, #0x18] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ...

-24 (-2.86%) : 22008.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)

@@ -9,74 +9,75 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x20] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> x1 "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T22] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T24] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T26] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T24] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T23] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T28] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T26] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T25] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T25] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T21] ( 2, 4 ) int -> x2 "argument with side effect"
+;* V41 tmp32 [V41,T29] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T27] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T23] ( 2, 4 ) int -> x2 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V46 PSPSym [V46,T28] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V47 cse0 [V47,T09] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V48 cse1 [V48,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
+; V46 PSPSym [V46,T30] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V47 cse0 [V47,T13] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V48 cse1 [V48,T09] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V49 cse2 [V49,T14] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V50 cse3 [V50,T10] ( 2, 16 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - stp x23, x24, [sp, #0x58] - str x25, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- add x3, sp, #112 - str x3, [fp, #0x30] // [V46 PSPSym] - str x0, [fp, #0x20] // [V00 arg0]
+ add x3, sp, #96 + str x3, [fp, #0x28] // [V46 PSPSym] + str x0, [fp, #0x18] // [V00 arg0]
; GC ptr vars +{V00} mov w19, w1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 8.00 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr @@ -96,7 +97,7 @@ G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 20.00 G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] ldr w1, [x0, #0x10] cmp w1, #0 @@ -118,7 +119,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 25.50 G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- str wzr, [fp, #0x2C] // [V03 loc0]
+ str wzr, [fp, #0x24] // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -127,7 +128,7 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr x0, [fp, #0x18] // [V00 arg0]
ldr w22, [x0, #0x10] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,11 +169,11 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=132 bbWeight=1 PerfScore 46.00 G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref str w22, [x21, #0x1C]
- str x21, [fp, #0x18] // [V04 loc1]
+ str x21, [fp, #0x10] // [V04 loc1]
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref - ldr x0, [fp, #0x20] // [V00 arg0]
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x22, x0 ; gcrRegs +[x22] @@ -232,12 +233,12 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=56 bbWeight=4 PerfScore 92.00 G_M12834_IG09: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG12
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG11
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG13
+ bhs G_M12834_IG12
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w11, [x1, #0x08] @@ -269,12 +270,8 @@ G_M12834_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG12: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG11 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov x2, x20 @@ -286,50 +283,48 @@ G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x20] ; gcr arg pop 0
- str w0, [fp, #0x2C] // [V03 loc0]
+ str w0, [fp, #0x24] // [V03 loc0]
;; size=32 bbWeight=8 PerfScore 60.00
-G_M12834_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V46 PSPSym] - bl G_M12834_IG18
+G_M12834_IG13: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x28] // [V46 PSPSym] + bl G_M12834_IG17
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12834_IG15: ; bbWeight=1, nogc, extend
+G_M12834_IG14: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0]
+ ldr w0, [fp, #0x24] // [V03 loc0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x68] - ldp x23, x24, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x70
+G_M12834_IG16: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M12834_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48] - add x3, fp, #112 - str x3, [sp, #0x10] - ;; size=28 bbWeight=1 PerfScore 6.50 -G_M12834_IG19: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + add x3, fp, #96 + str x3, [sp, #0x18] + ;; size=24 bbWeight=1 PerfScore 5.50 +G_M12834_IG18: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04}
- ldr w0, [fp, #0x2C] // [V03 loc0] - cbnz w0, G_M12834_IG24 - ldr x0, [fp, #0x20] // [V00 arg0]
+ ldr w0, [fp, #0x24] // [V03 loc0] + cbnz w0, G_M12834_IG23 + ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] ldr w20, [x19, #0x14] ...

-12 (-2.40%) : 24757.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)

@@ -9,32 +9,33 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> -; V01 loc0 [V01,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T11] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> +; V01 loc0 [V01,T16] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Object>
; V02 loc1 [V02 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Tracing.DiagnosticCounter> ; V05 loc4 [V05,T06] ( 3, 10 ) ref -> x0 class-hnd <<unknown class>>
-; V06 loc5 [V06,T08] ( 3, 6 ) ref -> x0 class-hnd <<unknown class>> -; V07 loc6 [V07,T09] ( 3, 6 ) ref -> x0 class-hnd <<unknown class>>
+; V06 loc5 [V06,T09] ( 3, 6 ) ref -> x0 class-hnd <<unknown class>> +; V07 loc6 [V07,T10] ( 3, 6 ) ref -> x0 class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T12] ( 2, 4 ) ubyte -> x1 "Inlining Arg" -; V10 tmp2 [V10,T11] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V09 tmp1 [V09,T13] ( 2, 4 ) ubyte -> x1 "Inlining Arg" +; V10 tmp2 [V10,T12] ( 2, 4 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T02] ( 4, 17 ) ref -> x19 single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T04] ( 4, 12 ) ref -> x22 "field V03._current (fldOffset=0x8)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 12 ) ref -> x22 "field V03._current (fldOffset=0x8)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 21 ) int -> x21 "field V03._index (fldOffset=0x10)" P-INDEP
-; V17 tmp9 [V17,T05] ( 3, 13 ) int -> x20 "field V03._version (fldOffset=0x14)" P-INDEP -; V18 tmp10 [V18,T13] ( 3, 3 ) ref -> x19 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V17 tmp9 [V17,T07] ( 2, 9 ) int -> x20 "field V03._version (fldOffset=0x14)" P-INDEP +; V18 tmp10 [V18,T14] ( 3, 3 ) ref -> x19 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V21 tmp13 [V21,T14] ( 2, 2 ) int -> x20 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp12 [V20,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V21 tmp13 [V21,T15] ( 2, 2 ) int -> x20 "field V11._version (fldOffset=0x14)" P-INDEP
; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> x0 "arr expr"
-; V23 PSPSym [V23,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T16] ( 3, 1.50) ref -> x0 "CSE - moderate" -; V25 cse1 [V25,T03] ( 3, 20 ) int -> x22 "CSE - aggressive"
+; V23 PSPSym [V23,T19] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T17] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V25 cse1 [V25,T05] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V26 cse2 [V26,T04] ( 2, 16 ) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 32 @@ -62,7 +63,7 @@ G_M25759_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; GC ptr vars +{V01} str wzr, [fp, #0x20] // [V02 loc1] ;; size=28 bbWeight=1 PerfScore 10.00
-G_M25759_IG03: ; bbWeight=1, gcVars=0000000000008000 {V01}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG03: ; bbWeight=1, gcVars=0000000000010000 {V01}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V02 loc1] cbnz w1, G_M25759_IG09 add x1, fp, #32 // [V02 loc1] @@ -96,19 +97,19 @@ G_M25759_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov w21, wzr ;; size=12 bbWeight=1 PerfScore 6.50 G_M25759_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w22, [x19, #0x14] - cmp w20, w22 - bne G_M25759_IG12
+ ldr w0, [x19, #0x14] + cmp w20, w0 + bne G_M25759_IG13
;; size=12 bbWeight=8 PerfScore 36.00 G_M25759_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x10] cmp w21, w0
- bhs G_M25759_IG15
+ bhs G_M25759_IG14
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w11, [x0, #0x08] cmp w21, w11
- bhs G_M25759_IG13
+ bhs G_M25759_IG12
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -181,20 +182,15 @@ G_M25759_IG11: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { ; gcr arg pop 0 b G_M25759_IG06 ;; size=44 bbWeight=2 PerfScore 25.00
-G_M25759_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- cmp w20, w22 - bne G_M25759_IG14 - b G_M25759_IG15 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] blr x0 ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25759_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -202,11 +198,11 @@ G_M25759_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M25759_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V02 loc1]
- cbz w0, G_M25759_IG17
+ cbz w0, G_M25759_IG16
;; size=8 bbWeight=1 PerfScore 3.00
-G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V01 loc0] ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -217,41 +213,41 @@ G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M25759_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M25759_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M25759_IG18: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V01 V15}
+G_M25759_IG17: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V01 V16}
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M25759_IG19: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG18: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V02 loc1]
- cbz w0, G_M25759_IG20
+ cbz w0, G_M25759_IG19
ldr x0, [fp, #0x18] // [V01 loc0] ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11]
- ; GC ptr vars -{V01 V15}
+ ; GC ptr vars -{V01 V16}
blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M25759_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M25759_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 500, prolog size 28, PerfScore 248.25, instruction count 125, allocated bytes for code 500 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
+; Total bytes of code 488, prolog size 28, PerfScore 238.25, instruction count 122, allocated bytes for code 488 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
; ============================================================ Unwind Info: @@ -262,7 +258,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 106 (0x0006a) Actual length = 424 (0x0001a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -299,4 +295,4 @@ Unwind Info: *************** EH table for System.Diagnostics.Tracing.CounterGroup:ResetCounters():this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M25759_IG03..G_M25759_IG15) handled by [G_M25759_IG18..END) (fault)
+EH#0: try [G_M25759_IG03..G_M25759_IG14) handled by [G_M25759_IG17..END) (fault)
+0 (0.00%) : 264605.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
@@ -10,36 +10,36 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T26] ( 4, 4 ) int -> x24 single-def
-; V01 arg1 [V01,T14] ( 4, 35 ) int -> x19 single-def -; V02 arg2 [V02,T16] ( 3, 34 ) int -> x21 single-def -; V03 arg3 [V03 ] ( 5, 354 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def -; V04 arg4 [V04,T24] ( 3, 6 ) ref -> x23 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> -; V05 arg5 [V05,T15] ( 3, 34 ) ref -> x20 class-hnd single-def <ReadyToRunJittedMethods> -; V06 arg6 [V06,T23] ( 7, 8.50) int -> x22 single-def -; V07 loc0 [V07,T22] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
+; V01 arg1 [V01,T20] ( 4, 7 ) int -> x20 single-def +; V02 arg2 [V02,T23] ( 3, 6 ) int -> x23 single-def +; V03 arg3 [V03 ] ( 5, 326 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def +; V04 arg4 [V04,T21] ( 3, 6 ) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]> +; V05 arg5 [V05,T22] ( 3, 6 ) ref -> x22 class-hnd single-def <ReadyToRunJittedMethods> +; V06 arg6 [V06,T19] ( 7, 8.50) int -> x19 single-def +; V07 loc0 [V07,T18] ( 7, 15 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Threading.AutoResetEvent>
; V08 loc1 [V08,T07] ( 8, 125.50) ref -> x26 class-hnd exact single-def <<unknown class>>
-; V09 loc2 [V09 ] ( 4, 353 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op -; V10 loc3 [V10,T20] ( 3, 24 ) ubyte -> x22 -; V11 loc4 [V11,T21] ( 12, 21.04) int -> x27 -; V12 loc5 [V12,T10] ( 7, 134 ) int -> x24 -; V13 loc6 [V13,T17] ( 2, 36 ) ref -> x22 class-hnd <ProcessInfo> -; V14 loc7 [V14,T06] ( 4, 196 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> -;* V15 loc8 [V15,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V09 loc2 [V09 ] ( 4, 325 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op +; V10 loc3 [V10,T15] ( 3, 24 ) ubyte -> x19 +; V11 loc4 [V11,T17] ( 12, 21.04) int -> x27 +; V12 loc5 [V12,T16] ( 7, 22 ) int -> x24 +; V13 loc6 [V13,T24] ( 2, 8 ) ref -> x19 class-hnd <ProcessInfo> +; V14 loc7 [V14,T06] ( 4, 168 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> +;* V15 loc8 [V15,T14] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V16 loc9 [V16,T04] ( 5, 288 ) int -> x28 ; V17 loc10 [V17,T01] ( 5, 768 ) ref -> [fp+0x10] class-hnd spill-single-def <ParallelRunner+ProcessSlot> ;* V18 loc11 [V18,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V19 loc12 [V19,T12] ( 5, 72 ) int -> x24
+; V19 loc12 [V19,T11] ( 5, 72 ) int -> x24
; V20 loc13 [V20,T09] ( 4, 160 ) ref -> x27 class-hnd <ParallelRunner+ProcessSlot> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T27] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
-; V23 tmp2 [V23,T18] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
+; V23 tmp2 [V23,T13] ( 8, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>
;* V24 tmp3 [V24,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp4 [V25,T00] ( 4,2048 ) ref -> x27 class-hnd "Inlining Arg" <ProcessRunner>
-;* V26 tmp5 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x19 class-hnd "Inlining Arg" <ProcessRunner>
+;* V26 tmp5 [V26,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> x20 class-hnd "Inlining Arg" <ProcessRunner>
; V28 PSPSym [V28,T28] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T03] ( 3, 384 ) ref -> x0 "CSE - aggressive"
-; V30 cse1 [V30,T11] ( 3, 96 ) ref -> x0 "CSE - aggressive"
+; V30 cse1 [V30,T10] ( 3, 96 ) ref -> x0 "CSE - aggressive"
; V31 cse2 [V31,T08] ( 9, 161.04) int -> [fp+0x24] multi-def "CSE - aggressive" ; ; Lcl frame size = 48 @@ -57,15 +57,15 @@ G_M64833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x7, [fp, #0x38] // [V28 PSPSym] str w3, [fp, #0x34] // [V03 arg3] mov w24, w0
- mov w19, w1 - mov w21, w2 - mov x23, x4 - ; gcrRegs +[x23] - mov x20, x5 - ; gcrRegs +[x20] - mov w22, w6
+ mov w20, w1 + mov w23, w2 + mov x21, x4 + ; gcrRegs +[x21] + mov x22, x5 + ; gcrRegs +[x22] + mov w19, w6
;; size=68 bbWeight=1 PerfScore 13.00
-G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+G_M64833_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -84,8 +84,8 @@ G_M64833_IG02: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 { str x25, [fp, #0x18] // [V07 loc0] ; GC ptr vars +{V07} ;; size=44 bbWeight=1 PerfScore 12.00
-G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw x0, w22
+G_M64833_IG03: ; bbWeight=1, gcVars=0000000000040000 {V07}, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=0000 {}, gcvars, byref, isz + sxtw x0, w19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -95,16 +95,16 @@ G_M64833_IG03: ; bbWeight=1, gcVars=0000000000400000 {V07}, gcrefRegs=290 mov x26, x0 ; gcrRegs +[x26] mov w27, wzr
- cmp w22, #0
+ cmp w19, #0
ble G_M64833_IG06 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG04: ; bbWeight=0.50, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w28, [x26, #0x08]
- cmp w28, w22
+ cmp w28, w19
blt G_M64833_IG14 ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -134,16 +134,16 @@ G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG05 ;; size=84 bbWeight=3.96 PerfScore 83.16
-G_M64833_IG06: ; bbWeight=1, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG06: ; bbWeight=1, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
str w24, [fp, #0x28] // [V09 loc2]
- cmp w24, w19
+ cmp w24, w20
bge G_M64833_IG19 ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref - mov x0, x23
+G_M64833_IG07: ; bbWeight=4, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref + mov x0, x21
; gcrRegs +[x0] mov w1, w24 adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -152,12 +152,12 @@ G_M64833_IG07: ; bbWeight=4, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRe ldr x2, [x11] blr x2 ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x19, x0 + ; gcrRegs +[x19]
mov x27, xzr ; gcrRegs +[x27] ;; size=36 bbWeight=4 PerfScore 40.00
-G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG08: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov w28, wzr ldr w0, [x26, #0x08] @@ -166,7 +166,7 @@ G_M64833_IG08: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} cmp w3, #0 ble G_M64833_IG11 ;; size=24 bbWeight=32 PerfScore 208.00
-G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG09: ; bbWeight=64, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add x0, x26, #16 ; byrRegs +[x0] ldr x4, [x0, w28, UXTW #3] @@ -178,17 +178,17 @@ G_M64833_IG09: ; bbWeight=64, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27} ; byrRegs -[x0] cbnz x0, G_M64833_IG15 ;; size=20 bbWeight=64 PerfScore 544.00
-G_M64833_IG10: ; bbWeight=128, gcVars=0000000000400002 {V07 V17}, gcrefRegs=6D00010 {x4 x20 x22 x23 x25 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M64833_IG10: ; bbWeight=128, gcVars=0000000000040002 {V07 V17}, gcrefRegs=6680010 {x4 x19 x21 x22 x25 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x27] mov x27, x4 ; gcrRegs +[x27] ;; size=4 bbWeight=128 PerfScore 64.00
-G_M64833_IG11: ; bbWeight=32, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG11: ; bbWeight=32, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] ; GC ptr vars -{V17} cbnz x27, G_M64833_IG18 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG12: ; bbWeight=8, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -201,15 +201,15 @@ G_M64833_IG12: ; bbWeight=8, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, b G_M64833_IG08 ;; size=28 bbWeight=8 PerfScore 56.00 G_M64833_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22-x23 x25-x27]
+ ; gcrRegs -[x19 x21-x22 x25-x27]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] blr x0 ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20 x23 x25-x26]
+G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6600000 {x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x21-x22 x25-x26]
adrp x11, [HIGH RELOC #0xD1FFAB1E] add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -241,12 +241,12 @@ G_M64833_IG14: ; bbWeight=0.04, gcrefRegs=6900000 {x20 x23 x25 x26}, byre ; gcrRegs -[x0 x15] ; byrRegs -[x14] add w27, w27, #1
- cmp w27, w22
+ cmp w27, w19
blt G_M64833_IG14 b G_M64833_IG06 ;; size=96 bbWeight=0.04 PerfScore 0.94
-G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRegs=ED00011 {x0 x4 x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x4 x22 x27]
+G_M64833_IG15: ; bbWeight=256, gcVars=0000000000040002 {V07 V17}, gcrefRegs=E680011 {x0 x4 x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0 x4 x19 x27]
; GC ptr vars +{V01 V17} add x2, fp, #52 // [V03 arg3] add x1, fp, #40 // [V09 loc2] @@ -283,7 +283,7 @@ G_M64833_IG15: ; bbWeight=256, gcVars=0000000000400002 {V07 V17}, gcrefRe ; gcrRegs +[x4] b G_M64833_IG10 ;; size=96 bbWeight=256 PerfScore 8064.00
-G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M64833_IG16: ; bbWeight=64, gcVars=0000000000040000 {V07}, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4 x28] +[x27] ; GC ptr vars -{V01 V17} add w28, w28, #1 @@ -292,33 +292,33 @@ G_M64833_IG16: ; bbWeight=64, gcVars=0000000000400000 {V07}, gcrefRegs=ED str w2, [fp, #0x24] // [V31 cse2] bgt G_M64833_IG09 ;; size=20 bbWeight=64 PerfScore 320.00
-G_M64833_IG17: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M64833_IG17: ; bbWeight=32, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
b G_M64833_IG11 ;; size=4 bbWeight=32 PerfScore 32.00
-G_M64833_IG18: ; bbWeight=32, gcrefRegs=ED00000 {x20 x22 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M64833_IG18: ; bbWeight=4, gcrefRegs=E680000 {x19 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
add w3, w24, #1 mov x0, x27 ; gcrRegs +[x0] ldr w6, [fp, #0x34] // [V03 arg3]
- mov x1, x22
+ mov x1, x19
; gcrRegs +[x1]
- mov x2, x20
+ mov x2, x22
; gcrRegs +[x2]
- mov w4, w21
+ mov w4, w23
ldr w5, [fp, #0x28] // [V09 loc2] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x7, [x11] ...

+8 (+0.09%) : 23691.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

@@ -23,9 +23,9 @@ ;* V11 loc10 [V11 ] ( 0, 0 ) int -> zero-ref ptr ;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr <System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo> ; V13 loc12 [V13,T63] ( 5, 14 ) ref -> x24 class-hnd <System.String>
-; V14 loc13 [V14,T90] ( 3, 8 ) ubyte -> x25 -; V15 loc14 [V15,T82] ( 4, 10 ) ref -> x26 class-hnd <System.String> -; V16 loc15 [V16,T87] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
+; V14 loc13 [V14,T89] ( 3, 8 ) ubyte -> x25 +; V15 loc14 [V15,T81] ( 4, 10 ) ref -> x26 class-hnd <System.String> +; V16 loc15 [V16,T86] ( 4, 8 ) ref -> x25 class-hnd exact <System.Diagnostics.Tracing.EventChannelAttribute>
; V17 loc16 [V17,T148] ( 2, 4 ) int -> x24 ld-addr-op ;* V18 loc17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ptr <System.Collections.Generic.List`1[int]> ;* V19 loc18 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> @@ -34,7 +34,7 @@ ; V22 loc21 [V22,T23] ( 7, 28 ) ref -> x21 class-hnd <System.Type> ; V23 loc22 [V23,T58] ( 3, 16 ) ubyte -> x22 ; V24 loc23 [V24,T51] ( 7, 16 ) ref -> x23 class-hnd <System.String>
-; V25 loc24 [V25,T92] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
+; V25 loc24 [V25,T91] ( 2, 8 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]>
; V26 loc25 [V26,T59] ( 3, 16 ) ubyte -> x25 ; V27 loc26 [V27,T32] ( 3, 24 ) ref -> x24 class-hnd <System.Reflection.FieldInfo[]> ; V28 loc27 [V28,T06] ( 5, 68 ) int -> x26 @@ -50,22 +50,22 @@ ;* V38 loc37 [V38 ] ( 0, 0 ) long -> zero-ref ld-addr-op ptr ; V39 loc38 [V39 ] ( 2, 4 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op ptr ;* V40 loc39 [V40 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
-; V41 loc40 [V41,T83] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> -; V42 loc41 [V42,T48] ( 5, 17 ) int -> x22
+; V41 loc40 [V41,T82] ( 4, 10 ) ref -> x20 class-hnd exact single-def <<unknown class>> +; V42 loc41 [V42,T49] ( 5, 17 ) int -> x22
; V43 loc42 [V43,T64] ( 5, 14 ) ref -> x23 class-hnd exact <System.String>
-; V44 loc43 [V44,T84] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
+; V44 loc43 [V44,T83] ( 4, 10 ) ref -> x24 class-hnd exact <System.String>
;# V45 OutArgs [V45 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V46 tmp1 [V46 ] ( 1, 1 ) struct (32) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V47 tmp2 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V48 tmp3 [V48,T106] ( 4, 6 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V49 tmp4 [V49 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V50 tmp5 [V50,T80] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
+; V50 tmp5 [V50,T79] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]>
; V51 tmp6 [V51,T70] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V52 tmp7 [V52 ] ( 0, 0 ) ref -> zero-ref ptr
-; V53 tmp8 [V53,T38] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> -; V54 tmp9 [V54,T39] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V53 tmp8 [V53,T39] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder> +; V54 tmp9 [V54,T40] ( 5, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V55 tmp10 [V55 ] ( 0, 0 ) ref -> zero-ref ptr
-; V56 tmp11 [V56,T45] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V56 tmp11 [V56,T46] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V57 tmp12 [V57 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V58 tmp13 [V58,T107] ( 4, 6 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V59 tmp14 [V59 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -116,18 +116,18 @@ ; V104 tmp59 [V104,T126] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ulong]> ; V105 tmp60 [V105,T71] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V106 tmp61 [V106 ] ( 0, 0 ) ref -> zero-ref ptr
-; V107 tmp62 [V107,T40] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V107 tmp62 [V107,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
;* V108 tmp63 [V108 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[ushort]> ;* V109 tmp64 [V109 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V110 tmp65 [V110,T14] ( 8, 32 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V111 tmp66 [V111 ] ( 0, 0 ) ref -> zero-ref ptr ;* V112 tmp67 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "impAppendStmt" <System.Text.StringBuilder> ;* V113 tmp68 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp69 [V114,T46] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V114 tmp69 [V114,T47] ( 4, 18 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V115 tmp70 [V115 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V116 tmp71 [V116,T136] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V117 tmp72 [V117 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-; V118 tmp73 [V118,T88] ( 3, 8 ) ref -> x23
+; V118 tmp73 [V118,T87] ( 3, 8 ) ref -> x23
; V119 tmp74 [V119,T11] ( 8, 40 ) ref -> x24 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V120 tmp75 [V120 ] ( 0, 0 ) ref -> zero-ref ptr ;* V121 tmp76 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "non-inline candidate call" <System.Text.StringBuilder> @@ -156,10 +156,10 @@ ; V144 tmp99 [V144,T127] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[int]> ; V145 tmp100 [V145,T73] ( 3, 12 ) ref -> x0 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V146 tmp101 [V146 ] ( 0, 0 ) ref -> zero-ref ptr
-; V147 tmp102 [V147,T41] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
+; V147 tmp102 [V147,T42] ( 5, 20 ) ref -> x25 class-hnd exact "impAppendStmt" <System.Text.StringBuilder>
; V148 tmp103 [V148,T53] ( 4, 16 ) ref -> x25 class-hnd exact "dup spill" <System.Text.StringBuilder> ;* V149 tmp104 [V149 ] ( 0, 0 ) ref -> zero-ref ptr
-; V150 tmp105 [V150,T47] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V150 tmp105 [V150,T48] ( 4, 18 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V151 tmp106 [V151 ] ( 0, 0 ) ref -> zero-ref single-def ptr ; V152 tmp107 [V152,T139] ( 4, 4 ) ref -> x21 class-hnd exact single-def "dup spill" <System.Text.StringBuilder> ;* V153 tmp108 [V153 ] ( 0, 0 ) ref -> zero-ref single-def ptr @@ -175,8 +175,8 @@ ;* V163 tmp118 [V163 ] ( 0, 0 ) ref -> zero-ref ptr ;* V164 tmp119 [V164 ] ( 0, 0 ) ref -> zero-ref ;* V165 tmp120 [V165 ] ( 0, 0 ) ref -> zero-ref ptr
-; V166 tmp121 [V166,T81] ( 5, 10 ) ref -> x2 -; V167 tmp122 [V167,T42] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
+; V166 tmp121 [V166,T80] ( 5, 10 ) ref -> x2 +; V167 tmp122 [V167,T43] ( 5, 20 ) ref -> x22 class-hnd exact "dup spill" <System.Text.StringBuilder>
;* V168 tmp123 [V168 ] ( 0, 0 ) ref -> zero-ref ptr ; V169 tmp124 [V169,T74] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <<unknown class>> ; V170 tmp125 [V170,T75] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> @@ -186,7 +186,7 @@ ; V174 tmp129 [V174,T141] ( 4, 4 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V175 tmp130 [V175,T152] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V176 tmp131 [V176,T164] ( 2, 2 ) struct (40) [fp+0x60] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]>
-; V177 tmp132 [V177,T85] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V177 tmp132 [V177,T84] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V178 tmp133 [V178,T66] ( 4, 12 ) int -> x15 "Inline stloc first use temp" ; V179 tmp134 [V179,T165] ( 2, 2 ) struct (32) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op ptr "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Diagnostics.Tracing.ManifestBuilder+ChannelInfo]]> ;* V180 tmp135 [V180 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> @@ -195,7 +195,7 @@ ;* V183 tmp138 [V183 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V184 tmp139 [V184,T28] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V185 tmp140 [V185,T55] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V186 tmp141 [V186,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V186 tmp141 [V186,T96] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V187 tmp142 [V187 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V188 tmp143 [V188 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]> ;* V189 tmp144 [V189 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Type]> @@ -229,7 +229,7 @@ ;* V217 tmp172 [V217 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ; V218 tmp173 [V218,T29] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> ; V219 tmp174 [V219,T57] ( 4, 16 ) ref -> x24 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
-;* V220 tmp175 [V220,T98] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V220 tmp175 [V220,T97] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V221 tmp176 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V222 tmp177 [V222 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ulong]> ; V223 tmp178 [V223,T30] ( 6, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.__Canon> @@ -239,10 +239,10 @@ ;* V227 tmp182 [V227 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V228 tmp183 [V228 ] ( 0, 0 ) int -> zero-ref ;* V229 tmp184 [V229 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V230 tmp185 [V230,T99] ( 2, 8 ) long -> x0 "Inlining Arg"
+; V230 tmp185 [V230,T98] ( 2, 8 ) long -> x0 "Inlining Arg"
;* V231 tmp186 [V231 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V232 tmp187 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V233 tmp188 [V233,T43] ( 5, 20 ) int -> x24 "Inlining Arg"
+; V233 tmp188 [V233,T44] ( 5, 20 ) int -> x24 "Inlining Arg"
;* V234 tmp189 [V234 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V235 tmp190 [V235 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V236 tmp191 [V236 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -255,7 +255,7 @@ ;* V243 tmp198 [V243 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V244 tmp199 [V244 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V245 tmp200 [V245 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V246 tmp201 [V246,T100] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V246 tmp201 [V246,T99] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V247 tmp202 [V247 ] ( 0, 0 ) ref -> zero-ref class-hnd ptr "Inline stloc first use temp" <System.Collections.Generic.List`1[ulong]> ;* V248 tmp203 [V248 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> ; V249 tmp204 [V249,T122] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -265,8 +265,8 @@ ;* V253 tmp208 [V253,T179] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V254 tmp209 [V254 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V255 tmp210 [V255 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V256 tmp211 [V256,T89] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP -; V257 tmp212 [V257,T91] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
+; V256 tmp211 [V256,T88] ( 3, 8 ) ref -> x1 "field V08.value (fldOffset=0x0)" P-INDEP +; V257 tmp212 [V257,T90] ( 3, 8 ) int -> x2 "field V08.key (fldOffset=0x8)" P-INDEP
; V258 tmp213 [V258,T27] ( 7, 24 ) ref -> x22 "field V10.value (fldOffset=0x0)" P-INDEP ; V259 tmp214 [V259,T123] ( 2, 6 ) int -> x23 "field V10.key (fldOffset=0x8)" P-INDEP ; V260 tmp215 [V260,T65] ( 4, 12.50) ref -> x21 single-def "field V19._list (fldOffset=0x0)" P-INDEP @@ -279,9 +279,9 @@ ; V267 tmp222 [V267 ] ( 3, 5 ) int -> [fp+0xAC] do-not-enreg[X] addr-exposed ptr "field V21._version (fldOffset=0x14)" P-DEP ;* V268 tmp223 [V268 ] ( 0, 0 ) byref -> zero-ref ptr "field V33._reference (fldOffset=0x0)" P-INDEP ;* V269 tmp224 [V269 ] ( 0, 0 ) int -> zero-ref ptr "field V33._length (fldOffset=0x8)" P-INDEP
-; V270 tmp225 [V270,T49] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
+; V270 tmp225 [V270,T38] ( 4, 17 ) ref -> x21 single-def "field V34._list (fldOffset=0x0)" P-INDEP
; V271 tmp226 [V271,T24] ( 6, 21 ) int -> x23 "field V34._index (fldOffset=0x8)" P-INDEP
-; V272 tmp227 [V272,T86] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
+; V272 tmp227 [V272,T85] ( 2, 9 ) int -> x22 "field V34._version (fldOffset=0xc)" P-INDEP
; V273 tmp228 [V273,T68] ( 3, 8 ) int -> x24 "field V34._current (fldOffset=0x10)" P-INDEP ; V274 tmp229 [V274,T50] ( 4, 12.50) ref -> x21 single-def "field V37._list (fldOffset=0x0)" P-INDEP ; V275 tmp230 [V275,T69] ( 3, 8 ) long -> x24 "field V37._current (fldOffset=0x8)" P-INDEP @@ -360,7 +360,7 @@ ; V348 tmp303 [V348,T178] ( 2, 1 ) int -> x1 "V179.[012..016)" ; V349 tmp304 [V349,T77] ( 3, 12 ) byref -> x0 "BlockOp address local" ; V350 tmp305 [V350,T160] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V351 tmp306 [V351,T93] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V351 tmp306 [V351,T92] ( 2, 8 ) ref -> x0 "argument with side effect"
; V352 tmp307 [V352,T161] ( 2, 2 ) ref -> x1 single-def "argument with side effect" ; V353 tmp308 [V353,T33] ( 3, 24 ) ref -> x1 "arr expr" ; V354 tmp309 [V354,T62] ( 2, 16 ) ref -> x1 "argument with side effect" @@ -369,9 +369,9 @@ ; V357 tmp312 [V357,T18] ( 2, 32 ) ref -> x4 "argument with side effect" ; V358 tmp313 [V358,T19] ( 2, 32 ) ref -> [fp+0x18] spill-single-def ptr "argument with side effect" ; V359 tmp314 [V359,T20] ( 2, 32 ) ref -> x25 "argument with side effect"
-; V360 tmp315 [V360,T94] ( 2, 8 ) ref -> x0 "argument with side effect" -; V361 tmp316 [V361,T95] ( 2, 8 ) ref -> x3 "argument with side effect" -; V362 tmp317 [V362,T96] ( 2, 8 ) ref -> x22 "argument with side effect"
+; V360 tmp315 [V360,T93] ( 2, 8 ) ref -> x0 "argument with side effect" +; V361 tmp316 [V361,T94] ( 2, 8 ) ref -> x3 "argument with side effect" +; V362 tmp317 [V362,T95] ( 2, 8 ) ref -> x22 "argument with side effect"
; V363 tmp318 [V363,T146] ( 2, 4 ) ref -> x1 single-def "argument with side effect" ; V364 tmp319 [V364,T34] ( 3, 24 ) ref -> x1 "arr expr" ; V365 tmp320 [V365,T162] ( 2, 2 ) ref -> x1 single-def "argument with side effect" @@ -383,9 +383,9 @@ ; V371 cse1 [V371,T04] ( 18, 72 ) ref -> x0 multi-def "CSE - aggressive" ; V372 cse2 [V372,T130] ( 3, 5 ) long -> x22 "CSE - conservative" ; V373 cse3 [V373,T131] ( 3, 5 ) long -> x21 "CSE - conservative"
-; V374 cse4 [V374,T44] ( 3, 20 ) long -> x1 "CSE - moderate" -; V375 cse5 [V375,T78] ( 2, 8 ) int -> x1 "CSE - conservative" -; V376 cse6 [V376,T79] ( 2, 8 ) int -> x1 "CSE - conservative"
+; V374 cse4 [V374,T45] ( 3, 20 ) long -> x1 "CSE - moderate" +; V375 cse5 [V375,T100] ( 2, 8 ) int -> x1 "CSE - conservative" +; V376 cse6 [V376,T78] ( 2, 8 ) int -> x1 "CSE - conservative"
; V377 cse7 [V377,T36] ( 3, 24 ) int -> x27 "CSE - moderate" ; V378 cse8 [V378,T00] (149,220 ) long -> [fp+0x38] multi-def "CSE - aggressive" ; @@ -1802,6 +1802,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 str x0, [fp, #0x20] // [V356 tmp311] @@ -1889,7 +1890,7 @@ G_M21650_IG67: ; bbWeight=8, gcrefRegs=11A80000 {x19 x21 x23 x24 x28}, by blr x3 ; gcrRegs -[x0 x25] ; byrRegs -[x1]
- ;; size=260 bbWeight=8 PerfScore 684.00
+ ;; size=264 bbWeight=8 PerfScore 708.00
G_M21650_IG68: ; bbWeight=8, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=100000 {x20}, byref mov w25, #1 ;; size=4 bbWeight=8 PerfScore 4.00 @@ -1930,6 +1931,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr wzr, [x0]
ldr x1, [x11] blr x1 ; gcrRegs -[x21] @@ -2000,7 +2002,7 @@ G_M21650_IG72: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=10 blr x3 ; gcrRegs -[x0 x21] ; byrRegs -[x1]
- ;; size=212 bbWeight=2 PerfScore 144.00
+ ;; size=216 bbWeight=2 PerfScore 150.00
G_M21650_IG73: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref, isz ldr x21, [x19, #0x38] ; gcrRegs +[x21] @@ -3761,7 +3763,7 @@ G_M21650_IG150: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8476, prolog size 80, PerfScore 5811.50, instruction count 2119, allocated bytes for code 8476 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
+; Total bytes of code 8484, prolog size 80, PerfScore 5841.50, instruction count 2121, allocated bytes for code 8484 (MethodHash=ecf5ab6d) for method System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -3772,7 +3774,7 @@ Unwind Info: E bit : 0 ...

+12 (+0.54%) : 157542.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -9,54 +9,55 @@ ; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T15] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T16] ( 15, 14.50) ref -> x23 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T07] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T13] ( 6, 19.50) int -> x22 single-def -; V03 arg3 [V03,T10] ( 8, 29.50) ubyte -> x20 single-def -; V04 arg4 [V04,T30] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T12] ( 4, 20 ) int -> x21 single-def -; V06 arg6 [V06,T31] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T32] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> -; V08 arg8 [V08,T40] ( 1, 1 ) ubyte -> [fp+0xD0] single-def -; V09 arg9 [V09,T16] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> -; V10 arg10 [V10,T33] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T28] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T14] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T27] ( 5, 5.50) ubyte -> [fp+0x7C] -; V14 loc3 [V14,T29] ( 3, 5 ) int -> x26 single-def
+; V02 arg2 [V02,T14] ( 6, 19.50) int -> x22 single-def +; V03 arg3 [V03,T13] ( 7, 21.50) ubyte -> x21 single-def +; V04 arg4 [V04,T31] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T12] ( 4, 20 ) int -> x20 single-def +; V06 arg6 [V06,T32] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T33] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]> +; V08 arg8 [V08,T41] ( 1, 1 ) ubyte -> [fp+0xD0] single-def +; V09 arg9 [V09,T17] ( 6, 14 ) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> +; V10 arg10 [V10,T34] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T29] ( 9, 5 ) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T15] ( 6, 18.50) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T28] ( 5, 5.50) ubyte -> [fp+0x7C] +; V14 loc3 [V14,T30] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T11] ( 6, 24.50) int -> x27
-; V16 loc5 [V16,T02] ( 15, 82 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V16 loc5 [V16,T02] ( 15, 74 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V17 loc6 [V17,T08] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> ; V18 loc7 [V18,T09] ( 9, 32 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> ; V19 loc8 [V19,T00] ( 8, 84 ) int -> [fp+0x78] ; V20 loc9 [V20,T01] ( 8, 84 ) int -> [fp+0x74]
-;* V21 loc10 [V21,T37] ( 0, 0 ) int -> zero-ref -; V22 loc11 [V22,T06] ( 4, 50 ) int -> [fp+0x70]
+;* V21 loc10 [V21,T38] ( 0, 0 ) int -> zero-ref +; V22 loc11 [V22,T05] ( 4, 50 ) int -> [fp+0x70]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T17] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V28 tmp2 [V28,T19] ( 8, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T18] ( 9, 9 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V28 tmp2 [V28,T20] ( 8, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V29 tmp3 [V29 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V30 tmp4 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V31 tmp5 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V32 tmp6 [V32,T18] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V33 tmp7 [V33,T38] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V34 tmp8 [V34,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V35 tmp9 [V35,T34] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> -; V36 tmp10 [V36,T25] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V37 tmp11 [V37,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V38 tmp12 [V38,T36] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> -; V39 tmp13 [V39,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V32 tmp6 [V32,T19] ( 9, 9 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V33 tmp7 [V33,T39] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V34 tmp8 [V34,T40] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V35 tmp9 [V35,T35] ( 3, 3 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase> +; V36 tmp10 [V36,T26] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V37 tmp11 [V37,T27] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V38 tmp12 [V38,T37] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.PropertyInfo> +; V39 tmp13 [V39,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
; V40 tmp14 [V40,T03] ( 2, 64 ) ref -> x1 "argument with side effect" ; V41 tmp15 [V41,T04] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V42 tmp16 [V42,T23] ( 2, 8 ) int -> x3 "argument with side effect" -; V43 tmp17 [V43,T24] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" -; V44 tmp18 [V44,T20] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V45 tmp19 [V45,T21] ( 2, 8 ) ref -> x0 "argument with side effect" -; V46 tmp20 [V46,T22] ( 2, 8 ) ref -> x0 "argument with side effect" -; V47 cse0 [V47,T05] ( 5, 52 ) int -> x4 multi-def "CSE - aggressive"
+; V42 tmp16 [V42,T24] ( 2, 8 ) int -> x3 "argument with side effect" +; V43 tmp17 [V43,T25] ( 2, 8 ) int -> [fp+0x54] spill-single-def "argument with side effect" +; V44 tmp18 [V44,T21] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" +; V45 tmp19 [V45,T22] ( 2, 8 ) ref -> x0 "argument with side effect" +; V46 tmp20 [V46,T23] ( 2, 8 ) ref -> x0 "argument with side effect" +; V47 cse0 [V47,T10] ( 5, 28 ) int -> x4 multi-def "CSE - aggressive" +; V48 cse1 [V48,T06] ( 5, 44 ) int -> [fp+0x50] multi-def "CSE - aggressive"
; TEMP_01 ref -> [fp+0x18] ; ; Lcl frame size = 128 @@ -78,10 +79,10 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] mov w22, w2
- mov w20, w3
+ mov w21, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w21, w5
+ mov w20, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -96,7 +97,7 @@ G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 tst w0, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000020000000 {V11}, gcrefRegs=1F880000 {x19 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -167,7 +168,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x19] ; byrRegs -[x14] str w22, [x1, #0x48]
- strb w20, [x1, #0x4C]
+ strb w21, [x1, #0x4C]
mov w14, #1 strb w14, [x1, #0x4F] add x14, x1, #8 @@ -229,7 +230,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=11080000 {x19 x24 x28}, byrefRe ; GC ptr vars +{V11} mov x19, x25 ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000010004000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000000020008000 {V11 V12}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x23, G_M30168_IG06 mov x0, x23 @@ -306,7 +307,7 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ; GC ptr vars +{V16} cbz x1, G_M30168_IG35 ;; size=36 bbWeight=4 PerfScore 34.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000000010004004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000000020008004 {V11 V12 V16}, gcrefRegs=11880002 {x1 x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x2, [x1, #0x18] ; gcrRegs +[x2] @@ -349,7 +350,7 @@ G_M30168_IG10: ; bbWeight=2, gcrefRegs=11880100 {x8 x19 x23 x24 x28}, byr mov w13, wzr mov w14, #1 str w14, [fp, #0x70] // [V22 loc11]
- cmp w21, #0
+ cmp w20, #0
ble G_M30168_IG26 ;; size=40 bbWeight=2 PerfScore 21.00 G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz @@ -382,7 +383,9 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x6, fp, #104 // [V23 loc12] str x6, [sp, #0x08] // [V26 OutArgs+0x08] ldrb w6, [x9, #0x4C]
- uxtb w3, w20
+ uxtb w15, w21 + str w15, [fp, #0x50] // [V48 cse1] + mov w3, w15
add x7, fp, #96 // [V24 loc13] ldr x2, [fp, #0x40] // [V12 loc1] ; gcrRegs +[x2] @@ -394,8 +397,8 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, add x11, x11, [LOW RELOC #0xD1FFAB1E] mov x0, xzr ; gcrRegs +[x0]
- ldr x15, [x11] - blr x15
+ ldr xip0, [x11] + blr xip0
; gcrRegs -[x0-x2 x4-x5 x8-x9 x12] ldrb w0, [fp, #0x68] // [V23 loc12] ldrb w11, [fp, #0x60] // [V24 loc13] @@ -406,11 +409,11 @@ G_M30168_IG11: ; bbWeight=16, gcrefRegs=11880300 {x8 x9 x19 x23 x24 x28}, ldr w1, [fp, #0x78] // [V19 loc8] cmp w1, w22 bne G_M30168_IG13
- ;; size=160 bbWeight=16 PerfScore 808.00
+ ;; size=168 bbWeight=16 PerfScore 832.00
G_M30168_IG12: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- tst w20, #255 - bne G_M30168_IG14 - ;; size=8 bbWeight=8 PerfScore 12.00
+ ldr w2, [fp, #0x50] // [V48 cse1] + cbnz w2, G_M30168_IG14 + ;; size=8 bbWeight=8 PerfScore 24.00
G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz adds w1, w1, #1 bvs G_M30168_IG43 @@ -418,48 +421,48 @@ G_M30168_IG13: ; bbWeight=8, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefR ldr w1, [fp, #0x78] // [V19 loc8] ;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG14: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2] - ldr w0, [x2, #0x48] - ldr w3, [fp, #0x74] // [V20 loc9] - cmp w3, w0
+ ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3] + ldr w0, [x3, #0x48] + ldr w4, [fp, #0x74] // [V20 loc9] + cmp w4, w0
bne G_M30168_IG17 ;; size=20 bbWeight=16 PerfScore 136.00
-G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - ldrb w0, [x2, #0x4C]
+G_M30168_IG15: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x3, #0x4C]
cbnz w0, G_M30168_IG18 ;; size=8 bbWeight=8 PerfScore 32.00 G_M30168_IG16: ; bbWeight=4, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] - ldr x2, [fp, #0x38] // [V16 loc5] - ; gcrRegs +[x2]
+ ; gcrRegs -[x3] + ldr x3, [fp, #0x38] // [V16 loc5] + ; gcrRegs +[x3]
;; size=4 bbWeight=4 PerfScore 8.00
-G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880004 {x2 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz - adds w3, w3, #1
+G_M30168_IG17: ; bbWeight=8, gcrefRegs=11880008 {x3 x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz + adds w4, w4, #1
bvs G_M30168_IG43
- str w3, [fp, #0x74] // [V20 loc9] - ldr w3, [fp, #0x74] // [V20 loc9]
+ str w4, [fp, #0x74] // [V20 loc9] + ldr w4, [fp, #0x74] // [V20 loc9]
;; size=16 bbWeight=8 PerfScore 36.00 G_M30168_IG18: ; bbWeight=16, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+ ; gcrRegs -[x3]
ldr w0, [fp, #0x70] // [V22 loc11] adds w0, w0, #1 bvs G_M30168_IG43
- cmp w0, w21
+ cmp w0, w20
str w0, [fp, #0x70] // [V22 loc11] ble G_M30168_IG25 ;; size=24 bbWeight=16 PerfScore 96.00
-G_M30168_IG19: ; bbWeight=8, gcVars=0000000010004204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M30168_IG19: ; bbWeight=8, gcVars=0000000020008204 {V11 V12 V16 V18}, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- stp w3, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
+ stp w4, w1, [fp, #0x74] // [V20 loc9], [V19 loc8]
;; size=4 bbWeight=8 PerfScore 8.00 G_M30168_IG20: ; bbWeight=2, gcrefRegs=11880000 {x19 x23 x24 x28}, byrefRegs=0000 {}, byref, isz mov x0, x23 ; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x4, [x11] - blr x4
+ ldr x2, [x11]
...

libraries.pmi.windows.arm64.checked.mch

-16 (-4.12%) : 305023.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)

@@ -8,30 +8,31 @@ ; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T06] ( 3, 5.37) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T07] ( 3, 5.37) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> -; V03 loc0 [V03,T05] ( 4, 8.75) ubyte -> x22 -; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T07] ( 3, 5.37) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T08] ( 3, 5.37) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> +; V03 loc0 [V03,T06] ( 4, 8.75) ubyte -> x22 +; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 6.75) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T02] ( 4, 16.37) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP +; V14 tmp7 [V14,T04] ( 2, 6.75) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 18.50) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 9.63) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T13] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V21 tmp14 [V21,T02] ( 3, 20.25) ref -> x0 "arr expr" -; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T15] ( 3, 1.50) ref -> x1 "CSE - moderate"
+;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V21 tmp14 [V21,T01] ( 3, 20.25) ref -> x0 "arr expr" +; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T03] ( 2, 8.00) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -58,7 +59,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 str x0, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc2] cbnz w1, G_M52679_IG09 add x1, fp, #32 // [V05 loc2] @@ -90,19 +91,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14] cmp w23, w0
- bne G_M52679_IG10
+ bne G_M52679_IG11
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG14
+ bhs G_M52679_IG12
;; size=12 bbWeight=4.00 PerfScore 18.00 G_M52679_IG08: ; bbWeight=3.37, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG12
+ bhs G_M52679_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,21 +136,11 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG10: ; bbWeight=0.63, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w23, w0 - bne G_M52679_IG13 - ;; size=12 bbWeight=0.63 PerfScore 2.81 -G_M52679_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M52679_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -158,11 +149,11 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG16
+ cbz w0, G_M52679_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -170,18 +161,18 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V14}
+G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V15}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -189,17 +180,17 @@ G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG19: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG20
+ cbz w0, G_M52679_IG18
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04 V15}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -207,7 +198,7 @@ G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 44, PerfScore 169.06, instruction count 97, allocated bytes for code 388 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 162.25, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -218,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -255,4 +246,4 @@ Unwind Info: *************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)
+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
-16 (-3.96%) : 218767.dasm - System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
@@ -8,31 +8,32 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 7, 7.87) ref -> x19 this class-hnd single-def <System.Speech.Recognition.RecognizerBase> -; V01 arg1 [V01,T06] ( 4, 3.50) ubyte -> x1 single-def -; V02 loc0 [V02,T12] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Speech.Internal.SapiInterop.SapiRecognizer>
+; V00 this [V00,T05] ( 7, 7.87) ref -> x19 this class-hnd single-def <System.Speech.Recognition.RecognizerBase> +; V01 arg1 [V01,T07] ( 4, 3.50) ubyte -> x1 single-def +; V02 loc0 [V02,T13] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Speech.Internal.SapiInterop.SapiRecognizer>
; V03 loc1 [V03 ] ( 6, 2.50) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Speech.Recognition.Grammar]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Speech.Recognition.Grammar> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Uri>
-; V09 tmp2 [V09,T09] ( 2, 2 ) ubyte -> x0 "Inlining Arg" -; V10 tmp3 [V10,T08] ( 2, 2 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T10] ( 2, 2 ) ubyte -> x0 "Inlining Arg" +; V10 tmp3 [V10,T09] ( 2, 2 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Speech.Recognition.Grammar]>
-;* V12 tmp5 [V12,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp5 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp7 [V14,T03] ( 5, 12.50) ref -> x20 single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T04] ( 4, 11.87) ref -> x20 single-def "field V04._list (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T02] ( 4, 13.50) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP ; V16 tmp9 [V16,T00] ( 6, 18.00) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V17 tmp10 [V17,T07] ( 3, 5.13) int -> x21 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V18 tmp11 [V18,T10] ( 3, 1.50) ref -> x20 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T08] ( 2, 4.50) int -> x21 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V18 tmp11 [V18,T11] ( 3, 1.50) ref -> x20 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp13 [V20,T15] ( 0, 0 ) int -> zero-ref single-def "field V11._index (fldOffset=0x10)" P-INDEP -; V21 tmp14 [V21,T13] ( 2, 1 ) int -> x21 single-def "field V11._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp13 [V20,T16] ( 0, 0 ) int -> zero-ref single-def "field V11._index (fldOffset=0x10)" P-INDEP +; V21 tmp14 [V21,T14] ( 2, 1 ) int -> x21 single-def "field V11._version (fldOffset=0x14)" P-INDEP
; V22 tmp15 [V22,T01] ( 3, 20.25) ref -> x1 "arr expr"
-; V23 PSPSym [V23,T14] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T11] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V23 PSPSym [V23,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T03] ( 2, 8.00) int -> x1 "CSE - aggressive" +; V25 cse1 [V25,T12] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -51,7 +52,7 @@ G_M55354_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by uxtb w0, w1 ldrb w2, [x19, #0xD1FFAB1E] cmp w0, w2
- beq G_M55354_IG15
+ beq G_M55354_IG13
;; size=16 bbWeight=1 PerfScore 5.00 G_M55354_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref strb w1, [x19, #0xD1FFAB1E] @@ -67,7 +68,7 @@ G_M55354_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; GC ptr vars +{V02} str wzr, [fp, #0x20] // [V03 loc1] ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M55354_IG04: ; bbWeight=0.50, gcVars=0000000000001000 {V02}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55354_IG04: ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V03 loc1] cbnz w1, G_M55354_IG09 add x1, fp, #32 // [V03 loc1] @@ -98,19 +99,19 @@ G_M55354_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M55354_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x14] cmp w21, w1
- bne G_M55354_IG10
+ bne G_M55354_IG11
;; size=12 bbWeight=4 PerfScore 18.00 G_M55354_IG07: ; bbWeight=4.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x10] cmp w22, w1
- bhs G_M55354_IG14
+ bhs G_M55354_IG12
;; size=12 bbWeight=4.00 PerfScore 18.00 G_M55354_IG08: ; bbWeight=3.37, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x1, [x20, #0x08] ; gcrRegs +[x1] ldr w3, [x1, #0x08] cmp w22, w3
- bhs G_M55354_IG12
+ bhs G_M55354_IG10
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -145,21 +146,11 @@ G_M55354_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M55354_IG10: ; bbWeight=0.63, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20] - ldr w0, [x20, #0x14] - cmp w21, w0 - bne G_M55354_IG13 - ;; size=12 bbWeight=0.63 PerfScore 2.81 -G_M55354_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - b G_M55354_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M55354_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55354_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M55354_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55354_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -168,9 +159,9 @@ G_M55354_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M55354_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55354_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V03 loc1]
- cbz w0, G_M55354_IG15
+ cbz w0, G_M55354_IG13
ldr x0, [fp, #0x18] // [V02 loc0] ; gcrRegs +[x0] ; GC ptr vars -{V02} @@ -178,38 +169,38 @@ G_M55354_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M55354_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55354_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M55354_IG16: ; bbWeight=0, gcVars=0000000000001000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V12}
+G_M55354_IG14: ; bbWeight=0, gcVars=0000000000002000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02}
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M55354_IG17: ; bbWeight=0, gcVars=0000000000001000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55354_IG15: ; bbWeight=0, gcVars=0000000000002000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V03 loc1]
- cbz w0, G_M55354_IG18
+ cbz w0, G_M55354_IG16
ldr x0, [fp, #0x18] // [V02 loc0] ; gcrRegs +[x0]
- ; GC ptr vars -{V02 V12}
+ ; GC ptr vars -{V02}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M55354_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M55354_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 404, prolog size 32, PerfScore 179.50, instruction count 101, allocated bytes for code 404 (MethodHash=352a27c5) for method System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
+; Total bytes of code 388, prolog size 32, PerfScore 172.68, instruction count 97, allocated bytes for code 388 (MethodHash=352a27c5) for method System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -220,7 +211,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 88 (0x00058) Actual length = 352 (0x000160)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -257,4 +248,4 @@ Unwind Info: *************** EH table for System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M55354_IG04..G_M55354_IG14) handled by [G_M55354_IG16..END) (fault)
+EH#0: try [G_M55354_IG04..G_M55354_IG12) handled by [G_M55354_IG14..END) (fault)
-16 (-3.74%) : 154314.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
@@ -8,36 +8,37 @@ ; 4 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 4 ) ref -> x21 this class-hnd single-def <Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection>
+; V00 this [V00,T08] ( 4, 4 ) ref -> x21 this class-hnd single-def <Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection>
; V01 arg1 [V01,T10] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String>
-; V02 arg2 [V02,T04] ( 3, 5.37) ref -> x19 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.String]> -; V03 arg3 [V03,T05] ( 3, 5.37) ref -> x20 class-hnd single-def <System.String> -; V04 loc0 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
+; V02 arg2 [V02,T05] ( 3, 5.37) ref -> x19 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.String]> +; V03 arg3 [V03,T06] ( 3, 5.37) ref -> x20 class-hnd single-def <System.String> +; V04 loc0 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
; V05 loc1 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V06 loc2 [V06,T15] ( 2, 1 ) ref -> x21 ld-addr-op class-hnd <<unknown class>>
+; V06 loc2 [V06,T16] ( 2, 1 ) ref -> x21 ld-addr-op class-hnd <<unknown class>>
;* V07 loc3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Evaluation.Project]> ;* V08 loc4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.Build.Evaluation.Project>
-; V09 loc5 [V09,T13] ( 3, 2 ) ref -> x24 class-hnd <Microsoft.Build.Evaluation.Project>
+; V09 loc5 [V09,T14] ( 3, 2 ) ref -> x24 class-hnd <Microsoft.Build.Evaluation.Project>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -;* V12 tmp2 [V12,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V13 tmp3 [V13,T08] ( 3, 6.00) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V14 tmp4 [V14,T12] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
+; V11 tmp1 [V11,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +;* V12 tmp2 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V13 tmp3 [V13,T09] ( 3, 6.00) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V14 tmp4 [V14,T13] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>> ;* V16 tmp6 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Evaluation.Project]>
-;* V17 tmp7 [V17,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp7 [V17,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V19 tmp9 [V19,T02] ( 5, 12.50) ref -> x21 single-def "field V07._list (fldOffset=0x0)" P-INDEP -; V20 tmp10 [V20,T03] ( 3, 7.25) ref -> x24 "field V07._current (fldOffset=0x8)" P-INDEP
+; V19 tmp9 [V19,T03] ( 4, 11.87) ref -> x21 single-def "field V07._list (fldOffset=0x0)" P-INDEP +; V20 tmp10 [V20,T04] ( 3, 7.25) ref -> x24 "field V07._current (fldOffset=0x8)" P-INDEP
; V21 tmp11 [V21,T00] ( 6, 18.00) int -> x23 "field V07._index (fldOffset=0x10)" P-INDEP
-; V22 tmp12 [V22,T09] ( 3, 5.13) int -> x22 single-def "field V07._version (fldOffset=0x14)" P-INDEP -; V23 tmp13 [V23,T16] ( 3, 1.50) ref -> x21 single-def "field V16._list (fldOffset=0x0)" P-INDEP
+; V22 tmp12 [V22,T11] ( 2, 4.50) int -> x22 single-def "field V07._version (fldOffset=0x14)" P-INDEP +; V23 tmp13 [V23,T17] ( 3, 1.50) ref -> x21 single-def "field V16._list (fldOffset=0x0)" P-INDEP
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._current (fldOffset=0x8)" P-INDEP
-;* V25 tmp15 [V25,T21] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP -; V26 tmp16 [V26,T19] ( 2, 1 ) int -> x22 single-def "field V16._version (fldOffset=0x14)" P-INDEP
+;* V25 tmp15 [V25,T22] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP +; V26 tmp16 [V26,T20] ( 2, 1 ) int -> x22 single-def "field V16._version (fldOffset=0x14)" P-INDEP
; V27 tmp17 [V27,T01] ( 3, 20.25) ref -> x0 "arr expr"
-; V28 PSPSym [V28,T20] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V29 cse0 [V29,T17] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V28 PSPSym [V28,T21] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V29 cse0 [V29,T02] ( 2, 8.00) int -> x0 "CSE - aggressive" +; V30 cse1 [V30,T18] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -65,7 +66,7 @@ G_M45377_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg str x0, [fp, #0x18] // [V04 loc0] ; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 4.00
-G_M45377_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45377_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc1] cbnz w1, G_M45377_IG11 add x1, fp, #32 // [V05 loc1] @@ -103,7 +104,7 @@ G_M45377_IG05: ; bbWeight=1.00, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x0-x1 x21-x22] ; byrRegs +[x0] ; gcr arg pop 0
- cbz x0, G_M45377_IG16
+ cbz x0, G_M45377_IG14
;; size=36 bbWeight=1.00 PerfScore 13.00 G_M45377_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0001 {x0}, byref ldr x21, [x0] @@ -115,19 +116,19 @@ G_M45377_IG07: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ; byrRegs -[x0] ldr w0, [x21, #0x14] cmp w22, w0
- bne G_M45377_IG12
+ bne G_M45377_IG13
;; size=12 bbWeight=4 PerfScore 18.00 G_M45377_IG08: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M45377_IG16
+ bhs G_M45377_IG14
;; size=12 bbWeight=4.00 PerfScore 18.00 G_M45377_IG09: ; bbWeight=3.37, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M45377_IG14
+ bhs G_M45377_IG12
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -152,7 +153,7 @@ G_M45377_IG09: ; bbWeight=3.37, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ;; size=64 bbWeight=3.37 PerfScore 65.81 G_M45377_IG10: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x21]
- b G_M45377_IG17
+ b G_M45377_IG15
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M45377_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x24] @@ -164,21 +165,11 @@ G_M45377_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45377_IG12: ; bbWeight=0.63, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w22, w0 - bne G_M45377_IG15 - ;; size=12 bbWeight=0.63 PerfScore 2.81 -G_M45377_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M45377_IG16 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M45377_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45377_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M45377_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45377_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -187,15 +178,15 @@ G_M45377_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45377_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45377_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x24, xzr ; gcrRegs +[x24] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M45377_IG17: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
+G_M45377_IG15: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc1]
- cbz w0, G_M45377_IG19
+ cbz w0, G_M45377_IG17
;; size=8 bbWeight=1 PerfScore 3.00
-G_M45377_IG18: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M45377_IG16: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -203,20 +194,20 @@ G_M45377_IG18: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 { ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45377_IG19: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M45377_IG17: ; bbWeight=1, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
mov x0, x24 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M45377_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M45377_IG18: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M45377_IG21: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M45377_IG19: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[x0 x24]
- ; GC ptr vars +{V04 V14}
+ ; GC ptr vars +{V04}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -224,17 +215,17 @@ G_M45377_IG21: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45377_IG22: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45377_IG20: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc1]
- cbz w0, G_M45377_IG23
+ cbz w0, G_M45377_IG21
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M45377_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M45377_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -242,7 +233,7 @@ G_M45377_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 428, prolog size 48, PerfScore 159.87, instruction count 107, allocated bytes for code 428 (MethodHash=14de4ebe) for method Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
+; Total bytes of code 412, prolog size 48, PerfScore 153.06, instruction count 103, allocated bytes for code 412 (MethodHash=14de4ebe) for method Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
; ============================================================ Unwind Info: @@ -253,7 +244,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -290,4 +281,4 @@ Unwind Info: *************** EH table for Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M45377_IG03..G_M45377_IG17) handled by [G_M45377_IG21..END) (fault)
+EH#0: try [G_M45377_IG03..G_M45377_IG15) handled by [G_M45377_IG19..END) (fault)
+12 (+0.45%) : 239081.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
@@ -8,18 +8,18 @@ ; 15 inlinees with PGO data; 35 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 11, 24.50) ref -> x20 class-hnd single-def <System.IO.TextWriter> -; V01 arg1 [V01,T17] ( 6, 26.00) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][]>
+; V00 arg0 [V00,T17] ( 11, 24.50) ref -> x20 class-hnd single-def <System.IO.TextWriter> +; V01 arg1 [V01,T16] ( 6, 26.00) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][]>
; V02 arg2 [V02,T39] ( 6, 8 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]> ; V03 loc0 [V03,T10] ( 6, 35.50) ref -> x22 class-hnd exact single-def <<unknown class>> ; V04 loc1 [V04,T38] ( 7, 10 ) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>> ;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <R2RTest.CompilerRunner> ; V06 loc3 [V06 ] ( 9, 72 ) struct (40) [fp+0x90] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Collections.Generic.HashSet`1[System.String]]> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.HashSet`1[System.String]]>
-; V08 loc5 [V08,T16] ( 4, 30.16) int -> x2 ld-addr-op
+; V08 loc5 [V08,T15] ( 4, 30.16) int -> x2 ld-addr-op
; V09 loc6 [V09,T41] ( 7, 9.00) ref -> [fp+0x28] class-hnd EH-live spill-single-def <<unknown class>> ; V10 loc7 [V10,T35] ( 3, 12 ) ref -> x27 class-hnd <R2RTest.CompilerRunner>
-; V11 loc8 [V11 ] ( 20, 72.00) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V11 loc8 [V11 ] ( 22, 68.00) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V12 loc9 [V12,T45] ( 2, 8 ) int -> x28 ld-addr-op ; V13 loc10 [V13,T42] ( 7, 9 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>> ; V14 loc11 [V14,T29] ( 3, 16.00) ref -> x26 class-hnd <System.String> @@ -80,7 +80,7 @@ ;* V69 tmp50 [V69 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V70 tmp51 [V70,T43] ( 2, 8 ) ref -> x27 class-hnd exact "Inline stloc first use temp" <System.String> ;* V71 tmp52 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V72 tmp53 [V72,T14] ( 4, 32 ) int -> x27 "Inlining Arg"
+; V72 tmp53 [V72,T18] ( 6, 24.00) int -> x27 "Inlining Arg"
;* V73 tmp54 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V74 tmp55 [V74,T31] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V75 tmp56 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -145,7 +145,7 @@ ; V134 tmp115 [V134,T67] ( 2, 2 ) ref -> x0 single-def "argument with side effect" ; V135 tmp116 [V135,T08] ( 3, 48.00) int -> x0 "index expr" ; V136 tmp117 [V136,T07] ( 3, 48.00) ref -> x0 "argument with side effect"
-; V137 tmp118 [V137,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
+; V137 tmp118 [V137,T14] ( 2, 32 ) ref -> x1 "argument with side effect"
; V138 PSPSym [V138,T70] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[V] "PSPSym" ;* V139 cse0 [V139,T71] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V140 cse1 [V140,T52] ( 3, 6.19) ref -> x26 hoist "CSE - conservative" @@ -552,7 +552,7 @@ G_M25794_IG27: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byr cmp w28, #2 blo G_M25794_IG35 ;; size=8 bbWeight=4 PerfScore 6.00
-G_M25794_IG28: ; bbWeight=2.00, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=8000000 {x27}, byref
+G_M25794_IG28: ; bbWeight=2.00, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=8000000 {x27}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -561,17 +561,17 @@ G_M25794_IG28: ; bbWeight=2.00, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, ldr w0, [fp, #0x78] // [V11 loc8+0x10] add w0, w0, #2 str w0, [fp, #0x78] // [V11 loc8+0x10]
- ;; size=32 bbWeight=2.00 PerfScore 17.96 -G_M25794_IG29: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x27]
ldr w27, [fp, #0x78] // [V11 loc8+0x10]
+ ; byrRegs -[x27]
ldr w0, [fp, #0x88] // [V11 loc8+0x20] cmp w27, w0 bhi G_M25794_IG36
+ ;; size=48 bbWeight=2.00 PerfScore 28.93 +G_M25794_IG29: ; bbWeight=4, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr x28, [fp, #0x80] // [V11 loc8+0x18] ; byrRegs +[x28] tbz w27, #31, G_M25794_IG31
- ;; size=24 bbWeight=4 PerfScore 34.00
+ ;; size=8 bbWeight=4 PerfScore 12.00
G_M25794_IG30: ; bbWeight=2, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=10000000 {x28}, byref movz x2, #8 movk x2, #0xD1FFAB1E LSL #16 @@ -655,7 +655,7 @@ G_M25794_IG34: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x26] b G_M25794_IG38 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26] add x0, fp, #104 // [V11 loc8] movz x1, #0xD1FFAB1E @@ -667,8 +667,11 @@ G_M25794_IG35: ; bbWeight=0.01, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M25794_IG29 - ;; size=40 bbWeight=0.01 PerfScore 0.05
+ ldr w27, [fp, #0x78] // [V11 loc8+0x10] + ldr w0, [fp, #0x88] // [V11 loc8+0x20] + cmp w27, w0 + bls G_M25794_IG29 + ;; size=52 bbWeight=0.01 PerfScore 0.08
G_M25794_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x22 x26] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() @@ -1233,7 +1236,7 @@ G_M25794_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2660, prolog size 72, PerfScore 2462.83, instruction count 665, allocated bytes for code 2660 (MethodHash=43809b3d) for method R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
+; Total bytes of code 2672, prolog size 72, PerfScore 2451.83, instruction count 668, allocated bytes for code 2672 (MethodHash=43809b3d) for method R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
; ============================================================ Unwind Info: @@ -1244,7 +1247,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 572 (0x0023c) Actual length = 2288 (0x0008f0)
+ Function Length : 575 (0x0023f) Actual length = 2300 (0x0008fc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.62%) : 278094.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V03 loc1 [V03,T08] ( 4, 18 ) ref -> x21 class-hnd exact <System.String> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.IO.FileStream>
-; V05 loc3 [V05 ] ( 18,124.00) struct (40) [fp+0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V05 loc3 [V05 ] ( 20,112.00) struct (40) [fp+0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 3, 48 ) struct (16) [fp+0x20] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Guid>
+; V07 tmp1 [V07,T02] ( 3, 48 ) struct (16) [fp+0x20] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Guid>
; V08 tmp2 [V08,T16] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.IO.FileStream> ; V09 tmp3 [V09,T22] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Net.Mail.MailWriter> ; V10 tmp4 [V10,T50] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -45,14 +45,14 @@ ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> ;* V36 tmp30 [V36 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V37 tmp31 [V37,T02] ( 5, 56.00) ref -> x0 class-hnd "dup spill" <ushort[]>
+; V37 tmp31 [V37,T01] ( 5, 56.00) ref -> x0 class-hnd "dup spill" <ushort[]>
;* V38 tmp32 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ushort[]> ;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V40 tmp34 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V42 tmp36 [V42,T00] ( 4, 64 ) int -> x0 "Inlining Arg" ;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V44 tmp38 [V44,T04] ( 3, 48 ) int -> x22 "Inlining Arg"
+; V44 tmp38 [V44,T03] ( 3, 48 ) int -> x22 "Inlining Arg"
; V45 tmp39 [V45,T07] ( 2, 19.99) byref -> x21 "Inlining Arg" ;* V46 tmp40 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp41 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -64,7 +64,7 @@ ;* V53 tmp47 [V53 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V54 tmp48 [V54,T11] ( 2, 16 ) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.String> ;* V55 tmp49 [V55 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V56 tmp50 [V56,T01] ( 4, 64 ) int -> x21 "Inlining Arg"
+; V56 tmp50 [V56,T04] ( 6, 40.00) int -> x21 "Inlining Arg"
;* V57 tmp51 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V58 tmp52 [V58,T05] ( 2, 32 ) byref -> x22 "Inlining Arg" ;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -327,7 +327,7 @@ G_M50314_IG11: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ldr w0, [fp, #0x40] // [V05 loc3+0x10] ldr w1, [fp, #0x50] // [V05 loc3+0x20] cmp w0, w1
- bhi G_M50314_IG28
+ bhi G_M50314_IG24
ldr x2, [fp, #0x48] // [V05 loc3+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -354,9 +354,9 @@ G_M50314_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ;; size=40 bbWeight=2 PerfScore 16.00 G_M50314_IG13: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz cmp w22, #4
- blo G_M50314_IG17
+ blo G_M50314_IG23
;; size=8 bbWeight=8 PerfScore 12.00
-G_M50314_IG14: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M50314_IG14: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -365,17 +365,17 @@ G_M50314_IG14: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=200 ldr w0, [fp, #0x40] // [V05 loc3+0x10] add w0, w0, #4 str w0, [fp, #0x40] // [V05 loc3+0x10]
- ;; size=32 bbWeight=2.00 PerfScore 17.96 -G_M50314_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x21]
ldr w21, [fp, #0x40] // [V05 loc3+0x10]
+ ; byrRegs -[x21]
ldr w0, [fp, #0x50] // [V05 loc3+0x20] cmp w21, w0
- bhi G_M50314_IG28
+ bhi G_M50314_IG24 + ;; size=48 bbWeight=2.00 PerfScore 28.93 +G_M50314_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x22, [fp, #0x48] // [V05 loc3+0x18] ; byrRegs +[x22]
- tbz w21, #31, G_M50314_IG19 - ;; size=24 bbWeight=8 PerfScore 68.00
+ tbz w21, #31, G_M50314_IG17 + ;; size=8 bbWeight=8 PerfScore 24.00
G_M50314_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref movz x23, #8 movk x23, #0xD1FFAB1E LSL #16 @@ -390,25 +390,6 @@ G_M50314_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x23]
- b G_M50314_IG18 - ;; size=44 bbWeight=2 PerfScore 18.00 -G_M50314_IG17: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] - ; byrRegs -[x22] - add x0, fp, #48 // [V05 loc3] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M50314_IG15 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M50314_IG18: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x23] - ; byrRegs +[x22]
mov x0, x23 ; gcrRegs +[x0] mov x1, x23 @@ -419,8 +400,8 @@ G_M50314_IG18: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=40 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x23]
- ;; size=28 bbWeight=2 PerfScore 13.00 -G_M50314_IG19: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=68 bbWeight=2 PerfScore 29.00 +G_M50314_IG17: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz
mov x0, x22 ; byrRegs +[x0] sxtw w1, w21 @@ -434,9 +415,9 @@ G_M50314_IG19: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 stp xzr, xzr, [fp, #0x30] stp xzr, xzr, [fp, #0x40] str xzr, [fp, #0x50]
- cbnz x1, G_M50314_IG22
+ cbnz x1, G_M50314_IG20
;; size=36 bbWeight=8 PerfScore 68.00
-G_M50314_IG20: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M50314_IG18: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1] mov x0, x19 ; gcrRegs +[x0] @@ -458,7 +439,7 @@ G_M50314_IG20: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ; gcrRegs -[x0] cbnz w0, G_M50314_IG09 ;; size=56 bbWeight=8 PerfScore 108.00
-G_M50314_IG21: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M50314_IG19: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -504,9 +485,9 @@ G_M50314_IG21: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ldr x8, [x8] blr x8 ; gcrRegs -[x0-x1 x21]
- b G_M50314_IG23
+ b G_M50314_IG21
;; size=152 bbWeight=1 PerfScore 29.00
-G_M50314_IG22: ; bbWeight=1.94, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M50314_IG20: ; bbWeight=1.94, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x21] mov x0, x20 ; gcrRegs +[x0] @@ -517,9 +498,9 @@ G_M50314_IG22: ; bbWeight=1.94, gcrefRegs=380002 {x1 x19 x20 x21}, byrefR ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- b G_M50314_IG20
+ b G_M50314_IG18
;; size=32 bbWeight=1.94 PerfScore 14.59
-G_M50314_IG23: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50314_IG21: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -571,15 +552,40 @@ G_M50314_IG23: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov x0, x20 ; gcrRegs +[x0] ;; size=128 bbWeight=1 PerfScore 24.50
-G_M50314_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M50314_IG22: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x78] ldp x21, x22, [sp, #0x68] ldp x19, x20, [sp, #0x58] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M50314_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M50314_IG23: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
+ add x0, fp, #48 // [V05 loc3] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ldr w21, [fp, #0x40] // [V05 loc3+0x10] + ldr w0, [fp, #0x50] // [V05 loc3+0x20] + cmp w21, w0 + bls G_M50314_IG15 + ;; size=52 bbWeight=0.01 PerfScore 0.08 +G_M50314_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + brk_windows #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M50314_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19-x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -624,18 +630,8 @@ G_M50314_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w22, wzr b G_M50314_IG11 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M50314_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - ; byrRegs -[x21] - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - brk_windows #0 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1300, prolog size 36, PerfScore 778.09, instruction count 325, allocated bytes for code 1300 (MethodHash=81d53b75) for method System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
+; Total bytes of code 1308, prolog size 36, PerfScore 743.09, instruction count 327, allocated bytes for code 1308 (MethodHash=81d53b75) for method System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
; ============================================================ Unwind Info: @@ -646,7 +642,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 325 (0x00145) Actual length = 1300 (0x000514)
+ Function Length : 327 (0x00147) Actual length = 1308 (0x00051c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+1.14%) : 142570.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,49 +8,49 @@ ; 6 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.35) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T36] ( 10, 5.45) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T35] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x25 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T37] ( 10, 5.45) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x25 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T49] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 9.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T28] ( 9, 8.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 9.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T29] ( 9, 8.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T27] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T54] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T55] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T58] ( 3, 1.45) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V44 tmp18 [V44,T51] ( 4, 1.90) int -> x2 single-def "Inline stloc first use temp" ; V45 tmp19 [V45,T59] ( 3, 1.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -58,27 +58,27 @@ ; V47 tmp21 [V47,T60] ( 3, 1.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V48 tmp22 [V48,T53] ( 4, 1.90) int -> x15 single-def "Inline stloc first use temp" ; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x4 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x6 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T56] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T57] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T46] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T47] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T47] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG40 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000002000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -145,7 +145,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= tbz w0, #0, G_M30168_IG58 ;; size=76 bbWeight=0.50 PerfScore 11.25 G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -155,7 +155,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG06
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -187,19 +187,19 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -242,11 +242,11 @@ G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG06: ; bbWeight=0.50, gcVars=0000001000080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG06: ; bbWeight=0.50, gcVars=0000002000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG08 mov x0, x24 @@ -318,18 +318,18 @@ G_M30168_IG09: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG39 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG10: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG10: ; bbWeight=2, gcVars=0000002000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -341,7 +341,7 @@ G_M30168_IG10: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 beq G_M30168_IG11
- ldr x1, [fp, #0x38] // [V16 loc5]
+ ldr x1, [fp, #0x30] // [V16 loc5]
...

libraries_tests.run.windows.arm64.Release.mch

-16 (-2.17%) : 1429.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -30,7 +30,7 @@ ; V18 tmp10 [V18,T17] ( 3, 4.12) ref -> x1 class-hnd "dup spill" <Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup> ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref ; V20 tmp12 [V20,T18] ( 2, 1.37) ref -> x1
-; V21 tmp13 [V21,T00] ( 10, 16.15) byref -> x1 "Inlining Arg"
+; V21 tmp13 [V21,T00] ( 9, 15.68) byref -> x1 "Inlining Arg"
; V22 tmp14 [V22,T19] ( 4, 3.56) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V24 tmp16 [V24,T15] ( 3, 4.28) ref -> x14 "arr expr" @@ -38,7 +38,7 @@ ; V26 PSPSym [V26,T22] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V27 cse0 [V27,T21] ( 3, 2.61) int -> x15 "CSE - moderate" ; V28 cse1 [V28,T13] ( 5, 4.52) long -> x21 hoist multi-def "CSE - aggressive"
-; V29 cse2 [V29,T20] ( 4, 3.09) ref -> x2 "CSE - moderate"
+; V29 cse2 [V29,T20] ( 3, 2.85) ref -> x2 "CSE - moderate"
; V30 rat0 [V30,T11] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" ; V31 rat1 [V31,T04] ( 3, 8.54) long -> x0 "spilling expr" ; V32 rat2 [V32,T06] ( 3, 6.83) long -> x11 "fgMakeTemp is creating a new local variable" @@ -64,11 +64,11 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M62024_IG02: ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz ; GC ptr vars +{V06}
- cbz x21, G_M62024_IG30 - cbz x19, G_M62024_IG31
+ cbz x21, G_M62024_IG29 + cbz x19, G_M62024_IG30
ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG21
+ cbz x11, G_M62024_IG20
;; size=20 bbWeight=1 PerfScore 9.00 G_M62024_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21 @@ -122,7 +122,7 @@ G_M62024_IG08: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=400 cbz x1, G_M62024_IG11 ldr x1, [x1, #0x10] cbz x1, G_M62024_IG11
- b G_M62024_IG20
+ b G_M62024_IG19
;; size=24 bbWeight=0.69 PerfScore 7.55 G_M62024_IG09: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x0-x1 x23] @@ -145,7 +145,7 @@ G_M62024_IG10: ; bbWeight=1.52, gcrefRegs=880000 {x19 x23}, byrefRegs=400 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M62024_IG20
+ cbnz w0, G_M62024_IG19
;; size=20 bbWeight=1.52 PerfScore 12.96 G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x23] @@ -153,7 +153,7 @@ G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 { ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- bne G_M62024_IG18
+ bne G_M62024_IG17
;; size=16 bbWeight=2.26 PerfScore 14.70 G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz add x1, x0, #8 @@ -165,11 +165,11 @@ G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ldr w15, [x1, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M62024_IG16
+ bne G_M62024_IG15
ldr w15, [x1, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M62024_IG17
+ bhs G_M62024_IG16
;; size=44 bbWeight=0.95 PerfScore 18.05 G_M62024_IG13: ; bbWeight=0.71, gcrefRegs=84001 {x0 x14 x19}, byrefRegs=400002 {x1 x22}, byref, isz ; gcrRegs -[x2] @@ -206,23 +206,17 @@ G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62024_IG16: ; bbWeight=0.24, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref, isz
+G_M62024_IG16: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
; gcrRegs +[x0 x2] ; byrRegs +[x1 x22]
- ldr w3, [x1, #0x14] - ldr w4, [x2, #0x14] - cmp w3, w4 - bne G_M62024_IG15 - ;; size=16 bbWeight=0.24 PerfScore 1.78 -G_M62024_IG17: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
ldr w2, [x2, #0x10] ; gcrRegs -[x2] add w2, w2, #1 str w2, [x1, #0x10] str xzr, [x1, #0x08]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=20 bbWeight=0.95 PerfScore 6.18
-G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M62024_IG17: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x19] ; byrRegs -[x1] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -234,18 +228,18 @@ G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ; gcr arg pop 0 cbnz w0, G_M62024_IG05 ;; size=24 bbWeight=2.26 PerfScore 14.70
-G_M62024_IG19: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG18: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M62024_IG20: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+G_M62024_IG19: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x23] mov w0, #1 strb w0, [x22] str x23, [fp, #0x18] // [V06 loc2]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=16 bbWeight=0.69 PerfScore 2.40
-G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG20: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x23] +[x19 x21] ; GC ptr vars -{V04} mov x0, x20 @@ -257,16 +251,16 @@ G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs= mov x11, x0 b G_M62024_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG22: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG21: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars -{V06} +{V01 V04} ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- beq G_M62024_IG24
+ beq G_M62024_IG23
;; size=16 bbWeight=0.74 PerfScore 4.80
-G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -276,39 +270,39 @@ G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.33 PerfScore 1.83
-G_M62024_IG24: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG23: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG25: ; bbWeight=0.74, epilog, nogc, extend
+G_M62024_IG24: ; bbWeight=0.74, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.74 PerfScore 4.43
-G_M62024_IG26: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG25: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22] ; GC ptr vars +{V01 V04 V06} ldr x0, [fp, #0x30] // [V26 PSPSym]
- bl G_M62024_IG32
+ bl G_M62024_IG31
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG27: ; bbWeight=0.26, nogc, extend
+G_M62024_IG26: ; bbWeight=0.26, nogc, extend
nop ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG28: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG27: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01 V04} ldr x0, [fp, #0x18] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG29: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.26, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.26 PerfScore 1.57
-G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V06} mov w0, #17 @@ -320,7 +314,7 @@ G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -330,7 +324,7 @@ G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V01 V04 V06} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -339,18 +333,18 @@ G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefR add x3, fp, #96 str x3, [sp, #0x10] ;; size=24 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG33: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M62024_IG35
+ cbz x0, G_M62024_IG34
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- beq G_M62024_IG35
+ beq G_M62024_IG34
;; size=32 bbWeight=0.26 PerfScore 2.36
-G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62024_IG33: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -360,7 +354,7 @@ G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.12 PerfScore 0.65
-G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62024_IG34: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -368,7 +362,7 @@ G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ret lr ;; size=20 bbWeight=0.26 PerfScore 3.15
-; Total bytes of code 736, prolog size 48, PerfScore 182.40, instruction count 184, allocated bytes for code 736 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 720, prolog size 48, PerfScore 180.62, instruction count 180, allocated bytes for code 720 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================ ...

-16 (-2.17%) : 1897.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -30,7 +30,7 @@ ; V18 tmp10 [V18,T17] ( 3, 4.12) ref -> x1 class-hnd "dup spill" <Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup> ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref ; V20 tmp12 [V20,T18] ( 2, 1.37) ref -> x1
-; V21 tmp13 [V21,T00] ( 10, 16.13) byref -> x1 "Inlining Arg"
+; V21 tmp13 [V21,T00] ( 9, 15.65) byref -> x1 "Inlining Arg"
; V22 tmp14 [V22,T19] ( 4, 3.56) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V24 tmp16 [V24,T15] ( 3, 4.25) ref -> x14 "arr expr" @@ -38,7 +38,7 @@ ; V26 PSPSym [V26,T22] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V27 cse0 [V27,T21] ( 3, 2.61) int -> x15 "CSE - moderate" ; V28 cse1 [V28,T13] ( 5, 4.52) long -> x21 hoist multi-def "CSE - aggressive"
-; V29 cse2 [V29,T20] ( 4, 3.09) ref -> x2 "CSE - moderate"
+; V29 cse2 [V29,T20] ( 3, 2.85) ref -> x2 "CSE - moderate"
; V30 rat0 [V30,T11] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" ; V31 rat1 [V31,T04] ( 3, 8.54) long -> x0 "spilling expr" ; V32 rat2 [V32,T06] ( 3, 6.83) long -> x11 "fgMakeTemp is creating a new local variable" @@ -64,11 +64,11 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M62024_IG02: ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz ; GC ptr vars +{V06}
- cbz x21, G_M62024_IG30 - cbz x19, G_M62024_IG31
+ cbz x21, G_M62024_IG29 + cbz x19, G_M62024_IG30
ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG21
+ cbz x11, G_M62024_IG20
;; size=20 bbWeight=1 PerfScore 9.00 G_M62024_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21 @@ -122,7 +122,7 @@ G_M62024_IG08: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=400 cbz x1, G_M62024_IG11 ldr x1, [x1, #0x10] cbz x1, G_M62024_IG11
- b G_M62024_IG20
+ b G_M62024_IG19
;; size=24 bbWeight=0.69 PerfScore 7.55 G_M62024_IG09: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x0-x1 x23] @@ -145,7 +145,7 @@ G_M62024_IG10: ; bbWeight=1.52, gcrefRegs=880000 {x19 x23}, byrefRegs=400 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M62024_IG20
+ cbnz w0, G_M62024_IG19
;; size=20 bbWeight=1.52 PerfScore 12.96 G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x23] @@ -153,7 +153,7 @@ G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 { ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- bne G_M62024_IG18
+ bne G_M62024_IG17
;; size=16 bbWeight=2.26 PerfScore 14.70 G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz add x1, x0, #8 @@ -165,11 +165,11 @@ G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ldr w15, [x1, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M62024_IG16
+ bne G_M62024_IG15
ldr w15, [x1, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M62024_IG17
+ bhs G_M62024_IG16
;; size=44 bbWeight=0.95 PerfScore 18.05 G_M62024_IG13: ; bbWeight=0.71, gcrefRegs=84001 {x0 x14 x19}, byrefRegs=400002 {x1 x22}, byref, isz ; gcrRegs -[x2] @@ -206,23 +206,17 @@ G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62024_IG16: ; bbWeight=0.24, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref, isz
+G_M62024_IG16: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
; gcrRegs +[x0 x2] ; byrRegs +[x1 x22]
- ldr w3, [x1, #0x14] - ldr w4, [x2, #0x14] - cmp w3, w4 - bne G_M62024_IG15 - ;; size=16 bbWeight=0.24 PerfScore 1.82 -G_M62024_IG17: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
ldr w2, [x2, #0x10] ; gcrRegs -[x2] add w2, w2, #1 str w2, [x1, #0x10] str xzr, [x1, #0x08]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=20 bbWeight=0.95 PerfScore 6.18
-G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M62024_IG17: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x19] ; byrRegs -[x1] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -234,18 +228,18 @@ G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ; gcr arg pop 0 cbnz w0, G_M62024_IG05 ;; size=24 bbWeight=2.26 PerfScore 14.70
-G_M62024_IG19: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG18: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M62024_IG20: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+G_M62024_IG19: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x23] mov w0, #1 strb w0, [x22] str x23, [fp, #0x18] // [V06 loc2]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=16 bbWeight=0.69 PerfScore 2.40
-G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG20: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x23] +[x19 x21] ; GC ptr vars -{V04} mov x0, x20 @@ -257,16 +251,16 @@ G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs= mov x11, x0 b G_M62024_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG22: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG21: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars -{V06} +{V01 V04} ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- beq G_M62024_IG24
+ beq G_M62024_IG23
;; size=16 bbWeight=0.74 PerfScore 4.80
-G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -276,39 +270,39 @@ G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.33 PerfScore 1.83
-G_M62024_IG24: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG23: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG25: ; bbWeight=0.74, epilog, nogc, extend
+G_M62024_IG24: ; bbWeight=0.74, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.74 PerfScore 4.43
-G_M62024_IG26: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG25: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22] ; GC ptr vars +{V01 V04 V06} ldr x0, [fp, #0x30] // [V26 PSPSym]
- bl G_M62024_IG32
+ bl G_M62024_IG31
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG27: ; bbWeight=0.26, nogc, extend
+G_M62024_IG26: ; bbWeight=0.26, nogc, extend
nop ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG28: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG27: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01 V04} ldr x0, [fp, #0x18] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG29: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.26, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.26 PerfScore 1.57
-G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V06} mov w0, #17 @@ -320,7 +314,7 @@ G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -330,7 +324,7 @@ G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V01 V04 V06} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -339,18 +333,18 @@ G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefR add x3, fp, #96 str x3, [sp, #0x10] ;; size=24 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG33: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M62024_IG35
+ cbz x0, G_M62024_IG34
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- beq G_M62024_IG35
+ beq G_M62024_IG34
;; size=32 bbWeight=0.26 PerfScore 2.36
-G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62024_IG33: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -360,7 +354,7 @@ G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.12 PerfScore 0.65
-G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62024_IG34: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -368,7 +362,7 @@ G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ret lr ;; size=20 bbWeight=0.26 PerfScore 3.15
-; Total bytes of code 736, prolog size 48, PerfScore 182.35, instruction count 184, allocated bytes for code 736 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 720, prolog size 48, PerfScore 180.53, instruction count 180, allocated bytes for code 720 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================ ...

-16 (-2.17%) : 2081.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -30,7 +30,7 @@ ; V18 tmp10 [V18,T17] ( 3, 4.12) ref -> x1 class-hnd "dup spill" <Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup> ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref ; V20 tmp12 [V20,T18] ( 2, 1.37) ref -> x1
-; V21 tmp13 [V21,T00] ( 10, 16.14) byref -> x1 "Inlining Arg"
+; V21 tmp13 [V21,T00] ( 9, 15.66) byref -> x1 "Inlining Arg"
; V22 tmp14 [V22,T19] ( 4, 3.56) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V24 tmp16 [V24,T15] ( 3, 4.26) ref -> x14 "arr expr" @@ -38,7 +38,7 @@ ; V26 PSPSym [V26,T22] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V27 cse0 [V27,T21] ( 3, 2.61) int -> x15 "CSE - moderate" ; V28 cse1 [V28,T13] ( 5, 4.52) long -> x21 hoist multi-def "CSE - aggressive"
-; V29 cse2 [V29,T20] ( 4, 3.09) ref -> x2 "CSE - moderate"
+; V29 cse2 [V29,T20] ( 3, 2.85) ref -> x2 "CSE - moderate"
; V30 rat0 [V30,T11] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" ; V31 rat1 [V31,T04] ( 3, 8.54) long -> x0 "spilling expr" ; V32 rat2 [V32,T06] ( 3, 6.83) long -> x11 "fgMakeTemp is creating a new local variable" @@ -64,11 +64,11 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M62024_IG02: ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz ; GC ptr vars +{V06}
- cbz x21, G_M62024_IG30 - cbz x19, G_M62024_IG31
+ cbz x21, G_M62024_IG29 + cbz x19, G_M62024_IG30
ldr x0, [x20, #0x38] ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG21
+ cbz x11, G_M62024_IG20
;; size=20 bbWeight=1 PerfScore 9.00 G_M62024_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21 @@ -122,7 +122,7 @@ G_M62024_IG08: ; bbWeight=0.69, gcrefRegs=880000 {x19 x23}, byrefRegs=400 cbz x1, G_M62024_IG11 ldr x1, [x1, #0x10] cbz x1, G_M62024_IG11
- b G_M62024_IG20
+ b G_M62024_IG19
;; size=24 bbWeight=0.69 PerfScore 7.55 G_M62024_IG09: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x0-x1 x23] @@ -145,7 +145,7 @@ G_M62024_IG10: ; bbWeight=1.52, gcrefRegs=880000 {x19 x23}, byrefRegs=400 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M62024_IG20
+ cbnz w0, G_M62024_IG19
;; size=20 bbWeight=1.52 PerfScore 12.96 G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x23] @@ -153,7 +153,7 @@ G_M62024_IG11: ; bbWeight=2.26, gcrefRegs=80000 {x19}, byrefRegs=400000 { ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- bne G_M62024_IG18
+ bne G_M62024_IG17
;; size=16 bbWeight=2.26 PerfScore 14.70 G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz add x1, x0, #8 @@ -165,11 +165,11 @@ G_M62024_IG12: ; bbWeight=0.95, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ldr w15, [x1, #0x14] ldr w12, [x14, #0x14] cmp w15, w12
- bne G_M62024_IG16
+ bne G_M62024_IG15
ldr w15, [x1, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M62024_IG17
+ bhs G_M62024_IG16
;; size=44 bbWeight=0.95 PerfScore 18.05 G_M62024_IG13: ; bbWeight=0.71, gcrefRegs=84001 {x0 x14 x19}, byrefRegs=400002 {x1 x22}, byref, isz ; gcrRegs -[x2] @@ -206,23 +206,17 @@ G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62024_IG16: ; bbWeight=0.24, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref, isz
+G_M62024_IG16: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
; gcrRegs +[x0 x2] ; byrRegs +[x1 x22]
- ldr w3, [x1, #0x14] - ldr w4, [x2, #0x14] - cmp w3, w4 - bne G_M62024_IG15 - ;; size=16 bbWeight=0.24 PerfScore 1.80 -G_M62024_IG17: ; bbWeight=0.95, gcrefRegs=0005 {x0 x2}, byrefRegs=400002 {x1 x22}, byref
ldr w2, [x2, #0x10] ; gcrRegs -[x2] add w2, w2, #1 str w2, [x1, #0x10] str xzr, [x1, #0x08]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=20 bbWeight=0.95 PerfScore 6.18
-G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M62024_IG17: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x19] ; byrRegs -[x1] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -234,18 +228,18 @@ G_M62024_IG18: ; bbWeight=2.26, gcrefRegs=80001 {x0 x19}, byrefRegs=40000 ; gcr arg pop 0 cbnz w0, G_M62024_IG05 ;; size=24 bbWeight=2.26 PerfScore 14.70
-G_M62024_IG19: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG18: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG22
+ b G_M62024_IG21
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M62024_IG20: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+G_M62024_IG19: ; bbWeight=0.69, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x23] mov w0, #1 strb w0, [x22] str x23, [fp, #0x18] // [V06 loc2]
- b G_M62024_IG26
+ b G_M62024_IG25
;; size=16 bbWeight=0.69 PerfScore 2.40
-G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG20: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x23] +[x19 x21] ; GC ptr vars -{V04} mov x0, x20 @@ -257,16 +251,16 @@ G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000800000 {V06}, gcrefRegs= mov x11, x0 b G_M62024_IG03 ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG22: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG21: ; bbWeight=0.74, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x19 x21] ; GC ptr vars -{V06} +{V01 V04} ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] ldr x11, [x0] cmp x11, x21
- beq G_M62024_IG24
+ beq G_M62024_IG23
;; size=16 bbWeight=0.74 PerfScore 4.80
-G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -276,39 +270,39 @@ G_M62024_IG23: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.33 PerfScore 1.83
-G_M62024_IG24: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG23: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG25: ; bbWeight=0.74, epilog, nogc, extend
+G_M62024_IG24: ; bbWeight=0.74, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.74 PerfScore 4.43
-G_M62024_IG26: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG25: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22] ; GC ptr vars +{V01 V04 V06} ldr x0, [fp, #0x30] // [V26 PSPSym]
- bl G_M62024_IG32
+ bl G_M62024_IG31
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG27: ; bbWeight=0.26, nogc, extend
+G_M62024_IG26: ; bbWeight=0.26, nogc, extend
nop ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG28: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG27: ; bbWeight=0.26, gcVars=0000000000800000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01 V04} ldr x0, [fp, #0x18] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG29: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.26, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=0.26 PerfScore 1.57
-G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V06} mov w0, #17 @@ -320,7 +314,7 @@ G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -330,7 +324,7 @@ G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V01 V04 V06} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] @@ -339,18 +333,18 @@ G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefR add x3, fp, #96 str x3, [sp, #0x10] ;; size=24 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG33: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62024_IG32: ; bbWeight=0.26, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M62024_IG35
+ cbz x0, G_M62024_IG34
ldr x11, [x0] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x11, x21
- beq G_M62024_IG35
+ beq G_M62024_IG34
;; size=32 bbWeight=0.26 PerfScore 2.36
-G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62024_IG33: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 @@ -360,7 +354,7 @@ G_M62024_IG34: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=20 bbWeight=0.12 PerfScore 0.65
-G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62024_IG34: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -368,7 +362,7 @@ G_M62024_IG35: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ret lr ;; size=20 bbWeight=0.26 PerfScore 3.15
-; Total bytes of code 736, prolog size 48, PerfScore 182.38, instruction count 184, allocated bytes for code 736 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 720, prolog size 48, PerfScore 180.58, instruction count 180, allocated bytes for code 720 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================ ...

+4 (+0.26%) : 1913.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T01] ( 26,883.41) byref -> x19 this single-def ; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x20 single-def
-; V02 loc0 [V02,T03] ( 18,501.87) ushort -> x23
+; V02 loc0 [V02,T03] ( 18,502.16) ushort -> x23
; V03 loc1 [V03 ] ( 39,253.51) struct (32) [fp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T08] ( 6, 63.91) ushort -> x24 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -112,18 +112,18 @@ G_M25128_IG03: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr w0, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bge G_M25128_IG26
+ bge G_M25128_IG23
;; size=16 bbWeight=1.17 PerfScore 8.75 G_M25128_IG04: ; bbWeight=4.67, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz add w1, w0, #1 str w1, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bhs G_M25128_IG55
+ bhs G_M25128_IG53
ldr x1, [x19] ; byrRegs +[x1] ldrh w22, [x1, w0, UXTW #2]
- cbz w22, G_M25128_IG52
+ cbz w22, G_M25128_IG51
;; size=32 bbWeight=4.67 PerfScore 60.67 G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz ; byrRegs -[x1] @@ -132,11 +132,11 @@ G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 ;; size=8 bbWeight=1.17 PerfScore 1.75 G_M25128_IG06: ; bbWeight=1.27, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #44
- beq G_M25128_IG27
+ beq G_M25128_IG24
;; size=8 bbWeight=1.27 PerfScore 1.91 G_M25128_IG07: ; bbWeight=1.11, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #61
- beq G_M25128_IG30
+ beq G_M25128_IG27
;; size=8 bbWeight=1.11 PerfScore 1.66 G_M25128_IG08: ; bbWeight=0.94, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz mov w0, w23 @@ -167,16 +167,16 @@ G_M25128_IG10: ; bbWeight=0.27, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr w0, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bge G_M25128_IG35
+ bge G_M25128_IG38
add w1, w0, #1 str w1, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bhs G_M25128_IG55
+ bhs G_M25128_IG53
ldr x1, [x19] ; byrRegs +[x1] ldrh w23, [x1, w0, UXTW #2]
- cbz w23, G_M25128_IG52
+ cbz w23, G_M25128_IG51
;; size=52 bbWeight=0.27 PerfScore 5.73 G_M25128_IG11: ; bbWeight=62.37, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz ; byrRegs -[x1] @@ -187,115 +187,112 @@ G_M25128_IG12: ; bbWeight=62.20, gcrefRegs=200000 {x21}, byrefRegs=180000 mov w0, #61 cmp w23, #44 ccmp w23, w0, z, ne
- bne G_M25128_IG32
+ beq G_M25128_IG37
;; size=20 bbWeight=62.20 PerfScore 217.70
-G_M25128_IG13: ; bbWeight=0.33, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref - ldr w0, [x19, #0x10] - sub w0, w0, #1 - str w0, [x19, #0x10] - ;; size=12 bbWeight=0.33 PerfScore 1.50 -G_M25128_IG14: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; byrRegs -[x19] - cbnz w24, G_M25128_IG18 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M25128_IG15: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+G_M25128_IG13: ; bbWeight=61.59, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + mov w0, #34 + cmp w23, #39 + ccmp w23, w0, z, ne + beq G_M25128_IG51 + ;; size=16 bbWeight=61.59 PerfScore 153.98 +G_M25128_IG14: ; bbWeight=61.59, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + cmp w23, #92 + beq G_M25128_IG19 + ;; size=8 bbWeight=61.59 PerfScore 92.39 +G_M25128_IG15: ; bbWeight=61.55, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
ldr w0, [fp, #-0x48] // [V03 loc1+0x08]
- cmp w0, #0 - ble G_M25128_IG18 - sub w23, w0, #1 - cmp w23, w0 - blt G_M25128_IG17 - ;; size=24 bbWeight=0.50 PerfScore 2.75 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w23, w0 - bhs G_M25128_IG55 - ldr x0, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x0] - ldrh w0, [x0, w23, UXTW #2] - ; byrRegs -[x0] - movz x1, #0xD1FFAB1E // code for System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbnz w0, G_M25128_IG53 - ;; size=44 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w24, [fp, #-0x48] // [V03 loc1+0x08] - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w24, w0 - bhi G_M25128_IG54 - ldr x19, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x19] - tbz w24, #31, G_M25128_IG19 - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x21] - ; gcr arg pop 0 - ;; size=52 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - str x19, [fp, #-0x60] // [V58 tmp51] - str w24, [fp, #-0x58] // [V59 tmp52] - sub x0, fp, #96 // [V35 tmp28] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - ; byrRegs -[x19] - ; gcr arg pop 0 - mov x21, x0 - ; gcrRegs +[x21] - ldr x1, [fp, #-0x50] // [V03 loc1] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #-0x50] - stp xzr, xzr, [fp, #-0x40] - cbnz x1, G_M25128_IG25 - ;; size=52 bbWeight=0.50 PerfScore 6.75 -G_M25128_IG20: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0-x1] - mov x14, x20 - ; byrRegs +[x14] - mov x15, x21 - ; gcrRegs +[x15] - bl CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[x15 x21] - ; byrRegs -[x14 x20] - mov w0, #3
+ ldr x1, [fp, #-0x40] // [V03 loc1+0x10] + ; byrRegs +[x1] + ldr w2, [fp, #-0x38] // [V03 loc1+0x18] + cmp w0, w2 + bhs G_M25128_IG54 + strh w23, [x1, w0, UXTW #2] + add w0, w0, #1 + str w0, [fp, #-0x48] // [V03 loc1+0x08] + ;; size=32 bbWeight=61.55 PerfScore 615.53 +G_M25128_IG16: ; bbWeight=61.59, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ; byrRegs -[x1] + ldr w0, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bge G_M25128_IG26 + ;; size=16 bbWeight=61.59 PerfScore 461.95 +G_M25128_IG17: ; bbWeight=246.37, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + add w1, w0, #1 + str w1, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bhs G_M25128_IG53 + ldr x1, [x19] + ; byrRegs +[x1] + ldrh w23, [x1, w0, UXTW #2] + cbz w23, G_M25128_IG51 + ;; size=32 bbWeight=246.37 PerfScore 3202.86 +G_M25128_IG18: ; bbWeight=61.59, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref + ; byrRegs -[x1] + b G_M25128_IG11 + ;; size=4 bbWeight=61.59 PerfScore 61.59 +G_M25128_IG19: ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bge G_M25128_IG43 + ;; size=16 bbWeight=0.04 PerfScore 0.30 +G_M25128_IG20: ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [x19, #0x10] + add w1, w0, #1 + str w1, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bhs G_M25128_IG53 + ldr x1, [x19] + ; byrRegs +[x1] + ldrh w1, [x1, w0, UXTW #2] + ; byrRegs -[x1] + cbz w1, G_M25128_IG51 + ;; size=36 bbWeight=0.16 PerfScore 2.60 +G_M25128_IG21: ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + cmp w1, #61 + bhi G_M25128_IG58 + cmp w1, #39 + bhi G_M25128_IG57 + mov w0, #39 + cmp w1, #34 + ccmp w1, w0, z, ne + bne G_M25128_IG51 + ;; size=32 bbWeight=0.04 PerfScore 0.22 +G_M25128_IG22: ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [fp, #-0x48] // [V03 loc1+0x08] + ldr x2, [fp, #-0x40] // [V03 loc1+0x10] + ; byrRegs +[x2] + ldr w3, [fp, #-0x38] // [V03 loc1+0x18] + cmp w0, w3 + bhs G_M25128_IG44 + strh w1, [x2, w0, UXTW #2] + add w0, w0, #1 + str w0, [fp, #-0x48] // [V03 loc1+0x08] + b G_M25128_IG16
...

+4 (+0.26%) : 5807.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T01] ( 25,883.71) byref -> x19 this single-def ; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x20 single-def
-; V02 loc0 [V02,T03] ( 18,502.67) ushort -> x23
+; V02 loc0 [V02,T03] ( 18,502.79) ushort -> x23
; V03 loc1 [V03 ] ( 39,253.57) struct (32) [fp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T08] ( 6, 64.01) ushort -> x24 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -113,7 +113,7 @@ G_M25128_IG03: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr w0, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bge G_M25128_IG26
+ bge G_M25128_IG23
;; size=16 bbWeight=1.17 PerfScore 8.75 G_M25128_IG04: ; bbWeight=4.67, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz add w1, w0, #1 @@ -124,7 +124,7 @@ G_M25128_IG04: ; bbWeight=4.67, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr x1, [x19] ; byrRegs +[x1] ldrh w22, [x1, w0, UXTW #2]
- cbz w22, G_M25128_IG56
+ cbz w22, G_M25128_IG57
;; size=32 bbWeight=4.67 PerfScore 60.67 G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz ; byrRegs -[x1] @@ -133,11 +133,11 @@ G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 ;; size=8 bbWeight=1.17 PerfScore 1.75 G_M25128_IG06: ; bbWeight=1.32, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #44
- beq G_M25128_IG27
+ beq G_M25128_IG24
;; size=8 bbWeight=1.32 PerfScore 1.98 G_M25128_IG07: ; bbWeight=1.16, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #61
- beq G_M25128_IG30
+ beq G_M25128_IG27
;; size=8 bbWeight=1.16 PerfScore 1.73 G_M25128_IG08: ; bbWeight=0.99, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz mov w0, w23 @@ -177,143 +177,48 @@ G_M25128_IG10: ; bbWeight=0.32, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr x1, [x19] ; byrRegs +[x1] ldrh w23, [x1, w0, UXTW #2]
- cbz w23, G_M25128_IG56
+ cbz w23, G_M25128_IG57
;; size=52 bbWeight=0.32 PerfScore 6.76 G_M25128_IG11: ; bbWeight=62.37, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz ; byrRegs -[x1] cbz w23, G_M25128_IG44 ;; size=4 bbWeight=62.37 PerfScore 62.37 G_M25128_IG12: ; bbWeight=62.20, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w24, G_M25128_IG46
+ cbnz w24, G_M25128_IG48
mov w0, #61 cmp w23, #44 ccmp w23, w0, z, ne
- bne G_M25128_IG32
+ beq G_M25128_IG43
;; size=20 bbWeight=62.20 PerfScore 217.70
-G_M25128_IG13: ; bbWeight=0.33, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref - ldr w22, [x19, #0x10] - sub w0, w22, #1 - str w0, [x19, #0x10] - ;; size=12 bbWeight=0.33 PerfScore 1.50 -G_M25128_IG14: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; byrRegs -[x19] - cbnz w24, G_M25128_IG18 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M25128_IG15: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+G_M25128_IG13: ; bbWeight=61.87, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + mov w0, #34 + cmp w23, #39 + ccmp w23, w0, z, ne + beq G_M25128_IG57 + ;; size=16 bbWeight=61.87 PerfScore 154.67 +G_M25128_IG14: ; bbWeight=61.54, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + cmp w23, #92 + beq G_M25128_IG19 + ;; size=8 bbWeight=61.54 PerfScore 92.32 +G_M25128_IG15: ; bbWeight=61.44, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
ldr w0, [fp, #-0x48] // [V03 loc1+0x08]
- cmp w0, #0 - ble G_M25128_IG18 - sub w23, w0, #1 - cmp w23, w0 - blt G_M25128_IG17 - ;; size=24 bbWeight=0.50 PerfScore 2.75 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w23, w0 - bhs G_M25128_IG45 - ldr x0, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x0] - ldrh w0, [x0, w23, UXTW #2] - ; byrRegs -[x0] - movz x1, #0xD1FFAB1E // code for System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbnz w0, G_M25128_IG57 - ;; size=44 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w24, [fp, #-0x48] // [V03 loc1+0x08] - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w24, w0 - bhi G_M25128_IG58 - ldr x19, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x19] - tbz w24, #31, G_M25128_IG19 - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x21] - ; gcr arg pop 0 - ;; size=52 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - str x19, [fp, #-0x60] // [V58 tmp51] - str w24, [fp, #-0x58] // [V59 tmp52] - sub x0, fp, #96 // [V35 tmp28] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - ; byrRegs -[x19] - ; gcr arg pop 0 - mov x21, x0 - ; gcrRegs +[x21] - ldr x1, [fp, #-0x50] // [V03 loc1] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #-0x50] - stp xzr, xzr, [fp, #-0x40] - cbnz x1, G_M25128_IG25 - ;; size=52 bbWeight=0.50 PerfScore 6.75 -G_M25128_IG20: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0-x1] - mov x14, x20 - ; byrRegs +[x14] - mov x15, x21 - ; gcrRegs +[x15] - bl CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[x15 x21] - ; byrRegs -[x14 x20] - mov w0, #3 - movz xip0, #0xD1FFAB1E - movk xip0, #0xD1FFAB1E LSL #16 - movk xip0, #0xD1FFAB1E LSL #32 - movk xip0, #0xD1FFAB1E LSL #48 - ldr xip1, [fp, #-0x68] // [V62 GsCookie] - cmp xip0, xip1 - beq G_M25128_IG21 - bl CORINFO_HELP_FAIL_FAST - ; gcr arg pop 0 - ;; size=48 bbWeight=0.50 PerfScore 4.50 -G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - sub sp, fp, #112 - ldp fp, lr, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - add sp, sp, #128 - ret lr - ;; size=28 bbWeight=0.50 PerfScore 3.00 -G_M25128_IG22: ; bbWeight=61.54, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz - ; gcrRegs +[x21] - ; byrRegs +[x19-x20]
+ ldr x1, [fp, #-0x40] // [V03 loc1+0x10] + ; byrRegs +[x1] + ldr w2, [fp, #-0x38] // [V03 loc1+0x18] + cmp w0, w2 + bhs G_M25128_IG46 + strh w23, [x1, w0, UXTW #2] + add w0, w0, #1 + str w0, [fp, #-0x48] // [V03 loc1+0x08] + ;; size=32 bbWeight=61.44 PerfScore 614.39 +G_M25128_IG16: ; bbWeight=61.54, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ; byrRegs -[x1]
ldr w0, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bge G_M25128_IG29
+ bge G_M25128_IG26
;; size=16 bbWeight=61.54 PerfScore 461.59
-G_M25128_IG23: ; bbWeight=246.18, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M25128_IG17: ; bbWeight=246.18, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
add w1, w0, #1 str w1, [x19, #0x10] ldr w1, [x19, #0x08] @@ -322,36 +227,58 @@ G_M25128_IG23: ; bbWeight=246.18, gcrefRegs=200000 {x21}, byrefRegs=18000 ldr x1, [x19] ; byrRegs +[x1] ldrh w23, [x1, w0, UXTW #2]
- cbz w23, G_M25128_IG56
+ cbz w23, G_M25128_IG57
;; size=32 bbWeight=246.18 PerfScore 3200.33
-G_M25128_IG24: ; bbWeight=61.54, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref
+G_M25128_IG18: ; bbWeight=61.54, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref
; byrRegs -[x1] b G_M25128_IG11 ;; size=4 bbWeight=61.54 PerfScore 61.54
-G_M25128_IG25: ; bbWeight=0.03, gcrefRegs=200002 {x1 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs +[x1] - ; byrRegs -[x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - ; gcrRegs +[x0] - mov w2, wzr - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - b G_M25128_IG20 - ;; size=44 bbWeight=0.03 PerfScore 0.31 -G_M25128_IG26: ; bbWeight=4.67, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref - ; byrRegs +[x19]
+G_M25128_IG19: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w22, [x19, #0x10] + ldr w0, [x19, #0x08] + cmp w22, w0 + bge G_M25128_IG37 + ;; size=16 bbWeight=0.11 PerfScore 0.79
...

+8 (+0.51%) : 5713.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T01] ( 26,885.12) byref -> x19 this single-def ; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x20 single-def
-; V02 loc0 [V02,T03] ( 18,502.40) ushort -> x23
+; V02 loc0 [V02,T03] ( 18,503.22) ushort -> x23
; V03 loc1 [V03 ] ( 39,254.52) struct (32) [fp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T08] ( 6, 63.83) ushort -> x24 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -112,31 +112,31 @@ G_M25128_IG03: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 ldr w0, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bge G_M25128_IG27
+ bge G_M25128_IG24
;; size=16 bbWeight=1.17 PerfScore 8.75 G_M25128_IG04: ; bbWeight=4.67, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz add w1, w0, #1 str w1, [x19, #0x10] ldr w1, [x19, #0x08] cmp w0, w1
- bhs G_M25128_IG46
+ bhs G_M25128_IG54
ldr x1, [x19] ; byrRegs +[x1] ldrh w22, [x1, w0, UXTW #2]
- cbz w22, G_M25128_IG57
+ cbz w22, G_M25128_IG52
;; size=32 bbWeight=4.67 PerfScore 60.67 G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz ; byrRegs -[x1] sxtw w23, w22
- cbz w23, G_M25128_IG40
+ cbz w23, G_M25128_IG42
;; size=8 bbWeight=1.17 PerfScore 1.75 G_M25128_IG06: ; bbWeight=1.21, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #44
- beq G_M25128_IG28
+ beq G_M25128_IG25
;; size=8 bbWeight=1.21 PerfScore 1.82 G_M25128_IG07: ; bbWeight=1.05, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz cmp w23, #61
- beq G_M25128_IG31
+ beq G_M25128_IG28
;; size=8 bbWeight=1.05 PerfScore 1.57 G_M25128_IG08: ; bbWeight=0.88, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz mov w0, w23 @@ -160,125 +160,142 @@ G_M25128_IG09: ; bbWeight=0.71, gcrefRegs=200000 {x21}, byrefRegs=180000 mov w0, #34 cmp w23, #39 ccmp w23, w0, z, ne
- beq G_M25128_IG25
+ beq G_M25128_IG22
;; size=48 bbWeight=0.71 PerfScore 7.13 G_M25128_IG10: ; bbWeight=62.40, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
- cbz w23, G_M25128_IG45
+ cbz w23, G_M25128_IG44
;; size=4 bbWeight=62.40 PerfScore 62.40 G_M25128_IG11: ; bbWeight=62.24, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w24, G_M25128_IG47
+ cbnz w24, G_M25128_IG57
mov w0, #61 cmp w23, #44 ccmp w23, w0, z, ne
- bne G_M25128_IG33
+ beq G_M25128_IG38
;; size=20 bbWeight=62.24 PerfScore 217.82
-G_M25128_IG12: ; bbWeight=0.33, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref - ldr w0, [x19, #0x10] - sub w0, w0, #1 - str w0, [x19, #0x10] - ;; size=12 bbWeight=0.33 PerfScore 1.50 -G_M25128_IG13: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; byrRegs -[x19] - cbnz w24, G_M25128_IG17 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M25128_IG14: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+G_M25128_IG12: ; bbWeight=61.90, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + mov w0, #34 + cmp w23, #39 + ccmp w23, w0, z, ne + beq G_M25128_IG52 + ;; size=16 bbWeight=61.90 PerfScore 154.75 +G_M25128_IG13: ; bbWeight=61.90, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + cmp w23, #92 + beq G_M25128_IG18 + ;; size=8 bbWeight=61.90 PerfScore 92.85 +G_M25128_IG14: ; bbWeight=61.84, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz
ldr w0, [fp, #-0x48] // [V03 loc1+0x08]
- cmp w0, #0 - ble G_M25128_IG17 - sub w23, w0, #1 - cmp w23, w0 - blt G_M25128_IG16 - ;; size=24 bbWeight=0.50 PerfScore 2.75 -G_M25128_IG15: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=28 bbWeight=2 PerfScore 13.00 -G_M25128_IG16: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w23, w0 - bhs G_M25128_IG46 - ldr x0, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x0] - ldrh w0, [x0, w23, UXTW #2] - ; byrRegs -[x0] - movz x1, #0xD1FFAB1E // code for System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbnz w0, G_M25128_IG58 - ;; size=44 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ldr w24, [fp, #-0x48] // [V03 loc1+0x08] - ldr w0, [fp, #-0x38] // [V03 loc1+0x18] - cmp w24, w0
+ ldr x1, [fp, #-0x40] // [V03 loc1+0x10] + ; byrRegs +[x1] + ldr w2, [fp, #-0x38] // [V03 loc1+0x18] + cmp w0, w2 + bhs G_M25128_IG55 + strh w23, [x1, w0, UXTW #2] + add w0, w0, #1 + str w0, [fp, #-0x48] // [V03 loc1+0x08] + ;; size=32 bbWeight=61.84 PerfScore 618.40 +G_M25128_IG15: ; bbWeight=61.84, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ; byrRegs -[x1] + ldr w0, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bge G_M25128_IG27 + ;; size=16 bbWeight=61.84 PerfScore 463.80 +G_M25128_IG16: ; bbWeight=246.76, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + add w1, w0, #1 + str w1, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bhs G_M25128_IG54 + ldr x1, [x19] + ; byrRegs +[x1] + ldrh w23, [x1, w0, UXTW #2] + cbz w23, G_M25128_IG52 + ;; size=32 bbWeight=246.76 PerfScore 3207.82 +G_M25128_IG17: ; bbWeight=61.69, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref + ; byrRegs -[x1] + b G_M25128_IG10 + ;; size=4 bbWeight=61.69 PerfScore 61.69 +G_M25128_IG18: ; bbWeight=0.06, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bge G_M25128_IG39 + ;; size=16 bbWeight=0.06 PerfScore 0.46 +G_M25128_IG19: ; bbWeight=0.25, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [x19, #0x10] + add w1, w0, #1 + str w1, [x19, #0x10] + ldr w1, [x19, #0x08] + cmp w0, w1 + bhs G_M25128_IG54 + ldr x1, [x19] + ; byrRegs +[x1] + ldrh w1, [x1, w0, UXTW #2] + ; byrRegs -[x1] + cbz w1, G_M25128_IG52 + ;; size=36 bbWeight=0.25 PerfScore 3.95 +G_M25128_IG20: ; bbWeight=0.06, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + cmp w1, #61
bhi G_M25128_IG59
- ldr x19, [fp, #-0x40] // [V03 loc1+0x10] - ; byrRegs +[x19] - tbz w24, #31, G_M25128_IG18 - mov x0, x21 - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x21] - ; gcr arg pop 0 - ;; size=52 bbWeight=0.50 PerfScore 7.50 -G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - str x19, [fp, #-0x60] // [V58 tmp51] - str w24, [fp, #-0x58] // [V59 tmp52] - sub x0, fp, #96 // [V35 tmp28] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - ; byrRegs -[x19] - ; gcr arg pop 0 - mov x21, x0 - ; gcrRegs +[x21] - ldr x1, [fp, #-0x50] // [V03 loc1] - ; gcrRegs +[x1] - stp xzr, xzr, [fp, #-0x50] - stp xzr, xzr, [fp, #-0x40] - cbnz x1, G_M25128_IG24 - ;; size=52 bbWeight=0.50 PerfScore 6.75 -G_M25128_IG19: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0-x1] - mov x14, x20 - ; byrRegs +[x14] - mov x15, x21 - ; gcrRegs +[x15] - bl CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[x15 x21] - ; byrRegs -[x14 x20] - mov w0, #3
+ cmp w1, #39 + bhi G_M25128_IG58 + mov w0, #39 + cmp w1, #34 + ccmp w1, w0, z, ne + bne G_M25128_IG52 + ;; size=32 bbWeight=0.06 PerfScore 0.34 +G_M25128_IG21: ; bbWeight=0.06, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ldr w0, [fp, #-0x48] // [V03 loc1+0x08] + ldr x2, [fp, #-0x40] // [V03 loc1+0x10] + ; byrRegs +[x2] + ldr w3, [fp, #-0x38] // [V03 loc1+0x18] + cmp w0, w3 + bhs G_M25128_IG45 + strh w1, [x2, w0, UXTW #2] + add w0, w0, #1 + str w0, [fp, #-0x48] // [V03 loc1+0x08] + b G_M25128_IG15 + ;; size=36 bbWeight=0.06 PerfScore 0.68 +G_M25128_IG22: ; bbWeight=0.21, gcrefRegs=200000 {x21}, byrefRegs=180000 {x19 x20}, byref, isz + ; byrRegs -[x2] + sxtw w24, w22 + ldr w0, [x19, #0x10] + ldr w1, [x19, #0x08]
...

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-24 (-5.41%) : 126983.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)

@@ -8,7 +8,7 @@ ; 4 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 8, 35 ) ref -> x19 this class-hnd single-def <System.IO.TempAclDirectory>
+; V00 this [V00,T05] ( 8, 35 ) ref -> x19 this class-hnd single-def <System.IO.TempAclDirectory>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.IO.DirectoryInfo> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.DirectoryInfo]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.IO.DirectoryInfo> @@ -17,33 +17,35 @@ ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T00] ( 6, 96 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.IO.DirectoryInfo> ;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V09 tmp3 [V09,T18] ( 2, 4 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V09 tmp3 [V09,T20] ( 2, 4 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.DirectoryInfo]>
-;* V11 tmp5 [V11,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp5 [V11,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V13 tmp7 [V13,T08] ( 2, 32 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V13 tmp7 [V13,T06] ( 2, 32 ) ref -> x20 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.FileInfo]>
-;* V15 tmp9 [V15,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp9 [V15,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V17 tmp11 [V17,T07] ( 5, 25.00) ref -> x20 single-def "field V02._list (fldOffset=0x0)" P-INDEP -; V18 tmp12 [V18,T10] ( 2, 10.75) ref -> x1 "field V02._current (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T11] ( 4, 23.75) ref -> x20 single-def "field V02._list (fldOffset=0x0)" P-INDEP +; V18 tmp12 [V18,T12] ( 2, 10.75) ref -> x1 "field V02._current (fldOffset=0x8)" P-INDEP
; V19 tmp13 [V19,T02] ( 6, 36.00) int -> x22 "field V02._index (fldOffset=0x10)" P-INDEP
-; V20 tmp14 [V20,T16] ( 3, 10.25) int -> x21 single-def "field V02._version (fldOffset=0x14)" P-INDEP -; V21 tmp15 [V21,T05] ( 5, 32.00) ref -> x20 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V22 tmp16 [V22,T11] ( 2, 10.75) ref -> x1 "field V04._current (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T18] ( 2, 9 ) int -> x21 single-def "field V02._version (fldOffset=0x14)" P-INDEP +; V21 tmp15 [V21,T07] ( 4, 30.75) ref -> x20 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V22 tmp16 [V22,T13] ( 2, 10.75) ref -> x1 "field V04._current (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T01] ( 6, 43.00) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V24 tmp18 [V24,T12] ( 3, 17.25) int -> x21 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V25 tmp19 [V25,T19] ( 3, 3 ) ref -> x20 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T14] ( 2, 16 ) int -> x21 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V25 tmp19 [V25,T21] ( 3, 3 ) ref -> x20 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V27 tmp21 [V27,T21] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V28 tmp22 [V28,T20] ( 2, 2 ) int -> x21 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V29 tmp23 [V29,T09] ( 3, 24 ) ref -> x20 single-def "field V14._list (fldOffset=0x0)" P-INDEP
+;* V27 tmp21 [V27,T23] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V28 tmp22 [V28,T22] ( 2, 2 ) int -> x21 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V29 tmp23 [V29,T08] ( 3, 24 ) ref -> x20 single-def "field V14._list (fldOffset=0x0)" P-INDEP
;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._current (fldOffset=0x8)" P-INDEP
-;* V31 tmp25 [V31,T17] ( 0, 0 ) int -> zero-ref single-def "field V14._index (fldOffset=0x10)" P-INDEP -; V32 tmp26 [V32,T13] ( 2, 16 ) int -> x21 single-def "field V14._version (fldOffset=0x14)" P-INDEP
+;* V31 tmp25 [V31,T19] ( 0, 0 ) int -> zero-ref single-def "field V14._index (fldOffset=0x10)" P-INDEP +; V32 tmp26 [V32,T15] ( 2, 16 ) int -> x21 single-def "field V14._version (fldOffset=0x14)" P-INDEP
; V33 tmp27 [V33,T03] ( 3, 40.50) ref -> x0 "arr expr" ; V34 tmp28 [V34,T04] ( 3, 40.50) ref -> x0 "arr expr"
-; V35 PSPSym [V35,T22] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V35 PSPSym [V35,T24] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" +; V36 cse0 [V36,T09] ( 2, 16.00) int -> x0 "CSE - aggressive" +; V37 cse1 [V37,T10] ( 2, 16.00) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -79,12 +81,12 @@ G_M40197_IG03: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000 G_M40197_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x14] cmp w21, w0
- bne G_M40197_IG09
+ bne G_M40197_IG08
;; size=12 bbWeight=8 PerfScore 36.00 G_M40197_IG05: ; bbWeight=8.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x10] cmp w22, w0
- bhs G_M40197_IG10
+ bhs G_M40197_IG09
;; size=12 bbWeight=8.00 PerfScore 35.99 G_M40197_IG06: ; bbWeight=6.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x08] @@ -115,21 +117,15 @@ G_M40197_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M40197_IG09: ; bbWeight=1.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19-x20] - ldr w0, [x20, #0x14] - cmp w21, w0 - bne G_M40197_IG08 - ;; size=12 bbWeight=1.25 PerfScore 5.63 -G_M40197_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
+G_M40197_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19]
ldr x20, [x19, #0x18] ; gcrRegs +[x20] ldr w21, [x20, #0x14] mov w22, wzr
- b G_M40197_IG12
+ b G_M40197_IG11
;; size=16 bbWeight=8 PerfScore 60.00
-G_M40197_IG11: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+G_M40197_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x1] mov x0, x19 ; gcrRegs +[x0] @@ -141,17 +137,17 @@ G_M40197_IG11: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=24 bbWeight=4 PerfScore 24.00
-G_M40197_IG12: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M40197_IG11: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x14] cmp w21, w0
- bne G_M40197_IG15
+ bne G_M40197_IG08
;; size=12 bbWeight=8 PerfScore 36.00
-G_M40197_IG13: ; bbWeight=8.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M40197_IG12: ; bbWeight=8.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x10] cmp w22, w0
- bhs G_M40197_IG16
+ bhs G_M40197_IG14
;; size=12 bbWeight=8.00 PerfScore 35.99
-G_M40197_IG14: ; bbWeight=6.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M40197_IG13: ; bbWeight=6.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -163,17 +159,11 @@ G_M40197_IG14: ; bbWeight=6.75, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x1, [x0, w22, UXTW #3] ; gcrRegs +[x1] add w22, w22, #1
- b G_M40197_IG11
+ b G_M40197_IG10
;; size=32 bbWeight=6.75 PerfScore 84.37
-G_M40197_IG15: ; bbWeight=1.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1]
+G_M40197_IG14: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1 x20]
; byrRegs -[x0]
- ldr w0, [x20, #0x14] - cmp w21, w0 - bne G_M40197_IG08 - ;; size=12 bbWeight=1.25 PerfScore 5.63 -G_M40197_IG16: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -217,31 +207,31 @@ G_M40197_IG16: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movn w0, #0 str w0, [x20, #0x28] ;; size=116 bbWeight=8 PerfScore 240.00
-G_M40197_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M40197_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x20] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M40197_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M40197_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #64 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M40197_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M40197_IG17]
+G_M40197_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M40197_IG15]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M40197_IG20: ; bbWeight=0, funclet epilog, nogc, extend
+G_M40197_IG18: ; bbWeight=0, funclet epilog, nogc, extend
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 28, PerfScore 688.99, instruction count 111, allocated bytes for code 444 (MethodHash=f82462fa) for method System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
+; Total bytes of code 420, prolog size 28, PerfScore 677.74, instruction count 105, allocated bytes for code 420 (MethodHash=f82462fa) for method System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
; ============================================================ Unwind Info: @@ -252,7 +242,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 101 (0x00065) Actual length = 404 (0x000194)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -289,4 +279,4 @@ Unwind Info: *************** EH table for System.IO.TempAclDirectory:DeleteDirectory():this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M40197_IG02..G_M40197_IG17) handled by [G_M40197_IG18..END) (class: 1000012)
+EH#0: try [G_M40197_IG02..G_M40197_IG15) handled by [G_M40197_IG16..END) (class: 1000012)
-16 (-4.12%) : 23363.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
@@ -8,7 +8,7 @@ ; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
; V01 loc0 [V01 ] ( 3, 5 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Numerics.BigInteger> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Numerics.BigInteger> ; V03 loc2 [V03,T06] ( 3, 6 ) ref -> x19 class-hnd exact single-def <System.String> @@ -50,10 +50,10 @@ ;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "field V12._sign (fldOffset=0x8)" P-DEP ; V40 tmp34 [V40 ] ( 3, 10 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V14._bits (fldOffset=0x0)" P-DEP ; V41 tmp35 [V41 ] ( 3, 10 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V14._sign (fldOffset=0x8)" P-DEP
-; V42 tmp36 [V42,T12] ( 3, 4 ) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP -; V43 tmp37 [V43,T14] ( 3, 4 ) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP -; V44 tmp38 [V44,T13] ( 3, 4.00) byref -> x4 "field V19._reference (fldOffset=0x0)" P-INDEP -; V45 tmp39 [V45,T15] ( 3, 4.00) int -> x6 "field V19._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T11] ( 3, 5.99) byref -> registers "field V16._reference (fldOffset=0x0)" P-INDEP +; V43 tmp37 [V43,T12] ( 3, 5.99) int -> registers "field V16._length (fldOffset=0x8)" P-INDEP +; V44 tmp38 [V44,T14] ( 3, 4.00) byref -> x3 "field V19._reference (fldOffset=0x0)" P-INDEP +; V45 tmp39 [V45,T15] ( 3, 4.00) int -> x4 "field V19._length (fldOffset=0x8)" P-INDEP
; V46 tmp40 [V46 ] ( 3, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V22._bits (fldOffset=0x0)" P-DEP ; V47 tmp41 [V47 ] ( 3, 10 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V22._sign (fldOffset=0x8)" P-DEP ;* V48 tmp42 [V48 ] ( 0, 0 ) ref -> zero-ref "field V23._bits (fldOffset=0x0)" P-DEP @@ -93,7 +93,7 @@ G_M64460_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov w20, wzr ldr w21, [x19, #0x08] cmp w21, #0
- ble G_M64460_IG12
+ ble G_M64460_IG11
;; size=52 bbWeight=1 PerfScore 12.50 G_M64460_IG03: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz add x1, x19, #12 @@ -102,13 +102,13 @@ G_M64460_IG03: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ; byrRegs -[x1] sub w22, w1, #48 cmp w22, #9
- bhi G_M64460_IG11
+ bhi G_M64460_IG10
;; size=20 bbWeight=4 PerfScore 22.00 G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ldr x23, [fp, #0x38] // [V24 tmp18] ; gcrRegs +[x23] ldr w5, [fp, #0x40] // [V25 tmp19]
- cbnz x0, G_M64460_IG06
+ cbnz x0, G_M64460_IG14
cbnz x23, G_M64460_IG05 stp xzr, xzr, [fp, #0x28] smull x1, w2, w5 @@ -124,45 +124,24 @@ G_M64460_IG04: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x24, [fp, #0x28] // [V40 tmp34] ; gcrRegs +[x24] ldr w25, [fp, #0x30] // [V41 tmp35]
- b G_M64460_IG10
+ b G_M64460_IG09
;; size=60 bbWeight=2 PerfScore 40.00
-G_M64460_IG05: ; bbWeight=0.01, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M64460_IG05: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x24] +[x23] mov x0, xzr ; byrRegs +[x0] mov w1, wzr
- mov w3, w1 - mov x1, x0 - ; byrRegs +[x1] - b G_M64460_IG07 - ;; size=20 bbWeight=0.01 PerfScore 0.04 -G_M64460_IG06: ; bbWeight=1.99, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ; byrRegs -[x0-x1] - add x1, x0, #16 - ; byrRegs +[x1] - ldr w0, [x0, #0x08] - ; gcrRegs -[x0] - sxtw w3, w0 - ;; size=12 bbWeight=1.99 PerfScore 7.94 -G_M64460_IG07: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref, isz - cbz x23, G_M64460_IG14
+ ;; size=8 bbWeight=2 PerfScore 2.00 +G_M64460_IG06: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref, isz + cbz x23, G_M64460_IG13
;; size=4 bbWeight=2 PerfScore 2.00
-G_M64460_IG08: ; bbWeight=1.99, gcrefRegs=880000 {x19 x23}, byrefRegs=0002 {x1}, byref - add x4, x23, #16 - ; byrRegs +[x4] - ldr w6, [x23, #0x08] - ;; size=8 bbWeight=1.99 PerfScore 6.95 -G_M64460_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4}, byref - ; gcrRegs -[x23] - mov x0, x1 - ; byrRegs +[x0] - mov w1, w3 - ; byrRegs -[x1] - mov x3, x4
+G_M64460_IG07: ; bbWeight=1.99, gcrefRegs=880000 {x19 x23}, byrefRegs=0001 {x0}, byref + add x3, x23, #16
; byrRegs +[x3]
- mov w4, w6 - ; byrRegs -[x4]
+ ldr w4, [x23, #0x08] + ;; size=8 bbWeight=1.99 PerfScore 6.95 +G_M64460_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3}, byref + ; gcrRegs -[x23]
movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 movk x6, #0xD1FFAB1E LSL #32 @@ -174,8 +153,8 @@ G_M64460_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0012 {x1 x4 mov x24, x0 ; gcrRegs +[x24] mov w25, w1
- ;; size=44 bbWeight=2 PerfScore 17.00 -G_M64460_IG10: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=2 PerfScore 13.00 +G_M64460_IG09: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] stp xzr, xzr, [fp, #0x18] mov w1, w22 @@ -201,16 +180,16 @@ G_M64460_IG10: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 ; gcr arg pop 0 mov w2, w1 ;; size=72 bbWeight=2 PerfScore 37.00
-G_M64460_IG11: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M64460_IG10: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1 cmp w21, w20 bgt G_M64460_IG03 ;; size=12 bbWeight=4 PerfScore 8.00
-G_M64460_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M64460_IG11: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x1, x2 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M64460_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M64460_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x78] ldp x23, x24, [sp, #0x68] ldp x21, x22, [sp, #0x58] @@ -218,16 +197,30 @@ G_M64460_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x80 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M64460_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, gcvars, byref
+G_M64460_IG13: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0] +[x19]
- ; byrRegs +[x1] - mov x4, xzr - ; byrRegs +[x4] - mov w6, wzr - b G_M64460_IG09
+ ; byrRegs +[x0] + mov x3, xzr + ; byrRegs +[x3] + mov w4, wzr + b G_M64460_IG08
;; size=12 bbWeight=0.01 PerfScore 0.03
+G_M64460_IG14: ; bbWeight=1.99, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x23] + ; byrRegs -[x0 x3] + add x1, x0, #16 + ; byrRegs +[x1] + ldr w0, [x0, #0x08] + ; gcrRegs -[x0] + sxtw w3, w0 + mov x0, x1 + ; byrRegs +[x0] + mov w1, w3 + ; byrRegs -[x1] + b G_M64460_IG06 + ;; size=24 bbWeight=1.99 PerfScore 11.91
-; Total bytes of code 388, prolog size 44, PerfScore 169.96, instruction count 97, allocated bytes for code 388 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 171.89, instruction count 93, allocated bytes for code 372 (MethodHash=1fda0433) for method System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
; ============================================================ Unwind Info: @@ -238,7 +231,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-4.12%) : 516.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)

@@ -8,30 +8,31 @@ ; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> -; V01 arg1 [V01,T06] ( 3, 5.37) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> -; V02 arg2 [V02,T07] ( 3, 5.37) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> -; V03 loc0 [V03,T05] ( 4, 8.75) ubyte -> x22 -; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> x21 this class-hnd single-def <Xunit.AggregateMessageSink> +; V01 arg1 [V01,T07] ( 3, 5.37) ref -> x19 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage> +; V02 arg2 [V02,T08] ( 3, 5.37) ref -> x20 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]> +; V03 loc0 [V03,T06] ( 4, 8.75) ubyte -> x22 +; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> x0 "Inlining Arg" -; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> x0 "Inlining Arg" +; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>
-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 6.75) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
+; V13 tmp6 [V13,T02] ( 4, 16.37) ref -> x21 single-def "field V06._list (fldOffset=0x0)" P-INDEP +; V14 tmp7 [V14,T04] ( 2, 6.75) ref -> x0 "field V06._current (fldOffset=0x8)" P-INDEP
; V15 tmp8 [V15,T00] ( 6, 18.50) int -> x24 "field V06._index (fldOffset=0x10)" P-INDEP
-; V16 tmp9 [V16,T04] ( 3, 9.63) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP -; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> x23 single-def "field V06._version (fldOffset=0x14)" P-INDEP +; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> x21 single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP -; V20 tmp13 [V20,T13] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP -; V21 tmp14 [V21,T02] ( 3, 20.25) ref -> x0 "arr expr" -; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V23 cse0 [V23,T15] ( 3, 1.50) ref -> x1 "CSE - moderate"
+;* V19 tmp12 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x10)" P-INDEP +; V20 tmp13 [V20,T14] ( 2, 2 ) int -> x23 single-def "field V10._version (fldOffset=0x14)" P-INDEP +; V21 tmp14 [V21,T01] ( 3, 20.25) ref -> x0 "arr expr" +; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V23 cse0 [V23,T03] ( 2, 8.00) int -> x0 "CSE - aggressive" +; V24 cse1 [V24,T16] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 32 @@ -58,7 +59,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 str x0, [fp, #0x18] // [V04 loc1] ; GC ptr vars +{V04} ;; size=12 bbWeight=1 PerfScore 4.50
-G_M52679_IG03: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG03: ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w1, [fp, #0x20] // [V05 loc2] cbnz w1, G_M52679_IG09 add x1, fp, #32 // [V05 loc2] @@ -90,19 +91,19 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 G_M52679_IG06: ; bbWeight=8, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14] cmp w23, w0
- bne G_M52679_IG10
+ bne G_M52679_IG11
;; size=12 bbWeight=8 PerfScore 36.00 G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10] cmp w24, w0
- bhs G_M52679_IG14
+ bhs G_M52679_IG12
;; size=12 bbWeight=4.00 PerfScore 18.00 G_M52679_IG08: ; bbWeight=3.37, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w24, w2
- bhs G_M52679_IG12
+ bhs G_M52679_IG10
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -135,21 +136,11 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG10: ; bbWeight=0.63, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21] - ldr w0, [x21, #0x14] - cmp w23, w0 - bne G_M52679_IG13 - ;; size=12 bbWeight=0.63 PerfScore 2.81 -G_M52679_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - b G_M52679_IG14 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -158,11 +149,11 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG16
+ cbz w0, G_M52679_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V04} @@ -170,18 +161,18 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x50] ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V14}
+G_M52679_IG16: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V15}
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -189,17 +180,17 @@ G_M52679_IG18: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=000 add x3, fp, #96 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M52679_IG19: ; bbWeight=0, gcVars=0000000000004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52679_IG17: ; bbWeight=0, gcVars=0000000000008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x20] // [V05 loc2]
- cbz w0, G_M52679_IG20
+ cbz w0, G_M52679_IG18
ldr x0, [fp, #0x18] // [V04 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V04 V14}
+ ; GC ptr vars -{V04 V15}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -207,7 +198,7 @@ G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 44, PerfScore 169.06, instruction count 97, allocated bytes for code 388 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 44, PerfScore 162.25, instruction count 93, allocated bytes for code 372 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -218,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -255,4 +246,4 @@ Unwind Info: *************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)
+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
+4 (+0.49%) : 131350.dasm - System.IO.Packaging.Tests.ReflectionTests:g__CheckCharacters|0_0(System.String) (FullOpts)
@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T17] ( 4, 7 ) ref -> x19 class-hnd single-def <System.String> ; V01 loc0 [V01,T08] ( 5, 17 ) int -> x20 ; V02 loc1 [V02,T10] ( 4, 14 ) ushort -> x22
-; V03 loc2 [V03 ] ( 24, 79.99) struct (40) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V03 loc2 [V03 ] ( 26, 75.99) struct (40) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T18] ( 3, 8 ) int -> x23 ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -44,9 +44,9 @@ ; V33 tmp29 [V33,T24] ( 2, 7.98) byref -> x0 "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V36 tmp32 [V36,T19] ( 2, 8 ) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.String>
+; V36 tmp32 [V36,T19] ( 2, 8 ) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.String>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V38 tmp34 [V38,T03] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V38 tmp34 [V38,T03] ( 6, 24.00) int -> x22 "Inlining Arg"
;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V40 tmp36 [V40,T09] ( 2, 16 ) byref -> x25 "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -116,7 +116,7 @@ G_M19374_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov w20, wzr ldr w21, [x19, #0x08] cmp w21, #0
- ble G_M19374_IG22
+ ble G_M19374_IG21
;; size=16 bbWeight=1 PerfScore 5.00 G_M19374_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, x19, #12 @@ -166,7 +166,7 @@ G_M19374_IG08: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=20000 ldr w0, [fp, #0x30] // [V03 loc2+0x10] ldr w1, [fp, #0x40] // [V03 loc2+0x20] cmp w0, w1
- bhi G_M19374_IG26
+ bhi G_M19374_IG24
ldr x2, [fp, #0x38] // [V03 loc2+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -192,7 +192,7 @@ G_M19374_IG09: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=20000 ;; size=40 bbWeight=2 PerfScore 16.00 G_M19374_IG10: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=2000000 {x25}, byref, isz cmp w26, #31
- blo G_M19374_IG18
+ blo G_M19374_IG22
;; size=8 bbWeight=4 PerfScore 6.00 G_M19374_IG11: ; bbWeight=2.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=2000000 {x25}, byref movz x0, #0xD1FFAB1E @@ -220,7 +220,7 @@ G_M19374_IG12: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 ldr w0, [fp, #0x30] // [V03 loc2+0x10] ldr w1, [fp, #0x40] // [V03 loc2+0x20] cmp w0, w1
- bhi G_M19374_IG26
+ bhi G_M19374_IG24
ldr x2, [fp, #0x38] // [V03 loc2+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -249,7 +249,7 @@ G_M19374_IG14: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=40000 cmp w25, #14 blo G_M19374_IG23 ;; size=8 bbWeight=4 PerfScore 6.00
-G_M19374_IG15: ; bbWeight=2.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
+G_M19374_IG15: ; bbWeight=2.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -260,17 +260,17 @@ G_M19374_IG15: ; bbWeight=2.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=40 ldr w0, [fp, #0x30] // [V03 loc2+0x10] add w0, w0, #14 str w0, [fp, #0x30] // [V03 loc2+0x10]
- ;; size=40 bbWeight=2.00 PerfScore 25.94 -G_M19374_IG16: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x22]
ldr w22, [fp, #0x30] // [V03 loc2+0x10]
+ ; byrRegs -[x22]
ldr w0, [fp, #0x40] // [V03 loc2+0x20] cmp w22, w0
- bhi G_M19374_IG26
+ bhi G_M19374_IG24 + ;; size=56 bbWeight=2.00 PerfScore 36.91 +G_M19374_IG16: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
ldr x25, [fp, #0x38] // [V03 loc2+0x18] ; byrRegs +[x25]
- tbz w22, #31, G_M19374_IG19 - ;; size=24 bbWeight=4 PerfScore 34.00
+ tbz w22, #31, G_M19374_IG18 + ;; size=8 bbWeight=4 PerfScore 12.00
G_M19374_IG17: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=2000000 {x25}, byref movz x27, #8 movk x27, #0xD1FFAB1E LSL #16 @@ -285,40 +285,34 @@ G_M19374_IG17: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=20000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1] +[x27]
- b G_M19374_IG24 - ;; size=44 bbWeight=2 PerfScore 18.00 -G_M19374_IG18: ; bbWeight=0.01, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref - ; gcrRegs -[x27] - ; byrRegs -[x25] - add x0, fp, #32 // [V03 loc2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x27 + ; gcrRegs +[x0] + mov x1, x27 + ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M19374_IG12 - ;; size=40 bbWeight=0.01 PerfScore 0.05 -G_M19374_IG19: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=2000000 {x25}, byref, isz - ; byrRegs +[x25]
+ ; gcrRegs -[x0-x1 x27] + ;; size=68 bbWeight=2 PerfScore 29.00 +G_M19374_IG18: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x25 ; byrRegs +[x0] sxtw w1, w22 bl <unknown method> ; gcrRegs +[x0] ; byrRegs -[x0 x25]
- mov x26, x0 - ; gcrRegs +[x26]
+ mov x22, x0 + ; gcrRegs +[x22]
ldr x1, [fp, #0x28] // [V03 loc2+0x08] ; gcrRegs +[x1] stp xzr, xzr, [fp, #0x20] stp xzr, xzr, [fp, #0x30] str xzr, [fp, #0x40]
- cbz x1, G_M19374_IG21
+ cbz x1, G_M19374_IG20
;; size=36 bbWeight=4 PerfScore 34.00
-G_M19374_IG20: ; bbWeight=1.94, gcrefRegs=5080002 {x1 x19 x24 x26}, byrefRegs=0000 {}, byref
+G_M19374_IG19: ; bbWeight=1.94, gcrefRegs=1480002 {x1 x19 x22 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x24 ; gcrRegs +[x0] @@ -330,25 +324,25 @@ G_M19374_IG20: ; bbWeight=1.94, gcrefRegs=5080002 {x1 x19 x24 x26}, byref blr x3 ; gcrRegs -[x0-x1 x24] ;; size=28 bbWeight=1.94 PerfScore 12.64
-G_M19374_IG21: ; bbWeight=4, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref, isz
+G_M19374_IG20: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
uxtb w0, w23 mov w1, #1 strb w1, [fp, #0x18] // [V80 tmp76] strb w0, [fp, #0x19] // [V80 tmp76+0x01] ldrh w0, [fp, #0x18] // [V80 tmp76]
- mov x1, x26
+ mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for Xunit.Assert:True(System.Nullable`1[ubyte],System.String) movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x26]
+ ; gcrRegs -[x1 x22]
add w20, w20, #1 cmp w21, w20 bgt G_M19374_IG03 ;; size=56 bbWeight=4 PerfScore 52.00
-G_M19374_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19374_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x27, [sp, #0x88] ldp x25, x26, [sp, #0x78] @@ -358,7 +352,7 @@ G_M19374_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=1 PerfScore 8.00
-G_M19374_IG23: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref
+G_M19374_IG22: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x24] add x0, fp, #32 // [V03 loc2] movz x1, #0xD1FFAB1E @@ -369,33 +363,25 @@ G_M19374_IG23: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=108 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M19374_IG16
+ b G_M19374_IG12
;; size=40 bbWeight=0.01 PerfScore 0.05
-G_M19374_IG24: ; bbWeight=2, gcrefRegs=9080000 {x19 x24 x27}, byrefRegs=2000000 {x25}, byref - ; gcrRegs +[x27] - ; byrRegs +[x25] - mov x0, x27 - ; gcrRegs +[x0] - mov x1, x27 - ; gcrRegs +[x1]
+G_M19374_IG23: ; bbWeight=0.01, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz + add x0, fp, #32 // [V03 loc2] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1 x27] - b G_M19374_IG19 - ;; size=32 bbWeight=2 PerfScore 15.00 -G_M19374_IG25: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref - ; byrRegs -[x25] - mov x25, xzr - ; byrRegs +[x25] - mov w26, wzr - b G_M19374_IG08 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M19374_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr w22, [fp, #0x30] // [V03 loc2+0x10] + ldr w0, [fp, #0x40] // [V03 loc2+0x20] + cmp w22, w0 + bls G_M19374_IG16 + ;; size=52 bbWeight=0.01 PerfScore 0.08 +G_M19374_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x24]
- ; byrRegs -[x25]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -403,8 +389,15 @@ G_M19374_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
+G_M19374_IG25: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x24] + mov x25, xzr + ; byrRegs +[x25] + mov w26, wzr + b G_M19374_IG08 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 824, prolog size 44, PerfScore 506.59, instruction count 206, allocated bytes for code 824 (MethodHash=fe49b451) for method System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
+; Total bytes of code 828, prolog size 44, PerfScore 491.59, instruction count 207, allocated bytes for code 828 (MethodHash=fe49b451) for method System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -415,7 +408,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 206 (0x000ce) Actual length = 824 (0x000338)
+ Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
...

+20 (+0.82%) : 164882.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[ushort]:b_1690(int):this (FullOpts)

@@ -13,12 +13,12 @@ ; V02 loc0 [V02,T79] ( 2, 5 ) ref -> x21 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T24] ( 5, 17 ) int -> x22 ; V04 loc2 [V04,T12] ( 12, 32 ) int -> x23
-; V05 loc3 [V05,T01] ( 21, 94 ) ref -> [fp+0x58] do-not-enreg[Z] class-hnd EH-live <System.Buffers.BoundedMemory`1[ushort]>
+; V05 loc3 [V05,T01] ( 21, 94 ) ref -> [fp+0x68] do-not-enreg[Z] class-hnd EH-live <System.Buffers.BoundedMemory`1[ushort]>
; V06 loc4 [V06,T09] ( 5, 40 ) ushort -> x25 ; V07 loc5 [V07,T19] ( 10, 24 ) int -> x25 ; V08 loc6 [V08,T00] ( 8,100 ) int -> x26 ; V09 loc7 [V09,T10] ( 3, 40 ) int -> x0
-; V10 loc8 [V10 ] ( 43, 77.98) struct (40) [fp+0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V10 loc8 [V10 ] ( 43, 77.98) struct (40) [fp+0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V11 loc9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ushort]> ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T49] ( 4, 8 ) ref -> x21 class-hnd exact single-def "dup spill" <<unknown class>> @@ -31,23 +31,23 @@ ; V20 tmp8 [V20,T76] ( 3, 6 ) int -> x26 ;* V21 tmp9 [V21 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Memory`1[ushort]>
-; V23 tmp11 [V23 ] ( 3, 12 ) struct (16) [fp+0xA0] do-not-enreg[SFAR] multireg-arg multireg-ret must-init "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
+; V23 tmp11 [V23 ] ( 3, 12 ) struct (16) [fp+0xB0] do-not-enreg[SFAR] multireg-arg multireg-ret must-init "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
; V24 tmp12 [V24,T56] ( 2, 8 ) int -> x23 "impAppendStmt" ; V25 tmp13 [V25,T57] ( 2, 8 ) int -> x23 "impAppendStmt" ; V26 tmp14 [V26,T58] ( 2, 8 ) int -> x2 "impAppendStmt" ;* V27 tmp15 [V27,T99] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Collections.Generic.GenericComparer`1[ushort]> ; V28 tmp16 [V28,T59] ( 2, 8 ) int -> x26 "impAppendStmt" ;* V29 tmp17 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]>
-; V30 tmp18 [V30,T04] ( 5, 68 ) int -> [fp+0x9C] "Inline stloc first use temp"
+; V30 tmp18 [V30,T04] ( 5, 68 ) int -> [fp+0xAC] "Inline stloc first use temp"
;* V31 tmp19 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V32 tmp20 [V32,T11] ( 2, 40 ) ushort -> [fp+0x98] spill-single-def "Inlining Arg"
+; V32 tmp20 [V32,T11] ( 2, 40 ) ushort -> [fp+0xA8] spill-single-def "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V35 tmp23 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V36 tmp24 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V38 tmp26 [V38 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V39 tmp27 [V39,T05] ( 2, 64 ) ushort -> [fp+0x94] ld-addr-op spill-single-def "Inlining Arg"
+; V39 tmp27 [V39,T05] ( 2, 64 ) ushort -> [fp+0xA4] ld-addr-op spill-single-def "Inlining Arg"
; V40 tmp28 [V40,T06] ( 2, 64 ) ushort -> x0 "Inlining Arg" ;* V41 tmp29 [V41 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V42 tmp30 [V42 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> @@ -79,8 +79,8 @@ ;* V68 tmp56 [V68 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V69 tmp57 [V69,T25] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V70 tmp58 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V71 tmp59 [V71,T41] ( 3, 12 ) int -> [fp+0x90] spill-single-def "Inlining Arg" -; V72 tmp60 [V72,T68] ( 2, 7.99) byref -> [fp+0x50] spill-single-def "Inlining Arg"
+; V71 tmp59 [V71,T41] ( 3, 12 ) int -> [fp+0xA0] spill-single-def "Inlining Arg" +; V72 tmp60 [V72,T68] ( 2, 7.99) byref -> [fp+0x60] spill-single-def "Inlining Arg"
;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V74 tmp62 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V75 tmp63 [V75,T101] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -90,8 +90,8 @@ ;* V79 tmp67 [V79 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V80 tmp68 [V80,T26] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V81 tmp69 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V82 tmp70 [V82,T42] ( 3, 12 ) int -> [fp+0x8C] spill-single-def "Inlining Arg" -; V83 tmp71 [V83,T69] ( 2, 7.99) byref -> [fp+0x48] spill-single-def "Inlining Arg"
+; V82 tmp70 [V82,T42] ( 3, 12 ) int -> [fp+0x9C] spill-single-def "Inlining Arg" +; V83 tmp71 [V83,T69] ( 2, 7.99) byref -> [fp+0x58] spill-single-def "Inlining Arg"
;* V84 tmp72 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V85 tmp73 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp74 [V86,T102] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -101,8 +101,8 @@ ;* V90 tmp78 [V90 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V91 tmp79 [V91,T27] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V92 tmp80 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V93 tmp81 [V93,T43] ( 3, 12 ) int -> [fp+0x88] spill-single-def "Inlining Arg" -; V94 tmp82 [V94,T70] ( 2, 7.99) byref -> [fp+0x40] spill-single-def "Inlining Arg"
+; V93 tmp81 [V93,T43] ( 3, 12 ) int -> [fp+0x98] spill-single-def "Inlining Arg" +; V94 tmp82 [V94,T70] ( 2, 7.99) byref -> [fp+0x50] spill-single-def "Inlining Arg"
;* V95 tmp83 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V96 tmp84 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V97 tmp85 [V97,T103] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -115,12 +115,12 @@ ;* V104 tmp92 [V104 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V105 tmp93 [V105 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V106 tmp94 [V106 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V107 tmp95 [V107,T21] ( 7, 23.98) ref -> [fp+0x38] class-hnd exact spill-single-def "Inlining Arg" <System.String>
+; V107 tmp95 [V107,T21] ( 7, 23.98) ref -> [fp+0x48] class-hnd exact spill-single-def "Inlining Arg" <System.String>
;* V108 tmp96 [V108 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V109 tmp97 [V109,T28] ( 4, 16 ) int -> x0 "Inlining Arg" ;* V110 tmp98 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V111 tmp99 [V111,T44] ( 3, 12 ) int -> [fp+0x84] spill-single-def "Inlining Arg" -; V112 tmp100 [V112,T67] ( 2, 7.99) byref -> [fp+0x30] spill-single-def "Inlining Arg"
+; V111 tmp99 [V111,T44] ( 3, 12 ) int -> [fp+0x94] spill-single-def "Inlining Arg" +; V112 tmp100 [V112,T67] ( 2, 7.99) byref -> [fp+0x40] spill-single-def "Inlining Arg"
;* V113 tmp101 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V114 tmp102 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V115 tmp103 [V115,T100] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -131,11 +131,11 @@ ;* V120 tmp108 [V120 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V121 tmp109 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V122 tmp110 [V122 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V123 tmp111 [V123,T82] ( 2, 4 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V123 tmp111 [V123,T82] ( 2, 4 ) ref -> [fp+0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V124 tmp112 [V124 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V125 tmp113 [V125,T29] ( 4, 16 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V125 tmp113 [V125,T29] ( 4, 16 ) int -> [fp+0x90] spill-single-def "Inlining Arg"
;* V126 tmp114 [V126 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V127 tmp115 [V127,T51] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
+; V127 tmp115 [V127,T51] ( 2, 8 ) byref -> [fp+0x30] spill-single-def "Inlining Arg"
;* V128 tmp116 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V129 tmp117 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V130 tmp118 [V130 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -171,9 +171,9 @@ ;* V160 tmp148 [V160 ] ( 0, 0 ) ref -> zero-ref "field V22._object (fldOffset=0x0)" P-DEP ;* V161 tmp149 [V161 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-DEP ;* V162 tmp150 [V162 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-DEP
-; V163 tmp151 [V163,T40] ( 3, 12 ) ref -> [fp+0xA0] do-not-enreg[] "field V23._object (fldOffset=0x0)" P-DEP -; V164 tmp152 [V164,T45] ( 3, 12 ) int -> [fp+0xA8] do-not-enreg[] "field V23._index (fldOffset=0x8)" P-DEP -; V165 tmp153 [V165,T46] ( 3, 12 ) int -> [fp+0xAC] do-not-enreg[] "field V23._length (fldOffset=0xc)" P-DEP
+; V163 tmp151 [V163,T40] ( 3, 12 ) ref -> [fp+0xB0] do-not-enreg[] "field V23._object (fldOffset=0x0)" P-DEP +; V164 tmp152 [V164,T45] ( 3, 12 ) int -> [fp+0xB8] do-not-enreg[] "field V23._index (fldOffset=0x8)" P-DEP +; V165 tmp153 [V165,T46] ( 3, 12 ) int -> [fp+0xBC] do-not-enreg[] "field V23._length (fldOffset=0xc)" P-DEP
;* V166 tmp154 [V166 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-DEP ;* V167 tmp155 [V167 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-DEP ; V168 tmp156 [V168,T23] ( 2, 20 ) byref -> x25 "field V31._reference (fldOffset=0x0)" P-INDEP @@ -279,38 +279,38 @@ ;* V268 tmp256 [V268 ] ( 0, 0 ) ubyte -> zero-ref "V21.[020..021)" ;* V269 tmp257 [V269 ] ( 0, 0 ) byref -> zero-ref "V21.[024..032)" ;* V270 tmp258 [V270 ] ( 0, 0 ) int -> zero-ref "V21.[032..036)"
-; V271 tmp259 [V271,T47] ( 3, 12 ) struct ( 8) [fp+0x78] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V272 tmp260 [V272,T48] ( 3, 12 ) struct ( 8) [fp+0x70] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ushort]> -; V273 PSPSym [V273,T108] ( 1, 1 ) long -> [fp+0xD8] do-not-enreg[V] "PSPSym"
+; V271 tmp259 [V271,T47] ( 3, 12 ) struct ( 8) [fp+0x88] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V272 tmp260 [V272,T48] ( 3, 12 ) struct ( 8) [fp+0x80] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ushort]> +; V273 PSPSym [V273,T108] ( 1, 1 ) long -> [fp+0xE8] do-not-enreg[V] "PSPSym"
; V274 cse0 [V274,T02] ( 17, 86 ) long -> x24 "CSE - aggressive"
-;* V275 cse1 [V275,T18] ( 0, 0 ) ref -> zero-ref hoist multi-def "CSE - moderate" -; V276 cse2 [V276,T07] ( 9, 60 ) long -> [fp+0x68] multi-def "CSE - aggressive"
+; V275 cse1 [V275,T18] ( 1, 1 ) ref -> [fp+0x28] spill-single-def hoist multi-def "CSE - moderate" +; V276 cse2 [V276,T07] ( 9, 60 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V277 cse3 [V277,T38] ( 4, 12 ) long -> x28 "CSE - moderate"
-; V278 cse4 [V278,T78] ( 3, 5.94) ref -> [fp+0x18] spill-single-def "CSE - conservative"
+; V278 cse4 [V278,T78] ( 3, 5.94) ref -> [fp+0x20] spill-single-def "CSE - conservative"
; V279 cse5 [V279,T13] ( 6, 32 ) long -> x27 "CSE - moderate"
-; V280 cse6 [V280,T08] ( 4, 48 ) long -> [fp+0x60] spill-single-def "CSE - aggressive" -; TEMP_01 byref -> [fp+0x10]
+; V280 cse6 [V280,T08] ( 4, 48 ) long -> [fp+0x70] spill-single-def "CSE - aggressive" +; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 208
+; Lcl frame size = 224
G_M37555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #0xD1FFAB1E]!
- stp x19, x20, [sp, #0xE0] - stp x21, x22, [sp, #0xF0]
+ stp x19, x20, [sp, #0xF0] + stp x21, x22, [sp, #0xD1FFAB1E]
stp x23, x24, [sp, #0xD1FFAB1E] stp x25, x26, [sp, #0xD1FFAB1E] stp x27, x28, [sp, #0xD1FFAB1E] mov fp, sp movi v16.16b, #0
- sub x9, fp, #16 - mov x10, #136
+ sub x9, fp, #8 + mov x10, #144
stp q16, q16, [x9, #0x20] stp q16, q16, [x9, #0x40]! subs x10, x10, #64 bge pc-16 (-4 instructions)
- str xzr, [x9, #0x20]
+ stp xzr, xzr, [x9, #0x20]
add x2, sp, #0xD1FFAB1E
- str x2, [fp, #0xD8] // [V273 PSPSym]
+ str x2, [fp, #0xE8] // [V273 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 @@ -347,12 +347,12 @@ G_M37555_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { blr x2 ; gcrRegs +[x0] ; gcr arg pop 0
- str x0, [fp, #0x58] // [V05 loc3]
+ str x0, [fp, #0x68] // [V05 loc3]
; GC ptr vars +{V05} ;; size=40 bbWeight=4 PerfScore 44.00 G_M37555_IG04: ; bbWeight=4, gcVars=00000000000000000000000000000002 {V05}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0]
- ldr x0, [fp, #0x58] // [V05 loc3]
+ ldr x0, [fp, #0x68] // [V05 loc3]
; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1] @@ -377,17 +377,17 @@ G_M37555_IG04: ; bbWeight=4, gcVars=00000000000000000000000000000002 {V05 ; gcrRegs -[x0] ; gcr arg pop 0 sxtw w2, w0
- str w2, [fp, #0x98] // [V32 tmp20]
+ str w2, [fp, #0xA8] // [V32 tmp20]
mov w3, wzr cmp w26, #0 ble G_M37555_IG06 ;; size=72 bbWeight=4 PerfScore 110.00 G_M37555_IG05: ; bbWeight=16, gcrefRegs=280000 {x19 x21}, byrefRegs=2000000 {x25}, byref, isz
- str w3, [fp, #0x9C] // [V30 tmp18]
+ str w3, [fp, #0xAC] // [V30 tmp18]
ubfiz x0, x3, #1, #32 add x4, x25, x0 ; byrRegs +[x4]
- str x4, [fp, #0x10] // [TEMP_01]
+ str x4, [fp, #0x18] // [TEMP_01]
mov x0, x19 ; gcrRegs +[x0] mov w1, w2 @@ -399,19 +399,19 @@ G_M37555_IG05: ; bbWeight=16, gcrefRegs=280000 {x19 x21}, byrefRegs=20000 ; gcrRegs -[x0] ; byrRegs -[x4] ; gcr arg pop 0
- ldr x4, [fp, #0x10] // [TEMP_01]
+ ldr x4, [fp, #0x18] // [TEMP_01]
; byrRegs +[x4] strh w0, [x4]
- ldr w0, [fp, #0x9C] // [V30 tmp18]
+ ldr w0, [fp, #0xAC] // [V30 tmp18]
add w0, w0, #1 cmp w0, w26 mov w3, w0
- ldr w2, [fp, #0x98] // [V32 tmp20]
+ ldr w2, [fp, #0xA8] // [V32 tmp20]
blt G_M37555_IG05 ;; size=76 bbWeight=16 PerfScore 312.00 G_M37555_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x4 x25]
- ldr x0, [fp, #0x58] // [V05 loc3]
+ ldr x0, [fp, #0x68] // [V05 loc3]
; gcrRegs +[x0] ldr x1, [x24, #0x38] blr x1 @@ -419,10 +419,10 @@ G_M37555_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs +[x0] ; gcr arg pop 0 cmp w1, #0
- bls G_M37555_IG41
+ bls G_M37555_IG42
ldrh w25, [x0] mov w26, wzr
- ldr x0, [fp, #0x58] // [V05 loc3]
+ ldr x0, [fp, #0x68] // [V05 loc3]
; gcrRegs +[x0] ; byrRegs -[x0] ldr x1, [x24, #0x28] @@ -430,62 +430,20 @@ G_M37555_IG06: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcrRegs -[x0] ; gcr arg pop 0 ...

+28 (+1.24%) : 58743.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)

@@ -8,49 +8,49 @@ ; 6 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 21, 18 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T19] ( 23, 19 ) ref -> x24 class-hnd <System.Reflection.MemberInfo>
; V01 arg1 [V01,T10] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>
-; V02 arg2 [V02,T17] ( 6, 19.50) int -> x23 single-def -; V03 arg3 [V03,T13] ( 8, 29.50) ubyte -> x21 single-def -; V04 arg4 [V04,T38] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 4, 20 ) int -> x22 single-def -; V06 arg6 [V06,T39] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> -; V07 arg7 [V07,T40] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
+; V02 arg2 [V02,T18] ( 6, 19.50) int -> x23 single-def +; V03 arg3 [V03,T17] ( 7, 21.50) ubyte -> x22 single-def +; V04 arg4 [V04,T39] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T15] ( 4, 20 ) int -> x21 single-def +; V06 arg6 [V06,T40] ( 3, 2.50) ref -> x26 class-hnd single-def <System.String[]> +; V07 arg7 [V07,T41] ( 3, 2.50) ref -> x27 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T62] ( 1, 1 ) ubyte -> [fp+0xF0] single-def ; V09 arg9 [V09,T04] ( 27, 69.35) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T42] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> -; V11 loc0 [V11,T36] ( 10, 5.45) ref -> [fp+0x48] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V12 loc1 [V12,T19] ( 7, 19 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Reflection.MethodBase> -; V13 loc2 [V13,T35] ( 5, 5.50) ubyte -> [fp+0x9C] -; V14 loc3 [V14,T37] ( 3, 5 ) int -> x26 single-def
+; V10 arg10 [V10,T43] ( 2, 4 ) ref -> x28 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container> +; V11 loc0 [V11,T37] ( 10, 5.45) ref -> [fp+0x40] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V12 loc1 [V12,T20] ( 7, 19 ) ref -> [fp+0x38] class-hnd spill-single-def <System.Reflection.MethodBase> +; V13 loc2 [V13,T36] ( 5, 5.50) ubyte -> [fp+0x9C] +; V14 loc3 [V14,T38] ( 3, 5 ) int -> x26 single-def
; V15 loc4 [V15,T07] ( 11, 60.50) int -> x27
-; V16 loc5 [V16,T01] ( 16, 84 ) ref -> [fp+0x38] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> -; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x28] class-hnd <System.Reflection.MethodBase> -; V19 loc8 [V19,T02] ( 8, 84 ) int -> [fp+0x98] -; V20 loc9 [V20,T03] ( 8, 84 ) int -> [fp+0x94]
+; V16 loc5 [V16,T03] ( 16, 76 ) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V17 loc6 [V17,T12] ( 3, 34 ) ref -> [fp+0x28] class-hnd spill-single-def <System.Reflection.ParameterInfo[]> +; V18 loc7 [V18,T11] ( 11, 36 ) ref -> [fp+0x20] class-hnd <System.Reflection.MethodBase> +; V19 loc8 [V19,T01] ( 8, 84 ) int -> [fp+0x98] +; V20 loc9 [V20,T02] ( 8, 84 ) int -> [fp+0x94]
;* V21 loc10 [V21,T49] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T09] ( 4, 50 ) int -> [fp+0x90]
+; V22 loc11 [V22,T08] ( 4, 50 ) int -> [fp+0x90]
; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V26 OutArgs [V26 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V27 tmp1 [V27,T44] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 tmp2 [V28,T43] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> -; V29 tmp3 [V29,T26] ( 10, 9.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> -; V30 tmp4 [V30,T45] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x22 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> -; V32 tmp6 [V32,T28] ( 9, 8.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V27 tmp1 [V27,T45] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V28 tmp2 [V28,T44] ( 4, 3 ) ref -> x25 class-hnd "spilling QMark2" <System.Reflection.MethodBase> +; V29 tmp3 [V29,T27] ( 10, 9.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> +; V30 tmp4 [V30,T46] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V31 tmp5 [V31,T48] ( 3, 2 ) ref -> x21 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo> +; V32 tmp6 [V32,T29] ( 9, 8.90) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
;* V33 tmp7 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V34 tmp8 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]> ;* V35 tmp9 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V36 tmp10 [V36,T27] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V36 tmp10 [V36,T28] ( 9, 9 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V37 tmp11 [V37,T54] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" ; V38 tmp12 [V38,T55] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V39 tmp13 [V39,T41] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V39 tmp13 [V39,T42] ( 4, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V40 tmp14 [V40,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V41 tmp15 [V41,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" -; V42 tmp16 [V42,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V41 tmp15 [V41,T34] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" +; V42 tmp16 [V42,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V43 tmp17 [V43,T58] ( 3, 1.45) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V44 tmp18 [V44,T51] ( 4, 1.90) int -> x2 single-def "Inline stloc first use temp" ; V45 tmp19 [V45,T59] ( 3, 1.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -58,27 +58,27 @@ ; V47 tmp21 [V47,T60] ( 3, 1.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V48 tmp22 [V48,T53] ( 4, 1.90) int -> x15 single-def "Inline stloc first use temp" ; V49 tmp23 [V49,T16] ( 3, 24 ) ref -> x0 "arr expr"
-; V50 tmp24 [V50,T21] ( 3, 12 ) ref -> x0 "argument with side effect" -; V51 tmp25 [V51,T22] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V50 tmp24 [V50,T22] ( 3, 12 ) ref -> x0 "argument with side effect" +; V51 tmp25 [V51,T23] ( 3, 12 ) ref -> x0 "argument with side effect"
; V52 tmp26 [V52,T05] ( 2, 64 ) ref -> x1 "argument with side effect" ; V53 tmp27 [V53,T06] ( 2, 64 ) ref -> x4 "argument with side effect"
-; V54 tmp28 [V54,T30] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" -; V55 tmp29 [V55,T31] ( 2, 8 ) int -> x3 "argument with side effect" -; V56 tmp30 [V56,T29] ( 2, 8 ) ref -> [fp+0x20] spill-single-def "argument with side effect" -; V57 tmp31 [V57,T23] ( 3, 12 ) ref -> x2 "argument with side effect" -; V58 tmp32 [V58,T24] ( 3, 12 ) ref -> x0 "argument with side effect"
+; V54 tmp28 [V54,T31] ( 2, 8 ) int -> [fp+0x74] spill-single-def "argument with side effect" +; V55 tmp29 [V55,T32] ( 2, 8 ) int -> x3 "argument with side effect" +; V56 tmp30 [V56,T30] ( 2, 8 ) ref -> [fp+0x18] spill-single-def "argument with side effect" +; V57 tmp31 [V57,T24] ( 3, 12 ) ref -> x2 "argument with side effect" +; V58 tmp32 [V58,T25] ( 3, 12 ) ref -> x0 "argument with side effect"
; V59 tmp33 [V59,T00] ( 3, 96 ) ref -> x3 "arr expr"
-; V60 tmp34 [V60,T25] ( 3, 12 ) ref -> x0 "arr expr" -; V61 cse0 [V61,T20] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" -; V62 cse1 [V62,T32] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
+; V60 tmp34 [V60,T26] ( 3, 12 ) ref -> x0 "arr expr" +; V61 cse0 [V61,T21] ( 6, 12 ) long -> [fp+0x68] multi-def "CSE - moderate" +; V62 cse1 [V62,T33] ( 5, 7 ) long -> [fp+0x60] multi-def "CSE - moderate"
; V63 cse2 [V63,T56] ( 3, 1.50) long -> [fp+0x58] spill-single-def "CSE - conservative" ; V64 cse3 [V64,T57] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V65 cse4 [V65,T08] ( 5, 52 ) int -> x0 multi-def "CSE - aggressive" -; V66 cse5 [V66,T46] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
+; V65 cse4 [V65,T13] ( 5, 28 ) int -> x0 multi-def "CSE - aggressive" +; V66 cse5 [V66,T47] ( 4, 2 ) int -> x25 multi-def "CSE - moderate"
; V67 cse6 [V67,T61] ( 2, 1 ) int -> x0 "CSE - conservative"
-; V68 cse7 [V68,T47] ( 4, 2 ) long -> x22 "CSE - moderate" -; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x50] spill-single-def "CSE - aggressive" -; TEMP_01 ref -> [fp+0x18]
+; V68 cse7 [V68,T09] ( 5, 44 ) int -> [fp+0x54] multi-def "CSE - aggressive" +; V69 cse8 [V69,T14] ( 4, 26 ) long -> [fp+0x48] spill-single-def "CSE - aggressive" +; TEMP_01 ref -> [fp+0x10]
; ; Lcl frame size = 160 @@ -93,16 +93,16 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add fp, sp, #16 stp xzr, xzr, [fp, #0x80] // [V24 loc13], [V23 loc12] str xzr, [fp, #0x78] // [V25 loc14]
- str xzr, [fp, #0x18] // [TEMP_01]
+ str xzr, [fp, #0x10] // [TEMP_01]
mov x24, x0 ; gcrRegs +[x24] mov x20, x1 ; gcrRegs +[x20] mov w23, w2
- mov w21, w3
+ mov w22, w3
mov x25, x4 ; gcrRegs +[x25]
- mov w22, w5
+ mov w21, w5
mov x26, x6 ; gcrRegs +[x26] mov x27, x7 @@ -111,13 +111,13 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19 x28] ;; size=80 bbWeight=1 PerfScore 17.00 G_M30168_IG02: ; bbWeight=1, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- str xzr, [fp, #0x48] // [V11 loc0]
+ str xzr, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} ldrb w1, [fp, #0xF0] // [V08 arg8] tst w1, #255 bne G_M30168_IG36 ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000002000000000 {V11}, gcrefRegs=1F180000 {x19 x20 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -126,7 +126,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x40] // [V12 loc1]
+ str x0, [fp, #0x38] // [V12 loc1]
; GC ptr vars +{V12} str wzr, [fp, #0x9C] // [V13 loc2] mov x0, x24 @@ -138,7 +138,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcr arg pop 0 cmp w0, #8 bne G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x60] @@ -148,7 +148,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M30168_IG05
- ldr x0, [fp, #0x40] // [V12 loc1]
+ ldr x0, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x0] ldr x1, [fp, #0x58] // [V63 cse2] ldr x1, [x1, #0x18] @@ -180,19 +180,19 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000001000000000 {V11}, gcrefRegs= ; gcrRegs -[x15 x20] ; byrRegs -[x14] str w23, [x2, #0x48]
- strb w21, [x2, #0x4C]
+ strb w22, [x2, #0x4C]
mov w14, #1 strb w14, [x2, #0x4F] add x14, x2, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14] add x14, x2, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x40] // [V12 loc1]
+ ldr x15, [fp, #0x38] // [V12 loc1]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -235,11 +235,11 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=10180000 {x19 x20 x28}, byrefRe ldr x0, [x20, #0x18] mov x25, x0 ; gcrRegs +[x25]
- str x20, [fp, #0x48] // [V11 loc0]
+ str x20, [fp, #0x40] // [V11 loc0]
; GC ptr vars +{V11} mov x20, x25 ;; size=52 bbWeight=0.50 PerfScore 6.50
-G_M30168_IG05: ; bbWeight=0.50, gcVars=0000001000080000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG05: ; bbWeight=0.50, gcVars=0000002000100000 {V11 V12}, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x25] cbz x24, G_M30168_IG06 mov x0, x24 @@ -301,18 +301,18 @@ G_M30168_IG07: ; bbWeight=4, gcrefRegs=11180000 {x19 x20 x24 x28}, byrefR ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, w27
- str x1, [fp, #0x50] // [V69 cse8]
+ str x1, [fp, #0x48] // [V69 cse8]
ldr x2, [x0, x1, LSL #3] ; gcrRegs +[x2]
- str x2, [fp, #0x38] // [V16 loc5]
+ str x2, [fp, #0x30] // [V16 loc5]
; GC ptr vars +{V16} cbz x2, G_M30168_IG35 ;; size=52 bbWeight=4 PerfScore 76.00
-G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M30168_IG08: ; bbWeight=2, gcVars=0000002000100008 {V11 V12 V16}, gcrefRegs=11180004 {x2 x19 x20 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0] ldr x3, [x2, #0x18] ; gcrRegs +[x3]
- str x3, [fp, #0x30] // [V17 loc6]
+ str x3, [fp, #0x28] // [V17 loc6]
; GC ptr vars +{V17} ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -324,7 +324,7 @@ G_M30168_IG08: ; bbWeight=2, gcVars=0000001000080002 {V11 V12 V16}, gcref ; gcr arg pop 0 cmp w0, #8 beq G_M30168_IG09
- ldr x1, [fp, #0x38] // [V16 loc5]
+ ldr x1, [fp, #0x30] // [V16 loc5]
...

realworld.run.windows.arm64.checked.mch

-12 (-2.73%) : 29705.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)

@@ -8,34 +8,35 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> -; V01 loc0 [V01,T09] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> -; V02 loc1 [V02,T19] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V00 arg0 [V00,T09] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String> +; V01 loc0 [V01,T10] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>> +; V02 loc1 [V02,T20] ( 3, 0.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
; V03 loc2 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op ;* V04 loc3 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x21 single-def
+; V06 tmp1 [V06,T11] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x21 single-def
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp4 [V09,T11] ( 4, 3.50) ref -> x2 -; V10 tmp5 [V10,T07] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp6 [V11,T15] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V09 tmp4 [V09,T12] ( 4, 3.50) ref -> x2 +; V10 tmp5 [V10,T08] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V11 tmp6 [V11,T16] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Language.PSGetMemberBinder]> ;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp9 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V16 tmp11 [V16,T02] ( 4, 17 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V17 tmp12 [V17,T04] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V17 tmp12 [V17,T03] ( 3, 12 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V18 tmp13 [V18,T00] ( 6, 21 ) int -> x1 "field V04._index (fldOffset=0x10)" P-INDEP
-; V19 tmp14 [V19,T05] ( 3, 13 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP -; V20 tmp15 [V20,T13] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T06] ( 2, 9 ) int -> x0 single-def "field V04._version (fldOffset=0x14)" P-INDEP +; V20 tmp15 [V20,T14] ( 3, 3 ) ref -> x19 single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V22 tmp17 [V22,T17] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP -; V23 tmp18 [V23,T16] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+;* V22 tmp17 [V22,T18] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP +; V23 tmp18 [V23,T17] ( 2, 2 ) int -> x0 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V24 tmp19 [V24,T01] ( 3, 24 ) ref -> x2 "arr expr"
-; V25 PSPSym [V25,T18] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V26 cse0 [V26,T03] ( 3, 20 ) int -> x2 "CSE - aggressive" -; V27 cse1 [V27,T12] ( 4, 3 ) long -> x20 "CSE - aggressive"
+; V25 PSPSym [V25,T19] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V26 cse0 [V26,T05] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V27 cse1 [V27,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V28 cse2 [V28,T13] ( 4, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -108,7 +109,7 @@ G_M45525_IG04: ; bbWeight=1, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=000 ; GC ptr vars +{V02} str wzr, [fp, #0x18] // [V03 loc2] ;; size=40 bbWeight=1 PerfScore 9.00
-G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG05: ; bbWeight=1, gcVars=0000000000100000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldrb w1, [fp, #0x18] // [V03 loc2] cbnz w1, G_M45525_IG08 @@ -131,17 +132,17 @@ G_M45525_IG05: ; bbWeight=1, gcVars=0000000000080000 {V02}, gcrefRegs=800 G_M45525_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x14] cmp w0, w2
- bne G_M45525_IG09
+ bne G_M45525_IG10
;; size=12 bbWeight=8 PerfScore 36.00 G_M45525_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x10] cmp w1, w2
- bhs G_M45525_IG12
+ bhs G_M45525_IG11
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w1, w3
- bhs G_M45525_IG10
+ bhs G_M45525_IG09
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -168,16 +169,11 @@ G_M45525_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp w0, w2 - bne G_M45525_IG11 - b G_M45525_IG12 - ;; size=12 bbWeight=4 PerfScore 10.00 -G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -186,11 +182,11 @@ G_M45525_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45525_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M45525_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG14
+ cbz w0, G_M45525_IG13
;; size=8 bbWeight=1 PerfScore 3.00
-G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45525_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0] ; GC ptr vars -{V02} @@ -198,38 +194,38 @@ G_M45525_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45525_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M45525_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M45525_IG15: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V19}
+G_M45525_IG14: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V20}
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] add x3, fp, #64 str x3, [sp, #0x10] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M45525_IG16: ; bbWeight=0, gcVars=0000000000080000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45525_IG15: ; bbWeight=0, gcVars=0000000000100000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x18] // [V03 loc2]
- cbz w0, G_M45525_IG17
+ cbz w0, G_M45525_IG16
ldr x0, [fp, #0x10] // [V02 loc1] ; gcrRegs +[x0]
- ; GC ptr vars -{V02 V19}
+ ; GC ptr vars -{V02 V20}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M45525_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M45525_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 32, PerfScore 199.00, instruction count 110, allocated bytes for code 440 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
+; Total bytes of code 428, prolog size 32, PerfScore 189.00, instruction count 107, allocated bytes for code 428 (MethodHash=bcc44e2a) for method System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +236,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -275,4 +271,4 @@ Unwind Info: *************** EH table for System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M45525_IG05..G_M45525_IG12) handled by [G_M45525_IG15..END) (fault)
+EH#0: try [G_M45525_IG05..G_M45525_IG11) handled by [G_M45525_IG14..END) (fault)
-28 (-2.48%) : 32623.dasm - System.Management.Automation.CommandDiscovery+d__56:MoveNext():ubyte:this (FullOpts)
@@ -8,13 +8,13 @@ ; 0 inlinees with PGO data; 18 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 44, 73.50) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56>
+; V00 this [V00,T03] ( 44, 73.50) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56>
; V01 loc0 [V01,T22] ( 8, 4.50) ubyte -> registers ; V02 loc1 [V02,T26] ( 3, 3 ) int -> x1 single-def ; V03 loc2 [V03,T32] ( 2, 1.50) ref -> x19 class-hnd single-def <System.Management.Automation.CommandDiscovery> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Management.Automation.SessionStateScopeEnumerator> ; V05 loc4 [V05,T19] ( 2, 4 ) ref -> x15 ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Management.Automation.CmdletInfo]>
-; V06 loc5 [V06,T09] ( 7, 33.50) ref -> x23 class-hnd <System.Management.Automation.CmdletInfo>
+; V06 loc5 [V06,T08] ( 7, 33.50) ref -> x22 class-hnd <System.Management.Automation.CmdletInfo>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> @@ -33,10 +33,10 @@ ;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.PSSnapinQualifiedName> ;* V24 tmp17 [V24,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp18 [V25,T06] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
+; V25 tmp18 [V25,T05] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.PSSnapinQualifiedName> ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.PSSnapinQualifiedName>
-;* V28 tmp21 [V28,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V28 tmp21 [V28,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V29 tmp22 [V29,T00] ( 9,288 ) byref -> x1 "Inlining Arg" ; V30 tmp23 [V30,T04] ( 4, 64 ) ref -> x14 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.CmdletInfo]> ; V31 tmp24 [V31,T21] ( 3, 6 ) ref -> x15 "field V21._list (fldOffset=0x0)" P-INDEP @@ -45,30 +45,29 @@ ; V34 tmp27 [V34,T24] ( 2, 4 ) int -> x0 "field V21._version (fldOffset=0x14)" P-INDEP ; V35 tmp28 [V35,T01] ( 3, 96 ) ref -> x14 "arr expr" ; V36 tmp29 [V36,T02] ( 3, 96 ) int -> x15 "index expr"
-; V37 tmp30 [V37,T10] ( 2, 32 ) ref -> x0 "argument with side effect" -; V38 tmp31 [V38,T11] ( 2, 32 ) ref -> x21 "argument with side effect" -; V39 tmp32 [V39,T12] ( 2, 32 ) ref -> x1 "argument with side effect" -; V40 PSPSym [V40,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V37 tmp30 [V37,T09] ( 2, 32 ) ref -> x0 "argument with side effect" +; V38 tmp31 [V38,T10] ( 2, 32 ) ref -> x21 "argument with side effect" +; V39 tmp32 [V39,T11] ( 2, 32 ) ref -> x1 "argument with side effect" +; V40 PSPSym [V40,T33] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; V41 cse0 [V41,T07] ( 3, 48 ) int -> x15 "CSE - aggressive"
-; V42 cse1 [V42,T08] ( 3, 48 ) int -> x22 "CSE - aggressive"
+; V42 cse1 [V42,T13] ( 2, 32 ) int -> x15 "CSE - aggressive"
; V43 cse2 [V43,T30] ( 3, 1.50) ref -> x0 "CSE - moderate" ; V44 cse3 [V44,T31] ( 3, 1.50) ref -> x11 "CSE - moderate"
-; V45 cse4 [V45,T05] ( 4, 64 ) ref -> x21 "CSE - aggressive"
+; V45 cse4 [V45,T06] ( 3, 48 ) ref -> x21 "CSE - aggressive"
; V46 cse5 [V46,T14] ( 3, 23 ) byref -> x19 hoist "CSE - aggressive" ; V47 cse6 [V47,T15] ( 8, 12.50) long -> x19 multi-def "CSE - aggressive" ;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M24357_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- add x1, sp, #80 - stp x0, x1, [fp, #0x18] // [V00 this], [V40 PSPSym]
+ add x1, sp, #64 + stp x0, x1, [fp, #0x10] // [V00 this], [V40 PSPSym]
; GC ptr vars +{V00}
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M24357_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0] ldr w1, [x0, #0x30] @@ -86,7 +85,7 @@ G_M24357_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=000 G_M24357_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w20, wzr
- b G_M24357_IG27
+ b G_M24357_IG26
;; size=8 bbWeight=0.50 PerfScore 0.75 G_M24357_IG04: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] @@ -99,7 +98,7 @@ G_M24357_IG04: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ldr x1, [x1] blr x1 ; gcr arg pop 0
- ldr x20, [fp, #0x18] // [V00 this]
+ ldr x20, [fp, #0x10] // [V00 this]
; gcrRegs +[x20] add x14, x20, #32 ; byrRegs +[x14] @@ -114,7 +113,7 @@ G_M24357_IG04: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 mov w21, wzr mov w20, w21 ; gcrRegs -[x20]
- b G_M24357_IG27
+ b G_M24357_IG26
;; size=68 bbWeight=0.50 PerfScore 10.00 G_M24357_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -155,7 +154,7 @@ G_M24357_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M24357_IG24
+ cbz w0, G_M24357_IG23
;; size=88 bbWeight=0.50 PerfScore 13.25 G_M24357_IG06: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x28] @@ -177,7 +176,7 @@ G_M24357_IG06: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x0-x1] ; byrRegs +[x0] ; gcr arg pop 0
- cbz x0, G_M24357_IG23
+ cbz x0, G_M24357_IG22
ldr x15, [x0] ; gcrRegs +[x15] ldr w0, [x15, #0x14] @@ -194,7 +193,7 @@ G_M24357_IG06: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=88 bbWeight=2 PerfScore 74.00 G_M24357_IG07: ; bbWeight=5, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ldr x20, [fp, #0x18] // [V00 this]
+ ldr x20, [fp, #0x10] // [V00 this]
; gcrRegs +[x20] add x19, x20, #56 ; byrRegs +[x19] @@ -212,16 +211,16 @@ G_M24357_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=24 bbWeight=0 PerfScore 0.00 G_M24357_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz ; byrRegs +[x19]
- ldr x23, [x20, #0x40] - ; gcrRegs +[x23]
+ ldr x22, [x20, #0x40] + ; gcrRegs +[x22]
ldr x0, [x20, #0x20] ; gcrRegs +[x0] ldr x0, [x0, #0x10]
- cbz x0, G_M24357_IG18
+ cbz x0, G_M24357_IG17
ldr w0, [x0, #0x08] ; gcrRegs -[x0]
- cbz w0, G_M24357_IG18 - mov x0, x23
+ cbz w0, G_M24357_IG17 + mov x0, x22
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Management.Automation.CommandInfo:get_ModuleName():System.String:this movk x1, #0xD1FFAB1E LSL #16 @@ -241,8 +240,8 @@ G_M24357_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19 blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M24357_IG14 - mov x0, x23
+ cbnz w0, G_M24357_IG13 + mov x0, x22
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Management.Automation.CommandInfo:get_ModuleName():System.String:this movk x1, #0xD1FFAB1E LSL #16 @@ -258,7 +257,7 @@ G_M24357_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19 ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M24357_IG10
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Management.Automation.CommandInfo:get_ModuleName():System.String:this movk x1, #0xD1FFAB1E LSL #16 @@ -287,24 +286,24 @@ G_M24357_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19 blr x3 ; gcrRegs -[x0-x1 x21] ; gcr arg pop 0
- cbnz w0, G_M24357_IG16
+ cbnz w0, G_M24357_IG15
;; size=228 bbWeight=8 PerfScore 596.00 G_M24357_IG10: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ; gcrRegs -[x23]
+ ; gcrRegs -[x22]
mov x1, x19 ; byrRegs +[x1] ldr x21, [x1] ; gcrRegs +[x21] mov x14, x21 ; gcrRegs +[x14]
- ldr w22, [x1, #0x14] - ldr w15, [x14, #0x14] - cmp w22, w15 - bne G_M24357_IG12
+ ldr w15, [x1, #0x14] + ldr w12, [x14, #0x14] + cmp w15, w12 + bne G_M24357_IG08
ldr w15, [x1, #0x10] ldr w12, [x14, #0x10] cmp w15, w12
- bhs G_M24357_IG13
+ bhs G_M24357_IG12
ldr x14, [x14, #0x08] ldr w12, [x14, #0x08] cmp w15, w12 @@ -329,62 +328,57 @@ G_M24357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M24357_IG12: ; bbWeight=16, gcrefRegs=300000 {x20 x21}, byrefRegs=80002 {x1 x19}, byref, isz
+G_M24357_IG12: ; bbWeight=16, gcrefRegs=300000 {x20 x21}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x20-x21] ; byrRegs +[x1 x19]
- ldr w14, [x21, #0x14] - cmp w22, w14 - bne G_M24357_IG08 - ;; size=12 bbWeight=16 PerfScore 72.00 -G_M24357_IG13: ; bbWeight=16, gcrefRegs=300000 {x20 x21}, byrefRegs=80002 {x1 x19}, byref
ldr w14, [x21, #0x10] add w14, w14, #1 str w14, [x1, #0x10] str xzr, [x1, #0x08]
- b G_M24357_IG20
+ b G_M24357_IG19
;; size=20 bbWeight=16 PerfScore 104.00
-G_M24357_IG14: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] +[x23]
+G_M24357_IG13: ; bbWeight=0.50, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] +[x22]
; byrRegs -[x1 x19] add x14, x20, #8 ; byrRegs +[x14]
- mov x15, x23
+ mov x15, x22
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x23]
+ ; gcrRegs -[x15 x22]
; byrRegs -[x14] mov w14, #1 str w14, [x20, #0x30] sxtw w21, w14 mov w20, w21 ; gcrRegs -[x20]
- b G_M24357_IG27
+ b G_M24357_IG26
;; size=32 bbWeight=0.50 PerfScore 2.75
-G_M24357_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M24357_IG14: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] movn w14, #3 str w14, [x0, #0x30] ldrb w14, [x0, #0x34] cbnz w14, G_M24357_IG07 ...

-24 (-2.43%) : 33163.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)

@@ -10,71 +10,71 @@ ; ; V00 arg0 [V00,T12] ( 7, 8.50) int -> x0 single-def ; V01 loc0 [V01,T06] ( 6, 18.50) int -> x19
-; V02 loc1 [V02,T30] ( 4, 1 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>> -; V03 loc2 [V03 ] ( 6, 2.50) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc1 [V02,T31] ( 4, 1 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>> +; V03 loc2 [V03 ] ( 6, 2.50) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V04 loc3 [V04,T21] ( 4, 5.50) ref -> x19 class-hnd single-def <System.Type> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Type]> ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
-; V07 loc6 [V07,T26] ( 2, 4 ) int -> x0 -; V08 loc7 [V08,T28] ( 3, 1.50) ref -> x25 class-hnd <System.Type>
+; V07 loc6 [V07,T27] ( 2, 4 ) int -> x0 +; V08 loc7 [V08,T29] ( 3, 1.50) ref -> x24 class-hnd <System.Type>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "non-inline candidate call" <System.ReadOnlySpan`1[ushort]> ; V11 tmp2 [V11,T03] ( 3, 24 ) ref -> x1 class-hnd exact single-def "dup spill" <<unknown class>>
-; V12 tmp3 [V12,T04] ( 3, 24 ) ref -> x25 class-hnd single-def "impSpillLclRefs" <System.Type>
+; V12 tmp3 [V12,T04] ( 3, 24 ) ref -> x24 class-hnd single-def "impSpillLclRefs" <System.Type>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V14 tmp5 [V14,T27] ( 2, 2 ) ref -> x21 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V14 tmp5 [V14,T28] ( 2, 2 ) ref -> x21 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Type]> ; V16 tmp7 [V16,T02] ( 4, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp10 [V19,T10] ( 3, 12 ) int -> x27 "Inlining Arg" -; V20 tmp11 [V20,T16] ( 2, 8 ) byref -> x26 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 12 ) int -> x26 "Inlining Arg" +; V20 tmp11 [V20,T15] ( 2, 8 ) byref -> x25 "Inlining Arg"
; V21 tmp12 [V21,T09] ( 3, 12 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> ; V22 tmp13 [V22,T19] ( 3, 6 ) ref -> x3 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V23 tmp14 [V23 ] ( 2, 4 ) int -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V24 tmp15 [V24,T24] ( 3, 4 ) int -> x0 "Inline stloc first use temp"
+; V23 tmp14 [V23 ] ( 2, 4 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V24 tmp15 [V24,T25] ( 3, 4 ) int -> x0 "Inline stloc first use temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp17 [V26,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V26 tmp17 [V26,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V28 tmp19 [V28,T00] ( 7, 42 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V29 tmp20 [V29,T14] ( 3, 8.50) ref -> x3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V30 tmp21 [V30,T13] ( 4, 9 ) int -> x2 single-def "Inline stloc first use temp" ; V31 tmp22 [V31,T18] ( 6, 7 ) ref -> x0 "Single return block return value"
-; V32 tmp23 [V32,T07] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V33 tmp24 [V33,T08] ( 4, 12.50) ref -> x25 "field V05._current (fldOffset=0x8)" P-INDEP
+; V32 tmp23 [V32,T08] ( 4, 12.50) ref -> x21 single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V33 tmp24 [V33,T07] ( 4, 12.50) ref -> x24 "field V05._current (fldOffset=0x8)" P-INDEP
; V34 tmp25 [V34,T01] ( 6, 20.50) int -> x23 "field V05._index (fldOffset=0x10)" P-INDEP
-; V35 tmp26 [V35,T15] ( 3, 8.50) int -> x22 single-def "field V05._version (fldOffset=0x14)" P-INDEP
+; V35 tmp26 [V35,T23] ( 2, 4.50) int -> x22 single-def "field V05._version (fldOffset=0x14)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V38 tmp29 [V38,T29] ( 3, 1.50) ref -> x21 single-def "field V15._list (fldOffset=0x0)" P-INDEP
+; V38 tmp29 [V38,T30] ( 3, 1.50) ref -> x21 single-def "field V15._list (fldOffset=0x0)" P-INDEP
;* V39 tmp30 [V39 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._current (fldOffset=0x8)" P-INDEP
-;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref single-def "field V15._index (fldOffset=0x10)" P-INDEP -; V41 tmp32 [V41,T31] ( 2, 1 ) int -> x22 single-def "field V15._version (fldOffset=0x14)" P-INDEP -; V42 tmp33 [V42,T23] ( 3, 4 ) byref -> x26 "field V17._reference (fldOffset=0x0)" P-INDEP -; V43 tmp34 [V43,T25] ( 3, 4 ) int -> x27 "field V17._length (fldOffset=0x8)" P-INDEP
+;* V40 tmp31 [V40,T34] ( 0, 0 ) int -> zero-ref single-def "field V15._index (fldOffset=0x10)" P-INDEP +; V41 tmp32 [V41,T32] ( 2, 1 ) int -> x22 single-def "field V15._version (fldOffset=0x14)" P-INDEP +; V42 tmp33 [V42,T24] ( 3, 4 ) byref -> x25 "field V17._reference (fldOffset=0x0)" P-INDEP +; V43 tmp34 [V43,T26] ( 3, 4 ) int -> x26 "field V17._length (fldOffset=0x8)" P-INDEP
;* V44 tmp35 [V44 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ; V46 tmp37 [V46,T05] ( 3, 24 ) ref -> x0 "arr expr"
-; V47 PSPSym [V47,T32] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -;* V48 cse0 [V48,T34] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V49 cse1 [V49,T11] ( 3, 12 ) int -> x24 "CSE - aggressive" -; V50 cse2 [V50,T20] ( 3, 6 ) int -> x1 "CSE - moderate" -; V51 cse3 [V51,T22] ( 4, 5.50) long -> x20 "CSE - moderate"
+; V47 PSPSym [V47,T33] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +;* V48 cse0 [V48,T35] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V49 cse1 [V49,T17] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V50 cse2 [V50,T11] ( 2, 8 ) int -> x0 "CSE - aggressive" +; V51 cse3 [V51,T20] ( 3, 6 ) int -> x1 "CSE - moderate" +; V52 cse4 [V52,T22] ( 4, 5.50) long -> x20 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M2879_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - stp x23, x24, [sp, #0x58] - stp x25, x26, [sp, #0x68] - str x27, [sp, #0x78]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V23 tmp14], [V03 loc2] - add x1, sp, #128 - str x1, [fp, #0x30] // [V47 PSPSym] - ;; size=40 bbWeight=1 PerfScore 9.00
+ stp xzr, xzr, [fp, #0x18] // [V23 tmp14], [V03 loc2] + add x1, sp, #112 + str x1, [fp, #0x28] // [V47 PSPSym] + ;; size=36 bbWeight=1 PerfScore 8.00
G_M2879_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w0, #1 bgt G_M2879_IG04 @@ -83,7 +83,7 @@ G_M2879_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M2879_IG30
+ b G_M2879_IG29
;; size=16 bbWeight=0.50 PerfScore 1.25 G_M2879_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w0, #2 @@ -91,7 +91,7 @@ G_M2879_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M2879_IG30
+ b G_M2879_IG29
;; size=24 bbWeight=0.50 PerfScore 2.00 G_M2879_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w0, #4 @@ -99,7 +99,7 @@ G_M2879_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M2879_IG30
+ b G_M2879_IG29
;; size=24 bbWeight=0.50 PerfScore 2.00 G_M2879_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w0, #8 @@ -107,7 +107,7 @@ G_M2879_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M2879_IG30
+ b G_M2879_IG29
;; size=24 bbWeight=0.50 PerfScore 2.00 G_M2879_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, #1 @@ -122,7 +122,7 @@ G_M2879_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr w1, [x1]
- tbz w1, #0, G_M2879_IG31
+ tbz w1, #0, G_M2879_IG30
;; size=20 bbWeight=0.50 PerfScore 2.75 G_M2879_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -130,18 +130,18 @@ G_M2879_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movk x20, #0xD1FFAB1E LSL #32 ldr x0, [x20] ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V02 loc1]
+ str x0, [fp, #0x10] // [V02 loc1]
; GC ptr vars +{V02}
- str wzr, [fp, #0x28] // [V03 loc2]
+ str wzr, [fp, #0x20] // [V03 loc2]
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M2879_IG11: ; bbWeight=0.50, gcVars=0000000040000000 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w1, [fp, #0x28] // [V03 loc2]
+G_M2879_IG11: ; bbWeight=0.50, gcVars=0000000080000000 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w1, [fp, #0x20] // [V03 loc2]
cbnz w1, G_M2879_IG16
- add x1, fp, #40 // [V03 loc2]
+ add x1, fp, #32 // [V03 loc2]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x28] // [V03 loc2]
+ ldrb w0, [fp, #0x20] // [V03 loc2]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -154,41 +154,41 @@ G_M2879_IG11: ; bbWeight=0.50, gcVars=0000000040000000 {V02}, gcrefRegs=0 mov w23, wzr ;; size=52 bbWeight=0.50 PerfScore 9.25 G_M2879_IG12: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x21, #0x14] - cmp w22, w24 - bne G_M2879_IG18
+ ldr w0, [x21, #0x14] + cmp w22, w0 + bne G_M2879_IG24
ldr w0, [x21, #0x10] cmp w23, w0
- bhs G_M2879_IG19
+ bhs G_M2879_IG18
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w23, w1
- bhs G_M2879_IG22
+ bhs G_M2879_IG21
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x25, [x0, w23, UXTW #3] - ; gcrRegs +[x25]
+ ldr x24, [x0, w23, UXTW #3] + ; gcrRegs +[x24]
add w23, w23, #1
- mov x0, x25
+ mov x0, x24
; gcrRegs +[x0] ; byrRegs -[x0]
- ldr x1, [x25]
+ ldr x1, [x24]
ldr x1, [x1, #0x48] ldr x1, [x1, #0x30] blr x1 ; gcr arg pop 0
- cbz x0, G_M2879_IG26
+ cbz x0, G_M2879_IG25
;; size=76 bbWeight=4 PerfScore 128.00
-G_M2879_IG13: ; bbWeight=2, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M2879_IG13: ; bbWeight=2, gcrefRegs=1200001 {x0 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08] cmp w1, #12
- blo G_M2879_IG26 - add x26, x0, #36 - ; byrRegs +[x26] - sub w27, w1, #12 - cmp w27, #0
+ blo G_M2879_IG25 + add x25, x0, #36 + ; byrRegs +[x25] + sub w26, w1, #12 + cmp w26, #0
cset x0, ge ; gcrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -214,12 +214,12 @@ G_M2879_IG13: ; bbWeight=2, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=000 mov x3, x0 ; gcrRegs +[x3] ;; size=96 bbWeight=2 PerfScore 49.00
-G_M2879_IG14: ; bbWeight=2, gcrefRegs=2200008 {x3 x21 x25}, byrefRegs=4000000 {x26}, byref, isz
+G_M2879_IG14: ; bbWeight=2, gcrefRegs=1200008 {x3 x21 x24}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- mov x0, x26
+ mov x0, x25
; byrRegs +[x0]
- mov w1, w27 - add x4, fp, #32 // [V23 tmp14]
+ mov w1, w26 + add x4, fp, #24 // [V23 tmp14]
mov w2, #7 ...

-12 (-0.26%) : 31004.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)

@@ -11,31 +11,31 @@ ; V00 this [V00,T15] ( 20, 19 ) ref -> [fp+0xA8] this class-hnd EH-live single-def <System.Management.Automation.ScriptBlock> ; V01 arg1 [V01,T27] ( 7, 7 ) int -> x19 single-def ; V02 arg2 [V02,T28] ( 7, 7 ) ubyte -> [fp+0x184] EH-live single-def
-; V03 arg3 [V03,T38] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock]> -; V04 arg4 [V04,T43] ( 4, 4 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSVariable]> -; V05 arg5 [V05,T59] ( 3, 3 ) int -> x25 single-def -; V06 arg6 [V06,T44] ( 4, 4 ) ref -> x23 class-hnd single-def <System.Object> -; V07 arg7 [V07,T45] ( 4, 4 ) ref -> x24 class-hnd single-def <System.Object> -; V08 arg8 [V08,T108] ( 2, 2 ) ref -> x27 class-hnd single-def <System.Object> -; V09 arg9 [V09,T89] ( 3, 3 ) ref -> x26 class-hnd <System.Management.Automation.Internal.Pipe> -; V10 arg10 [V10,T116] ( 1, 1 ) ref -> [fp+0x1F0] class-hnd single-def <System.Management.Automation.InvocationInfo> -; V11 arg11 [V11,T39] ( 6, 6 ) ref -> x21 class-hnd <System.Object[]>
+; V03 arg3 [V03,T39] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock]> +; V04 arg4 [V04,T44] ( 4, 4 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSVariable]> +; V05 arg5 [V05,T60] ( 3, 3 ) int -> x25 single-def +; V06 arg6 [V06,T45] ( 4, 4 ) ref -> x23 class-hnd single-def <System.Object> +; V07 arg7 [V07,T46] ( 4, 4 ) ref -> x24 class-hnd single-def <System.Object> +; V08 arg8 [V08,T109] ( 2, 2 ) ref -> x27 class-hnd single-def <System.Object> +; V09 arg9 [V09,T90] ( 3, 3 ) ref -> x26 class-hnd <System.Management.Automation.Internal.Pipe> +; V10 arg10 [V10,T117] ( 1, 1 ) ref -> [fp+0x1F0] class-hnd single-def <System.Management.Automation.InvocationInfo> +; V11 arg11 [V11,T40] ( 6, 6 ) ref -> x21 class-hnd <System.Object[]>
; V12 loc0 [V12,T01] ( 43, 53 ) ref -> [fp+0xA0] class-hnd EH-live spill-single-def <System.Management.Automation.ExecutionContext> ; V13 loc1 [V13 ] ( 3, 3 ) ubyte -> [fp+0x178] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V14 loc2 [V14,T62] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>>
+; V14 loc2 [V14,T63] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>>
; V15 loc3 [V15,T13] ( 22, 22 ) ref -> x28 class-hnd single-def <System.Management.Automation.MutableTuple>
-; V16 loc4 [V16,T112] ( 2, 1 ) ref -> [fp+0x98] class-hnd EH-live spill-single-def <System.Management.Automation.Internal.Pipe> -; V17 loc5 [V17,T113] ( 2, 1 ) ref -> [fp+0x90] class-hnd EH-live spill-single-def <System.Management.Automation.Runspaces.PipelineWriter> -; V18 loc6 [V18,T115] ( 2, 1 ) int -> [fp+0x174] EH-live spill-single-def -; V19 loc7 [V19,T114] ( 2, 1 ) ref -> [fp+0x88] class-hnd exact EH-live single-def <System.Management.Automation.SessionStateInternal>
+; V16 loc4 [V16,T113] ( 2, 1 ) ref -> [fp+0x98] class-hnd EH-live spill-single-def <System.Management.Automation.Internal.Pipe> +; V17 loc5 [V17,T114] ( 2, 1 ) ref -> [fp+0x90] class-hnd EH-live spill-single-def <System.Management.Automation.Runspaces.PipelineWriter> +; V18 loc6 [V18,T116] ( 2, 1 ) int -> [fp+0x174] EH-live spill-single-def +; V19 loc7 [V19,T115] ( 2, 1 ) ref -> [fp+0x88] class-hnd exact EH-live single-def <System.Management.Automation.SessionStateInternal>
;* V20 loc8 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> ;* V21 loc9 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V22 loc10 [V22,T40] ( 6, 6 ) ref -> [fp+0x80] do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable]>
+; V22 loc10 [V22,T41] ( 6, 6 ) ref -> [fp+0x80] do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable]>
;* V23 loc11 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> ;* V24 loc12 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 loc13 [V25,T63] ( 4, 4 ) ref -> [fp+0x78] class-hnd <System.Management.Automation.InvocationInfo>
+; V25 loc13 [V25,T64] ( 4, 4 ) ref -> [fp+0x78] class-hnd <System.Management.Automation.InvocationInfo>
;* V26 loc14 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Management.Automation.Language.FunctionContext>
-; V27 loc15 [V27,T90] ( 3, 3 ) ref -> x0 class-hnd exact single-def <System.Management.Automation.CallStackFrame>
+; V27 loc15 [V27,T91] ( 3, 3 ) ref -> x0 class-hnd exact single-def <System.Management.Automation.CallStackFrame>
;* V28 loc16 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Management.Automation.Language.IScriptExtent> ; V29 loc17 [V29,T21] ( 5, 15 ) ref -> x25 class-hnd exact single-def <System.Management.Automation.SessionStateScope> ; V30 loc18 [V30 ] ( 9, 30 ) struct (40) [fp+0x148] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.ScriptBlock]> @@ -43,79 +43,79 @@ ; V32 loc20 [V32,T29] ( 4, 9 ) int -> x20 ;* V33 loc21 [V33 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSVariable]> ;* V34 loc22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Management.Automation.PSVariable>
-; V35 loc23 [V35,T35] ( 2, 8 ) ref -> [fp+0x70] class-hnd exact spill-single-def <System.String>
+; V35 loc23 [V35,T36] ( 2, 8 ) ref -> [fp+0x70] class-hnd exact spill-single-def <System.String>
; V36 loc24 [V36 ] ( 9, 30 ) struct (40) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.PSVariable]> ;* V37 loc25 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Management.Automation.PSVariable]> ;# V38 OutArgs [V38 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V39 tmp1 [V39,T31] ( 4, 8 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Runspaces.DiscardingPipelineWriter> -; V40 tmp2 [V40,T46] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable]> -; V41 tmp3 [V41,T60] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" -; V42 tmp4 [V42,T106] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V43 tmp5 [V43,T36] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V39 tmp1 [V39,T32] ( 4, 8 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Runspaces.DiscardingPipelineWriter> +; V40 tmp2 [V40,T47] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable]> +; V41 tmp3 [V41,T61] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1" +; V42 tmp4 [V42,T107] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" +; V43 tmp5 [V43,T37] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
; V44 tmp6 [V44,T14] ( 11, 22 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Language.FunctionContext> ;* V45 tmp7 [V45 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Guid> ;* V46 tmp8 [V46 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Guid>
-; V47 tmp9 [V47,T119] ( 3, 0 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]> -; V48 tmp10 [V48,T127] ( 2, 0 ) ref -> x19 class-hnd exact "impSpillLclRefs" <System.String> -; V49 tmp11 [V49,T120] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> -; V50 tmp12 [V50,T121] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException>
+; V47 tmp9 [V47,T120] ( 3, 0 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]> +; V48 tmp10 [V48,T128] ( 2, 0 ) ref -> x19 class-hnd exact "impSpillLclRefs" <System.String> +; V49 tmp11 [V49,T121] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> +; V50 tmp12 [V50,T122] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException>
; V51 tmp13 [V51,T03] ( 3, 48 ) ref -> [fp+0x68] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo]> ;* V52 tmp14 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V53 tmp15 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ; V54 tmp16 [V54,T00] ( 12,192 ) ref -> [fp+0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.FunctionInfo>
-; V55 tmp17 [V55,T122] ( 3, 0 ) ref -> x1 class-hnd exact "dup spill" <System.Object[]> -; V56 tmp18 [V56,T128] ( 2, 0 ) ref -> x19 class-hnd exact "impSpillLclRefs" <System.String>
+; V55 tmp17 [V55,T123] ( 3, 0 ) ref -> x1 class-hnd exact "dup spill" <System.Object[]> +; V56 tmp18 [V56,T129] ( 2, 0 ) ref -> x19 class-hnd exact "impSpillLclRefs" <System.String>
;* V57 tmp19 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V58 tmp20 [V58,T123] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException>
+; V58 tmp20 [V58,T124] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException>
;* V59 tmp21 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V60 tmp22 [V60,T124] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException> -; V61 tmp23 [V61,T91] ( 3, 3 ) ref -> [fp+0x58] -; V62 tmp24 [V62,T47] ( 3, 6 ) ref -> [fp+0x50] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.InvocationInfo>
+; V60 tmp22 [V60,T125] ( 3, 0 ) ref -> x19 class-hnd "dup spill" <System.Management.Automation.PSInvalidOperationException> +; V61 tmp23 [V61,T92] ( 3, 3 ) ref -> [fp+0x58] +; V62 tmp24 [V62,T48] ( 3, 6 ) ref -> [fp+0x50] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.InvocationInfo>
; V63 tmp25 [V63,T11] ( 3, 24 ) ref -> x2 class-hnd exact "impAppendStmt" <System.Management.Automation.SessionStateInternal> ;* V64 tmp26 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Management.Automation.SessionStateInternal> ;* V65 tmp27 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Management.Automation.SessionStateInternal>
-; V66 tmp28 [V66,T129] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V66 tmp28 [V66,T130] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V67 tmp29 [V67 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V68 tmp30 [V68 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V69 tmp31 [V69,T32] ( 4, 8 ) ref -> x3 class-hnd exact single-def "dup spill" <System.Management.Automation.PSModuleInfo>
+; V69 tmp31 [V69,T33] ( 4, 8 ) ref -> x3 class-hnd exact single-def "dup spill" <System.Management.Automation.PSModuleInfo>
;* V70 tmp32 [V70 ] ( 0, 0 ) ref -> zero-ref single-def ;* V71 tmp33 [V71 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V72 tmp34 [V72,T100] ( 2, 2 ) int -> x3 -; V73 tmp35 [V73,T33] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Internal.Pipe> -; V74 tmp36 [V74,T125] ( 3, 0 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V75 tmp37 [V75,T126] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V76 tmp38 [V76,T48] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V72 tmp34 [V72,T101] ( 2, 2 ) int -> x3 +; V73 tmp35 [V73,T34] ( 4, 8 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Internal.Pipe> +; V74 tmp36 [V74,T126] ( 3, 0 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V75 tmp37 [V75,T127] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V76 tmp38 [V76,T49] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V77 tmp39 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V78 tmp40 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateScope> ;* V79 tmp41 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V80 tmp42 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V81 tmp43 [V81,T25] ( 5, 10 ) ref -> [fp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.ScriptDebugger+<GetCallStack>d__105>
-; V82 tmp44 [V82,T49] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inlining Arg" <System.Management.Automation.ScriptDebugger>
+; V82 tmp44 [V82,T50] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inlining Arg" <System.Management.Automation.ScriptDebugger>
; V83 tmp45 [V83 ] ( 1, 1 ) ubyte -> [fp+0x118] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V84 tmp46 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V85 tmp47 [V85,T107] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" -; V86 tmp48 [V86,T37] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <System.Management.Automation.Language.Ast> -; V87 tmp49 [V87,T50] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData> -; V88 tmp50 [V88,T70] ( 2, 4 ) ref -> x1 class-hnd single-def "dup spill" <System.Management.Automation.Language.IParameterMetadataProvider> -; V89 tmp51 [V89,T61] ( 5, 4.25) ref -> x1 -; V90 tmp52 [V90,T92] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Management.Automation.Language.IScriptExtent> -; V91 tmp53 [V91,T51] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Management.Automation.Language.FunctionContext>
+; V85 tmp47 [V85,T108] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable" +; V86 tmp48 [V86,T38] ( 5, 7.50) ref -> x2 class-hnd "spilling QMark2" <System.Management.Automation.Language.Ast> +; V87 tmp49 [V87,T51] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData> +; V88 tmp50 [V88,T71] ( 2, 4 ) ref -> x1 class-hnd single-def "dup spill" <System.Management.Automation.Language.IParameterMetadataProvider> +; V89 tmp51 [V89,T62] ( 5, 4.25) ref -> x1 +; V90 tmp52 [V90,T93] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Management.Automation.Language.IScriptExtent> +; V91 tmp53 [V91,T52] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Management.Automation.Language.FunctionContext>
;* V92 tmp54 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal>
-; V93 tmp55 [V93,T52] ( 3, 6 ) ref -> [fp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.ManualResetEvent>
+; V93 tmp55 [V93,T53] ( 3, 6 ) ref -> [fp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.ManualResetEvent>
; V94 tmp56 [V94 ] ( 1, 1 ) ubyte -> [fp+0x110] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V95 tmp57 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Management.Automation.SessionStateScope>
-; V96 tmp58 [V96,T71] ( 2, 4 ) ref -> x25 class-hnd exact single-def "Inlining Arg" <System.Management.Automation.SessionStateInternal> -; V97 tmp59 [V97,T53] ( 3, 6 ) ref -> [fp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.SessionStateScope>
+; V96 tmp58 [V96,T72] ( 2, 4 ) ref -> x25 class-hnd exact single-def "Inlining Arg" <System.Management.Automation.SessionStateInternal> +; V97 tmp59 [V97,T54] ( 3, 6 ) ref -> [fp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Management.Automation.SessionStateScope>
;* V98 tmp60 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Management.Automation.SessionStateScope> ;* V99 tmp61 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal>
-; V100 tmp62 [V100,T87] ( 2, 4 ) struct (40) [fp+0xE8] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.ScriptBlock]>
+; V100 tmp62 [V100,T88] ( 2, 4 ) struct (40) [fp+0xE8] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.ScriptBlock]>
;* V101 tmp63 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V102 tmp64 [V102,T18] ( 3, 16 ) ref -> x15 class-hnd "Inline return value spill temp" <System.Management.Automation.PSModuleInfo>
+; V102 tmp64 [V102,T17] ( 3, 16 ) ref -> x15 class-hnd "Inline return value spill temp" <System.Management.Automation.PSModuleInfo>
; V103 tmp65 [V103,T06] ( 3, 40 ) ref -> x14 class-hnd exact "dup spill" <System.Management.Automation.SessionStateInternal> ;* V104 tmp66 [V104 ] ( 0, 0 ) ref -> zero-ref ;* V105 tmp67 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V106 tmp68 [V106 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSVariable]>
-;* V107 tmp69 [V107,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V107 tmp69 [V107,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V108 tmp70 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.PSVariable]> ;* V109 tmp71 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V110 tmp72 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateScope> @@ -124,13 +124,13 @@ ;* V113 tmp75 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V114 tmp76 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateScope> ; V115 tmp77 [V115,T22] ( 7, 14 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Stack`1[System.Management.Automation.MutableTuple]>
-; V116 tmp78 [V116,T68] ( 4, 4 ) int -> x22 single-def "Inline stloc first use temp" -; V117 tmp79 [V117,T93] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V118 tmp80 [V118,T34] ( 4, 8 ) ref -> x24 class-hnd single-def "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData>
+; V116 tmp78 [V116,T69] ( 4, 4 ) int -> x22 single-def "Inline stloc first use temp" +; V117 tmp79 [V117,T94] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V118 tmp80 [V118,T35] ( 4, 8 ) ref -> x24 class-hnd single-def "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData>
;* V119 tmp81 [V119 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.RuntimeDefinedParameterDictionary> ;* V120 tmp82 [V120 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V121 tmp83 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateScope>
-; V122 tmp84 [V122,T54] ( 3, 6 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V122 tmp84 [V122,T55] ( 3, 6 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V123 tmp85 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData> ;* V124 tmp86 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData> ;* V125 tmp87 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.CompiledScriptBlockData> @@ -141,74 +141,75 @@ ;* V130 tmp92 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V131 tmp93 [V131 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateInternal> ;* V132 tmp94 [V132 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.SessionStateScope>
-; V133 tmp95 [V133,T88] ( 2, 4 ) struct (40) [fp+0xC0] do-not-enreg[SHF] must-init ld-addr-op EH-live "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.PSVariable]>
+; V133 tmp95 [V133,T89] ( 2, 4 ) struct (40) [fp+0xC0] do-not-enreg[SHF] must-init ld-addr-op EH-live "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Management.Automation.PSVariable]>
;* V134 tmp96 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V135 tmp97 [V135,T101] ( 3, 3 ) ubyte -> [fp+0xBC] do-not-enreg[M] EH-live "field V20.hasValue (fldOffset=0x0)" P-INDEP -; V136 tmp98 [V136,T102] ( 3, 3 ) int -> [fp+0xB8] do-not-enreg[M] EH-live "field V20.value (fldOffset=0x4)" P-INDEP -; V137 tmp99 [V137,T103] ( 3, 10 ) ubyte -> x24 "field V21.hasValue (fldOffset=0x0)" P-INDEP -; V138 tmp100 [V138,T104] ( 3, 3 ) int -> x27 "field V21.value (fldOffset=0x4)" P-INDEP -; V139 tmp101 [V139,T30] ( 8, 8 ) ubyte -> x7 "field V23.hasValue (fldOffset=0x0)" P-INDEP -; V140 tmp102 [V140,T42] ( 6, 6 ) int -> registers "field V23.value (fldOffset=0x4)" P-INDEP
+; V135 tmp97 [V135,T102] ( 3, 3 ) ubyte -> [fp+0xBC] do-not-enreg[M] EH-live "field V20.hasValue (fldOffset=0x0)" P-INDEP +; V136 tmp98 [V136,T103] ( 3, 3 ) int -> [fp+0xB8] do-not-enreg[M] EH-live "field V20.value (fldOffset=0x4)" P-INDEP +; V137 tmp99 [V137,T104] ( 3, 10 ) ubyte -> x24 "field V21.hasValue (fldOffset=0x0)" P-INDEP +; V138 tmp100 [V138,T105] ( 3, 3 ) int -> x27 "field V21.value (fldOffset=0x4)" P-INDEP +; V139 tmp101 [V139,T31] ( 8, 8 ) ubyte -> x7 "field V23.hasValue (fldOffset=0x0)" P-INDEP +; V140 tmp102 [V140,T43] ( 6, 6 ) int -> registers "field V23.value (fldOffset=0x4)" P-INDEP
; V141 tmp103 [V141,T05] ( 6, 40 ) ref -> [fp+0x28] spill-single-def "field V31.key (fldOffset=0x0)" P-INDEP
-; V142 tmp104 [V142,T09] ( 4, 32 ) ref -> [fp+0x20] spill-single-def "field V31.value (fldOffset=0x8)" P-INDEP -; V143 tmp105 [V143,T07] ( 4, 25 ) ref -> x22 single-def "field V33._list (fldOffset=0x0)" P-INDEP -; V144 tmp106 [V144,T08] ( 4, 24 ) ref -> [fp+0x18] spill-single-def "field V33._current (fldOffset=0x8)" P-INDEP
+; V142 tmp104 [V142,T08] ( 4, 32 ) ref -> [fp+0x20] spill-single-def "field V31.value (fldOffset=0x8)" P-INDEP +; V143 tmp105 [V143,T10] ( 4, 25 ) ref -> x22 single-def "field V33._list (fldOffset=0x0)" P-INDEP +; V144 tmp106 [V144,T07] ( 4, 24 ) ref -> [fp+0x18] spill-single-def "field V33._current (fldOffset=0x8)" P-INDEP
; V145 tmp107 [V145,T02] ( 6, 41 ) int -> [fp+0xB4] "field V33._index (fldOffset=0x10)" P-INDEP
-; V146 tmp108 [V146,T17] ( 3, 17 ) int -> [fp+0xB0] spill-single-def "field V33._version (fldOffset=0x14)" P-INDEP
+; V146 tmp108 [V146,T30] ( 2, 9 ) int -> [fp+0xB0] spill-single-def "field V33._version (fldOffset=0x14)" P-INDEP
; V147 tmp109 [V147,T24] ( 2, 12 ) ref -> x1 "field V37.key (fldOffset=0x0)" P-INDEP ; V148 tmp110 [V148,T16] ( 3, 20 ) ref -> x2 "field V37.value (fldOffset=0x8)" P-INDEP
-; V149 tmp111 [V149,T94] ( 3, 3 ) ref -> x22 single-def "field V106._list (fldOffset=0x0)" P-INDEP
+; V149 tmp111 [V149,T95] ( 3, 3 ) ref -> x22 single-def "field V106._list (fldOffset=0x0)" P-INDEP
;* V150 tmp112 [V150 ] ( 0, 0 ) ref -> zero-ref single-def "field V106._current (fldOffset=0x8)" P-INDEP
-;* V151 tmp113 [V151,T117] ( 0, 0 ) int -> zero-ref single-def "field V106._index (fldOffset=0x10)" P-INDEP -; V152 tmp114 [V152,T109] ( 2, 2 ) int -> x1 single-def "field V106._version (fldOffset=0x14)" P-INDEP
+;* V151 tmp113 [V151,T118] ( 0, 0 ) int -> zero-ref single-def "field V106._index (fldOffset=0x10)" P-INDEP +; V152 tmp114 [V152,T110] ( 2, 2 ) int -> x1 single-def "field V106._version (fldOffset=0x14)" P-INDEP
;* V153 tmp115 [V153 ] ( 0, 0 ) ref -> zero-ref single-def "V100.[000..008)"
-; V154 tmp116 [V154,T110] ( 2, 2 ) int -> x0 single-def "V100.[008..012)"
+; V154 tmp116 [V154,T111] ( 2, 2 ) int -> x0 single-def "V100.[008..012)"
;* V155 tmp117 [V155 ] ( 0, 0 ) int -> zero-ref single-def "V100.[012..016)" ;* V156 tmp118 [V156 ] ( 0, 0 ) int -> zero-ref single-def "V100.[016..020)" ;* V157 tmp119 [V157 ] ( 0, 0 ) ref -> zero-ref single-def "V133.[000..008)"
-; V158 tmp120 [V158,T111] ( 2, 2 ) int -> x0 single-def "V133.[008..012)"
+; V158 tmp120 [V158,T112] ( 2, 2 ) int -> x0 single-def "V133.[008..012)"
;* V159 tmp121 [V159 ] ( 0, 0 ) int -> zero-ref single-def "V133.[012..016)" ;* V160 tmp122 [V160 ] ( 0, 0 ) int -> zero-ref single-def "V133.[016..020)"
-; V161 tmp123 [V161,T72] ( 2, 4 ) ref -> x3 single-def "arr expr" -; V162 tmp124 [V162,T73] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V163 tmp125 [V163,T74] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V164 tmp126 [V164,T75] ( 2, 4 ) ref -> x3 single-def "arr expr" -; V165 tmp127 [V165,T76] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V166 tmp128 [V166,T77] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V167 tmp129 [V167,T78] ( 2, 4 ) ref -> x2 single-def "arr expr" -; V168 tmp130 [V168,T79] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V169 tmp131 [V169,T80] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V170 tmp132 [V170,T55] ( 3, 6 ) ref -> x0 single-def "arr expr" -; V171 tmp133 [V171,T56] ( 3, 6 ) int -> x1 "index expr" -; V172 tmp134 [V172,T81] ( 2, 4 ) ref -> x7 single-def "arr expr" -; V173 tmp135 [V173,T82] ( 2, 4 ) ref -> x6 single-def "argument with side effect" -; V174 tmp136 [V174,T83] ( 2, 4 ) ref -> x7 single-def "argument with side effect" -; V175 tmp137 [V175,T130] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V161 tmp123 [V161,T73] ( 2, 4 ) ref -> x3 single-def "arr expr" +; V162 tmp124 [V162,T74] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V163 tmp125 [V163,T75] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
...

-4 (-0.18%) : 1623.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte):ubyte (FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 66 single block inlinees; 39 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T56] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T57] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T53] ( 4, 10.50) ubyte -> x20 single-def -; V03 arg3 [V03,T36] ( 5, 66.50) ubyte -> x19 single-def
+; V00 arg0 [V00,T57] ( 4, 4 ) struct (16) [fp-0x68] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T58] ( 4, 4 ) struct (16) [fp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T54] ( 4, 10.50) ubyte -> x20 single-def +; V03 arg3 [V03,T49] ( 4, 34.50) ubyte -> x19 single-def
; V04 loc0 [V04,T48] ( 5, 40.50) int -> registers ptr ; V05 loc1 [V05,T06] ( 10, 488 ) int -> [fp-0x7C] ptr ; V06 loc2 [V06,T00] ( 10,1348 ) int -> [fp-0x80] ptr ; V07 loc3 [V07,T08] ( 22, 428 ) int -> [fp-0x84] ptr ; V08 loc4 [V08,T03] ( 7, 724 ) int -> [fp-0x88] ptr
-; V09 loc5 [V09,T46] ( 8, 43.50) int -> x26
+; V09 loc5 [V09,T46] ( 8, 43.50) int -> x25
; V10 loc6 [V10,T21] ( 11, 146.50) ushort -> registers ptr ; V11 loc7 [V11,T10] ( 13, 288 ) ushort -> [fp-0x8C] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> @@ -29,9 +29,9 @@ ;* V18 loc14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V19 loc15 [V19 ] ( 0, 0 ) ubyte -> zero-ref ;* V20 loc16 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V21 loc17 [V21,T28] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr -; V22 loc18 [V22,T29] ( 3, 96 ) ubyte -> x14 -; V23 loc19 [V23,T01] ( 7,1344 ) int -> x13
+; V21 loc17 [V21,T29] ( 3, 96 ) int -> [fp-0x9C] spill-single-def ptr +; V22 loc18 [V22,T30] ( 3, 96 ) ubyte -> x14 +; V23 loc19 [V23,T01] ( 7,1344 ) int -> x1
; V24 loc20 [V24,T02] ( 3, 832 ) int -> x0 ;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V26 tmp1 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> @@ -41,16 +41,16 @@ ; V30 tmp5 [V30,T13] ( 4, 256 ) int -> x1 "impSpillLclRefs" ; V31 tmp6 [V31,T15] ( 2, 256 ) int -> x10 "dup spill" ; V32 tmp7 [V32,T14] ( 4, 256 ) int -> x1 "impSpillLclRefs"
-; V33 tmp8 [V33,T49] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
+; V33 tmp8 [V33,T50] ( 2, 32 ) int -> [fp-0xA0] spill-single-def ptr "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) int -> zero-ref ptr ; V35 tmp10 [V35,T37] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V36 tmp11 [V36,T38] ( 4, 64 ) int -> x13 "impSpillLclRefs"
-; V37 tmp12 [V37,T34] ( 5, 80 ) int -> x13 "dup spill"
+; V37 tmp12 [V37,T35] ( 5, 80 ) int -> x13 "dup spill"
; V38 tmp13 [V38,T39] ( 4, 64 ) int -> x13 "impSpillLclRefs" ; V39 tmp14 [V39,T40] ( 4, 64 ) int -> x0 "impSpillLclRefs" ; V40 tmp15 [V40,T41] ( 4, 64 ) int -> x0 "impSpillLclRefs"
-; V41 tmp16 [V41,T30] ( 3, 96 ) int -> x1 -; V42 tmp17 [V42,T52] ( 4, 16 ) int -> x25 "impSpillLclRefs"
+; V41 tmp16 [V41,T31] ( 3, 96 ) int -> x1 +; V42 tmp17 [V42,T53] ( 4, 16 ) int -> x27 "impSpillLclRefs"
;* V43 tmp18 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp19 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp20 [V45 ] ( 0, 0 ) int -> zero-ref ptr @@ -58,15 +58,15 @@ ;* V47 tmp22 [V47 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V48 tmp23 [V48 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V49 tmp24 [V49 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V50 tmp25 [V50,T69] ( 2, 1 ) int -> x4
+; V50 tmp25 [V50,T70] ( 2, 1 ) int -> x4
;* V51 tmp26 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp27 [V52,T59] ( 3, 3 ) int -> x26 "Inlining Arg" -; V53 tmp28 [V53,T60] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
+; V52 tmp27 [V52,T60] ( 3, 3 ) int -> x26 "Inlining Arg" +; V53 tmp28 [V53,T61] ( 2, 2 ) byref -> x25 single-def "Inlining Arg"
;* V54 tmp29 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V55 tmp30 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V56 tmp31 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V57 tmp32 [V57,T72] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp33 [V58,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V57 tmp32 [V57,T73] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp33 [V58,T74] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V59 tmp34 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp35 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V61 tmp36 [V61 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -76,7 +76,7 @@ ;* V65 tmp40 [V65 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp41 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp42 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V68 tmp43 [V68,T70] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V68 tmp43 [V68,T71] ( 2, 1 ) int -> x0 "Inline return value spill temp"
;* V69 tmp44 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V70 tmp45 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V71 tmp46 [V71 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -142,8 +142,8 @@ ;* V131 tmp106 [V131 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector256`1[ubyte]> ;* V132 tmp107 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V133 tmp108 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V134 tmp109 [V134,T64] ( 2, 2 ) long -> x28 "Inlining Arg" -; V135 tmp110 [V135,T65] ( 2, 2 ) long -> x3 "Inlining Arg"
+; V134 tmp109 [V134,T65] ( 2, 2 ) long -> x28 "Inlining Arg" +; V135 tmp110 [V135,T66] ( 2, 2 ) long -> x3 "Inlining Arg"
; V136 tmp111 [V136,T18] ( 3, 192 ) ref -> x0 class-hnd exact "Inlining Arg" <int[]> ;* V137 tmp112 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V138 tmp113 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -158,7 +158,7 @@ ;* V147 tmp122 [V147 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ; V148 tmp123 [V148,T24] ( 2, 128 ) long -> x2 "Inlining Arg" ;* V149 tmp124 [V149 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V150 tmp125 [V150,T50] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
+; V150 tmp125 [V150,T51] ( 3, 24 ) ushort -> registers ptr "Inline return value spill temp"
; V151 tmp126 [V151,T42] ( 4, 64 ) ushort -> x12 "Inlining Arg" ;* V152 tmp127 [V152 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V153 tmp128 [V153 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -171,7 +171,7 @@ ; V160 tmp135 [V160 ] ( 3, 24 ) ushort -> [fp-0xA8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V161 tmp136 [V161,T44] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V162 tmp137 [V162 ] ( 2, 32 ) ushort -> [fp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V163 tmp138 [V163,T51] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
+; V163 tmp138 [V163,T52] ( 3, 24 ) ushort -> x13 "Inline return value spill temp"
; V164 tmp139 [V164,T43] ( 4, 64 ) ushort -> x13 "Inlining Arg" ;* V165 tmp140 [V165 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V166 tmp141 [V166 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -184,35 +184,35 @@ ; V173 tmp148 [V173 ] ( 3, 24 ) ushort -> [fp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inline stloc first use temp" ; V174 tmp149 [V174,T45] ( 3, 48 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.TextInfo> ; V175 tmp150 [V175 ] ( 2, 32 ) ushort -> [fp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op ptr "Inlining Arg"
-; V176 tmp151 [V176,T61] ( 3, 3 ) int -> x0 "Single return block return value" -; V177 tmp152 [V177,T54] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP -; V178 tmp153 [V178,T55] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
+; V176 tmp151 [V176,T62] ( 3, 3 ) int -> x0 "Single return block return value" +; V177 tmp152 [V177,T55] ( 2, 8 ) byref -> x1 "field V12._reference (fldOffset=0x0)" P-INDEP +; V178 tmp153 [V178,T56] ( 2, 8 ) int -> x0 "field V12._length (fldOffset=0x8)" P-INDEP
; V179 tmp154 [V179,T07] ( 14, 464.50) byref -> x28 "field V13._reference (fldOffset=0x0)" P-INDEP ; V180 tmp155 [V180,T04] ( 17, 592.50) int -> [fp-0xC4] ptr "field V13._length (fldOffset=0x8)" P-INDEP ; V181 tmp156 [V181,T09] ( 10, 347.50) byref -> [fp-0xD8] ptr "field V14._reference (fldOffset=0x0)" P-INDEP ; V182 tmp157 [V182,T20] ( 10, 187 ) int -> [fp-0xC8] ptr "field V14._length (fldOffset=0x8)" P-INDEP
-; V183 tmp158 [V183,T63] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V184 tmp159 [V184,T62] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
+; V183 tmp158 [V183,T64] ( 4, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V184 tmp159 [V184,T63] ( 5, 2.50) int -> x26 "field V18._length (fldOffset=0x8)" P-INDEP
;* V185 tmp160 [V185 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp161 [V186 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V187 tmp162 [V187,T66] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V188 tmp163 [V188,T76] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP -; V189 tmp164 [V189,T67] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V190 tmp165 [V190,T77] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
+; V187 tmp162 [V187,T67] ( 2, 1 ) byref -> x28 single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V188 tmp163 [V188,T77] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP +; V189 tmp164 [V189,T68] ( 2, 1 ) byref -> x3 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V190 tmp165 [V190,T78] ( 0, 0 ) int -> zero-ref ptr "field V27._length (fldOffset=0x8)" P-INDEP
;* V191 tmp166 [V191 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V43._reference (fldOffset=0x0)" P-INDEP ;* V192 tmp167 [V192 ] ( 0, 0 ) int -> zero-ref ptr "field V43._length (fldOffset=0x8)" P-INDEP ;* V193 tmp168 [V193 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V44._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp169 [V194 ] ( 0, 0 ) int -> zero-ref ptr "field V44._length (fldOffset=0x8)" P-INDEP
-; V195 tmp170 [V195,T68] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V196 tmp171 [V196,T71] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
+; V195 tmp170 [V195,T69] ( 2, 1 ) byref -> x0 single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V196 tmp171 [V196,T72] ( 2, 1 ) int -> x1 "field V46._length (fldOffset=0x8)" P-INDEP
;* V197 tmp172 [V197 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V47._reference (fldOffset=0x0)" P-INDEP ;* V198 tmp173 [V198 ] ( 0, 0 ) int -> zero-ref ptr "field V47._length (fldOffset=0x8)" P-INDEP ;* V199 tmp174 [V199 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V48._reference (fldOffset=0x0)" P-INDEP ;* V200 tmp175 [V200 ] ( 0, 0 ) int -> zero-ref ptr "field V48._length (fldOffset=0x8)" P-INDEP ;* V201 tmp176 [V201 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V49._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp177 [V202 ] ( 0, 0 ) int -> zero-ref ptr "field V49._length (fldOffset=0x8)" P-INDEP
-;* V203 tmp178 [V203,T74] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP -;* V204 tmp179 [V204,T78] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
+;* V203 tmp178 [V203,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V51._reference (fldOffset=0x0)" P-INDEP +;* V204 tmp179 [V204,T79] ( 0, 0 ) int -> zero-ref ptr "field V51._length (fldOffset=0x8)" P-INDEP
;* V205 tmp180 [V205 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp181 [V206 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V207 tmp182 [V207 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V56._reference (fldOffset=0x0)" P-INDEP @@ -223,7 +223,7 @@ ;* V212 tmp187 [V212 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V213 tmp188 [V213 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp189 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V215 tmp190 [V215,T75] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V215 tmp190 [V215,T76] ( 0, 0 ) byref -> zero-ref single-def ptr "field V66._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp191 [V216 ] ( 0, 0 ) int -> zero-ref ptr "field V66._length (fldOffset=0x8)" P-INDEP ;* V217 tmp192 [V217 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP ;* V218 tmp193 [V218 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP @@ -251,12 +251,12 @@ ;* V240 tmp215 [V240 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP ;* V241 tmp216 [V241 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp217 [V242 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
-; V243 tmp218 [V243,T26] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP -; V244 tmp219 [V244,T31] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
+; V243 tmp218 [V243,T27] ( 3, 96 ) byref -> [fp-0xE0] spill-single-def ptr "field V137._reference (fldOffset=0x0)" P-INDEP +; V244 tmp219 [V244,T32] ( 3, 96 ) int -> [fp-0xCC] spill-single-def ptr "field V137._length (fldOffset=0x8)" P-INDEP
;* V245 tmp220 [V245 ] ( 0, 0 ) byref -> zero-ref ptr "field V138._reference (fldOffset=0x0)" P-INDEP ;* V246 tmp221 [V246 ] ( 0, 0 ) int -> zero-ref ptr "field V138._length (fldOffset=0x8)" P-INDEP
-; V247 tmp222 [V247,T27] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP -; V248 tmp223 [V248,T32] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
+; V247 tmp222 [V247,T28] ( 3, 96 ) byref -> [fp-0xE8] spill-single-def ptr "field V144._reference (fldOffset=0x0)" P-INDEP +; V248 tmp223 [V248,T33] ( 3, 96 ) int -> [fp-0xD0] spill-single-def ptr "field V144._length (fldOffset=0x8)" P-INDEP
;* V249 tmp224 [V249 ] ( 0, 0 ) byref -> zero-ref ptr "field V145._reference (fldOffset=0x0)" P-INDEP ;* V250 tmp225 [V250 ] ( 0, 0 ) int -> zero-ref ptr "field V145._length (fldOffset=0x8)" P-INDEP ;* V251 tmp226 [V251 ] ( 0, 0 ) byref -> zero-ref "field V154._reference (fldOffset=0x0)" P-INDEP @@ -271,14 +271,15 @@ ;* V260 tmp235 [V260 ] ( 0, 0 ) int -> zero-ref "field V171._length (fldOffset=0x8)" P-INDEP ;* V261 tmp236 [V261 ] ( 0, 0 ) byref -> zero-ref "field V172._reference (fldOffset=0x0)" P-INDEP ;* V262 tmp237 [V262 ] ( 0, 0 ) int -> zero-ref "field V172._length (fldOffset=0x8)" P-INDEP
-; V263 tmp238 [V263,T35] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
+; V263 tmp238 [V263,T36] ( 5, 74 ) byref -> x21 single-def "V00.[000..008)"
; V264 tmp239 [V264,T17] ( 11, 227.50) int -> x22 "V00.[008..012)" ; V265 tmp240 [V265,T11] ( 4, 259.50) byref -> x23 single-def "V01.[000..008)" ; V266 tmp241 [V266,T05] ( 9, 552.50) int -> x24 "V01.[008..012)" ;* V267 tmp242 [V267 ] ( 0, 0 ) long -> zero-ref ptr "Cast away GC" ; V268 GsCookie [V268 ] ( 1, 1 ) long -> [fp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V269 cse0 [V269,T58] ( 3, 6 ) int -> x6 "CSE - moderate" -; V270 rat0 [V270,T33] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V269 cse0 [V269,T26] ( 5, 97 ) int -> registers multi-def "CSE - moderate" +; V270 cse1 [V270,T59] ( 3, 6 ) int -> x6 "CSE - moderate" +; V271 rat0 [V271,T34] ( 3, 96 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 160 @@ -355,8 +356,8 @@ G_M9731_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ldr x1, [x1] blr x1 ; gcr arg pop 0
- tst w19, #255 - bne G_M9731_IG06
+ uxtb w27, w19 + cbnz w27, G_M9731_IG06
mov w2, #63 mov w1, #42 mov x0, x25 @@ -414,9 +415,9 @@ G_M9731_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2800000 {x23 ;; size=60 bbWeight=0.50 PerfScore 5.75 G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ; byrRegs +[x21 x23]
- mov w25, wzr - mov w26, #1
mov w27, wzr
+ mov w25, #1 + mov w26, wzr
ldr wzr, [sp], #-0x40 mov x28, sp mov w2, #16 @@ -430,20 +431,20 @@ G_M9731_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x ;; size=52 bbWeight=0.50 PerfScore 5.50 G_M9731_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz ; byrRegs +[x3 x28]
- cmp w25, w24
+ cmp w27, w24
bge G_M9731_IG11 ;; size=8 bbWeight=4 PerfScore 6.00 G_M9731_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=10A00008 {x3 x21 x23 x28}, byref, isz
- add w1, w25, #1 - sxtw w27, w1 - cmp w25, w24
+ add w1, w27, #1 + sxtw w26, w1 + cmp w27, w24
bhs G_M9731_IG73
- ldrh w1, [x23, w25, UXTW #2] - sxtw w25, w1
...

-8 (-0.15%) : 821.dasm - System.Number:NumberToStringFormatushort (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T02] ( 79,268.50) byref -> x19 single-def ; V01 arg1 [V01,T60] ( 17, 21.50) byref -> x21 single-def
-; V02 arg2 [V02,T81] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T82] ( 6, 12 ) struct (16) [fp+0xE8] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[ushort]>
; V03 arg3 [V03,T42] ( 15, 25 ) ref -> x20 class-hnd single-def <System.Globalization.NumberFormatInfo> ; V04 loc0 [V04,T08] ( 15, 96 ) int -> x27 ; V05 loc1 [V05,T16] ( 18, 56 ) int -> x28 @@ -24,55 +24,55 @@ ; V13 loc9 [V13,T19] ( 8, 48 ) int -> x8 ; V14 loc10 [V14,T26] ( 11, 42 ) int -> [fp+0xD0] ptr ; V15 loc11 [V15,T64] ( 6, 18.50) int -> x26
-; V16 loc12 [V16,T00] ( 57,909.50) int -> [fp+0xCC] ptr
+; V16 loc12 [V16,T00] ( 55,905.50) int -> [fp+0xCC] ptr
; V17 loc13 [V17,T67] ( 6, 17 ) long -> x25 ; V18 loc14 [V18,T05] ( 36,238 ) ushort -> [fp+0xC8] ptr ;* V19 loc15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ; V20 loc16 [V20,T10] ( 16, 71 ) int -> [fp+0xC4] ptr
-; V21 loc17 [V21,T147] ( 3, 5 ) ubyte -> [fp+0xC0]
+; V21 loc17 [V21,T148] ( 3, 5 ) ubyte -> [fp+0xC0]
; V22 loc18 [V22,T07] ( 8,184 ) long -> x9 ; V23 loc19 [V23 ] ( 2, 16 ) byref -> [fp+0xB8] must-init pinned ptr ;* V24 loc20 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 loc21 [V25 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
-; V26 loc22 [V26,T146] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> -; V27 loc23 [V27,T82] ( 6, 12.50) int -> [fp+0xB4] ptr
+; V26 loc22 [V26,T147] ( 5, 5.50) ref -> [fp+0x60] class-hnd spill-single-def ptr <int[]> +; V27 loc23 [V27,T83] ( 6, 12.50) int -> [fp+0xB4] ptr
; V28 loc24 [V28,T66] ( 7, 17.50) int -> [fp+0xB0] ptr
-; V29 loc25 [V29,T148] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr -; V30 loc26 [V30,T87] ( 5, 11 ) int -> [fp+0xA8] ptr -; V31 loc27 [V31,T194] ( 3, 1.50) int -> x1 -; V32 loc28 [V32,T149] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr -; V33 loc29 [V33,T88] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
+; V29 loc25 [V29,T149] ( 3, 5 ) int -> [fp+0xAC] spill-single-def ptr +; V30 loc26 [V30,T88] ( 5, 11 ) int -> [fp+0xA8] ptr +; V31 loc27 [V31,T195] ( 3, 1.50) int -> x1 +; V32 loc28 [V32,T150] ( 3, 5 ) int -> [fp+0xA4] spill-single-def ptr +; V33 loc29 [V33,T89] ( 5, 10 ) ref -> [fp+0x58] class-hnd exact spill-single-def ptr <int[]>
; V34 loc30 [V34,T11] ( 11, 65 ) long -> x22 ; V35 loc31 [V35 ] ( 2, 2 ) byref -> [fp+0x98] must-init pinned ptr ; V36 loc32 [V36,T33] ( 8, 33 ) long -> [fp+0x90] ptr
-; V37 loc33 [V37,T121] ( 3, 6 ) ubyte -> x14
+; V37 loc33 [V37,T122] ( 3, 6 ) ubyte -> x14
; V38 loc34 [V38,T46] ( 6, 24 ) int -> x12 ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp2 [V42 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> ;* V43 tmp3 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
-; V44 tmp4 [V44,T182] ( 3, 2 ) int -> x2 -; V45 tmp5 [V45,T187] ( 2, 2 ) int -> x3 -; V46 tmp6 [V46,T188] ( 2, 2 ) int -> x4 -; V47 tmp7 [V47,T206] ( 2, 1 ) int -> x3
+; V44 tmp4 [V44,T183] ( 3, 2 ) int -> x2 +; V45 tmp5 [V45,T188] ( 2, 2 ) int -> x3 +; V46 tmp6 [V46,T189] ( 2, 2 ) int -> x4 +; V47 tmp7 [V47,T207] ( 2, 1 ) int -> x3
; V48 tmp8 [V48 ] ( 1, 1 ) struct (16) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ;* V49 tmp9 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V50 tmp10 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V51 tmp11 [V51,T50] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V52 tmp12 [V52,T79] ( 2, 16 ) int -> x1 "dup spill" -; V53 tmp13 [V53,T106] ( 2, 8 ) int -> x6 "impSpillLclRefs" -; V54 tmp14 [V54,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs"
+; V52 tmp12 [V52,T80] ( 2, 16 ) int -> x1 "dup spill" +; V53 tmp13 [V53,T107] ( 2, 8 ) int -> x6 "impSpillLclRefs" +; V54 tmp14 [V54,T108] ( 2, 8 ) int -> x6 "impSpillLclRefs"
; V55 tmp15 [V55,T35] ( 2, 32 ) int -> x6 "impSpillLclRefs" ; V56 tmp16 [V56,T13] ( 2, 64 ) int -> x6 "dup spill"
-; V57 tmp17 [V57,T122] ( 3, 6 ) int -> x5
+; V57 tmp17 [V57,T123] ( 3, 6 ) int -> x5
;* V58 tmp18 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp19 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V60 tmp20 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V61 tmp21 [V61,T83] ( 3, 12 ) long -> x1 "impSpillLclRefs" -; V62 tmp22 [V62,T99] ( 4, 8 ) int -> x1
+; V61 tmp21 [V61,T84] ( 3, 12 ) long -> x1 "impSpillLclRefs" +; V62 tmp22 [V62,T100] ( 4, 8 ) int -> x1
;* V63 tmp23 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp24 [V64,T123] ( 3, 6 ) int -> x13
+; V64 tmp24 [V64,T124] ( 3, 6 ) int -> x13
; V65 tmp25 [V65,T36] ( 2, 32 ) int -> x6 "impSpillLclRefs" ;* V66 tmp26 [V66 ] ( 0, 0 ) byref -> zero-ref ptr ; V67 tmp27 [V67,T37] ( 2, 32 ) long -> x0 "impSpillLclRefs" @@ -82,11 +82,11 @@ ;* V71 tmp31 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp32 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp33 [V73 ] ( 0, 0 ) int -> zero-ref ptr
-; V74 tmp34 [V74,T207] ( 2, 1 ) int -> x1 -; V75 tmp35 [V75,T208] ( 2, 1 ) int -> xip0
+; V74 tmp34 [V74,T208] ( 2, 1 ) int -> x1 +; V75 tmp35 [V75,T209] ( 2, 1 ) int -> xip0
;* V76 tmp36 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ; V77 tmp37 [V77,T47] ( 3, 24 ) byref -> x0 "dup spill"
-; V78 tmp38 [V78,T101] ( 3, 8 ) int -> x1
+; V78 tmp38 [V78,T102] ( 3, 8 ) int -> x1
; V79 tmp39 [V79,T09] ( 3, 96 ) int -> x0 "impSpillLclRefs" ; V80 tmp40 [V80,T14] ( 2, 64 ) int -> x11 "dup spill" ; V81 tmp41 [V81,T03] ( 2,256 ) int -> x10 "dup spill" @@ -97,28 +97,28 @@ ;* V86 tmp46 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V87 tmp47 [V87 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V88 tmp48 [V88 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg"
-; V89 tmp49 [V89,T108] ( 2, 8 ) long -> x2 "Inlining Arg"
+; V89 tmp49 [V89,T109] ( 2, 8 ) long -> x2 "Inlining Arg"
;* V90 tmp50 [V90 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V91 tmp51 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V92 tmp52 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V93 tmp53 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp54 [V94 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V95 tmp55 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V96 tmp56 [V96,T150] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V96 tmp56 [V96,T151] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp57 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp58 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp59 [V99,T189] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" -; V100 tmp60 [V100,T183] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
+; V99 tmp59 [V99,T190] ( 2, 2 ) int -> [fp+0x8C] spill-single-def ptr "Inlining Arg" +; V100 tmp60 [V100,T184] ( 2, 2 ) byref -> [fp+0x50] spill-single-def ptr "Inlining Arg"
;* V101 tmp61 [V101 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V102 tmp62 [V102 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V103 tmp63 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V104 tmp64 [V104 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V105 tmp65 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V106 tmp66 [V106,T195] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
+; V106 tmp66 [V106,T196] ( 3, 1.50) int -> [fp+0x88] spill-single-def ptr "Inline stloc first use temp"
;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp69 [V109 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V110 tmp70 [V110,T180] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
+; V110 tmp70 [V110,T181] ( 4, 2 ) int -> x3 "Inline stloc first use temp"
;* V111 tmp71 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V112 tmp72 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -153,7 +153,7 @@ ; V142 tmp102 [V142,T29] ( 5, 40 ) int -> x15 "Inline stloc first use temp" ;* V143 tmp103 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V144 tmp104 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp105 [V145,T89] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
+; V145 tmp105 [V145,T90] ( 5, 10 ) int -> x1 "Inline stloc first use temp"
;* V146 tmp106 [V146 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V147 tmp107 [V147 ] ( 0, 0 ) ushort -> zero-ref ptr "Inlining Arg" ;* V148 tmp108 [V148 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -162,11 +162,11 @@ ;* V151 tmp111 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp112 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp113 [V153 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V154 tmp114 [V154,T69] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V154 tmp114 [V154,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V155 tmp115 [V155 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V156 tmp116 [V156 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V157 tmp117 [V157,T109] ( 2, 8 ) int -> x14 "Inlining Arg" -; V158 tmp118 [V158,T102] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V157 tmp117 [V157,T110] ( 2, 8 ) int -> x14 "Inlining Arg" +; V158 tmp118 [V158,T103] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V159 tmp119 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp120 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -174,13 +174,13 @@ ;* V163 tmp123 [V163 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V164 tmp124 [V164 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V165 tmp125 [V165 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V166 tmp126 [V166,T124] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
+; V166 tmp126 [V166,T125] ( 3, 6 ) int -> [fp+0x80] spill-single-def ptr "Inline stloc first use temp"
;* V167 tmp127 [V167 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V168 tmp128 [V168 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V169 tmp129 [V169 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V170 tmp130 [V170 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V171 tmp131 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V172 tmp132 [V172,T90] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V172 tmp132 [V172,T91] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V173 tmp133 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V174 tmp134 [V174 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V175 tmp135 [V175 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -189,11 +189,11 @@ ;* V178 tmp138 [V178 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V179 tmp139 [V179 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V180 tmp140 [V180 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V181 tmp141 [V181,T70] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V181 tmp141 [V181,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V182 tmp142 [V182 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V183 tmp143 [V183 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V184 tmp144 [V184,T110] ( 2, 8 ) int -> x13 "Inlining Arg" -; V185 tmp145 [V185,T103] ( 2, 8 ) byref -> x11 "Inlining Arg"
+; V184 tmp144 [V184,T111] ( 2, 8 ) int -> x13 "Inlining Arg" +; V185 tmp145 [V185,T104] ( 2, 8 ) byref -> x11 "Inlining Arg"
;* V186 tmp146 [V186 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V187 tmp147 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V188 tmp148 [V188 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -201,13 +201,13 @@ ;* V190 tmp150 [V190 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp151 [V191 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V192 tmp152 [V192 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V193 tmp153 [V193,T125] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
+; V193 tmp153 [V193,T126] ( 3, 6 ) int -> [fp+0x7C] spill-single-def ptr "Inline stloc first use temp"
;* V194 tmp154 [V194 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V195 tmp155 [V195 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V196 tmp156 [V196 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V197 tmp157 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V198 tmp158 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V199 tmp159 [V199,T91] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
+; V199 tmp159 [V199,T92] ( 5, 10 ) int -> x14 "Inline stloc first use temp"
;* V200 tmp160 [V200 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V201 tmp161 [V201 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V202 tmp162 [V202 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -216,11 +216,11 @@ ;* V205 tmp165 [V205 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V206 tmp166 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp167 [V207 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V208 tmp168 [V208,T71] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V208 tmp168 [V208,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V209 tmp169 [V209 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V210 tmp170 [V210 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V211 tmp171 [V211,T111] ( 2, 8 ) int -> x14 "Inlining Arg" -; V212 tmp172 [V212,T104] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V211 tmp171 [V211,T112] ( 2, 8 ) int -> x14 "Inlining Arg" +; V212 tmp172 [V212,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
;* V213 tmp173 [V213 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V214 tmp174 [V214 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V215 tmp175 [V215 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" @@ -228,13 +228,13 @@ ;* V217 tmp177 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp178 [V218 ] ( 0, 0 ) int -> zero-ref ptr "Inline stloc first use temp" ;* V219 tmp179 [V219 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V220 tmp180 [V220,T126] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
+; V220 tmp180 [V220,T127] ( 3, 6 ) int -> [fp+0x78] spill-single-def ptr "Inline stloc first use temp"
;* V221 tmp181 [V221 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V222 tmp182 [V222 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V223 tmp183 [V223 ] ( 0, 0 ) byref -> zero-ref ptr "Inlining Arg" ;* V224 tmp184 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp185 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V226 tmp186 [V226,T92] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
+; V226 tmp186 [V226,T93] ( 5, 10 ) int -> x12 "Inline stloc first use temp"
;* V227 tmp187 [V227 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V228 tmp188 [V228 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V229 tmp189 [V229 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -243,11 +243,11 @@ ;* V232 tmp192 [V232 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V233 tmp193 [V233 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V234 tmp194 [V234 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V235 tmp195 [V235,T72] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V235 tmp195 [V235,T73] ( 4, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
;* V236 tmp196 [V236 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V237 tmp197 [V237 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V238 tmp198 [V238,T112] ( 2, 8 ) int -> x14 "Inlining Arg" -; V239 tmp199 [V239,T105] ( 2, 8 ) byref -> x13 "Inlining Arg"
+; V238 tmp198 [V238,T113] ( 2, 8 ) int -> x14 "Inlining Arg" +; V239 tmp199 [V239,T106] ( 2, 8 ) byref -> x13 "Inlining Arg"
...

smoke_tests.nativeaot.windows.arm64.checked.mch

-24 (-6.45%) : 2589.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,23 +78,23 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V72 cse1 [V72,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse2 [V73,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40]
mov fp, sp
- str xzr, [fp, #0x28] // [V02 loc0]
+ str xzr, [fp, #0x20] // [V02 loc0]
mov x19, x0 mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #24 // [V37 tmp30]
+ add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -103,9 +103,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -115,9 +115,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x28] // [V38 tmp31]
+ ldr x0, [fp, #0x20] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x30] // [V39 tmp32]
+ ldr w1, [fp, #0x28] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -140,15 +140,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 bl <unknown method> ; byrRegs -[x0-x1 x3] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=24 bbWeight=4 PerfScore 20.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -174,13 +174,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #40 // [V02 loc0]
+ add x0, fp, #32 // [V02 loc0]
bl <unknown method> ; gcrRegs +[x0] ; gcr arg pop 0 @@ -193,9 +189,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=44 bbWeight=8 PerfScore 136.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -208,9 +204,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -218,26 +214,24 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #24 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x0] ldr x1, [x1, #0x18] blr x1 @@ -245,17 +239,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG14]
+ adr x0, [G_M19804_IG13]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19804_IG18: ; bbWeight=0, funclet epilog, nogc, extend - ldr x23, [sp, #0x38]
...

-24 (-6.12%) : 8338.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -8,10 +8,10 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> x19 single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> x20 single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> x20
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> x19 single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> x20 single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [fp+0x20] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> x20
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -19,14 +19,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> x4 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> x3 "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> x4 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> x3 "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> x0 "Inline return value spill temp" @@ -40,30 +40,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> x15 "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> x14 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> x15 "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> x19 single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> x2 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> x22 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> x21 "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> x0 "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> x1 "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> x19 single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> x21 "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> x3 "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> x4 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> x3 "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> x4 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -79,24 +79,24 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> x2 "arr expr"
-; V71 tmp64 [V71,T28] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> x23 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> x12 "CSE - moderate"
+; V71 tmp64 [V71,T29] ( 3, 0 ) ref -> x0 single-def "argument with side effect" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> x12 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x38] - stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40]
mov fp, sp
- str xzr, [fp, #0x28] // [V02 loc0]
+ str xzr, [fp, #0x20] // [V02 loc0]
mov x19, x0 mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #24 // [V37 tmp30]
+ add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50 @@ -105,9 +105,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; byrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x28] // [V02 loc0], [V02 loc0+0x08]
+ stp x0, x1, [fp, #0x20] // [V02 loc0], [V02 loc0+0x08]
ldrb w2, [x20, #0x08]
- cbz w2, G_M19804_IG11
+ cbz w2, G_M19804_IG10
ldr x19, [x20] ; gcrRegs +[x19] ldr w21, [x19, #0x14] @@ -117,9 +117,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19804_IG04: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] ; byrRegs -[x0]
- ldr x0, [fp, #0x28] // [V38 tmp31]
+ ldr x0, [fp, #0x20] // [V38 tmp31]
; byrRegs +[x0]
- ldr w1, [fp, #0x30] // [V39 tmp32]
+ ldr w1, [fp, #0x28] // [V39 tmp32]
cbnz x2, G_M19804_IG05 mov x3, xzr ; byrRegs +[x3] @@ -142,15 +142,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0009 {x0 x3 bl <unknown method> ; byrRegs -[x0-x1 x3] ; gcr arg pop 0
- cbnz w0, G_M19804_IG14
+ cbnz w0, G_M19804_IG13
;; size=24 bbWeight=4 PerfScore 20.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x14] - cmp w21, w23 - bne G_M19804_IG10
+ ldr w2, [x19, #0x14] + cmp w21, w2 + bne G_M19804_IG09
ldr w2, [x19, #0x10] cmp w22, w2
- bhs G_M19804_IG11
+ bhs G_M19804_IG10
ldr x2, [x19, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] @@ -176,13 +176,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w21, w23 - bne G_M19804_IG09 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [x20] ; gcrRegs +[x19]
- add x0, fp, #40 // [V02 loc0]
+ add x0, fp, #32 // [V02 loc0]
bl <unknown method> ; gcrRegs +[x0] ; gcr arg pop 0 @@ -195,9 +191,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M19804_IG13
+ bls G_M19804_IG12
;; size=44 bbWeight=8 PerfScore 136.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add w12, w15, #1 str w12, [x19, #0x10] @@ -210,9 +206,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15 x19] ; byrRegs -[x14]
- b G_M19804_IG14
+ b G_M19804_IG13
;; size=28 bbWeight=1 PerfScore 5.50
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x19] mov x0, x19 ; gcrRegs +[x0] @@ -220,26 +216,24 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0-x1 x19] ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #24 // [V37 tmp30]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #16 // [V37 tmp30]
bl CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M19804_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x15, [x0] ldr x15, [x15, #0x18] adrp x9, [HIGH RELOC #0xD1FFAB1E] // function address @@ -252,17 +246,16 @@ G_M19804_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- adr x0, [G_M19804_IG14]
+ adr x0, [G_M19804_IG13]
;; size=40 bbWeight=0 PerfScore 0.00 ...

-24 (-3.95%) : 24178.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)

@@ -7,72 +7,73 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> x19 single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [fp+0x20] class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [fp+0x24] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [fp+0x2C] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> x22 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> x22 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> x20 single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> x22 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> x1 "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> x24 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> x23 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> x19 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> x21 "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T23] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> x20 "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T25] ( 3, 3 ) ref -> x22 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T27] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T25] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T24] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T29] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T27] ( 2, 2 ) int -> x23 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T26] ( 3, 3 ) ref -> x19 single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T28] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T26] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T22] ( 2, 4 ) int -> x2 "argument with side effect"
+;* V41 tmp32 [V41,T30] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T28] ( 2, 2 ) int -> x20 "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T24] ( 2, 4 ) int -> x2 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> x1 "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> x0 "arr expr"
-; V46 cse0 [V46,T09] ( 3, 24 ) int -> x25 "CSE - aggressive" -; V47 cse1 [V47,T10] ( 2, 16 ) int -> x0 "CSE - aggressive" -; V48 rat0 [V48,T21] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable"
+; V46 cse0 [V46,T13] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V47 cse1 [V47,T09] ( 2, 16 ) int -> x1 "CSE - aggressive" +; V48 cse2 [V48,T14] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V49 cse3 [V49,T10] ( 2, 16 ) int -> x0 "CSE - aggressive" +; V50 rat0 [V50,T23] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- str x0, [fp, #0x18] // [V00 arg0]
+ str x0, [fp, #0x20] // [V00 arg0]
; GC ptr vars +{V00} mov w19, w1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.50 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 6.50 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] cbnz x0, G_M12834_IG03 adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -87,7 +88,7 @@ G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=100 ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 4.00 G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V00 arg0]
+ ldr x0, [fp, #0x20] // [V00 arg0]
; gcrRegs +[x0] ldr w1, [x0, #0x10] cmp w1, #0 @@ -104,7 +105,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 9.50 G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- str wzr, [fp, #0x24] // [V03 loc0]
+ str wzr, [fp, #0x2C] // [V03 loc0]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Threading.Tasks.Task+SetOnCountdownMres add x0, x0, [LOW RELOC #0xD1FFAB1E] bl CORINFO_HELP_NEWSFAST @@ -112,12 +113,12 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- ldr x0, [fp, #0x18] // [V00 arg0]
+ ldr x0, [fp, #0x20] // [V00 arg0]
ldr w22, [x0, #0x10] adrp x23, [HIGH RELOC #0xD1FFAB1E] add x23, x23, [LOW RELOC #0xD1FFAB1E] ldr x2, [x23, #-0x08]
- cbnz x2, G_M12834_IG19
+ cbnz x2, G_M12834_IG18
;; size=44 bbWeight=1 PerfScore 13.50 G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -142,11 +143,11 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ;; size=44 bbWeight=1 PerfScore 9.50 G_M12834_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref str w22, [x21, #0x1C]
- str x21, [fp, #0x10] // [V04 loc1]
+ str x21, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG07: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref - ldr x0, [fp, #0x18] // [V00 arg0]
+G_M12834_IG07: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ldr x0, [fp, #0x20] // [V00 arg0]
; gcrRegs +[x0] mov x22, x0 ; gcrRegs +[x22] @@ -193,12 +194,12 @@ G_M12834_IG09: ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcr arg pop 0 ;; size=28 bbWeight=4 PerfScore 28.00 G_M12834_IG10: ; bbWeight=8, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x22, #0x14] - cmp w23, w25 - bne G_M12834_IG13
+ ldr w1, [x22, #0x14] + cmp w23, w1 + bne G_M12834_IG12
ldr w1, [x22, #0x10] cmp w24, w1
- bhs G_M12834_IG14
+ bhs G_M12834_IG13
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w2, [x1, #0x08] @@ -224,12 +225,8 @@ G_M12834_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG13: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
- cmp w23, w25 - bne G_M12834_IG12 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M12834_IG14: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x21 ; gcrRegs +[x0] mov w1, w19 @@ -238,29 +235,28 @@ G_M12834_IG14: ; bbWeight=8, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { bl <unknown method> ; gcrRegs -[x0 x2 x20] ; gcr arg pop 0
- str w0, [fp, #0x24] // [V03 loc0]
+ str w0, [fp, #0x2C] // [V03 loc0]
;; size=20 bbWeight=8 PerfScore 28.00
-G_M12834_IG15: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M12834_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
mov x0, sp
- bl G_M12834_IG20
+ bl G_M12834_IG19
;; size=8 bbWeight=1 PerfScore 1.50
-G_M12834_IG16: ; bbWeight=1, nogc, extend
+G_M12834_IG15: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M12834_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x21] ; GC ptr vars -{V00 V04}
- ldr w0, [fp, #0x24] // [V03 loc0]
+ ldr w0, [fp, #0x2C] // [V03 loc0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12834_IG18: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12834_IG19: ; bbWeight=0, gcVars=0000000000020000 {V00}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M12834_IG18: ; bbWeight=0, gcVars=0000000000040000 {V00}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20-x21] ; GC ptr vars +{V00} bl CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE @@ -268,28 +264,27 @@ G_M12834_IG19: ; bbWeight=0, gcVars=0000000000020000 {V00}, gcrefRegs=300 ; gcr arg pop 0 b G_M12834_IG05 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M12834_IG20: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M12834_IG19: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[x20-x21] ; byrRegs -[x0] ; GC ptr vars +{V04}
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48] - ;; size=20 bbWeight=1 PerfScore 5.00 -G_M12834_IG21: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldr w0, [fp, #0x24] // [V03 loc0] - cbnz w0, G_M12834_IG26 - ldr x0, [fp, #0x18] // [V00 arg0]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30] + ;; size=16 bbWeight=1 PerfScore 4.00 +G_M12834_IG20: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...

+0 (0.00%) : 9766.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo):System.Reflection.MemberInfo:this (FullOpts)

No diffs found?

+0 (0.00%) : 9752.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Create(System.Reflection.Runtime.BindingFlagSupport.MemberPolicies1[System.Canon],System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.String,ubyte):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon] (FullOpts)

No diffs found?

+0 (0.00%) : 12928.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)

@@ -7,71 +7,71 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 4, 68 ) ref -> x21 class-hnd exact single-def <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> -; V01 arg1 [V01,T19] ( 4, 68 ) ref -> x22 class-hnd exact single-def <Internal.NativeFormat.NativeReader>
+; V00 arg0 [V00,T19] ( 4, 68 ) ref -> x21 class-hnd exact single-def <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> +; V01 arg1 [V01,T20] ( 4, 68 ) ref -> x22 class-hnd exact single-def <Internal.NativeFormat.NativeReader>
; V02 arg2 [V02,T00] ( 26,515 ) byref -> x19 single-def
-; V03 arg3 [V03,T30] ( 4, 20 ) byref -> x24 single-def -; V04 arg4 [V04,T43] ( 5, 4.50) ref -> x26 class-hnd exact single-def <Internal.TypeSystem.InstantiatedMethod>
+; V03 arg3 [V03,T31] ( 4, 20 ) byref -> x24 single-def +; V04 arg4 [V04,T44] ( 5, 4.50) ref -> x26 class-hnd exact single-def <Internal.TypeSystem.InstantiatedMethod>
; V05 arg5 [V05,T15] ( 7, 99 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
-; V06 arg6 [V06,T20] ( 3, 66 ) ubyte -> x23 single-def -; V07 arg7 [V07,T32] ( 3, 18 ) ubyte -> x25 single-def -; V08 loc0 [V08,T47] ( 3, 6 ) int -> x27 single-def -; V09 loc1 [V09,T22] ( 4, 66 ) ref -> x28 class-hnd exact single-def <<unknown class>> -; V10 loc2 [V10,T13] ( 4,129 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> -; V11 loc3 [V11,T39] ( 4, 13 ) int -> [fp+0xCC] -; V12 loc4 [V12,T38] ( 6, 14 ) int -> [fp+0xC8] spill-single-def -; V13 loc5 [V13,T42] ( 4, 7 ) ref -> [fp+0x28] class-hnd exact <Internal.Runtime.CompilerServices.MethodNameAndSignature>
+; V06 arg6 [V06,T21] ( 3, 66 ) ubyte -> x23 single-def +; V07 arg7 [V07,T33] ( 3, 18 ) ubyte -> x25 single-def +; V08 loc0 [V08,T48] ( 3, 6 ) int -> x27 single-def +; V09 loc1 [V09,T23] ( 4, 66 ) ref -> x28 class-hnd exact single-def <<unknown class>> +; V10 loc2 [V10,T16] ( 4, 97 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> +; V11 loc3 [V11,T40] ( 4, 13 ) int -> [fp+0xCC] +; V12 loc4 [V12,T39] ( 6, 14 ) int -> [fp+0xC8] spill-single-def +; V13 loc5 [V13,T43] ( 4, 7 ) ref -> [fp+0x28] class-hnd exact <Internal.Runtime.CompilerServices.MethodNameAndSignature>
;* V14 loc6 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
-; V15 loc7 [V15,T33] ( 3, 20 ) ubyte -> [fp+0xC4] -; V16 loc8 [V16,T29] ( 3, 24 ) int -> [fp+0xC0] spill-single-def -; V17 loc9 [V17,T25] ( 4, 52 ) int -> [fp+0xBC]
+; V15 loc7 [V15,T34] ( 3, 20 ) ubyte -> [fp+0xC4] +; V16 loc8 [V16,T30] ( 3, 24 ) int -> [fp+0xC0] spill-single-def +; V17 loc9 [V17,T26] ( 4, 52 ) int -> [fp+0xBC]
;* V18 loc10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
-; V19 loc11 [V19,T12] ( 5,160 ) int -> [fp+0xB8] spill-single-def
+; V19 loc11 [V19,T11] ( 5,160 ) int -> [fp+0xB8] spill-single-def
;* V20 loc12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle> ; V21 loc13 [V21,T08] ( 4,200 ) int -> [fp+0xB4] ; V22 loc14 [V22,T09] ( 4,200 ) int -> [fp+0xB0] ; V23 loc15 [V23 ] ( 3,192 ) struct (16) [fp+0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Internal.NativeFormat.NativeParser> ; V24 loc16 [V24,T04] ( 5,320 ) ref -> [fp+0x20] class-hnd exact spill-single-def <Internal.Runtime.TypeLoader.NativeLayoutInfoLoadContext>
-; V25 loc17 [V25,T11] ( 11,179 ) ref -> [fp+0x18] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> -; V26 loc18 [V26,T35] ( 7, 18.50) ref -> x22 class-hnd <Internal.TypeSystem.DefType> -; V27 loc19 [V27,T49] ( 3, 5 ) ref -> x20 class-hnd <Internal.TypeSystem.DefType[]> -; V28 loc20 [V28,T36] ( 5, 16.50) int -> x24 -; V29 loc21 [V29,T28] ( 6, 24 ) ref -> x27 class-hnd <Internal.TypeSystem.DefType> -; V30 loc22 [V30,T31] ( 3, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.DefType[]> -; V31 loc23 [V31,T21] ( 5, 66 ) int -> [fp+0x9C]
+; V25 loc17 [V25,T12] ( 11,147 ) ref -> [fp+0x18] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc> +; V26 loc18 [V26,T36] ( 7, 18.50) ref -> x22 class-hnd <Internal.TypeSystem.DefType> +; V27 loc19 [V27,T50] ( 3, 5 ) ref -> x20 class-hnd <Internal.TypeSystem.DefType[]> +; V28 loc20 [V28,T37] ( 5, 16.50) int -> x24 +; V29 loc21 [V29,T29] ( 6, 24 ) ref -> x27 class-hnd <Internal.TypeSystem.DefType> +; V30 loc22 [V30,T32] ( 3, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.DefType[]> +; V31 loc23 [V31,T22] ( 5, 66 ) int -> [fp+0x9C]
;* V32 loc24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.DefType> ;# V33 OutArgs [V33 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V34 tmp1 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Internal.Runtime.TypeLoader.NativeLayoutInfoLoadContext> ; V35 tmp2 [V35,T06] ( 2,256 ) ref -> x0 class-hnd exact "impAppendStmt" <Internal.Runtime.TypeLoader.ModuleList> ;* V36 tmp3 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.Runtime.TypeManagerHandle>
-; V37 tmp4 [V37,T55] ( 3, 2.25) ref -> x1 "CASTCLASS eval op1" -; V38 tmp5 [V38,T63] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V39 tmp6 [V39,T52] ( 5, 3.75) ref -> x22 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V37 tmp4 [V37,T56] ( 3, 2.25) ref -> x1 "CASTCLASS eval op1" +; V38 tmp5 [V38,T64] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" +; V39 tmp6 [V39,T53] ( 5, 3.75) ref -> x22 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
;* V40 tmp7 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.TypeSystem.Instantiation>
-; V41 tmp8 [V41,T56] ( 3, 2 ) ref -> x1 "CASTCLASS eval op1" -; V42 tmp9 [V42,T64] ( 3, 1 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V43 tmp10 [V43,T53] ( 4, 3.50) ref -> x0 class-hnd exact "spilling QMark2" <Internal.TypeSystem.InstantiatedMethod> -; V44 tmp11 [V44,T54] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" -; V45 tmp12 [V45,T57] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType> -; V46 tmp13 [V46,T67] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V47 tmp14 [V47,T68] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V41 tmp8 [V41,T57] ( 3, 2 ) ref -> x1 "CASTCLASS eval op1" +; V42 tmp9 [V42,T65] ( 3, 1 ) long -> x3 "fgMakeTemp is creating a new local variable" +; V43 tmp10 [V43,T54] ( 4, 3.50) ref -> x0 class-hnd exact "spilling QMark2" <Internal.TypeSystem.InstantiatedMethod> +; V44 tmp11 [V44,T55] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable" +; V45 tmp12 [V45,T58] ( 3, 2 ) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType> +; V46 tmp13 [V46,T68] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V47 tmp14 [V47,T69] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V48 tmp15 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.Runtime.TypeManagerHandle> ; V49 tmp16 [V49 ] ( 2, 2 ) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V50 tmp17 [V50,T59] ( 4, 1.50) ref -> registers "guarded devirt return temp" -; V51 tmp18 [V51,T48] ( 6, 5.66) ref -> x0 single-def "guarded devirt arg temp"
+; V50 tmp17 [V50,T60] ( 4, 1.50) ref -> registers "guarded devirt return temp" +; V51 tmp18 [V51,T49] ( 6, 5.66) ref -> x0 single-def "guarded devirt arg temp"
;* V52 tmp19 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.NoMetadata.RuntimeMethodDesc> ;* V53 tmp20 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedMethod> ;* V54 tmp21 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType> ; V55 tmp22 [V55 ] ( 3, 12 ) int -> [fp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V56 tmp23 [V56 ] ( 3, 6 ) int -> [fp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V57 tmp24 [V57,T41] ( 2, 8 ) int -> x1 "Inlining Arg"
+; V57 tmp24 [V57,T42] ( 2, 8 ) int -> x1 "Inlining Arg"
;* V58 tmp25 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V59 tmp26 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ;* V60 tmp27 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V61 tmp28 [V61,T40] ( 2, 8 ) byref -> x0 "Inlining Arg"
+; V61 tmp28 [V61,T41] ( 2, 8 ) byref -> x0 "Inlining Arg"
; V62 tmp29 [V62 ] ( 3, 12 ) int -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V63 tmp30 [V63 ] ( 3, 48 ) int -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V64 tmp31 [V64,T24] ( 2, 64 ) int -> x1 "Inlining Arg"
+; V64 tmp31 [V64,T25] ( 2, 64 ) int -> x1 "Inlining Arg"
;* V65 tmp32 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V66 tmp33 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V67 tmp34 [V67 ] ( 3, 48 ) int -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" @@ -84,52 +84,53 @@ ; V74 tmp41 [V74,T10] ( 3,192 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V75 tmp42 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V76 tmp43 [V76,T05] ( 3,256 ) ref -> x1 "CASTCLASS eval op1"
-; V77 tmp44 [V77,T23] ( 3, 64 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V77 tmp44 [V77,T24] ( 3, 64 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V78 tmp45 [V78,T01] ( 4,416 ) ref -> x15 class-hnd exact "spilling QMark2" <Internal.Runtime.TypeLoader.NativeFormatModuleInfo> ;* V79 tmp46 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V80 tmp47 [V80,T58] ( 2, 2 ) byref -> x0 "Inlining Arg"
+; V80 tmp47 [V80,T59] ( 2, 2 ) byref -> x0 "Inlining Arg"
;* V81 tmp48 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-;* V82 tmp49 [V82,T66] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V82 tmp49 [V82,T67] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V83 tmp50 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <Internal.TypeSystem.Instantiation> ;* V84 tmp51 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc> ;* V85 tmp52 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V86 tmp53 [V86,T60] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V86 tmp53 [V86,T61] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V87 tmp54 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc> ;* V88 tmp55 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V89 tmp56 [V89,T44] ( 3, 6 ) ref -> x23 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V89 tmp56 [V89,T45] ( 3, 6 ) ref -> x23 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V90 tmp57 [V90 ] ( 0, 0 ) int -> zero-ref ;* V91 tmp58 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V92 tmp59 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V93 tmp60 [V93 ] ( 0, 0 ) int -> zero-ref ;* V94 tmp61 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V95 tmp62 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V96 tmp63 [V96,T37] ( 7, 13.50) long -> [fp+0x50] "field V14._value (fldOffset=0x0)" P-INDEP
+; V96 tmp63 [V96,T38] ( 7, 13.50) long -> [fp+0x50] "field V14._value (fldOffset=0x0)" P-INDEP
;* V97 tmp64 [V97 ] ( 0, 0 ) long -> zero-ref "field V18._value (fldOffset=0x0)" P-INDEP
-; V98 tmp65 [V98,T26] ( 6, 41 ) long -> x3 "field V20._value (fldOffset=0x0)" P-INDEP
+; V98 tmp65 [V98,T27] ( 6, 41 ) long -> x3 "field V20._value (fldOffset=0x0)" P-INDEP
; V99 tmp66 [V99 ] ( 2,128 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V23._reader (fldOffset=0x0)" P-DEP ; V100 tmp67 [V100 ] ( 2,128 ) int -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V23._offset (fldOffset=0x8)" P-DEP
-; V101 tmp68 [V101,T14] ( 2,128 ) long -> x1 "field V36._handleValue (fldOffset=0x0)" P-INDEP
+; V101 tmp68 [V101,T13] ( 2,128 ) long -> x1 "field V36._handleValue (fldOffset=0x0)" P-INDEP
;* V102 tmp69 [V102 ] ( 0, 0 ) ref -> zero-ref "field V40._genericParameters (fldOffset=0x0)" P-INDEP ;* V103 tmp70 [V103 ] ( 0, 0 ) long -> zero-ref "field V48._handleValue (fldOffset=0x0)" P-INDEP
-; V104 tmp71 [V104,T51] ( 2, 4 ) long -> x5 "field V59._value (fldOffset=0x0)" P-INDEP
+; V104 tmp71 [V104,T52] ( 2, 4 ) long -> x5 "field V59._value (fldOffset=0x0)" P-INDEP
;* V105 tmp72 [V105 ] ( 0, 0 ) long -> zero-ref "field V60._value (fldOffset=0x0)" P-INDEP
-; V106 tmp73 [V106,T27] ( 2, 32 ) long -> [fp+0x48] spill-single-def "field V66._value (fldOffset=0x0)" P-INDEP
+; V106 tmp73 [V106,T28] ( 2, 32 ) long -> [fp+0x48] spill-single-def "field V66._value (fldOffset=0x0)" P-INDEP
;* V107 tmp74 [V107 ] ( 0, 0 ) long -> zero-ref "field V69._value (fldOffset=0x0)" P-INDEP ;* V108 tmp75 [V108 ] ( 0, 0 ) long -> zero-ref "field V79._value (fldOffset=0x0)" P-INDEP ;* V109 tmp76 [V109 ] ( 0, 0 ) long -> zero-ref "field V81._value (fldOffset=0x0)" P-INDEP
-; V110 tmp77 [V110,T65] ( 2, 1 ) ref -> x0 "field V83._genericParameters (fldOffset=0x0)" P-INDEP
+; V110 tmp77 [V110,T66] ( 2, 1 ) ref -> x0 "field V83._genericParameters (fldOffset=0x0)" P-INDEP
;* V111 tmp78 [V111 ] ( 0, 0 ) long -> zero-ref "field V85._value (fldOffset=0x0)" P-INDEP ;* V112 tmp79 [V112 ] ( 0, 0 ) long -> zero-ref "field V88._value (fldOffset=0x0)" P-INDEP
-; V113 tmp80 [V113,T45] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp80 [V113,T46] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V114 tmp81 [V114,T02] ( 3,384 ) ref -> [fp+0x10] spill-single-def "arr expr" ; V115 tmp82 [V115,T03] ( 3,384 ) int -> x0 "index expr"
-; V116 tmp83 [V116,T16] ( 3, 96 ) ref -> x0 "argument with side effect" -; V117 cse0 [V117,T62] ( 3, 1.50) int -> x0 "CSE - moderate" -; V118 cse1 [V118,T46] ( 3, 6 ) ref -> x23 "CSE - moderate" -; V119 cse2 [V119,T61] ( 3, 1.50) ref -> x23 "CSE - moderate" -; V120 cse3 [V120,T17] ( 3, 96 ) long -> [fp+0x40] spill-single-def "CSE - moderate" -; V121 cse4 [V121,T34] ( 3, 20 ) int -> [fp+0x3C] spill-single-def "CSE - moderate" -; V122 cse5 [V122,T50] ( 3, 5 ) int -> x25 "CSE - moderate"
+; V116 tmp83 [V116,T17] ( 3, 96 ) ref -> x0 "argument with side effect" +; V117 cse0 [V117,T63] ( 3, 1.50) int -> x0 "CSE - moderate" +; V118 cse1 [V118,T47] ( 3, 6 ) ref -> x23 "CSE - moderate" +; V119 cse2 [V119,T62] ( 3, 1.50) ref -> x23 "CSE - moderate" +; V120 cse3 [V120,T18] ( 3, 96 ) long -> [fp+0x40] spill-single-def "CSE - moderate" +; V121 cse4 [V121,T14] ( 2,128 ) int -> x0 "CSE - aggressive" +; V122 cse5 [V122,T35] ( 3, 20 ) int -> [fp+0x3C] spill-single-def "CSE - moderate" +; V123 cse6 [V123,T51] ( 3, 5 ) int -> x25 "CSE - moderate"
; ; Lcl frame size = 192 @@ -221,7 +222,7 @@ G_M18606_IG07: ; bbWeight=1, gcrefRegs=14700002 {x1 x20 x21 x22 x26 x28}, str wzr, [fp, #0xCC] // [V11 loc3] cbz w27, G_M18606_IG26 ;; size=12 bbWeight=1 PerfScore 3.00
-G_M18606_IG08: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V10}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG08: ; bbWeight=4, gcVars=00000000000000000000000000010000 {V10}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; gcrRegs -[x1] str wzr, [fp, #0x88] // [V55 tmp22] ldr x0, [x19] @@ -278,7 +279,7 @@ G_M18606_IG09: ; bbWeight=2, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, by str w4, [fp, #0xC4] // [V15 loc7] b G_M18606_IG11 ;; size=104 bbWeight=2 PerfScore 64.00
-G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000002000 {V10}, gcrefRegs=14700010 {x4 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref
+G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000010000 {V10}, gcrefRegs=14700010 {x4 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref
; gcrRegs +[x4] ; GC ptr vars -{V13} mov w0, #1 @@ -287,7 +288,7 @@ G_M18606_IG10: ; bbWeight=2, gcVars=00000000000000000000000000002000 {V10 str x4, [fp, #0x28] // [V13 loc5] ; GC ptr vars +{V13} ;; size=16 bbWeight=2 PerfScore 7.00
-G_M18606_IG11: ; bbWeight=4, gcVars=00000000000000000000040000002000 {V10 V13}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG11: ; bbWeight=4, gcVars=00000000000000000000080000010000 {V10 V13}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; gcrRegs -[x4] str wzr, [fp, #0x78] // [V62 tmp29] ldr x0, [x19] @@ -399,7 +400,7 @@ G_M18606_IG17: ; bbWeight=64, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, b ldr x0, [x0, #-0x08] cbnz x0, G_M18606_IG53 ;; size=72 bbWeight=64 PerfScore 1568.00
-G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000040000002010 {V10 V13 V24}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000080000010010 {V10 V13 V24}, gcrefRegs=14700000 {x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -429,7 +430,7 @@ G_M18606_IG18: ; bbWeight=64, gcVars=00000000000000000000040000002010 {V1 ; gcrRegs +[x15] cbz x15, G_M18606_IG20 ;; size=76 bbWeight=64 PerfScore 2272.00
-G_M18606_IG19: ; bbWeight=16, gcVars=00000000000000000000040000002010 {V10 V13 V24}, gcrefRegs=14708002 {x1 x15 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+G_M18606_IG19: ; bbWeight=16, gcVars=00000000000000000000080000010010 {V10 V13 V24}, gcrefRegs=14708002 {x1 x15 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
; byrRegs -[x14] ; GC ptr vars -{V114} ldr x14, [x15] @@ -478,11 +479,11 @@ G_M18606_IG20: ; bbWeight=64, gcrefRegs=14708000 {x15 x20 x21 x22 x26 x28 ; gcrRegs +[x2] str x2, [fp, #0x18] // [V25 loc17] ; GC ptr vars +{V25}
- tst w23, #255 - bne G_M18606_IG22 - ;; size=84 bbWeight=64 PerfScore 1344.00 -G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000040000002800 {V10 V13 V25}, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
+ uxtb w0, w23
; gcrRegs -[x0]
+ cbnz w0, G_M18606_IG22 + ;; size=84 bbWeight=64 PerfScore 1344.00 +G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000080000011000 {V10 V13 V25}, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, gcvars, byref, isz
ldr x0, [fp, #0x30] // [V10 loc2] ; gcrRegs +[x0] mov x1, x2 @@ -494,7 +495,7 @@ G_M18606_IG21: ; bbWeight=32, gcVars=00000000000000000000040000002800 {V1 cbnz w0, G_M18606_IG28 b G_M18606_IG23 ;; size=28 bbWeight=32 PerfScore 368.00
-G_M18606_IG22: ; bbWeight=64, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M18606_IG22: ; bbWeight=32, gcrefRegs=14700004 {x2 x20 x21 x22 x26 x28}, byrefRegs=1080000 {x19 x24}, byref, isz
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 17 17 0 0 -148 +0
benchmarks.run_pgo.windows.arm64.checked.mch 73 16 56 1 -296 +984
benchmarks.run_tiered.windows.arm64.checked.mch 9 9 0 0 -76 +0
coreclr_tests.run.windows.arm64.checked.mch 47 43 3 1 -748 +12
libraries.crossgen2.windows.arm64.checked.mch 26 23 2 1 -216 +20
libraries.pmi.windows.arm64.checked.mch 175 160 8 7 -2,628 +72
libraries_tests.run.windows.arm64.Release.mch 34 31 3 0 -464 +16
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 229 186 11 32 -2,616 +84
realworld.run.windows.arm64.checked.mch 36 36 0 0 -400 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 14 9 0 5 -120 +0
660 530 83 47 -7,712 +1,188

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,427 4 24,423 49 (0.20%) 49 (0.20%)
benchmarks.run_pgo.windows.arm64.checked.mch 74,716 40,165 34,551 53 (0.07%) 53 (0.07%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,580 36,755 11,825 47 (0.10%) 47 (0.10%)
coreclr_tests.run.windows.arm64.checked.mch 366,979 161,422 205,557 118 (0.03%) 118 (0.03%)
libraries.crossgen2.windows.arm64.checked.mch 274,538 15 274,523 1 (0.00%) 1 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,617 6 305,611 48 (0.02%) 50 (0.02%)
libraries_tests.run.windows.arm64.Release.mch 10,746 3,531 7,215 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 315,067 21,618 293,449 2,287 (0.72%) 2,289 (0.72%)
realworld.run.windows.arm64.checked.mch 33,281 3 33,278 13 (0.04%) 13 (0.04%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,055 8 24,047 135 (0.56%) 135 (0.56%)
1,478,006 263,527 1,214,479 2,751 (0.19%) 2,755 (0.19%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10887636 (overridden on cmd)
Total bytes of diff: 10887488 (overridden on cmd)
Total bytes of delta: -148 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 3190.dasm (-4.92 % of base)
         -12 : 12547.dasm (-0.60 % of base)
         -12 : 58.dasm (-1.06 % of base)
         -12 : 6831.dasm (-1.94 % of base)
         -12 : 7561.dasm (-0.34 % of base)
         -12 : 945.dasm (-1.44 % of base)
          -8 : 9070.dasm (-0.15 % of base)
          -8 : 5293.dasm (-0.90 % of base)
          -8 : 6573.dasm (-1.82 % of base)
          -8 : 828.dasm (-0.15 % of base)
          -8 : 5532.dasm (-0.33 % of base)
          -4 : 21110.dasm (-0.04 % of base)
          -4 : 5851.dasm (-0.39 % of base)
          -4 : 21835.dasm (-0.43 % of base)
          -4 : 5337.dasm (-0.60 % of base)
          -4 : 22084.dasm (-0.19 % of base)
          -4 : 7842.dasm (-0.29 % of base)

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

Top method improvements (bytes):
         -24 (-4.92 % of base) : 3190.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-0.34 % of base) : 7561.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
         -12 (-1.44 % of base) : 945.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 58.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.60 % of base) : 12547.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -12 (-1.94 % of base) : 6831.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-0.15 % of base) : 9070.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-1.82 % of base) : 6573.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -8 (-0.33 % of base) : 5532.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -8 (-0.15 % of base) : 828.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-0.90 % of base) : 5293.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.60 % of base) : 5337.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-0.43 % of base) : 21835.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.19 % of base) : 22084.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -4 (-0.04 % of base) : 21110.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 7842.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.39 % of base) : 5851.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 3190.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.94 % of base) : 6831.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 6573.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-1.44 % of base) : 945.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 58.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.90 % of base) : 5293.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-0.60 % of base) : 5337.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
         -12 (-0.60 % of base) : 12547.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -4 (-0.43 % of base) : 21835.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.39 % of base) : 5851.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
         -12 (-0.34 % of base) : 7561.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -8 (-0.33 % of base) : 5532.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -4 (-0.29 % of base) : 7842.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
          -4 (-0.19 % of base) : 22084.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.15 % of base) : 9070.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -8 (-0.15 % of base) : 828.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.04 % of base) : 21110.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


benchmarks.run_pgo.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36162312 (overridden on cmd)
Total bytes of diff: 36163000 (overridden on cmd)
Total bytes of delta: 688 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          64 : 74758.dasm (1.19 % of base)
          52 : 73401.dasm (1.37 % of base)
          48 : 71839.dasm (1.27 % of base)
          44 : 70462.dasm (1.16 % of base)
          44 : 72986.dasm (1.16 % of base)
          44 : 71558.dasm (1.35 % of base)
          40 : 70289.dasm (1.14 % of base)
          40 : 68975.dasm (1.17 % of base)
          40 : 68400.dasm (1.21 % of base)
          36 : 46616.dasm (1.18 % of base)
          32 : 23943.dasm (0.91 % of base)
          32 : 67034.dasm (1.04 % of base)
          28 : 15915.dasm (0.86 % of base)
          20 : 55775.dasm (1.00 % of base)
          20 : 66343.dasm (0.63 % of base)
          20 : 29359.dasm (0.59 % of base)
          16 : 66010.dasm (0.51 % of base)
          12 : 60095.dasm (0.61 % of base)
          12 : 73475.dasm (0.61 % of base)
          12 : 59940.dasm (0.61 % of base)

Top file improvements (bytes):
         -40 : 74394.dasm (-1.62 % of base)
         -40 : 54125.dasm (-2.19 % of base)
         -40 : 60588.dasm (-1.67 % of base)
         -40 : 70533.dasm (-1.62 % of base)
         -20 : 63676.dasm (-2.87 % of base)
         -16 : 39120.dasm (-1.29 % of base)
         -16 : 9136.dasm (-1.29 % of base)
         -16 : 42670.dasm (-1.29 % of base)
         -12 : 12200.dasm (-2.52 % of base)
         -12 : 66177.dasm (-0.36 % of base)
         -12 : 13108.dasm (-1.30 % of base)
         -12 : 58443.dasm (-0.95 % of base)
          -8 : 2421.dasm (-0.15 % of base)
          -4 : 57878.dasm (-0.18 % of base)
          -4 : 55663.dasm (-0.25 % of base)
          -4 : 66152.dasm (-3.23 % of base)

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

Top method regressions (bytes):
          64 (1.19 % of base) : 74758.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          52 (1.37 % of base) : 73401.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          48 (1.27 % of base) : 71839.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.16 % of base) : 70462.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.16 % of base) : 72986.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.35 % of base) : 71558.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.14 % of base) : 70289.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.17 % of base) : 68975.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.21 % of base) : 68400.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.18 % of base) : 46616.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          32 (0.91 % of base) : 23943.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          32 (1.04 % of base) : 67034.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.86 % of base) : 15915.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.59 % of base) : 29359.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (1.00 % of base) : 55775.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (0.63 % of base) : 66343.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          16 (0.51 % of base) : 66010.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          12 (0.61 % of base) : 60095.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 73475.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 59940.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (bytes):
         -40 (-2.19 % of base) : 54125.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.67 % of base) : 60588.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 74394.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 70533.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -20 (-2.87 % of base) : 63676.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -16 (-1.29 % of base) : 39120.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 9136.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 42670.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -12 (-0.36 % of base) : 66177.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
         -12 (-2.52 % of base) : 12200.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-0.95 % of base) : 58443.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
         -12 (-1.30 % of base) : 13108.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2421.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -4 (-0.18 % of base) : 57878.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -4 (-0.25 % of base) : 55663.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -4 (-3.23 % of base) : 66152.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)

Top method regressions (percentages):
          52 (1.37 % of base) : 73401.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.35 % of base) : 71558.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          48 (1.27 % of base) : 71839.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.21 % of base) : 68400.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          64 (1.19 % of base) : 74758.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          36 (1.18 % of base) : 46616.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.17 % of base) : 68975.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.16 % of base) : 72986.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          44 (1.16 % of base) : 70462.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          40 (1.14 % of base) : 70289.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          32 (1.04 % of base) : 67034.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (1.00 % of base) : 55775.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          32 (0.91 % of base) : 23943.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          28 (0.86 % of base) : 15915.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          20 (0.63 % of base) : 66343.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.62 % of base) : 24644.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 60095.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 73475.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 39457.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          12 (0.61 % of base) : 58857.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (percentages):
          -4 (-3.23 % of base) : 66152.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
         -20 (-2.87 % of base) : 63676.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -12 (-2.52 % of base) : 12200.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -40 (-2.19 % of base) : 54125.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -40 (-1.67 % of base) : 60588.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -40 (-1.62 % of base) : 74394.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -40 (-1.62 % of base) : 70533.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -12 (-1.30 % of base) : 13108.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
         -16 (-1.29 % of base) : 42670.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 39120.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -16 (-1.29 % of base) : 9136.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -12 (-0.95 % of base) : 58443.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
         -12 (-0.36 % of base) : 66177.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
          -4 (-0.25 % of base) : 55663.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -4 (-0.18 % of base) : 57878.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2421.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)


benchmarks.run_tiered.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15269056 (overridden on cmd)
Total bytes of diff: 15268980 (overridden on cmd)
Total bytes of delta: -76 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 8071.dasm (-4.92 % of base)
         -12 : 5823.dasm (-1.06 % of base)
          -8 : 43922.dasm (-0.33 % of base)
          -8 : 2237.dasm (-0.15 % of base)
          -8 : 8678.dasm (-0.90 % of base)
          -4 : 22038.dasm (-0.29 % of base)
          -4 : 44107.dasm (-0.43 % of base)
          -4 : 44428.dasm (-0.19 % of base)
          -4 : 17343.dasm (-0.60 % of base)

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

Top method improvements (bytes):
         -24 (-4.92 % of base) : 8071.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.06 % of base) : 5823.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.33 % of base) : 43922.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -8 (-0.15 % of base) : 2237.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -8 (-0.90 % of base) : 8678.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 17343.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 44107.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -4 (-0.19 % of base) : 44428.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -4 (-0.29 % of base) : 22038.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)

Top method improvements (percentages):
         -24 (-4.92 % of base) : 8071.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -12 (-1.06 % of base) : 5823.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.90 % of base) : 8678.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -4 (-0.60 % of base) : 17343.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -4 (-0.43 % of base) : 44107.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -8 (-0.33 % of base) : 43922.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -4 (-0.29 % of base) : 22038.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier1)
          -4 (-0.19 % of base) : 44428.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2237.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)

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


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 277085768 (overridden on cmd)
Total bytes of diff: 277085032 (overridden on cmd)
Total bytes of delta: -736 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 220823.dasm (0.08 % of base)
           4 : 254100.dasm (0.14 % of base)
           4 : 295277.dasm (0.26 % of base)

Top file improvements (bytes):
         -60 : 294861.dasm (-0.62 % of base)
         -40 : 189214.dasm (-5.29 % of base)
         -36 : 316146.dasm (-0.64 % of base)
         -36 : 251101.dasm (-14.75 % of base)
         -36 : 316373.dasm (-0.97 % of base)
         -28 : 257016.dasm (-10.61 % of base)
         -28 : 315518.dasm (-0.24 % of base)
         -28 : 316287.dasm (-1.86 % of base)
         -28 : 315962.dasm (-0.84 % of base)
         -28 : 316244.dasm (-1.00 % of base)
         -24 : 315567.dasm (-0.56 % of base)
         -16 : 182482.dasm (-2.35 % of base)
         -16 : 222123.dasm (-0.76 % of base)
         -16 : 318870.dasm (-1.01 % of base)
         -16 : 296076.dasm (-0.33 % of base)
         -16 : 318176.dasm (-0.55 % of base)
         -16 : 315169.dasm (-0.93 % of base)
         -16 : 316122.dasm (-0.66 % of base)
         -16 : 318095.dasm (-0.51 % of base)
         -12 : 181432.dasm (-1.28 % of base)

44 total files with Code Size differences (41 improved, 3 regressed), 1 unchanged.

Top method regressions (bytes):
           4 (0.08 % of base) : 220823.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
           4 (0.26 % of base) : 295277.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker:LogErrors(System.Action`1[System.String]):this (FullOpts)
           4 (0.14 % of base) : 254100.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)

Top method improvements (bytes):
         -60 (-0.62 % of base) : 294861.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -40 (-5.29 % of base) : 189214.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -36 (-0.64 % of base) : 316146.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -36 (-14.75 % of base) : 251101.dasm - Program:M49() (FullOpts)
         -36 (-0.97 % of base) : 316373.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -28 (-1.86 % of base) : 316287.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -28 (-0.84 % of base) : 315962.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -28 (-0.24 % of base) : 315518.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
         -28 (-1.00 % of base) : 316244.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -28 (-10.61 % of base) : 257016.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -24 (-0.56 % of base) : 315567.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement):this (FullOpts)
         -16 (-0.33 % of base) : 296076.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (FullOpts)
         -16 (-0.66 % of base) : 316122.dasm - Microsoft.Build.BackEnd.TargetBuilder+<PushTargets>d__26:MoveNext():this (FullOpts)
         -16 (-0.93 % of base) : 315169.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -16 (-0.76 % of base) : 222123.dasm - StackFrame:Validate(System.String,StackFrame[]) (FullOpts)
         -16 (-1.01 % of base) : 318870.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -16 (-2.35 % of base) : 182482.dasm - System.Runtime.InteropServices.ComEventsSink:FromRuntimeCallableWrapper(System.Object,System.Guid,ubyte):System.Runtime.InteropServices.ComEventsSink (FullOpts)
         -16 (-0.55 % of base) : 318176.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_ConfigValidation>d__6:MoveNext():this (FullOpts)
         -16 (-0.51 % of base) : 318095.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsNoSuspend>d__1:MoveNext():this (FullOpts)
         -12 (-0.22 % of base) : 226800.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)

Top method regressions (percentages):
           4 (0.26 % of base) : 295277.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker:LogErrors(System.Action`1[System.String]):this (FullOpts)
           4 (0.14 % of base) : 254100.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           4 (0.08 % of base) : 220823.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)

Top method improvements (percentages):
         -36 (-14.75 % of base) : 251101.dasm - Program:M49() (FullOpts)
         -28 (-10.61 % of base) : 257016.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -40 (-5.29 % of base) : 189214.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -16 (-2.35 % of base) : 182482.dasm - System.Runtime.InteropServices.ComEventsSink:FromRuntimeCallableWrapper(System.Object,System.Guid,ubyte):System.Runtime.InteropServices.ComEventsSink (FullOpts)
         -12 (-1.90 % of base) : 247928.dasm - Mutate:TestEntryPoint():int (FullOpts)
         -28 (-1.86 % of base) : 316287.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -12 (-1.44 % of base) : 296477.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.38 % of base) : 313551.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.28 % of base) : 181432.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
         -12 (-1.12 % of base) : 296350.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
         -12 (-1.06 % of base) : 296418.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-1.02 % of base) : 313295.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -16 (-1.01 % of base) : 318870.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
         -28 (-1.00 % of base) : 316244.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -36 (-0.97 % of base) : 316373.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -12 (-0.95 % of base) : 296341.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
         -16 (-0.93 % of base) : 315169.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
         -12 (-0.86 % of base) : 315861.dasm - Microsoft.Build.BackEnd.Scheduler:DumpConfigurations():this (FullOpts)
         -28 (-0.84 % of base) : 315962.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -12 (-0.81 % of base) : 316236.dasm - Microsoft.Build.BackEnd.SchedulingPlan:WritePlan(int,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext):this (FullOpts)


libraries.crossgen2.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 66990496 (overridden on cmd)
Total bytes of diff: 66990300 (overridden on cmd)
Total bytes of delta: -196 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 157542.dasm (0.54 % of base)
           8 : 23691.dasm (0.09 % of base)

Top file improvements (bytes):
         -24 : 22008.dasm (-2.86 % of base)
         -24 : 24095.dasm (-4.65 % of base)
         -16 : 24758.dasm (-1.63 % of base)
         -12 : 158067.dasm (-0.55 % of base)
         -12 : 18858.dasm (-1.07 % of base)
         -12 : 23545.dasm (-1.70 % of base)
         -12 : 13531.dasm (-1.52 % of base)
         -12 : 18856.dasm (-1.20 % of base)
         -12 : 199876.dasm (-0.55 % of base)
         -12 : 24757.dasm (-2.40 % of base)
          -8 : 237704.dasm (-1.10 % of base)
          -8 : 237709.dasm (-0.95 % of base)
          -8 : 239737.dasm (-0.14 % of base)
          -8 : 23477.dasm (-1.05 % of base)
          -4 : 202896.dasm (-0.48 % of base)
          -4 : 239668.dasm (-0.06 % of base)
          -4 : 24671.dasm (-0.34 % of base)
          -4 : 11919.dasm (-0.41 % of base)
          -4 : 18792.dasm (-0.17 % of base)
          -4 : 225764.dasm (-0.18 % of base)

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

Top method regressions (bytes):
          12 (0.54 % of base) : 157542.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 23691.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (bytes):
         -24 (-4.65 % of base) : 24095.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.86 % of base) : 22008.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -16 (-1.63 % of base) : 24758.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-0.55 % of base) : 158067.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 199876.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-2.40 % of base) : 24757.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.20 % of base) : 18856.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.07 % of base) : 18858.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-1.52 % of base) : 13531.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.70 % of base) : 23545.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.05 % of base) : 23477.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.14 % of base) : 239737.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-1.10 % of base) : 237704.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-0.95 % of base) : 237709.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.18 % of base) : 225764.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.33 % of base) : 266483.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.09 % of base) : 244836.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -4 (-0.41 % of base) : 11919.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.17 % of base) : 18792.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -4 (-0.06 % of base) : 239668.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)

Top method regressions (percentages):
          12 (0.54 % of base) : 157542.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.09 % of base) : 23691.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)

Top method improvements (percentages):
         -24 (-4.65 % of base) : 24095.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-2.86 % of base) : 22008.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
         -12 (-2.40 % of base) : 24757.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
         -12 (-1.70 % of base) : 23545.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
         -16 (-1.63 % of base) : 24758.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
         -12 (-1.52 % of base) : 13531.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
         -12 (-1.20 % of base) : 18856.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.10 % of base) : 237704.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.07 % of base) : 18858.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-1.05 % of base) : 23477.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.95 % of base) : 237709.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 158067.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -12 (-0.55 % of base) : 199876.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -4 (-0.48 % of base) : 202896.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseAudio(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
          -4 (-0.41 % of base) : 11919.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.34 % of base) : 24671.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          -4 (-0.33 % of base) : 266483.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.18 % of base) : 225764.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -4 (-0.17 % of base) : 18792.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          -8 (-0.14 % of base) : 239737.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

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


libraries.pmi.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79832108 (overridden on cmd)
Total bytes of diff: 79829552 (overridden on cmd)
Total bytes of delta: -2556 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 142570.dasm (1.14 % of base)
          12 : 239081.dasm (0.45 % of base)
           8 : 278094.dasm (0.62 % of base)
           8 : 301724.dasm (0.10 % of base)
           4 : 207973.dasm (0.14 % of base)
           4 : 222792.dasm (0.07 % of base)
           4 : 183874.dasm (0.35 % of base)
           4 : 210076.dasm (0.05 % of base)

Top file improvements (bytes):
         -60 : 301675.dasm (-0.62 % of base)
         -52 : 160637.dasm (-0.66 % of base)
         -48 : 30364.dasm (-1.92 % of base)
         -48 : 304269.dasm (-1.04 % of base)
         -44 : 262455.dasm (-1.40 % of base)
         -40 : 179530.dasm (-1.03 % of base)
         -40 : 155143.dasm (-0.70 % of base)
         -36 : 155898.dasm (-1.62 % of base)
         -36 : 254594.dasm (-1.85 % of base)
         -36 : 175268.dasm (-1.62 % of base)
         -36 : 279317.dasm (-2.42 % of base)
         -36 : 239075.dasm (-0.94 % of base)
         -36 : 262630.dasm (-2.24 % of base)
         -32 : 155149.dasm (-0.89 % of base)
         -32 : 228799.dasm (-1.79 % of base)
         -28 : 151370.dasm (-0.84 % of base)
         -28 : 227595.dasm (-2.70 % of base)
         -28 : 262366.dasm (-0.59 % of base)
         -28 : 297334.dasm (-0.96 % of base)
         -28 : 150307.dasm (-0.95 % of base)

63 total files with Code Size differences (55 improved, 8 regressed), 7 unchanged.

Top method regressions (bytes):
          28 (1.14 % of base) : 142570.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          12 (0.45 % of base) : 239081.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           8 (0.62 % of base) : 278094.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
           8 (0.10 % of base) : 301724.dasm - TestRunner:DoWorkStress():int:this (FullOpts)
           4 (0.07 % of base) : 222792.dasm - ILCompiler.IBC.IBCProfileParser:LookupIbcTypeToken(byref,uint,System.Collections.Generic.Dictionary`2[ILCompiler.IBC.IBCProfileParser+IBCBlobKey,ILCompiler.IBC.BlobEntry]):uint:this (FullOpts)
           4 (0.35 % of base) : 183874.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.05 % of base) : 210076.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           4 (0.14 % of base) : 207973.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)

Top method improvements (bytes):
         -60 (-0.62 % of base) : 301675.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -52 (-0.66 % of base) : 160637.dasm - Microsoft.CodeAnalysis.CommonCompiler:CompileAndEmit(Microsoft.CodeAnalysis.TouchedFileLogger,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],Microsoft.CodeAnalysis.AnalyzerConfigSet,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken,byref,byref,byref):this (FullOpts)
         -48 (-1.92 % of base) : 30364.dasm - R2RDump.TextDumper:DumpDisasm(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,int):this (FullOpts)
         -48 (-1.04 % of base) : 304269.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -44 (-1.40 % of base) : 262455.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
         -40 (-0.70 % of base) : 155143.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -40 (-1.03 % of base) : 179530.dasm - System.Data.DataTable:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
         -36 (-0.94 % of base) : 239075.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -36 (-1.85 % of base) : 254594.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -36 (-1.62 % of base) : 155898.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -36 (-1.62 % of base) : 175268.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -36 (-2.24 % of base) : 262630.dasm - System.DirectoryServices.AccountManagement.SAMStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
         -36 (-2.42 % of base) : 279317.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-0.89 % of base) : 155149.dasm - Microsoft.Build.BackEnd.TaskBuilder+<ExecuteBucket>d__19:MoveNext():this (FullOpts)
         -32 (-1.79 % of base) : 228799.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -28 (-2.70 % of base) : 227595.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -28 (-0.84 % of base) : 151370.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -28 (-0.95 % of base) : 150307.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
         -28 (-0.90 % of base) : 69789.dasm - Microsoft.Diagnostics.Tracing.ZippedETLWriter:WriteArchive(int):ubyte:this (FullOpts)
         -28 (-0.59 % of base) : 262366.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:GetGroupsMemberOf(System.DirectoryServices.AccountManagement.Principal):System.DirectoryServices.AccountManagement.ResultSet:this (FullOpts)

Top method regressions (percentages):
          28 (1.14 % of base) : 142570.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           8 (0.62 % of base) : 278094.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
          12 (0.45 % of base) : 239081.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           4 (0.35 % of base) : 183874.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.14 % of base) : 207973.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           8 (0.10 % of base) : 301724.dasm - TestRunner:DoWorkStress():int:this (FullOpts)
           4 (0.07 % of base) : 222792.dasm - ILCompiler.IBC.IBCProfileParser:LookupIbcTypeToken(byref,uint,System.Collections.Generic.Dictionary`2[ILCompiler.IBC.IBCProfileParser+IBCBlobKey,ILCompiler.IBC.BlobEntry]):uint:this (FullOpts)
           4 (0.05 % of base) : 210076.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (percentages):
         -16 (-4.12 % of base) : 305023.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -16 (-3.96 % of base) : 218767.dasm - System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
         -16 (-3.74 % of base) : 154314.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
         -12 (-3.57 % of base) : 229412.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -16 (-3.39 % of base) : 229912.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -16 (-3.20 % of base) : 152554.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
         -12 (-3.00 % of base) : 305022.dasm - Xunit.AggregateMessageSink:Dispose():this (FullOpts)
         -16 (-2.99 % of base) : 219793.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:RemoveLexicon(System.Uri):this (FullOpts)
         -28 (-2.70 % of base) : 227595.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -16 (-2.68 % of base) : 147738.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -16 (-2.61 % of base) : 259047.dasm - System.Diagnostics.Metrics.AggregationManager:GetInstrumentState(System.Diagnostics.Metrics.Instrument):System.Diagnostics.Metrics.InstrumentState:this (FullOpts)
         -12 (-2.61 % of base) : 149425.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)
         -12 (-2.59 % of base) : 189806.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -16 (-2.55 % of base) : 189900.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.50 % of base) : 291060.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-2.46 % of base) : 229004.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
         -12 (-2.44 % of base) : 149405.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveAllToolsets():this (FullOpts)
         -24 (-2.42 % of base) : 236264.dasm - Microsoft.Build.Framework.NativeMethods:KillTree(int) (FullOpts)
         -36 (-2.42 % of base) : 279317.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -16 (-2.35 % of base) : 251.dasm - System.Runtime.InteropServices.ComEventsSink:FromRuntimeCallableWrapper(System.Object,System.Guid,ubyte):System.Runtime.InteropServices.ComEventsSink (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6478404 (overridden on cmd)
Total bytes of diff: 6477956 (overridden on cmd)
Total bytes of delta: -448 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 5713.dasm (0.51 % of base)
           4 : 1913.dasm (0.26 % of base)
           4 : 5807.dasm (0.26 % of base)

Top file improvements (bytes):
         -16 : 1429.dasm (-2.17 % of base)
         -16 : 2081.dasm (-2.17 % of base)
         -16 : 4565.dasm (-2.17 % of base)
         -16 : 4658.dasm (-2.17 % of base)
         -16 : 1536.dasm (-2.17 % of base)
         -16 : 4376.dasm (-2.17 % of base)
         -16 : 4589.dasm (-2.17 % of base)
         -16 : 5534.dasm (-2.17 % of base)
         -16 : 5660.dasm (-2.17 % of base)
         -16 : 5797.dasm (-2.17 % of base)
         -16 : 5822.dasm (-2.17 % of base)
         -16 : 5956.dasm (-2.17 % of base)
         -16 : 1779.dasm (-2.17 % of base)
         -16 : 1897.dasm (-2.17 % of base)
         -16 : 4346.dasm (-2.16 % of base)
         -16 : 5588.dasm (-2.17 % of base)
         -16 : 5881.dasm (-2.17 % of base)
         -16 : 6899.dasm (-2.17 % of base)
         -16 : 779.dasm (-2.17 % of base)
         -16 : 1630.dasm (-2.17 % of base)

34 total files with Code Size differences (31 improved, 3 regressed), 0 unchanged.

Top method regressions (bytes):
           8 (0.51 % of base) : 5713.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           4 (0.26 % of base) : 1913.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           4 (0.26 % of base) : 5807.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

Top method improvements (bytes):
         -16 (-2.17 % of base) : 1429.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 2081.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4565.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4658.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1536.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4376.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4589.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5534.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5660.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5797.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5822.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5956.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1897.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.16 % of base) : 4346.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5588.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5881.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 6899.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

Top method regressions (percentages):
           8 (0.51 % of base) : 5713.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           4 (0.26 % of base) : 5807.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           4 (0.26 % of base) : 1913.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

Top method improvements (percentages):
         -16 (-2.17 % of base) : 1429.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 2081.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4565.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4658.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1536.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4376.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 4589.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5534.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5660.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5797.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5822.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5956.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1897.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5588.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 5881.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 6899.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-2.17 % of base) : 1975.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

34 total methods with Code Size differences (31 improved, 3 regressed).


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 168103524 (overridden on cmd)
Total bytes of diff: 168100992 (overridden on cmd)
Total bytes of delta: -2532 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 58743.dasm (1.24 % of base)
          20 : 164882.dasm (0.82 % of base)
           4 : 131350.dasm (0.49 % of base)
           4 : 152058.dasm (0.18 % of base)
           4 : 172251.dasm (0.05 % of base)
           4 : 233961.dasm (0.22 % of base)
           4 : 26963.dasm (0.35 % of base)
           4 : 58376.dasm (0.25 % of base)
           4 : 58390.dasm (0.17 % of base)
           4 : 80626.dasm (0.48 % of base)
           4 : 164949.dasm (0.16 % of base)

Top file improvements (bytes):
         -48 : 822.dasm (-1.05 % of base)
         -40 : 134328.dasm (-3.25 % of base)
         -40 : 134336.dasm (-3.01 % of base)
         -36 : 159642.dasm (-2.51 % of base)
         -36 : 88151.dasm (-1.88 % of base)
         -36 : 154865.dasm (-2.51 % of base)
         -32 : 306390.dasm (-1.08 % of base)
         -32 : 308978.dasm (-0.97 % of base)
         -32 : 8970.dasm (-1.84 % of base)
         -32 : 90093.dasm (-1.64 % of base)
         -32 : 126178.dasm (-1.10 % of base)
         -28 : 21602.dasm (-1.10 % of base)
         -28 : 308061.dasm (-1.20 % of base)
         -28 : 313498.dasm (-0.77 % of base)
         -28 : 12198.dasm (-1.63 % of base)
         -24 : 126983.dasm (-5.41 % of base)
         -24 : 231802.dasm (-0.94 % of base)
         -24 : 81938.dasm (-0.99 % of base)
         -24 : 99161.dasm (-0.56 % of base)
         -24 : 23326.dasm (-1.31 % of base)

51 total files with Code Size differences (40 improved, 11 regressed), 23 unchanged.

Top method regressions (bytes):
          28 (1.24 % of base) : 58743.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          20 (0.82 % of base) : 164882.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[ushort]:<IndexOfMinMagnitude_AllLengths>b__169_0(int):this (FullOpts)
           4 (0.25 % of base) : 58376.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:MoveDirectory_SourceDirectoryName_DestinationDirectoryName():this (FullOpts)
           4 (0.17 % of base) : 58390.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:MoveDirectory_SourceDirectoryName_DestinationDirectoryName_OverwriteFalse():this (FullOpts)
           4 (0.48 % of base) : 80626.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           4 (0.49 % of base) : 131350.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.35 % of base) : 26963.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.18 % of base) : 152058.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest:DynamicTable_Resize_Success(int,int,int):this (FullOpts)
           4 (0.16 % of base) : 164949.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[ushort]:<IndexOfMaxMagnitude_AllLengths>b__161_0(int):this (FullOpts)
           4 (0.22 % of base) : 233961.dasm - System.Security.Cryptography.Tests.HmacTests`1[System.__Canon]:OneShot_TryExistingBuffer_Larger():this (FullOpts)
           4 (0.05 % of base) : 172251.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (bytes):
         -48 (-1.05 % of base) : 822.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -40 (-3.01 % of base) : 134336.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -40 (-3.25 % of base) : 134328.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -36 (-1.88 % of base) : 88151.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -36 (-2.51 % of base) : 159642.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 154865.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -32 (-1.84 % of base) : 8970.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -32 (-1.64 % of base) : 90093.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
         -32 (-1.10 % of base) : 126178.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
         -32 (-1.08 % of base) : 306390.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
         -32 (-0.97 % of base) : 308978.dasm - System.Threading.Tasks.Dataflow.Tests.BatchBlockTests+<TestNonGreedyLostMessages>d__17:MoveNext():this (FullOpts)
         -28 (-1.10 % of base) : 21602.dasm - NuGet.Protocol.HttpSourceAuthenticationHandler+<SendAsync>d__9:MoveNext():this (FullOpts)
         -28 (-1.20 % of base) : 308061.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<BufferBlocksToBatchNonGreedyToAction>d__8:MoveNext():this (FullOpts)
         -28 (-0.77 % of base) : 313498.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         -28 (-1.63 % of base) : 12198.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
         -24 (-1.31 % of base) : 23326.dasm - NuGet.Packaging.Signing.SignedPackageArchiveUtility:VerifySignedPackageIntegrity(System.IO.BinaryReader,System.Security.Cryptography.HashAlgorithm,ubyte[]):ubyte (FullOpts)
         -24 (-0.99 % of base) : 81938.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
         -24 (-0.56 % of base) : 99161.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<TestActivityCreationProperties>b__9_0():this (FullOpts)
         -24 (-5.41 % of base) : 126983.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
         -24 (-0.94 % of base) : 231802.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)

Top method regressions (percentages):
          28 (1.24 % of base) : 58743.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          20 (0.82 % of base) : 164882.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[ushort]:<IndexOfMinMagnitude_AllLengths>b__169_0(int):this (FullOpts)
           4 (0.49 % of base) : 131350.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
           4 (0.48 % of base) : 80626.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
           4 (0.35 % of base) : 26963.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (0.25 % of base) : 58376.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:MoveDirectory_SourceDirectoryName_DestinationDirectoryName():this (FullOpts)
           4 (0.22 % of base) : 233961.dasm - System.Security.Cryptography.Tests.HmacTests`1[System.__Canon]:OneShot_TryExistingBuffer_Larger():this (FullOpts)
           4 (0.18 % of base) : 152058.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest:DynamicTable_Resize_Success(int,int,int):this (FullOpts)
           4 (0.17 % of base) : 58390.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:MoveDirectory_SourceDirectoryName_DestinationDirectoryName_OverwriteFalse():this (FullOpts)
           4 (0.16 % of base) : 164949.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[ushort]:<IndexOfMaxMagnitude_AllLengths>b__161_0(int):this (FullOpts)
           4 (0.05 % of base) : 172251.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (percentages):
         -24 (-5.41 % of base) : 126983.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
         -16 (-4.12 % of base) : 23363.dasm - System.Security.Cryptography.X509Certificates.FindPal:LaxParseDecimalBigInteger(System.String):System.Numerics.BigInteger (FullOpts)
         -16 (-4.12 % of base) : 516.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -12 (-3.57 % of base) : 34034.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -16 (-3.39 % of base) : 37788.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -40 (-3.25 % of base) : 134328.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -40 (-3.01 % of base) : 134336.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
         -16 (-2.76 % of base) : 232821.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountExceedingDefaultLimit_MemberData>d__18:MoveNext():ubyte:this (FullOpts)
         -16 (-2.74 % of base) : 232833.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
         -16 (-2.65 % of base) : 232800.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
         -12 (-2.59 % of base) : 21607.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-2.59 % of base) : 151461.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -16 (-2.55 % of base) : 151595.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.55 % of base) : 21689.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -36 (-2.51 % of base) : 159642.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -36 (-2.51 % of base) : 154865.dasm - System.Net.CookieContainer:DomainTableCleanup():this (FullOpts)
         -16 (-2.50 % of base) : 224168.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-2.46 % of base) : 29811.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
         -16 (-2.34 % of base) : 151905.dasm - System.Net.Http.Headers.HttpHeaders:CloneHeaderInfo(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo):System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo (FullOpts)
         -16 (-2.34 % of base) : 21584.dasm - System.Net.Http.Headers.HttpHeaders:CloneHeaderInfo(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo):System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo (FullOpts)


realworld.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15900008 (overridden on cmd)
Total bytes of diff: 15899608 (overridden on cmd)
Total bytes of delta: -400 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -52 : 14604.dasm (-8.33 % of base)
         -28 : 32623.dasm (-2.48 % of base)
         -24 : 33163.dasm (-2.43 % of base)
         -12 : 29680.dasm (-1.24 % of base)
         -12 : 32368.dasm (-0.52 % of base)
         -12 : 15331.dasm (-0.56 % of base)
         -12 : 29705.dasm (-2.73 % of base)
         -12 : 31004.dasm (-0.26 % of base)
         -12 : 12391.dasm (-0.27 % of base)
         -12 : 29669.dasm (-1.60 % of base)
         -12 : 32329.dasm (-0.63 % of base)
         -12 : 29687.dasm (-0.80 % of base)
         -12 : 32349.dasm (-0.31 % of base)
         -12 : 33273.dasm (-0.92 % of base)
         -12 : 4936.dasm (-1.94 % of base)
         -12 : 58.dasm (-1.06 % of base)
         -12 : 937.dasm (-1.44 % of base)
          -8 : 12231.dasm (-0.38 % of base)
          -8 : 14391.dasm (-1.82 % of base)
          -8 : 32172.dasm (-0.83 % of base)

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

Top method improvements (bytes):
         -52 (-8.33 % of base) : 14604.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -28 (-2.48 % of base) : 32623.dasm - System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56:MoveNext():ubyte:this (FullOpts)
         -24 (-2.43 % of base) : 33163.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
         -12 (-0.56 % of base) : 15331.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
         -12 (-0.27 % of base) : 12391.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
         -12 (-0.80 % of base) : 29687.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
         -12 (-1.24 % of base) : 29680.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
         -12 (-0.63 % of base) : 32329.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -12 (-1.44 % of base) : 937.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -12 (-1.06 % of base) : 58.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
         -12 (-0.52 % of base) : 32368.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
         -12 (-1.60 % of base) : 29669.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
         -12 (-2.73 % of base) : 29705.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -12 (-0.31 % of base) : 32349.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
         -12 (-0.92 % of base) : 33273.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -12 (-0.26 % of base) : 31004.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
         -12 (-1.94 % of base) : 4936.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.13 % of base) : 29759.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
          -8 (-0.38 % of base) : 12231.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadBigValues(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
          -8 (-1.49 % of base) : 29938.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

Top method improvements (percentages):
         -52 (-8.33 % of base) : 14604.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -12 (-2.73 % of base) : 29705.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -28 (-2.48 % of base) : 32623.dasm - System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56:MoveNext():ubyte:this (FullOpts)
         -24 (-2.43 % of base) : 33163.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
         -12 (-1.94 % of base) : 4936.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 14391.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-1.60 % of base) : 29669.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
          -8 (-1.49 % of base) : 29938.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -4 (-1.47 % of base) : 32954.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
         -12 (-1.44 % of base) : 937.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-1.43 % of base) : 32304.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -12 (-1.24 % of base) : 29680.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
          -8 (-1.13 % of base) : 29759.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
         -12 (-1.06 % of base) : 58.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-1.05 % of base) : 31765.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
         -12 (-0.92 % of base) : 33273.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
          -8 (-0.90 % of base) : 13558.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-0.83 % of base) : 32172.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -12 (-0.80 % of base) : 29687.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
          -8 (-0.72 % of base) : 31763.dasm - System.Management.Automation.Runspaces.LocalRunspace:StopOrDisconnectAllJobs():this (FullOpts)

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


smoke_tests.nativeaot.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3865048 (overridden on cmd)
Total bytes of diff: 3864928 (overridden on cmd)
Total bytes of delta: -120 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 2589.dasm (-6.45 % of base)
         -24 : 24178.dasm (-3.95 % of base)
         -24 : 8338.dasm (-6.12 % of base)
          -8 : 1126.dasm (-0.18 % of base)
          -8 : 6562.dasm (-1.82 % of base)
          -8 : 2141.dasm (-1.55 % of base)
          -8 : 6772.dasm (-1.55 % of base)
          -8 : 11972.dasm (-1.82 % of base)
          -8 : 4460.dasm (-0.18 % of base)

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

Top method improvements (bytes):
         -24 (-6.45 % of base) : 2589.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-6.12 % of base) : 8338.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-3.95 % of base) : 24178.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-1.55 % of base) : 2141.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-1.55 % of base) : 6772.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.18 % of base) : 1126.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-0.18 % of base) : 4460.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-1.82 % of base) : 6562.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 11972.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)

Top method improvements (percentages):
         -24 (-6.45 % of base) : 2589.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-6.12 % of base) : 8338.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -24 (-3.95 % of base) : 24178.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -8 (-1.82 % of base) : 6562.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.82 % of base) : 11972.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-1.55 % of base) : 2141.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-1.55 % of base) : 6772.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -8 (-0.18 % of base) : 1126.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-0.18 % of base) : 4460.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)

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



windows x64

Diffs are based on 1,999,660 contexts (587,594 MinOpts, 1,412,066 FullOpts).

MISSED contexts: base: 3,225 (0.16%), diff: 3,228 (0.16%)

Overall (-4,484 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,770,084 -2,631
benchmarks.run.windows.x64.checked.mch 11,727,476 +35
benchmarks.run_pgo.windows.x64.checked.mch 34,353,258 +748
benchmarks.run_tiered.windows.x64.checked.mch 19,449,443 -135
coreclr_tests.run.windows.x64.checked.mch 296,149,050 -317
libraries.crossgen2.windows.x64.checked.mch 44,929,099 -115
libraries.pmi.windows.x64.checked.mch 67,667,009 -850
libraries_tests.run.windows.x64.Release.mch 42,430,255 -25
librariestestsnotieredcompilation.run.windows.x64.Release.mch 142,641,215 -871
realworld.run.windows.x64.checked.mch 14,769,832 -233
smoke_tests.nativeaot.windows.x64.checked.mch 5,085,273 -90

FullOpts (-4,484 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,281,344 -2,631
benchmarks.run.windows.x64.checked.mch 11,726,881 +35
benchmarks.run_pgo.windows.x64.checked.mch 15,516,562 +748
benchmarks.run_tiered.windows.x64.checked.mch 4,081,554 -135
coreclr_tests.run.windows.x64.checked.mch 110,374,660 -317
libraries.crossgen2.windows.x64.checked.mch 44,927,912 -115
libraries.pmi.windows.x64.checked.mch 67,553,488 -850
libraries_tests.run.windows.x64.Release.mch 10,788,375 -25
librariestestsnotieredcompilation.run.windows.x64.Release.mch 131,858,345 -871
realworld.run.windows.x64.checked.mch 14,383,223 -233
smoke_tests.nativeaot.windows.x64.checked.mch 5,084,326 -90

Example diffs

aspnet.run.windows.x64.checked.mch

-39 (-5.08%) : 116340.dasm - System.Linq.Enumerable:AnySystem.__Canon:ubyte (Tier1-OSR)

@@ -12,61 +12,60 @@ ; ; V00 TypeCtx [V00,T14] ( 7, 115.50) long -> rsi single-def ;* V01 arg0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T10] ( 8, 283.25) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]> -; V03 loc0 [V03,T12] ( 10, 219.63) ref -> [rbp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]> -; V04 loc1 [V04,T11] ( 6, 281.25) ref -> rax class-hnd <System.__Canon>
+; V02 arg1 [V02,T09] ( 8, 283.25) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]> +; V03 loc0 [V03,T11] ( 10, 219.63) ref -> [rbp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]> +; V04 loc1 [V04,T10] ( 6, 281.25) ref -> rax class-hnd <System.__Canon>
; V05 loc2 [V05,T15] ( 2, 93.75) ubyte -> [rbp+0x9C] do-not-enreg[Z] EH-live tier0-frame ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp4 [V10,T08] ( 8, 562.50) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp4 [V10,T06] ( 8, 562.50) long -> r11 "VirtualCall with runtime lookup"
; V11 tmp5 [V11,T13] ( 4, 187.50) int -> rax "guarded devirt return temp" ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Yarp.ReverseProxy.Management.IReverseProxyBuilderExtensions+<>c>
-; V13 tmp7 [V13,T06] ( 5, 200 ) int -> rcx "guarded devirt return temp"
+; V13 tmp7 [V13,T05] ( 5, 200 ) int -> rcx "guarded devirt return temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor]> ;* V15 tmp9 [V15,T20] ( 0, 0 ) int -> zero-ref "OSR entry state var" ; V16 tmp10 [V16,T00] ( 18,4200 ) byref -> rdi "Inlining Arg" ; V17 tmp11 [V17,T04] ( 8,1000 ) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V18 tmp12 [V18,T01] ( 6,2400 ) ref -> r13 "arr expr"
+; V18 tmp12 [V18,T01] ( 6,2400 ) ref -> r15 "arr expr"
; V19 tmp13 [V19,T02] ( 6,2400 ) int -> r8 "index expr"
-; V20 PSPSym [V20,T21] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T07] ( 3, 594 ) int -> r15 "CSE - aggressive"
+; V20 PSPSym [V20,T21] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T12] ( 2, 198 ) int -> rcx "CSE - aggressive"
; V22 cse1 [V22,T03] ( 3,1188 ) int -> r8 "CSE - aggressive"
-; V23 cse2 [V23,T18] ( 3, 6.00) int -> r15 "CSE - aggressive"
+; V23 cse2 [V23,T19] ( 2, 2.00) int -> rcx "CSE - aggressive"
; V24 cse3 [V24,T16] ( 3, 12.00) int -> r8 "CSE - aggressive"
-; V25 cse4 [V25,T05] ( 4, 693 ) ref -> r14 "CSE - aggressive" -; V26 cse5 [V26,T17] ( 4, 7.00) ref -> r14 "CSE - aggressive" -; V27 rat0 [V27,T09] ( 3, 519.75) long -> r11 "fgMakeTemp is creating a new local variable" -; V28 rat1 [V28,T19] ( 3, 5.25) long -> r11 "fgMakeTemp is creating a new local variable"
+; V25 cse4 [V25,T08] ( 3, 297 ) ref -> r14 "CSE - aggressive" +; V26 cse5 [V26,T18] ( 3, 3.00) ref -> r14 "CSE - aggressive" +; V27 rat0 [V27,T07] ( 3, 519.75) long -> r11 "fgMakeTemp is creating a new local variable" +; V28 rat1 [V28,T17] ( 3, 5.25) long -> r11 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M43250_IG01: ; bbWeight=12.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 96 - mov qword ptr [rsp+0x148], r15 - mov qword ptr [rsp+0x140], r14 - mov qword ptr [rsp+0x138], r13 - mov qword ptr [rsp+0x130], rdi - mov qword ptr [rsp+0x128], rsi - mov qword ptr [rsp+0x120], rbx - lea rbp, [rsp+0x60] - mov qword ptr [rbp-0x40], rsp
+ sub rsp, 80 + mov qword ptr [rsp+0x138], r15 + mov qword ptr [rsp+0x130], r14 + mov qword ptr [rsp+0x128], rdi + mov qword ptr [rsp+0x120], rsi + mov qword ptr [rsp+0x118], rbx + lea rbp, [rsp+0x50] + mov qword ptr [rbp-0x30], rsp
mov rsi, qword ptr [rbp+0x100] mov rbx, gword ptr [rbp+0x110] ; gcrRegs +[rbx]
- ;; size=80 bbWeight=12.44 PerfScore 183.46 -G_M43250_IG02: ; bbWeight=12.44, gcVars=0000000000001000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V03}
+ ;; size=72 bbWeight=12.44 PerfScore 171.02 +G_M43250_IG02: ; bbWeight=12.44, gcVars=0000000000000800 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V03 V11}
cmp gword ptr [rbp+0xA8], 0
- je G_M43250_IG19
+ je G_M43250_IG18
mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor] cmp qword ptr [rcx], rdx
- jne G_M43250_IG19
+ jne G_M43250_IG18
jmp SHORT G_M43250_IG07 ;; size=42 bbWeight=12.44 PerfScore 127.49 G_M43250_IG03: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz @@ -89,7 +88,7 @@ G_M43250_IG04: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[rdx] cmp gword ptr [rax+0x10], rdx jne SHORT G_M43250_IG07
- jmp G_M43250_IG17
+ jmp G_M43250_IG16
;; size=47 bbWeight=92.81 PerfScore 1345.78 G_M43250_IG05: ; bbWeight=18.56, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rdx] @@ -110,9 +109,9 @@ G_M43250_IG06: ; bbWeight=92.81, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne G_M43250_IG17
+ jne G_M43250_IG16
;; size=18 bbWeight=92.81 PerfScore 603.28
-G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0xA8] ; gcrRegs +[rdi] add rdi, 8 @@ -122,25 +121,25 @@ G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by ; gcrRegs +[r14] mov rax, r14 ; gcrRegs +[rax]
- mov r15d, dword ptr [rdi+0x14] - cmp r15d, dword ptr [rax+0x14] - jne SHORT G_M43250_IG10 - ;; size=27 bbWeight=99 PerfScore 940.50
+ mov ecx, dword ptr [rdi+0x14] + cmp ecx, dword ptr [rax+0x14] + jne G_M43250_IG17 + ;; size=29 bbWeight=99 PerfScore 940.50
G_M43250_IG08: ; bbWeight=396, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0080 {rdi}, byref, isz mov r8d, dword ptr [rdi+0x10] cmp r8d, dword ptr [rax+0x10]
- jae SHORT G_M43250_IG11 - mov r13, gword ptr [rax+0x08] - ; gcrRegs +[r13] - cmp r8d, dword ptr [r13+0x08]
+ jae SHORT G_M43250_IG10 + mov r15, gword ptr [rax+0x08] + ; gcrRegs +[r15] + cmp r8d, dword ptr [r15+0x08]
jae SHORT G_M43250_IG09 mov ecx, r8d
- mov rdx, gword ptr [r13+8*rcx+0x10]
+ mov rdx, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[rdx] lea rcx, bword ptr [rdi+0x08] ; byrRegs +[rcx] call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rax rdx r13-r14]
+ ; gcrRegs -[rax rdx r14-r15]
; byrRegs -[rcx] inc dword ptr [rdi+0x10] jmp G_M43250_IG03 @@ -151,13 +150,9 @@ G_M43250_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M43250_IG10: ; bbWeight=396, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
+G_M43250_IG10: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx r14] ; byrRegs +[rdi]
- cmp r15d, dword ptr [r14+0x14] - jne G_M43250_IG18 - ;; size=10 bbWeight=396 PerfScore 1584.00 -G_M43250_IG11: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
mov ecx, dword ptr [r14+0x10] inc ecx mov dword ptr [rdi+0x10], ecx @@ -165,29 +160,29 @@ G_M43250_IG11: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {r ; gcrRegs +[rcx] mov gword ptr [rdi+0x08], rcx ;; size=15 bbWeight=99 PerfScore 445.50
-G_M43250_IG12: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG11: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx r14] ; byrRegs -[rdi] test ecx, ecx
- je G_M43250_IG28
+ je G_M43250_IG26
;; size=8 bbWeight=99 PerfScore 123.75
-G_M43250_IG13: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG12: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
jmp G_M43250_IG03 ;; size=5 bbWeight=92.81 PerfScore 185.62
-G_M43250_IG14: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG13: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rsi+0x10] mov r11, qword ptr [rcx+0x18] test r11, r11
- jne G_M43250_IG24
+ jne G_M43250_IG23
;; size=17 bbWeight=0.94 PerfScore 4.92
-G_M43250_IG15: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG14: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD ; gcr arg pop 0 mov r11, rax ;; size=21 bbWeight=0.19 PerfScore 0.33
-G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG15: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] call [r11] @@ -195,7 +190,7 @@ G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; function address cmp qword ptr [rbx+0x18], rdx
- je G_M43250_IG23
+ je G_M43250_IG22
mov rdx, rax ; gcrRegs +[rdx] mov rcx, gword ptr [rbx+0x08] @@ -204,27 +199,27 @@ G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M43250_IG19
+ je SHORT G_M43250_IG18
;; size=44 bbWeight=0.94 PerfScore 13.83
-G_M43250_IG17: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43250_IG16: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov dword ptr [rbp+0x9C], 1
- jmp G_M43250_IG30
+ jmp G_M43250_IG28
;; size=15 bbWeight=93.75 PerfScore 281.25
-G_M43250_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43250_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M43250_IG19: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG18: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor] cmp qword ptr [rcx], rdx
- je SHORT G_M43250_IG21
+ je SHORT G_M43250_IG20
;; size=22 bbWeight=1.00 PerfScore 5.25
-G_M43250_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] @@ -233,9 +228,9 @@ G_M43250_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov ecx, eax
- jmp G_M43250_IG27 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M43250_IG21: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43250_IG25
...

-39 (-5.08%) : 117300.dasm - System.Linq.Enumerable:AnySystem.__Canon:ubyte (Tier1-OSR)

@@ -12,61 +12,60 @@ ; ; V00 TypeCtx [V00,T14] ( 7, 115.50) long -> rsi single-def ;* V01 arg0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T10] ( 8, 283.25) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]> -; V03 loc0 [V03,T12] ( 10, 219.63) ref -> [rbp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]> -; V04 loc1 [V04,T11] ( 6, 281.25) ref -> rax class-hnd <System.__Canon>
+; V02 arg1 [V02,T09] ( 8, 283.25) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]> +; V03 loc0 [V03,T11] ( 10, 219.63) ref -> [rbp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]> +; V04 loc1 [V04,T10] ( 6, 281.25) ref -> rax class-hnd <System.__Canon>
; V05 loc2 [V05,T15] ( 2, 93.75) ubyte -> [rbp+0x9C] do-not-enreg[Z] EH-live tier0-frame ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp4 [V10,T08] ( 8, 562.50) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp4 [V10,T06] ( 8, 562.50) long -> r11 "VirtualCall with runtime lookup"
; V11 tmp5 [V11,T13] ( 4, 187.50) int -> rax "guarded devirt return temp" ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Yarp.ReverseProxy.Management.IReverseProxyBuilderExtensions+<>c>
-; V13 tmp7 [V13,T06] ( 5, 200 ) int -> rcx "guarded devirt return temp"
+; V13 tmp7 [V13,T05] ( 5, 200 ) int -> rcx "guarded devirt return temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor]> ;* V15 tmp9 [V15,T20] ( 0, 0 ) int -> zero-ref "OSR entry state var" ; V16 tmp10 [V16,T00] ( 18,4200 ) byref -> rdi "Inlining Arg" ; V17 tmp11 [V17,T04] ( 8,1000 ) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V18 tmp12 [V18,T01] ( 6,2400 ) ref -> r13 "arr expr"
+; V18 tmp12 [V18,T01] ( 6,2400 ) ref -> r15 "arr expr"
; V19 tmp13 [V19,T02] ( 6,2400 ) int -> r8 "index expr"
-; V20 PSPSym [V20,T21] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T07] ( 3, 594 ) int -> r15 "CSE - aggressive"
+; V20 PSPSym [V20,T21] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T12] ( 2, 198 ) int -> rcx "CSE - aggressive"
; V22 cse1 [V22,T03] ( 3,1188 ) int -> r8 "CSE - aggressive"
-; V23 cse2 [V23,T18] ( 3, 6.00) int -> r15 "CSE - aggressive"
+; V23 cse2 [V23,T19] ( 2, 2.00) int -> rcx "CSE - aggressive"
; V24 cse3 [V24,T16] ( 3, 12.00) int -> r8 "CSE - aggressive"
-; V25 cse4 [V25,T05] ( 4, 693 ) ref -> r14 "CSE - aggressive" -; V26 cse5 [V26,T17] ( 4, 7.00) ref -> r14 "CSE - aggressive" -; V27 rat0 [V27,T09] ( 3, 519.75) long -> r11 "fgMakeTemp is creating a new local variable" -; V28 rat1 [V28,T19] ( 3, 5.25) long -> r11 "fgMakeTemp is creating a new local variable"
+; V25 cse4 [V25,T08] ( 3, 297 ) ref -> r14 "CSE - aggressive" +; V26 cse5 [V26,T18] ( 3, 3.00) ref -> r14 "CSE - aggressive" +; V27 rat0 [V27,T07] ( 3, 519.75) long -> r11 "fgMakeTemp is creating a new local variable" +; V28 rat1 [V28,T17] ( 3, 5.25) long -> r11 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M43250_IG01: ; bbWeight=12.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 96 - mov qword ptr [rsp+0x148], r15 - mov qword ptr [rsp+0x140], r14 - mov qword ptr [rsp+0x138], r13 - mov qword ptr [rsp+0x130], rdi - mov qword ptr [rsp+0x128], rsi - mov qword ptr [rsp+0x120], rbx - lea rbp, [rsp+0x60] - mov qword ptr [rbp-0x40], rsp
+ sub rsp, 80 + mov qword ptr [rsp+0x138], r15 + mov qword ptr [rsp+0x130], r14 + mov qword ptr [rsp+0x128], rdi + mov qword ptr [rsp+0x120], rsi + mov qword ptr [rsp+0x118], rbx + lea rbp, [rsp+0x50] + mov qword ptr [rbp-0x30], rsp
mov rsi, qword ptr [rbp+0x100] mov rbx, gword ptr [rbp+0x110] ; gcrRegs +[rbx]
- ;; size=80 bbWeight=12.44 PerfScore 183.46 -G_M43250_IG02: ; bbWeight=12.44, gcVars=0000000000001000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V03}
+ ;; size=72 bbWeight=12.44 PerfScore 171.02 +G_M43250_IG02: ; bbWeight=12.44, gcVars=0000000000000800 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V03 V11}
cmp gword ptr [rbp+0xA8], 0
- je G_M43250_IG19
+ je G_M43250_IG18
mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor] cmp qword ptr [rcx], rdx
- jne G_M43250_IG19
+ jne G_M43250_IG18
jmp SHORT G_M43250_IG07 ;; size=42 bbWeight=12.44 PerfScore 127.49 G_M43250_IG03: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz @@ -89,7 +88,7 @@ G_M43250_IG04: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[rdx] cmp gword ptr [rax+0x10], rdx jne SHORT G_M43250_IG07
- jmp G_M43250_IG17
+ jmp G_M43250_IG16
;; size=47 bbWeight=92.81 PerfScore 1345.78 G_M43250_IG05: ; bbWeight=18.56, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rdx] @@ -110,9 +109,9 @@ G_M43250_IG06: ; bbWeight=92.81, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne G_M43250_IG17
+ jne G_M43250_IG16
;; size=18 bbWeight=92.81 PerfScore 603.28
-G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0xA8] ; gcrRegs +[rdi] add rdi, 8 @@ -122,25 +121,25 @@ G_M43250_IG07: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by ; gcrRegs +[r14] mov rax, r14 ; gcrRegs +[rax]
- mov r15d, dword ptr [rdi+0x14] - cmp r15d, dword ptr [rax+0x14] - jne SHORT G_M43250_IG10 - ;; size=27 bbWeight=99 PerfScore 940.50
+ mov ecx, dword ptr [rdi+0x14] + cmp ecx, dword ptr [rax+0x14] + jne G_M43250_IG17 + ;; size=29 bbWeight=99 PerfScore 940.50
G_M43250_IG08: ; bbWeight=396, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0080 {rdi}, byref, isz mov r8d, dword ptr [rdi+0x10] cmp r8d, dword ptr [rax+0x10]
- jae SHORT G_M43250_IG11 - mov r13, gword ptr [rax+0x08] - ; gcrRegs +[r13] - cmp r8d, dword ptr [r13+0x08]
+ jae SHORT G_M43250_IG10 + mov r15, gword ptr [rax+0x08] + ; gcrRegs +[r15] + cmp r8d, dword ptr [r15+0x08]
jae SHORT G_M43250_IG09 mov ecx, r8d
- mov rdx, gword ptr [r13+8*rcx+0x10]
+ mov rdx, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[rdx] lea rcx, bword ptr [rdi+0x08] ; byrRegs +[rcx] call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rax rdx r13-r14]
+ ; gcrRegs -[rax rdx r14-r15]
; byrRegs -[rcx] inc dword ptr [rdi+0x10] jmp G_M43250_IG03 @@ -151,13 +150,9 @@ G_M43250_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M43250_IG10: ; bbWeight=396, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
+G_M43250_IG10: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx r14] ; byrRegs +[rdi]
- cmp r15d, dword ptr [r14+0x14] - jne G_M43250_IG18 - ;; size=10 bbWeight=396 PerfScore 1584.00 -G_M43250_IG11: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {rdi}, byref
mov ecx, dword ptr [r14+0x10] inc ecx mov dword ptr [rdi+0x10], ecx @@ -165,29 +160,29 @@ G_M43250_IG11: ; bbWeight=99, gcrefRegs=4008 {rbx r14}, byrefRegs=0080 {r ; gcrRegs +[rcx] mov gword ptr [rdi+0x08], rcx ;; size=15 bbWeight=99 PerfScore 445.50
-G_M43250_IG12: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG11: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx r14] ; byrRegs -[rdi] test ecx, ecx
- je G_M43250_IG28
+ je G_M43250_IG26
;; size=8 bbWeight=99 PerfScore 123.75
-G_M43250_IG13: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG12: ; bbWeight=92.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
jmp G_M43250_IG03 ;; size=5 bbWeight=92.81 PerfScore 185.62
-G_M43250_IG14: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG13: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rsi+0x10] mov r11, qword ptr [rcx+0x18] test r11, r11
- jne G_M43250_IG24
+ jne G_M43250_IG23
;; size=17 bbWeight=0.94 PerfScore 4.92
-G_M43250_IG15: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG14: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD ; gcr arg pop 0 mov r11, rax ;; size=21 bbWeight=0.19 PerfScore 0.33
-G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG15: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] call [r11] @@ -195,7 +190,7 @@ G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; function address cmp qword ptr [rbx+0x18], rdx
- je G_M43250_IG23
+ je G_M43250_IG22
mov rdx, rax ; gcrRegs +[rdx] mov rcx, gword ptr [rbx+0x08] @@ -204,27 +199,27 @@ G_M43250_IG16: ; bbWeight=0.94, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M43250_IG19
+ je SHORT G_M43250_IG18
;; size=44 bbWeight=0.94 PerfScore 13.83
-G_M43250_IG17: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43250_IG16: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov dword ptr [rbp+0x9C], 1
- jmp G_M43250_IG30
+ jmp G_M43250_IG28
;; size=15 bbWeight=93.75 PerfScore 281.25
-G_M43250_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43250_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M43250_IG19: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43250_IG18: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.DependencyInjection.ServiceDescriptor] cmp qword ptr [rcx], rdx
- je SHORT G_M43250_IG21
+ je SHORT G_M43250_IG20
;; size=22 bbWeight=1.00 PerfScore 5.25
-G_M43250_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43250_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, gword ptr [rbp+0xA8] ; gcrRegs +[rcx] @@ -233,9 +228,9 @@ G_M43250_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov ecx, eax
- jmp G_M43250_IG27 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M43250_IG21: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43250_IG25
...

-18 (-5.06%) : 20474.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier1)

@@ -14,7 +14,7 @@ ; V02 loc0 [V02,T05] ( 3, 1 ) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 5, 4 ) ubyte -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V04 loc2 [V04,T07] ( 3, 0.70) ref -> rax class-hnd single-def <<unknown class>>
-; V05 loc3 [V05 ] ( 15, 0 ) struct (24) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
+; V05 loc3 [V05 ] ( 13, 0 ) struct (24) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
; V06 loc4 [V06,T10] ( 2, 0 ) ref -> r8 class-hnd exact <System.String> ; V07 loc5 [V07,T03] ( 5, 1.76) ref -> r8 class-hnd exact <System.String> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -23,10 +23,10 @@ ;* V11 tmp3 [V11,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V12 tmp4 [V12,T08] ( 4, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ; V13 tmp5 [V13,T01] ( 3, 1.35) ref -> rsi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
-; V14 tmp6 [V14 ] ( 4, 0 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V05._list (fldOffset=0x0)" P-DEP
+; V14 tmp6 [V14 ] ( 3, 0 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V05._list (fldOffset=0x0)" P-DEP
; V15 tmp7 [V15 ] ( 4, 0 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V05._current (fldOffset=0x8)" P-DEP ; V16 tmp8 [V16 ] ( 7, 0 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V05._index (fldOffset=0x10)" P-DEP
-; V17 tmp9 [V17 ] ( 3, 0 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V05._version (fldOffset=0x14)" P-DEP
+; V17 tmp9 [V17 ] ( 2, 0 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V05._version (fldOffset=0x14)" P-DEP
; V18 tmp10 [V18,T09] ( 3, 0 ) ref -> rcx "arr expr" ; V19 PSPSym [V19,T06] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V20 cse0 [V20,T02] ( 4, 2.70) ref -> rdi "CSE - aggressive" @@ -68,7 +68,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=004 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M53769_IG14
+ je G_M53769_IG13
;; size=31 bbWeight=1 PerfScore 8.00 G_M53769_IG04: ; bbWeight=0.35, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz mov rdx, rdi @@ -93,12 +93,12 @@ G_M53769_IG04: ; bbWeight=0.35, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcrRegs -[rax rcx rdx rsi rdi r8] ; gcr arg pop 0 ;; size=57 bbWeight=0.35 PerfScore 3.60
-G_M53769_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M53769_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp G_M53769_IG14 - ;; size=11 bbWeight=1 PerfScore 3.25
+ jmp SHORT G_M53769_IG13 + ;; size=8 bbWeight=1 PerfScore 3.25
G_M53769_IG06: ; bbWeight=0, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] +[rax rsi] lea rdx, [rbp-0x38] @@ -132,10 +132,10 @@ G_M53769_IG09: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov edx, dword ptr [rbp-0x24] cmp edx, dword ptr [rcx+0x14]
- jne SHORT G_M53769_IG11
+ jne SHORT G_M53769_IG12
mov edx, dword ptr [rbp-0x28] cmp edx, dword ptr [rcx+0x10]
- jae SHORT G_M53769_IG12
+ jae SHORT G_M53769_IG11
mov rcx, gword ptr [rcx+0x08] mov edx, dword ptr [rcx+0x08] cmp dword ptr [rbp-0x28], edx @@ -156,14 +156,6 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=5 bbWeight=0 PerfScore 0.00 G_M53769_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- mov eax, dword ptr [rbp-0x24] - mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - cmp eax, dword ptr [rcx+0x14] - jne SHORT G_M53769_IG13 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M53769_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
mov rax, gword ptr [rbp-0x38] ; gcrRegs +[rax] mov eax, dword ptr [rax+0x10] @@ -173,17 +165,17 @@ G_M53769_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor rax, rax ; gcrRegs +[rax] mov gword ptr [rbp-0x30], rax
- jmp G_M53769_IG05 - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M53769_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M53769_IG05 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M53769_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x20], 0
- je SHORT G_M53769_IG15
+ je SHORT G_M53769_IG14
mov rcx, gword ptr [rbp-0x40] ; gcrRegs +[rcx] ; GC ptr vars -{V02} @@ -191,10 +183,10 @@ G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=1 PerfScore 5.00
-G_M53769_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M53769_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M53769_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 88 pop rbx pop rsi @@ -202,7 +194,7 @@ G_M53769_IG16: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.25
-G_M53769_IG17: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M53769_IG16: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02} push rbp push rdi @@ -213,9 +205,9 @@ G_M53769_IG17: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x70] ;; size=21 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M53769_IG17: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x20], 0
- je SHORT G_M53769_IG19
+ je SHORT G_M53769_IG18
mov rcx, gword ptr [rbp-0x40] ; gcrRegs +[rcx] ; GC ptr vars -{V02} @@ -223,10 +215,10 @@ G_M53769_IG18: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=000 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M53769_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M53769_IG20: ; bbWeight=0, funclet epilog, nogc, extend
+G_M53769_IG19: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 40 pop rbx pop rsi @@ -235,7 +227,7 @@ G_M53769_IG20: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 38, PerfScore 35.43, instruction count 112, allocated bytes for code 356 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier1)
+; Total bytes of code 338, prolog size 38, PerfScore 35.43, instruction count 108, allocated bytes for code 338 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier1)
; ============================================================ Unwind Info: @@ -270,4 +262,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M53769_IG03..G_M53769_IG14) handled by [G_M53769_IG17..END) (fault)
+EH#0: try [G_M53769_IG03..G_M53769_IG13) handled by [G_M53769_IG16..END) (fault)
+24 (+2.05%) : 51590.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
@@ -11,7 +11,7 @@ ; ; V00 this [V00,T01] ( 25,876.16) byref -> rbx this single-def ; V01 arg1 [V01,T12] ( 4, 3.50) byref -> rsi single-def
-; V02 loc0 [V02,T03] ( 18,497.31) ushort -> r14
+; V02 loc0 [V02,T03] ( 18,497.74) ushort -> r14
; V03 loc1 [V03 ] ( 39,252.75) struct (32) [rbp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T08] ( 6, 63.51) ushort -> r15 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -115,19 +115,19 @@ G_M25128_IG04: ; bbWeight=4.67, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs lea eax, [rcx+0x01] mov dword ptr [rbx+0x10], eax cmp ecx, dword ptr [rbx+0x08]
- jae G_M25128_IG50
+ jae G_M25128_IG59
mov rax, bword ptr [rbx] ; byrRegs +[rax] mov ecx, ecx movzx rdi, word ptr [rax+2*rcx] test edi, edi
- je G_M25128_IG62
+ je G_M25128_IG57
;; size=32 bbWeight=4.67 PerfScore 51.33 G_M25128_IG05: ; bbWeight=1.17, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref ; byrRegs -[rax] mov r14d, edi test r14d, r14d
- je G_M25128_IG44
+ je G_M25128_IG46
;; size=12 bbWeight=1.17 PerfScore 1.75 G_M25128_IG06: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref cmp r14d, 44 @@ -171,146 +171,119 @@ G_M25128_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs mov r15d, edi mov eax, dword ptr [rbx+0x10] cmp eax, dword ptr [rbx+0x08]
- jge G_M25128_IG39
+ jge G_M25128_IG43
lea ecx, [rax+0x01] mov dword ptr [rbx+0x10], ecx cmp eax, dword ptr [rbx+0x08]
- jae G_M25128_IG50
+ jae G_M25128_IG59
mov rcx, bword ptr [rbx] ; byrRegs +[rcx] movzx r14, word ptr [rcx+2*rax] test r14d, r14d
- je G_M25128_IG62
+ je G_M25128_IG57
;; size=47 bbWeight=0.33 PerfScore 5.66 G_M25128_IG14: ; bbWeight=61.84, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref ; byrRegs -[rcx] test r14d, r14d je G_M25128_IG49 ;; size=9 bbWeight=61.84 PerfScore 77.30
-G_M25128_IG15: ; bbWeight=61.67, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M25128_IG15: ; bbWeight=61.67, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
test r15d, r15d
- jne G_M25128_IG51
+ jne G_M25128_IG62
cmp r14d, 44
- je SHORT G_M25128_IG17 - ;; size=15 bbWeight=61.67 PerfScore 154.18
+ je G_M25128_IG42 + ;; size=19 bbWeight=61.67 PerfScore 154.18
G_M25128_IG16: ; bbWeight=60.85, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref cmp r14d, 61
- jne G_M25128_IG36
+ je G_M25128_IG42
;; size=10 bbWeight=60.85 PerfScore 76.06
-G_M25128_IG17: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref - mov edi, dword ptr [rbx+0x10] - lea ecx, [rdi-0x01] - mov dword ptr [rbx+0x10], ecx - ;; size=9 bbWeight=0.33 PerfScore 1.17 -G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz - ; byrRegs -[rbx] - test r15d, r15d - jne SHORT G_M25128_IG20 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M25128_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M25128_IG17: ; bbWeight=61.34, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + cmp r14d, 39 + je G_M25128_IG57 + ;; size=10 bbWeight=61.34 PerfScore 76.67 +G_M25128_IG18: ; bbWeight=60.91, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + cmp r14d, 34 + je G_M25128_IG57 + ;; size=10 bbWeight=60.91 PerfScore 76.14 +G_M25128_IG19: ; bbWeight=61.34, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz + cmp r14d, 92 + je SHORT G_M25128_IG24 + ;; size=6 bbWeight=61.34 PerfScore 76.67 +G_M25128_IG20: ; bbWeight=61.28, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov ecx, dword ptr [rbp+0x20]
- test ecx, ecx - jle SHORT G_M25128_IG20 - dec ecx - cmp ecx, dword ptr [rbp+0x30] - jae G_M25128_IG50
mov rax, bword ptr [rbp+0x28] ; byrRegs +[rax]
- movzx rcx, word ptr [rax+2*rcx] - call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte]
+ mov edx, dword ptr [rbp+0x30] + cmp ecx, edx + jae G_M25128_IG60 + mov edx, ecx + mov word ptr [rax+2*rdx], r14w + inc ecx + mov dword ptr [rbp+0x20], ecx + ;; size=30 bbWeight=61.28 PerfScore 413.63 +G_M25128_IG21: ; bbWeight=61.28, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; byrRegs -[rax]
- ; gcr arg pop 0 - test eax, eax - jne G_M25128_IG63 - ;; size=40 bbWeight=0.50 PerfScore 6.38 -G_M25128_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz - mov ecx, dword ptr [rbp+0x20] - cmp ecx, dword ptr [rbp+0x30] - ja G_M25128_IG64 - mov rax, bword ptr [rbp+0x28] - ; byrRegs +[rax] - mov bword ptr [rbp+0x08], rax - mov dword ptr [rbp+0x10], ecx - lea rcx, [rbp+0x08] - call [<unknown method>] - ; gcrRegs +[rax] - ; byrRegs -[rax] - ; gcr arg pop 0 - mov r14, rax - ; gcrRegs +[r14] - mov rdx, gword ptr [rbp+0x18] - ; gcrRegs +[rdx] - vxorps ymm0, ymm0, ymm0 - vmovdqu ymmword ptr [rbp+0x18], ymm0 - test rdx, rdx - jne SHORT G_M25128_IG27 - ;; size=54 bbWeight=0.50 PerfScore 7.17 -G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rax rdx] - mov rcx, rsi - ; byrRegs +[rcx] - mov rdx, r14 - ; gcrRegs +[rdx] - call CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[rdx r14] - ; byrRegs -[rcx rsi] - mov eax, 3 - mov rcx, 0xD1FFAB1E - cmp qword ptr [rbp], rcx - je SHORT G_M25128_IG22 - call CORINFO_HELP_FAIL_FAST - ; gcr arg pop 0 - ;; size=37 bbWeight=0.50 PerfScore 3.00 -G_M25128_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=0.50 PerfScore 0.12 -G_M25128_IG23: ; bbWeight=0.50, epilog, nogc, extend - lea rsp, [rbp+0x38] - pop rbx - pop rsi - pop rdi - pop r14 - pop r15 - pop rbp - ret - ;; size=13 bbWeight=0.50 PerfScore 2.25 -G_M25128_IG24: ; bbWeight=61.28, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz - ; byrRegs +[rbx rsi]
mov ecx, dword ptr [rbx+0x10] cmp ecx, dword ptr [rbx+0x08]
- jge SHORT G_M25128_IG32 - ;; size=8 bbWeight=61.28 PerfScore 367.67 -G_M25128_IG25: ; bbWeight=244.03, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ jge G_M25128_IG32 + ;; size=12 bbWeight=61.28 PerfScore 367.67 +G_M25128_IG22: ; bbWeight=244.03, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
lea eax, [rcx+0x01] mov dword ptr [rbx+0x10], eax cmp ecx, dword ptr [rbx+0x08]
- jae G_M25128_IG50
+ jae G_M25128_IG59
mov rax, bword ptr [rbx] ; byrRegs +[rax] mov ecx, ecx movzx r14, word ptr [rax+2*rcx] test r14d, r14d
- je G_M25128_IG62
+ je G_M25128_IG57
;; size=34 bbWeight=244.03 PerfScore 2684.30
-G_M25128_IG26: ; bbWeight=61.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M25128_IG23: ; bbWeight=61.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; byrRegs -[rax] jmp G_M25128_IG14 ;; size=5 bbWeight=61.01 PerfScore 122.01
-G_M25128_IG27: ; bbWeight=0.02, gcrefRegs=4004 {rdx r14}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs +[rdx r14] - ; byrRegs -[rbx] - mov rcx, 0xD1FFAB1E ; const ptr - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - xor r8d, r8d - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - jmp SHORT G_M25128_IG21 - ;; size=24 bbWeight=0.02 PerfScore 0.19
+G_M25128_IG24: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + mov edi, dword ptr [rbx+0x10] + cmp edi, dword ptr [rbx+0x08] + jge G_M25128_IG45 + ;; size=12 bbWeight=0.06 PerfScore 0.37 +G_M25128_IG25: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + lea ecx, [rdi+0x01] + mov dword ptr [rbx+0x10], ecx + cmp edi, dword ptr [rbx+0x08] + jae G_M25128_IG59 + mov rcx, bword ptr [rbx] + ; byrRegs +[rcx] + mov edx, edi + movzx rdx, word ptr [rcx+2*rdx] + test edx, edx + je G_M25128_IG57 + ;; size=32 bbWeight=0.24 PerfScore 2.68 +G_M25128_IG26: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rcx] + cmp edx, 61 + ja G_M25128_IG65 + cmp edx, 39 + ja G_M25128_IG64 + cmp edx, 34 + jne G_M25128_IG63 + ;; size=27 bbWeight=0.06 PerfScore 0.23 +G_M25128_IG27: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbp+0x20] + mov rax, bword ptr [rbp+0x28] + ; byrRegs +[rax] + mov r8d, dword ptr [rbp+0x30] + cmp ecx, r8d + jae G_M25128_IG50 + mov r8d, ecx + mov word ptr [rax+2*r8], dx + inc ecx + mov dword ptr [rbp+0x20], ecx + jmp G_M25128_IG21 + ;; size=38 bbWeight=0.06 PerfScore 0.53
G_M25128_IG28: ; bbWeight=4.67, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
- ; gcrRegs -[r14]
...

+2 (+2.13%) : 114732.dasm - Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (Tier1)

@@ -8,30 +8,31 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 3, 4 ) ref -> rbx this class-hnd single-def <Fluid.Ast.NamedExpressionList> -; V01 arg1 [V01,T09] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]>
+; V00 this [V00,T11] ( 3, 4 ) ref -> rbx this class-hnd single-def <Fluid.Ast.NamedExpressionList> +; V01 arg1 [V01,T10] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Fluid.Ast.FilterArgument]> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Fluid.Ast.FilterArgument> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Fluid.Ast.FilterArgument]>
-;* V07 tmp3 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp3 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]> ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref "field V03.<Name>k__BackingField (fldOffset=0x0)" P-INDEP ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref "field V03.<Expression>k__BackingField (fldOffset=0x8)" P-INDEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> rdi single-def "V02.[000..008)" ; V12 tmp8 [V12,T00] ( 6, 21 ) int -> rbp "V02.[008..012)"
-; V13 tmp9 [V13,T07] ( 2, 9 ) int -> rsi single-def "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rdx "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ref -> r8 "V02.[024..032)"
+; V13 tmp9 [V13,T08] ( 2, 9 ) int -> rsi single-def "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rdx "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ref -> r8 "V02.[024..032)"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[000..008)" ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def "V06.[008..012)"
-; V18 tmp14 [V18,T11] ( 2, 2 ) int -> rsi single-def "V06.[012..016)"
+; V18 tmp14 [V18,T12] ( 2, 2 ) int -> rsi single-def "V06.[012..016)"
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[016..024)" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[024..032)" ; V21 tmp17 [V21,T01] ( 3, 24 ) byref -> rcx "Spilling address for field-by-field copy" ; V22 tmp18 [V22,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V23 cse0 [V23,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V23 cse0 [V23,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V24 cse1 [V24,T04] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -62,9 +63,10 @@ G_M54163_IG03: ; bbWeight=2, gcrefRegs=018C {rdx rbx rdi r8}, byrefRegs=0 ;; size=9 bbWeight=2 PerfScore 6.50 G_M54163_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- cmp esi, dword ptr [rdi+0x14]
+ mov ecx, dword ptr [rdi+0x14] + cmp esi, ecx
jne SHORT G_M54163_IG08
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M54163_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rdi+0x10] cmp ebp, ecx @@ -105,7 +107,7 @@ G_M54163_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 8, PerfScore 129.50, instruction count 36, allocated bytes for code 94 (MethodHash=a12e2c6c) for method Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 96 (MethodHash=a12e2c6c) for method Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (Tier1)
; ============================================================ Unwind Info:

+2 (+2.13%) : 126912.dasm - Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (FullOpts)

@@ -8,30 +8,31 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 3, 4 ) ref -> rbx this class-hnd single-def <Fluid.Ast.NamedExpressionList> -; V01 arg1 [V01,T09] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]>
+; V00 this [V00,T11] ( 3, 4 ) ref -> rbx this class-hnd single-def <Fluid.Ast.NamedExpressionList> +; V01 arg1 [V01,T10] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Fluid.Ast.FilterArgument]> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Fluid.Ast.FilterArgument> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Fluid.Ast.FilterArgument]>
-;* V07 tmp3 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp3 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]> ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref "field V03.<Name>k__BackingField (fldOffset=0x0)" P-INDEP ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref "field V03.<Expression>k__BackingField (fldOffset=0x8)" P-INDEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> rdi single-def "V02.[000..008)" ; V12 tmp8 [V12,T00] ( 6, 21 ) int -> rbp "V02.[008..012)"
-; V13 tmp9 [V13,T07] ( 2, 9 ) int -> rsi single-def "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rdx "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ref -> r8 "V02.[024..032)"
+; V13 tmp9 [V13,T08] ( 2, 9 ) int -> rsi single-def "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rdx "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ref -> r8 "V02.[024..032)"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[000..008)" ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def "V06.[008..012)"
-; V18 tmp14 [V18,T11] ( 2, 2 ) int -> rsi single-def "V06.[012..016)"
+; V18 tmp14 [V18,T12] ( 2, 2 ) int -> rsi single-def "V06.[012..016)"
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[016..024)" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[024..032)" ; V21 tmp17 [V21,T01] ( 3, 24 ) byref -> rcx "Spilling address for field-by-field copy" ; V22 tmp18 [V22,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V23 cse0 [V23,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V23 cse0 [V23,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V24 cse1 [V24,T04] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -62,9 +63,10 @@ G_M54163_IG03: ; bbWeight=2, gcrefRegs=018C {rdx rbx rdi r8}, byrefRegs=0 ;; size=9 bbWeight=2 PerfScore 6.50 G_M54163_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- cmp esi, dword ptr [rdi+0x14]
+ mov ecx, dword ptr [rdi+0x14] + cmp esi, ecx
jne SHORT G_M54163_IG08
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M54163_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rdi+0x10] cmp ebp, ecx @@ -105,7 +107,7 @@ G_M54163_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 8, PerfScore 129.50, instruction count 36, allocated bytes for code 94 (MethodHash=a12e2c6c) for method Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 96 (MethodHash=a12e2c6c) for method Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-12 (-3.76%) : 18114.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)

@@ -10,72 +10,72 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> rbx class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [rbp-0x38] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> rsi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> rdi single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> r8 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> r13 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x50], rsp
+ sub rsp, 56 + lea rbp, [rsp+0x60] + mov qword ptr [rbp-0x40], rsp
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=27 bbWeight=1 PerfScore 8.25
G_M53769_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0x40], rbx
+ mov gword ptr [rbp-0x38], rbx
; GC ptr vars +{V02} xor edx, edx
- mov dword ptr [rbp-0x38], edx
+ mov dword ptr [rbp-0x30], edx
;; size=9 bbWeight=1 PerfScore 2.25
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0
jne SHORT G_M53769_IG06
- lea rdx, [rbp-0x38]
+ lea rdx, [rbp-0x30]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x38]
+ movzx rcx, byte ptr [rbp-0x30]
call [<unknown method>] ; gcr arg pop 0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M53769_IG12
+ je G_M53769_IG11
;; size=41 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz mov rdx, rdi @@ -85,22 +85,23 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M53769_IG11
+ je SHORT G_M53769_IG10
mov rdi, rax mov r14d, dword ptr [rdi+0x14] xor r15d, r15d ;; size=33 bbWeight=0.50 PerfScore 2.62 G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- mov r13d, dword ptr [rdi+0x14] - cmp r14d, r13d - jne SHORT G_M53769_IG07 - cmp r15d, dword ptr [rdi+0x10] - jae SHORT G_M53769_IG08
+ mov ecx, dword ptr [rdi+0x14] + cmp r14d, ecx + jne SHORT G_M53769_IG09 + mov ecx, dword ptr [rdi+0x10] + cmp r15d, ecx + jae SHORT G_M53769_IG07
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M53769_IG09
+ jae SHORT G_M53769_IG08
mov edx, r15d mov r8, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[r8] @@ -112,7 +113,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0 jmp SHORT G_M53769_IG05
- ;; size=50 bbWeight=4 PerfScore 85.00
+ ;; size=51 bbWeight=4 PerfScore 82.00
G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rsi rdi] call [System.Threading.Monitor:ThrowLockTakenException()] @@ -121,26 +122,22 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M53769_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- cmp r14d, r13d - jne SHORT G_M53769_IG10 - ;; size=5 bbWeight=4 PerfScore 5.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp SHORT G_M53769_IG12
+ jmp SHORT G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 13.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi] mov r8, rdi ; gcrRegs +[r8] @@ -155,75 +152,72 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)] ; gcrRegs -[rcx rdx rsi rdi r8] ; gcr arg pop 0
- jmp SHORT G_M53769_IG08
+ jmp SHORT G_M53769_IG07
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG14
+ cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, gword ptr [rbp-0x40]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx] ; GC ptr vars -{V02} call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.00
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M53769_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 64
+G_M53769_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 56
pop rbx pop rsi pop rdi
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16}
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17}
push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70] - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M53769_IG17: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG18 - mov rcx, gword ptr [rbp-0x40]
+ lea rbp, [rbp+0x60] + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M53769_IG16: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG17 + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

-12 (-3.76%) : 11152.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)

@@ -10,72 +10,72 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> rbx class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [rbp-0x38] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> rsi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> rdi single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> r8 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> r13 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x50], rsp
+ sub rsp, 56 + lea rbp, [rsp+0x60] + mov qword ptr [rbp-0x40], rsp
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=27 bbWeight=1 PerfScore 8.25
G_M53769_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0x40], rbx
+ mov gword ptr [rbp-0x38], rbx
; GC ptr vars +{V02} xor edx, edx
- mov dword ptr [rbp-0x38], edx
+ mov dword ptr [rbp-0x30], edx
;; size=9 bbWeight=1 PerfScore 2.25
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0
jne SHORT G_M53769_IG06
- lea rdx, [rbp-0x38]
+ lea rdx, [rbp-0x30]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x38]
+ movzx rcx, byte ptr [rbp-0x30]
call [<unknown method>] ; gcr arg pop 0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M53769_IG12
+ je G_M53769_IG11
;; size=41 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz mov rdx, rdi @@ -85,22 +85,23 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M53769_IG11
+ je SHORT G_M53769_IG10
mov rdi, rax mov r14d, dword ptr [rdi+0x14] xor r15d, r15d ;; size=33 bbWeight=0.50 PerfScore 2.62 G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- mov r13d, dword ptr [rdi+0x14] - cmp r14d, r13d - jne SHORT G_M53769_IG07 - cmp r15d, dword ptr [rdi+0x10] - jae SHORT G_M53769_IG08
+ mov ecx, dword ptr [rdi+0x14] + cmp r14d, ecx + jne SHORT G_M53769_IG09 + mov ecx, dword ptr [rdi+0x10] + cmp r15d, ecx + jae SHORT G_M53769_IG07
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M53769_IG09
+ jae SHORT G_M53769_IG08
mov edx, r15d mov r8, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[r8] @@ -112,7 +113,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0 jmp SHORT G_M53769_IG05
- ;; size=50 bbWeight=4 PerfScore 85.00
+ ;; size=51 bbWeight=4 PerfScore 82.00
G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rsi rdi] call [System.Threading.Monitor:ThrowLockTakenException()] @@ -121,26 +122,22 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M53769_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- cmp r14d, r13d - jne SHORT G_M53769_IG10 - ;; size=5 bbWeight=4 PerfScore 5.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp SHORT G_M53769_IG12
+ jmp SHORT G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 13.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi] mov r8, rdi ; gcrRegs +[r8] @@ -155,75 +152,72 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)] ; gcrRegs -[rcx rdx rsi rdi r8] ; gcr arg pop 0
- jmp SHORT G_M53769_IG08
+ jmp SHORT G_M53769_IG07
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG14
+ cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, gword ptr [rbp-0x40]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx] ; GC ptr vars -{V02} call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.00
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M53769_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 64
+G_M53769_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 56
pop rbx pop rsi pop rdi
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16}
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17}
push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70] - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M53769_IG17: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG18 - mov rcx, gword ptr [rbp-0x40]
+ lea rbp, [rbp+0x60] + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M53769_IG16: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG17 + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

-24 (-1.48%) : 23715.dasm - System.Formats.Tar.TarReader+d__8:MoveNext():this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 29, 37 ) byref -> [rbp+0x10] this EH-live single-def
-; V01 loc0 [V01,T29] ( 6, 6 ) int -> [rbp-0x34] do-not-enreg[Z] EH-live
+; V01 loc0 [V01,T29] ( 6, 6 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
; V02 loc1 [V02,T30] ( 6, 6 ) ref -> rbx class-hnd exact single-def <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.IO.Stream>
-; V04 loc3 [V04 ] ( 10, 31 ) struct (16) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter> -; V05 loc4 [V05 ] ( 6, 15 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask>
+; V04 loc3 [V04 ] ( 10, 31 ) struct (16) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter> +; V05 loc4 [V05 ] ( 6, 15 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask>
;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
-; V07 loc6 [V07 ] ( 10, 10 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
+; V07 loc6 [V07 ] ( 10, 10 ) struct (16) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -31,11 +31,11 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> ;* V21 tmp12 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
-; V23 tmp14 [V23,T16] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object> -; V24 tmp15 [V24,T17] ( 2, 16 ) short -> rcx "Inlining Arg"
+; V23 tmp14 [V23,T15] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object> +; V24 tmp15 [V24,T16] ( 2, 16 ) short -> rcx "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter> ;* V26 tmp17 [V26,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V27 tmp18 [V27,T07] ( 7, 28 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Object>
+; V27 tmp18 [V27,T06] ( 7, 28 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Object>
; V28 tmp19 [V28,T21] ( 2, 8 ) int -> rcx ; V29 tmp20 [V29,T20] ( 3, 12 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task> ;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -45,13 +45,13 @@ ;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp26 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V37 tmp28 [V37,T08] ( 7, 28 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Object>
+; V37 tmp28 [V37,T07] ( 7, 28 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Object>
; V38 tmp29 [V38,T22] ( 2, 8 ) int -> rcx
-; V39 tmp30 [V39,T15] ( 4, 16 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V39 tmp30 [V39,T14] ( 4, 16 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V41 tmp32 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp33 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp34 [V43,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp34 [V43,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp35 [V44,T00] ( 9,144 ) byref -> r14 "Inlining Arg" ; V45 tmp36 [V45,T05] ( 4, 32 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ;* V46 tmp37 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> @@ -75,7 +75,7 @@ ;* V64 tmp55 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ; V65 tmp56 [V65,T24] ( 4, 8 ) byref -> rcx single-def "Inlining Arg" ;* V66 tmp57 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V67 tmp58 [V67,T14] ( 10, 20 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+; V67 tmp58 [V67,T13] ( 10, 20 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
; V68 tmp59 [V68,T40] ( 2, 4 ) struct ( 8) rbx "Inlining Arg" <System.Threading.Tasks.VoidTaskResult> ; V69 tmp60 [V69,T19] ( 6, 12 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource> ;* V70 tmp61 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -87,14 +87,14 @@ ;* V76 tmp67 [V76,T57] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V77 tmp68 [V77,T46] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties> ; V78 tmp69 [V78,T44] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V79 tmp70 [V79,T33] ( 5, 5 ) int -> [rbp-0x6C] spill-single-def "Inline stloc first use temp"
+; V79 tmp70 [V79,T33] ( 5, 5 ) int -> [rbp-0x64] spill-single-def "Inline stloc first use temp"
; V80 tmp71 [V80,T53] ( 3, 3 ) ubyte -> rax "Inline return value spill temp"
-; V81 tmp72 [V81,T03] ( 6, 41 ) int -> [rbp-0x70] "Inline stloc first use temp"
+; V81 tmp72 [V81,T03] ( 6, 41 ) int -> [rbp-0x68] "Inline stloc first use temp"
; V82 tmp73 [V82,T11] ( 3, 24 ) int -> rax "Inline stloc first use temp" ; V83 tmp74 [V83,T47] ( 3, 3 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V84 tmp75 [V84 ] ( 4, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V05._obj (fldOffset=0x0)" P-DEP -; V85 tmp76 [V85 ] ( 4, 10 ) short -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V05._token (fldOffset=0x8)" P-DEP -; V86 tmp77 [V86 ] ( 2, 5 ) ubyte -> [rbp-0x4E] do-not-enreg[X] addr-exposed "field V05._continueOnCapturedContext (fldOffset=0xa)" P-DEP
+; V84 tmp75 [V84 ] ( 4, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V05._obj (fldOffset=0x0)" P-DEP +; V85 tmp76 [V85 ] ( 4, 10 ) short -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V05._token (fldOffset=0x8)" P-DEP +; V86 tmp77 [V86 ] ( 2, 5 ) ubyte -> [rbp-0x46] do-not-enreg[X] addr-exposed "field V05._continueOnCapturedContext (fldOffset=0xa)" P-DEP
; V87 tmp78 [V87,T48] ( 3, 3 ) ref -> rdx single-def "field V18._list (fldOffset=0x0)" P-INDEP ;* V88 tmp79 [V88,T60] ( 0, 0 ) ref -> zero-ref single-def "field V18._current (fldOffset=0x8)" P-INDEP ;* V89 tmp80 [V89,T63] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x10)" P-INDEP @@ -113,7 +113,7 @@ ;* V102 tmp93 [V102 ] ( 0, 0 ) ubyte -> zero-ref "field V47._continueOnCapturedContext (fldOffset=0xa)" P-INDEP ; V103 tmp94 [V103,T01] ( 3, 48 ) ref -> rcx "arr expr" ; V104 tmp95 [V104,T02] ( 3, 48 ) int -> rdx "index expr"
-; V105 tmp96 [V105,T10] ( 3, 24 ) ref -> rcx "argument with side effect"
+; V105 tmp96 [V105,T09] ( 3, 24 ) ref -> rcx "argument with side effect"
; V106 tmp97 [V106,T37] ( 2, 4 ) ref -> rdx "argument with side effect" ; V107 tmp98 [V107,T32] ( 3, 6 ) ref -> rcx single-def "argument with side effect" ; V108 tmp99 [V108,T38] ( 2, 4 ) ref -> rdx single-def "argument with side effect" @@ -121,60 +121,57 @@ ; V110 cse0 [V110,T49] ( 3, 3 ) ref -> rdi "CSE - conservative" ; V111 cse1 [V111,T54] ( 3, 3 ) int -> rdx "CSE - conservative" ; V112 cse2 [V112,T12] ( 3, 24 ) int -> rdx "CSE - moderate"
-; V113 cse3 [V113,T13] ( 3, 24 ) int -> r13 "CSE - moderate"
+; V113 cse3 [V113,T18] ( 2, 16 ) int -> rdx "CSE - moderate"
; V114 cse4 [V114,T50] ( 3, 3 ) ref -> rdx "CSE - conservative"
-; V115 cse5 [V115,T06] ( 4, 32 ) ref -> r15 "CSE - aggressive"
+; V115 cse5 [V115,T10] ( 3, 24 ) ref -> r15 "CSE - aggressive"
; V116 cse6 [V116,T23] ( 4, 11 ) byref -> rcx "CSE - moderate"
-; V117 cse7 [V117,T09] ( 6, 24 ) ref -> rdx multi-def "CSE - aggressive"
+; V117 cse7 [V117,T08] ( 6, 24 ) ref -> rdx multi-def "CSE - aggressive"
;
-; Lcl frame size = 128
+; Lcl frame size = 136
G_M52177_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 128
+ sub rsp, 136
vzeroupper lea rbp, [rsp+0xB0]
- xor eax, eax - mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [rbp-0x60], ymm4
- mov qword ptr [rbp-0x40], rax
+ vmovdqa xmmword ptr [rbp-0x40], xmm4
mov qword ptr [rbp-0x78], rsp mov bword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} mov rsi, rcx ; byrRegs +[rsi]
- ;; size=58 bbWeight=1 PerfScore 15.58
+ ;; size=51 bbWeight=1 PerfScore 14.33
G_M52177_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref mov ecx, dword ptr [rsi+0x08]
- mov dword ptr [rbp-0x34], ecx
+ mov dword ptr [rbp-0x2C], ecx
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx] ;; size=9 bbWeight=1 PerfScore 5.00 G_M52177_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- cmp dword ptr [rbp-0x34], 0
+ cmp dword ptr [rbp-0x2C], 0
je SHORT G_M52177_IG05
- cmp dword ptr [rbp-0x34], 1 - je G_M52177_IG32
+ cmp dword ptr [rbp-0x2C], 1 + je G_M52177_IG31
cmp byte ptr [rbx+0x20], 0
- jne G_M52177_IG38
+ jne G_M52177_IG37
mov byte ptr [rbx+0x20], 1 cmp byte ptr [rbx+0x21], 0
- jne G_M52177_IG38
+ jne G_M52177_IG37
mov rdx, gword ptr [rbx+0x10] ; gcrRegs +[rdx] mov rcx, rdx ; gcrRegs +[rcx] test rcx, rcx
- je G_M52177_IG27
+ je G_M52177_IG26
cmp dword ptr [rcx+0x10], 0
- jle G_M52177_IG27
+ jle G_M52177_IG26
mov edi, dword ptr [rdx+0x14] lea rcx, bword ptr [rsi+0x18] ; gcrRegs -[rcx] @@ -192,37 +189,37 @@ G_M52177_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, mov dword ptr [rsi+0x2C], edi ;; size=6 bbWeight=1 PerfScore 2.00 G_M52177_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- cmp dword ptr [rbp-0x34], 0
+ cmp dword ptr [rbp-0x2C], 0
jne G_M52177_IG18 ;; size=10 bbWeight=1 PerfScore 3.00 G_M52177_IG06: ; bbWeight=1, nogc, extend vmovdqu xmm0, xmmword ptr [rsi+0x30]
- vmovdqu xmmword ptr [rbp-0x48], xmm0
+ vmovdqu xmmword ptr [rbp-0x40], xmm0
;; size=10 bbWeight=1 PerfScore 5.00 G_M52177_IG07: ; bbWeight=1, extend xor edx, edx mov qword ptr [rsi+0x30], rdx mov qword ptr [rsi+0x38], rdx
- mov dword ptr [rbp-0x34], -1
+ mov dword ptr [rbp-0x2C], -1
mov dword ptr [rsi+0x08], -1 jmp G_M52177_IG14 ;; size=29 bbWeight=1 PerfScore 6.25 G_M52177_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz mov rcx, gword ptr [rsi+0x20] ; gcrRegs +[rcx]
- lea rdx, [rbp-0x58]
+ lea rdx, [rbp-0x50]
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0x58] call [rax+0x28]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rdx, gword ptr [rbp-0x58]
+ mov rdx, gword ptr [rbp-0x50]
; gcrRegs +[rdx]
- movsx rcx, word ptr [rbp-0x50] - mov gword ptr [rbp-0x48], rdx - mov word ptr [rbp-0x40], cx - mov byte ptr [rbp-0x3E], 0 - mov rdi, gword ptr [rbp-0x48]
+ movsx rcx, word ptr [rbp-0x48] + mov gword ptr [rbp-0x40], rdx + mov word ptr [rbp-0x38], cx + mov byte ptr [rbp-0x36], 0 + mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi] test rdi, rdi je SHORT G_M52177_IG09 @@ -277,7 +274,7 @@ G_M52177_IG12: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs ; gcrRegs +[rbx rdi] mov rcx, rdi ; gcrRegs +[rcx]
- movsx rdx, word ptr [rbp-0x40]
+ movsx rdx, word ptr [rbp-0x38]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx rdi] @@ -291,7 +288,7 @@ G_M52177_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr mov dword ptr [rsi+0x08], eax lea rdi, bword ptr [rsi+0x30] ; byrRegs +[rdi]
- lea rsi, bword ptr [rbp-0x48]
+ lea rsi, bword ptr [rbp-0x40]
call CORINFO_HELP_ASSIGN_BYREF movsq mov rsi, bword ptr [rbp+0x10] @@ -305,15 +302,15 @@ G_M52177_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x40]
call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M52177_IG24
+ jmp G_M52177_IG23
;; size=55 bbWeight=1 PerfScore 14.75 G_M52177_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz ; gcrRegs +[rbx]
- mov rdi, gword ptr [rbp-0x48]
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi] test rdi, rdi je SHORT G_M52177_IG15 @@ -374,7 +371,7 @@ G_M52177_IG17: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs ...

+4 (+3.01%) : 8415.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T05] ( 3, 8 ) byref -> rbx single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V05 tmp1 [V05,T12] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ;* V07 tmp3 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> @@ -22,16 +22,17 @@ ; V11 tmp7 [V11,T02] ( 4, 12.50) ref -> rdi single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V12 tmp8 [V12,T03] ( 3, 8 ) ref -> rax "field V03._current (fldOffset=0x8)" P-INDEP ; V13 tmp9 [V13,T00] ( 6, 20.50) int -> r14 "field V03._index (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V15 tmp11 [V15,T12] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T10] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V15 tmp11 [V15,T13] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp13 [V17,T14] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP -; V18 tmp14 [V18,T13] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp13 [V17,T15] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP +; V18 tmp14 [V18,T14] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Runtime.Serialization.StreamingContext> ; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> r8 "arr expr" ; V21 tmp17 [V21 ] ( 2, 8 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Runtime.Serialization.StreamingContext>
-; V22 cse0 [V22,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" -; V23 cse1 [V23,T10] ( 3, 2.50) ref -> rdi "CSE - aggressive"
+; V22 cse0 [V22,T07] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V23 cse1 [V23,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V24 cse2 [V24,T11] ( 3, 2.50) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 48 @@ -80,7 +81,8 @@ G_M7587_IG05: ; bbWeight=2, extend ; gcr arg pop 0 ;; size=15 bbWeight=2 PerfScore 11.50 G_M7587_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- cmp ebp, dword ptr [rdi+0x14]
+ mov r8d, dword ptr [rdi+0x14] + cmp ebp, r8d
jne SHORT G_M7587_IG09 mov r8d, dword ptr [rdi+0x10] cmp r14d, r8d @@ -94,7 +96,7 @@ G_M7587_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx ; gcrRegs +[rax] inc r14d jmp SHORT G_M7587_IG04
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M7587_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rsi rdi r8] ; byrRegs -[rbx] @@ -116,7 +118,7 @@ G_M7587_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 133, prolog size 25, PerfScore 121.88, instruction count 46, allocated bytes for code 133 (MethodHash=e780e25c) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
+; Total bytes of code 137, prolog size 25, PerfScore 118.88, instruction count 47, allocated bytes for code 137 (MethodHash=e780e25c) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.01%) : 8463.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T05] ( 3, 8 ) byref -> rbx single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V05 tmp1 [V05,T12] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ;* V07 tmp3 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> @@ -22,16 +22,17 @@ ; V11 tmp7 [V11,T02] ( 4, 12.50) ref -> rdi single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V12 tmp8 [V12,T03] ( 3, 8 ) ref -> rax "field V03._current (fldOffset=0x8)" P-INDEP ; V13 tmp9 [V13,T00] ( 6, 20.50) int -> r14 "field V03._index (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V15 tmp11 [V15,T12] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T10] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V15 tmp11 [V15,T13] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp13 [V17,T14] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP -; V18 tmp14 [V18,T13] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp13 [V17,T15] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP +; V18 tmp14 [V18,T14] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Runtime.Serialization.StreamingContext> ; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> r8 "arr expr" ; V21 tmp17 [V21 ] ( 2, 8 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Runtime.Serialization.StreamingContext>
-; V22 cse0 [V22,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" -; V23 cse1 [V23,T10] ( 3, 2.50) ref -> rdi "CSE - aggressive"
+; V22 cse0 [V22,T07] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V23 cse1 [V23,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V24 cse2 [V24,T11] ( 3, 2.50) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 48 @@ -80,7 +81,8 @@ G_M55938_IG05: ; bbWeight=2, extend ; gcr arg pop 0 ;; size=15 bbWeight=2 PerfScore 11.50 G_M55938_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- cmp ebp, dword ptr [rdi+0x14]
+ mov r8d, dword ptr [rdi+0x14] + cmp ebp, r8d
jne SHORT G_M55938_IG09 mov r8d, dword ptr [rdi+0x10] cmp r14d, r8d @@ -94,7 +96,7 @@ G_M55938_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb ; gcrRegs +[rax] inc r14d jmp SHORT G_M55938_IG04
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M55938_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rsi rdi r8] ; byrRegs -[rbx] @@ -116,7 +118,7 @@ G_M55938_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 133, prolog size 25, PerfScore 121.88, instruction count 46, allocated bytes for code 133 (MethodHash=cff3257d) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
+; Total bytes of code 137, prolog size 25, PerfScore 118.88, instruction count 47, allocated bytes for code 137 (MethodHash=cff3257d) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.01%) : 8332.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.Serialization.JsonContract> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T05] ( 3, 8 ) byref -> rbx single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V05 tmp1 [V05,T12] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Newtonsoft.Json.Serialization.SerializationCallback]> ;* V07 tmp3 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> @@ -22,16 +22,17 @@ ; V11 tmp7 [V11,T02] ( 4, 12.50) ref -> rdi single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V12 tmp8 [V12,T03] ( 3, 8 ) ref -> rax "field V03._current (fldOffset=0x8)" P-INDEP ; V13 tmp9 [V13,T00] ( 6, 20.50) int -> r14 "field V03._index (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T09] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V15 tmp11 [V15,T12] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T10] ( 2, 4.50) int -> rbp single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V15 tmp11 [V15,T13] ( 3, 1.50) ref -> rdi single-def "field V06._list (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp13 [V17,T14] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP -; V18 tmp14 [V18,T13] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp13 [V17,T15] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP +; V18 tmp14 [V18,T14] ( 2, 1 ) int -> rbp single-def "field V06._version (fldOffset=0x14)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Runtime.Serialization.StreamingContext> ; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> r8 "arr expr" ; V21 tmp17 [V21 ] ( 2, 8 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Runtime.Serialization.StreamingContext>
-; V22 cse0 [V22,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" -; V23 cse1 [V23,T10] ( 3, 2.50) ref -> rdi "CSE - aggressive"
+; V22 cse0 [V22,T07] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V23 cse1 [V23,T04] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V24 cse2 [V24,T11] ( 3, 2.50) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 48 @@ -80,7 +81,8 @@ G_M62978_IG05: ; bbWeight=2, extend ; gcr arg pop 0 ;; size=15 bbWeight=2 PerfScore 11.50 G_M62978_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- cmp ebp, dword ptr [rdi+0x14]
+ mov r8d, dword ptr [rdi+0x14] + cmp ebp, r8d
jne SHORT G_M62978_IG09 mov r8d, dword ptr [rdi+0x10] cmp r14d, r8d @@ -94,7 +96,7 @@ G_M62978_IG06: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb ; gcrRegs +[rax] inc r14d jmp SHORT G_M62978_IG04
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M62978_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rsi rdi r8] ; byrRegs -[rbx] @@ -116,7 +118,7 @@ G_M62978_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 133, prolog size 25, PerfScore 121.88, instruction count 46, allocated bytes for code 133 (MethodHash=063809fd) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
+; Total bytes of code 137, prolog size 25, PerfScore 118.88, instruction count 47, allocated bytes for code 137 (MethodHash=063809fd) for method Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-13 (-2.52%) : 93851.dasm - System.Linq.Enumerable:CountSystem.__Canon:int (Tier1)

@@ -25,7 +25,7 @@ ; V13 tmp7 [V13,T09] ( 2, 155.72) int -> rax "guarded devirt return temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V16 tmp10 [V16,T00] ( 12,1094.10) byref -> r15 "Inlining Arg"
+; V16 tmp10 [V16,T00] ( 10,1090.04) byref -> r15 "Inlining Arg"
; V17 tmp11 [V17,T07] ( 4, 310.43) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp13 [V19,T02] ( 3, 461.07) ref -> rcx "arr expr" @@ -57,14 +57,14 @@ G_M54795_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=34 bbWeight=1 PerfScore 9.50 G_M54795_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref test rdi, rdi
- je G_M54795_IG24
+ je G_M54795_IG23
test rbx, rbx
- je G_M54795_IG25
+ je G_M54795_IG24
xor r14d, r14d mov rcx, qword ptr [rsi+0x38] mov r11, qword ptr [rcx+0x10] test r11, r11
- je G_M54795_IG20
+ je G_M54795_IG19
;; size=38 bbWeight=1 PerfScore 8.00 G_M54795_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref mov rcx, rdi @@ -135,10 +135,10 @@ G_M54795_IG10: ; bbWeight=77.86, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcrRegs +[rcx] mov edx, dword ptr [r15+0x14] cmp edx, dword ptr [rcx+0x14]
- jne SHORT G_M54795_IG18
+ jne SHORT G_M54795_IG17
mov edx, dword ptr [r15+0x10] cmp edx, dword ptr [rcx+0x10]
- jae SHORT G_M54795_IG19
+ jae SHORT G_M54795_IG18
;; size=40 bbWeight=77.86 PerfScore 1459.87 G_M54795_IG11: ; bbWeight=76.85, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=8000 {r15}, byref, isz mov rcx, gword ptr [rcx+0x08] @@ -169,7 +169,7 @@ G_M54795_IG12: ; bbWeight=77.86, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ;; size=24 bbWeight=77.86 PerfScore 369.83 G_M54795_IG13: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx]
- jmp SHORT G_M54795_IG21
+ jmp SHORT G_M54795_IG20
;; size=2 bbWeight=1 PerfScore 2.00 G_M54795_IG14: ; bbWeight=5.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx] @@ -194,14 +194,6 @@ G_M54795_IG17: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=7 bbWeight=0 PerfScore 0.00 G_M54795_IG18: ; bbWeight=1.01, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz ; byrRegs +[r15]
- mov ecx, dword ptr [r15+0x14] - mov r11, gword ptr [r15] - ; gcrRegs +[r11] - cmp ecx, dword ptr [r11+0x14] - jne SHORT G_M54795_IG17 - ;; size=13 bbWeight=1.01 PerfScore 8.11 -G_M54795_IG19: ; bbWeight=1.01, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz - ; gcrRegs -[r11]
mov rcx, gword ptr [r15] ; gcrRegs +[rcx] mov ecx, dword ptr [rcx+0x10] @@ -211,9 +203,9 @@ G_M54795_IG19: ; bbWeight=1.01, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15 xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [r15+0x08], rcx
- jmp SHORT G_M54795_IG21
+ jmp SHORT G_M54795_IG20
;; size=20 bbWeight=1.01 PerfScore 8.62
-G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG19: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] +[rbx] ; byrRegs -[r15] ; GC ptr vars -{V04} @@ -224,19 +216,19 @@ G_M54795_IG20: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=008 mov r11, rax jmp G_M54795_IG03 ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG20: ; bbWeight=1, gcVars=0000000000000040 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rbx] ; GC ptr vars +{V04} mov rax, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Product] cmp qword ptr [rdi], rax
- jne SHORT G_M54795_IG26
+ jne SHORT G_M54795_IG25
;; size=15 bbWeight=1 PerfScore 4.25
-G_M54795_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] ; GC ptr vars -{V04} mov eax, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M54795_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 56 pop rbx pop rsi @@ -246,19 +238,19 @@ G_M54795_IG23: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25
-G_M54795_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54795_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov ecx, 17 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M54795_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG25: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi] ; GC ptr vars +{V04} mov rcx, rdi @@ -268,9 +260,9 @@ G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=008 call [r11]<unknown method> ; gcrRegs -[rcx rdi] ; gcr arg pop 0
- jmp SHORT G_M54795_IG22
+ jmp SHORT G_M54795_IG21
;; size=18 bbWeight=0 PerfScore 0.00
-G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M54795_IG26: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} push rbp push r15 @@ -283,14 +275,14 @@ G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x60] ;; size=25 bbWeight=0 PerfScore 0.00
-G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54795_IG27: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x38], 0
- je SHORT G_M54795_IG29
+ je SHORT G_M54795_IG28
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Product] mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] cmp qword ptr [rdi], rcx
- je SHORT G_M54795_IG29
+ je SHORT G_M54795_IG28
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -299,10 +291,10 @@ G_M54795_IG28: ; bbWeight=0, gcVars=0000000000000040 {V04}, gcrefRegs=000 ; gcrRegs -[rcx rdi] ; gcr arg pop 0 ;; size=42 bbWeight=0 PerfScore 0.00
-G_M54795_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54795_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M54795_IG30: ; bbWeight=0, funclet epilog, nogc, extend
+G_M54795_IG29: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 40 pop rbx pop rsi @@ -313,7 +305,7 @@ G_M54795_IG30: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 515, prolog size 34, PerfScore 5333.63, instruction count 150, allocated bytes for code 515 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
+; Total bytes of code 502, prolog size 34, PerfScore 5325.51, instruction count 146, allocated bytes for code 502 (MethodHash=aec129f4) for method System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -352,4 +344,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M54795_IG04..G_M54795_IG20) handled by [G_M54795_IG27..END) (fault)
+EH#0: try [G_M54795_IG04..G_M54795_IG19) handled by [G_M54795_IG26..END) (fault)
-10 (-1.77%) : 39649.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
@@ -9,7 +9,7 @@ ; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 21, 5.50) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V00 this [V00,T00] ( 20, 5.50) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V01 arg1 [V01,T02] ( 4, 2.50) int -> rsi single-def ; V02 arg2 [V02,T03] ( 3, 2 ) int -> rdi single-def ; V03 arg3 [V03,T01] ( 5, 2.50) int -> rbx single-def @@ -98,13 +98,13 @@ G_M62513_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x14], 0
- je G_M62513_IG21
+ je G_M62513_IG20
cmp dword ptr [rcx+0x18], 0 jne SHORT G_M62513_IG10 ;; size=20 bbWeight=0.50 PerfScore 4.50 G_M62513_IG07: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref mov dword ptr [rcx+0x18], esi
- jmp G_M62513_IG21
+ jmp G_M62513_IG20
;; size=8 bbWeight=0.25 PerfScore 0.75 G_M62513_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] @@ -127,7 +127,7 @@ G_M62513_IG10: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, sub esi, dword ptr [rcx+0x18] cmp esi, r14d jg SHORT G_M62513_IG14
- jmp G_M62513_IG21
+ jmp G_M62513_IG20
;; size=13 bbWeight=0.25 PerfScore 1.56 G_M62513_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -140,11 +140,9 @@ G_M62513_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=5 bbWeight=0 PerfScore 0.00 G_M62513_IG13: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x14], 0 - jg G_M62513_IG19
xor eax, eax
- jmp G_M62513_IG20 - ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M62513_IG19 + ;; size=7 bbWeight=0 PerfScore 0.00
G_M62513_IG14: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdx] @@ -230,20 +228,18 @@ G_M62513_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr lea r15d, [rdx-0x01] test edx, edx jg G_M62513_IG16
- ;; size=29 bbWeight=0 PerfScore 0.00 -G_M62513_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
mov eax, r14d sar eax, 31 and eax, 3 add eax, r14d sar eax, 2 add eax, dword ptr [rcx+0x18]
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M62513_IG20: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=47 bbWeight=0 PerfScore 0.00 +G_M62513_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi]
mov dword ptr [rcx+0x18], eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x30], 0 je G_M62513_IG03 ; GC ptr vars -{V00} @@ -252,7 +248,7 @@ G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M62513_IG03 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M62513_IG22: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62513_IG21: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00} push rbp push r15 @@ -265,9 +261,9 @@ G_M62513_IG22: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x60] ;; size=25 bbWeight=0 PerfScore 0.00
-G_M62513_IG23: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62513_IG22: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M62513_IG24
+ je SHORT G_M62513_IG23
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] ; GC ptr vars -{V00} @@ -275,10 +271,10 @@ G_M62513_IG23: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62513_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62513_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62513_IG25: ; bbWeight=0, funclet epilog, nogc, extend
+G_M62513_IG24: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 56 pop rbx pop rsi @@ -289,7 +285,7 @@ G_M62513_IG25: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 33, PerfScore 29.94, instruction count 154, allocated bytes for code 564 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
+; Total bytes of code 554, prolog size 33, PerfScore 29.94, instruction count 152, allocated bytes for code 554 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
; ============================================================ Unwind Info: @@ -328,4 +324,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M62513_IG05..G_M62513_IG21) handled by [G_M62513_IG22..END) (fault)
+EH#0: try [G_M62513_IG05..G_M62513_IG20) handled by [G_M62513_IG21..END) (fault)
-36 (-1.70%) : 89379.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
@@ -64,7 +64,7 @@ ; V51 tmp44 [V51,T05] ( 6, 293138.74) int -> r11 "Inline stloc first use temp" ; V52 tmp45 [V52,T03] ( 4, 390851.66) long -> rcx "impAppendStmt" ;* V53 tmp46 [V53,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V54 tmp47 [V54,T15] ( 25, 30834.69) byref -> r12 "Inlining Arg"
+; V54 tmp47 [V54,T15] ( 21, 30755.84) byref -> r12 "Inlining Arg"
; V55 tmp48 [V55,T20] ( 8, 6167.32) ref -> rax class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]> ; V56 tmp49 [V56,T37] ( 6, 300 ) ref -> rdx "field V40._list (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57,T44] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP @@ -122,11 +122,11 @@ G_M11746_IG03: ; bbWeight=20.00, gcVars=0000000000000000 {}, gcrefRegs=00 ;; size=18 bbWeight=20.00 PerfScore 70.02 G_M11746_IG04: ; bbWeight=20.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref test rbx, rbx
- je G_M11746_IG71
+ je G_M11746_IG69
;; size=9 bbWeight=20.00 PerfScore 25.01 G_M11746_IG05: ; bbWeight=80.02, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz test r14, r14
- je G_M11746_IG72
+ je G_M11746_IG70
mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -294,7 +294,7 @@ G_M11746_IG10: ; bbWeight=80.02, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 G_M11746_IG11: ; bbWeight=20.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [r13], rax
- jne G_M11746_IG73
+ jne G_M11746_IG71
;; size=20 bbWeight=20.00 PerfScore 85.02 G_M11746_IG12: ; bbWeight=20.00, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz cmp dword ptr [r13+0x14], 0 @@ -353,12 +353,12 @@ G_M11746_IG17: ; bbWeight=20.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 G_M11746_IG18: ; bbWeight=21.14, gcVars=0000000001000000 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r14] cmp gword ptr [rbp+0xB8], 0
- je G_M11746_IG43
+ je G_M11746_IG42
mov rcx, gword ptr [rbp+0xB8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rcx], rdx
- jne G_M11746_IG43
+ jne G_M11746_IG42
jmp SHORT G_M11746_IG20 ;; size=42 bbWeight=21.14 PerfScore 216.65 G_M11746_IG19: ; bbWeight=79.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref @@ -377,7 +377,7 @@ G_M11746_IG20: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by G_M11746_IG21: ; bbWeight=79.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] cmp r15d, 2
- jne G_M11746_IG39
+ jne G_M11746_IG38
;; size=10 bbWeight=79.19 PerfScore 98.99 G_M11746_IG22: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref lea r12, bword ptr [r14+0x28] @@ -386,16 +386,16 @@ G_M11746_IG22: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=00 ; gcrRegs +[rax] mov ecx, dword ptr [r12+0x14] cmp ecx, dword ptr [rax+0x14]
- jne G_M11746_IG33
+ jne G_M11746_IG50
mov r8d, dword ptr [r12+0x10] cmp r8d, dword ptr [rax+0x10]
- jae G_M11746_IG34
+ jae G_M11746_IG33
;; size=37 bbWeight=1531.29 PerfScore 22203.73 G_M11746_IG23: ; bbWeight=1511.77, gcrefRegs=4009 {rax rbx r14}, byrefRegs=1000 {r12}, byref mov r10, gword ptr [rax+0x08] ; gcrRegs +[r10] cmp r8d, dword ptr [r10+0x08]
- jae G_M11746_IG49
+ jae G_M11746_IG48
mov ecx, r8d mov rdx, gword ptr [r10+8*rcx+0x10] ; gcrRegs +[rdx] @@ -411,7 +411,7 @@ G_M11746_IG23: ; bbWeight=1511.77, gcrefRegs=4009 {rax rbx r14}, byrefReg ; gcrRegs +[rax] mov rcx, 0xD1FFAB1E ; code for LinqBenchmarks+<>c:<Where01LinqQueryX>b__10_0(Product):ubyte:this cmp qword ptr [rax+0x18], rcx
- jne G_M11746_IG36
+ jne G_M11746_IG35
;; size=65 bbWeight=1511.77 PerfScore 31747.26 G_M11746_IG24: ; bbWeight=1511.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -507,19 +507,11 @@ G_M11746_IG31: ; bbWeight=96735.78, gcrefRegs=6008 {rbx r13 r14}, byrefRe jle G_M11746_IG22 ;; size=9 bbWeight=96735.78 PerfScore 120919.73 G_M11746_IG32: ; bbWeight=1511.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M11746_IG37
+ jmp SHORT G_M11746_IG36
;; size=2 bbWeight=1511.50 PerfScore 3022.99
-G_M11746_IG33: ; bbWeight=19.52, gcrefRegs=4008 {rbx r14}, byrefRegs=1000 {r12}, byref
+G_M11746_IG33: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=1000 {r12}, byref
; gcrRegs -[r13] ; byrRegs +[r12]
- mov ecx, dword ptr [r12+0x14] - mov rdx, gword ptr [r12] - ; gcrRegs +[rdx] - cmp ecx, dword ptr [rdx+0x14] - jne G_M11746_IG51 - ;; size=18 bbWeight=19.52 PerfScore 156.14 -G_M11746_IG34: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=1000 {r12}, byref - ; gcrRegs -[rdx]
mov rcx, gword ptr [r12] ; gcrRegs +[rcx] mov ecx, dword ptr [rcx+0x10] @@ -530,14 +522,14 @@ G_M11746_IG34: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=10 ; gcrRegs +[rcx] mov gword ptr [r12+0x08], rcx ;; size=21 bbWeight=1531.29 PerfScore 9953.40
-G_M11746_IG35: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11746_IG34: ; bbWeight=1531.29, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] ; byrRegs -[r12] mov gword ptr [r14+0x08], rcx mov dword ptr [r14+0x14], -1
- jmp SHORT G_M11746_IG39
+ jmp SHORT G_M11746_IG38
;; size=14 bbWeight=1531.29 PerfScore 6125.17
-G_M11746_IG36: ; bbWeight=1511.50, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M11746_IG35: ; bbWeight=1511.50, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rax r13] mov rdx, r13 ; gcrRegs +[rdx] @@ -549,7 +541,7 @@ G_M11746_IG36: ; bbWeight=1511.50, gcrefRegs=6009 {rax rbx r13 r14}, byre test eax, eax je G_M11746_IG22 ;; size=18 bbWeight=1511.50 PerfScore 9824.73
-G_M11746_IG37: ; bbWeight=1511.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M11746_IG36: ; bbWeight=1511.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [r14+0x08] ; byrRegs +[rcx] mov rdx, r13 @@ -559,7 +551,7 @@ G_M11746_IG37: ; bbWeight=1511.50, gcrefRegs=6008 {rbx r13 r14}, byrefReg ; byrRegs -[rcx] jmp G_M11746_IG19 ;; size=17 bbWeight=1511.50 PerfScore 5668.11
-G_M11746_IG38: ; bbWeight=15.27, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M11746_IG37: ; bbWeight=15.27, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] mov r13, gword ptr [r14+0x30] ; gcrRegs +[r13] @@ -567,64 +559,64 @@ G_M11746_IG38: ; bbWeight=15.27, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs +[rax] mov rdx, 0xD1FFAB1E ; function address cmp qword ptr [rax+0x18], rdx
- jne G_M11746_IG60 - jmp G_M11746_IG47
+ jne G_M11746_IG59 + jmp G_M11746_IG46
;; size=33 bbWeight=15.27 PerfScore 156.49
-G_M11746_IG39: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG38: ; bbWeight=99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r13-r14] xor r13d, r13d jne G_M11746_IG19 ;; size=9 bbWeight=99 PerfScore 123.75
-G_M11746_IG40: ; bbWeight=19.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - jmp G_M11746_IG67
+G_M11746_IG39: ; bbWeight=19.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M11746_IG65
;; size=5 bbWeight=19.99 PerfScore 39.99
-G_M11746_IG41: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG40: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0xB8] ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rcx], rax
- jne G_M11746_IG50
+ jne G_M11746_IG49
;; size=26 bbWeight=0.80 PerfScore 4.20
-G_M11746_IG42: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG41: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] inc esi ;; size=2 bbWeight=0.80 PerfScore 0.20
-G_M11746_IG43: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11746_IG42: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0xB8] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Linq.Enumerable+WhereListIterator`1[Product] cmp qword ptr [rcx], rdx
- jne G_M11746_IG52
+ jne G_M11746_IG51
mov r14, gword ptr [rbp+0xB8] ; gcrRegs +[r14] mov rcx, gword ptr [rbp+0xB8] mov r15d, dword ptr [rcx+0x14] cmp r15d, 1
- je G_M11746_IG53
+ je G_M11746_IG52
;; size=54 bbWeight=1.00 PerfScore 10.50
-G_M11746_IG44: ; bbWeight=0.80, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M11746_IG43: ; bbWeight=0.80, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] cmp r15d, 2
- jne G_M11746_IG65
+ jne G_M11746_IG63
;; size=10 bbWeight=0.80 PerfScore 1.00
-G_M11746_IG45: ; bbWeight=15.47, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M11746_IG44: ; bbWeight=15.47, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
lea r12, bword ptr [r14+0x28] ; byrRegs +[r12] mov rax, gword ptr [r12] ; gcrRegs +[rax] mov ecx, dword ptr [r12+0x14] cmp ecx, dword ptr [rax+0x14]
- jne G_M11746_IG61
+ jne G_M11746_IG50
mov ecx, dword ptr [r12+0x10] cmp ecx, dword ptr [rax+0x10]
- jae G_M11746_IG62
+ jae G_M11746_IG60
;; size=36 bbWeight=15.47 PerfScore 224.28
-G_M11746_IG46: ; bbWeight=15.27, gcrefRegs=4009 {rax rbx r14}, byrefRegs=1000 {r12}, byref
+G_M11746_IG45: ; bbWeight=15.27, gcrefRegs=4009 {rax rbx r14}, byrefRegs=1000 {r12}, byref
mov r10, gword ptr [rax+0x08] ; gcrRegs +[r10] mov r8d, dword ptr [r12+0x10] cmp r8d, dword ptr [r10+0x08]
- jae G_M11746_IG49
+ jae G_M11746_IG48
mov ecx, r8d mov rdx, gword ptr [r10+8*rcx+0x10] ; gcrRegs +[rdx] @@ -634,15 +626,15 @@ G_M11746_IG46: ; bbWeight=15.27, gcrefRegs=4009 {rax rbx r14}, byrefRegs= ; gcrRegs -[rax rdx r10] ; byrRegs -[rcx] inc dword ptr [r12+0x10]
- jmp G_M11746_IG38
+ jmp G_M11746_IG37
;; size=47 bbWeight=15.27 PerfScore 255.78
-G_M11746_IG47: ; bbWeight=15.27, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M11746_IG46: ; bbWeight=15.27, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r13] ; byrRegs -[r12] cmp dword ptr [r13+0x1C], 0
- jle SHORT G_M11746_IG45
+ jle SHORT G_M11746_IG44
;; size=7 bbWeight=15.27 PerfScore 61.07
-G_M11746_IG48: ; bbWeight=977.13, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M11746_IG47: ; bbWeight=977.13, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x20] mov r10d, dword ptr [r13+0x24] mov r9, qword ptr [r13+0x28] @@ -656,22 +648,22 @@ G_M11746_IG48: ; bbWeight=977.13, gcrefRegs=6008 {rbx r13 r14}, byrefRegs mov rcx, qword ptr [rbp-0x50] mov edx, dword ptr [rbp-0x54] or rdx, rcx ...

+25 (+1.44%) : 92316.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T19] ( 11, 403.31) ref -> rdi class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T26] ( 8, 200.04) ref -> rbp class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 499.08) ref -> [rsp+0xF0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T08] ( 5,1088.74) ref -> rsi class-hnd <System.Object>
+; V03 loc3 [V03,T08] ( 6,1088.74) ref -> rsi class-hnd <System.Object>
; V04 loc4 [V04,T04] ( 10,2183.45) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T28] ( 2, 99.19) int -> [rsp+0xDC] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -96,7 +96,7 @@ ; V83 tmp72 [V83,T00] ( 8,9897.67) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V84 tmp73 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V86 tmp75 [V86,T18] ( 3, 494.88) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V86 tmp75 [V86,T18] ( 5, 494.88) ref -> rax class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V88 tmp77 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -157,7 +157,7 @@ G_M63069_IG03: ; bbWeight=99.21, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x14] cmp eax, dword ptr [rcx+0x18]
- jl G_M63069_IG49
+ jl G_M63069_IG40
;; size=27 bbWeight=99.21 PerfScore 1190.51 G_M63069_IG04: ; bbWeight=396.84, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -167,14 +167,14 @@ G_M63069_IG04: ; bbWeight=396.84, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref G_M63069_IG05: ; bbWeight=99.21, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref mov gword ptr [rsp+0x30], r14 cmp gword ptr [rsp+0x30], 0
- jne G_M63069_IG66
+ jne G_M63069_IG65
cmp byte ptr [rbp+0x3C], 0
- jne G_M63069_IG44
+ jne G_M63069_IG35
;; size=27 bbWeight=99.21 PerfScore 793.67 G_M63069_IG06: ; bbWeight=101.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] cmp dword ptr [rdi+0x30], 0
- jne G_M63069_IG67
+ jne G_M63069_IG66
;; size=10 bbWeight=101.10 PerfScore 404.41 G_M63069_IG07: ; bbWeight=99.21, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r14, gword ptr [rdi+0x08] @@ -189,11 +189,11 @@ G_M63069_IG07: ; bbWeight=99.21, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG66
+ jne G_M63069_IG65
;; size=32 bbWeight=99.21 PerfScore 1190.51 G_M63069_IG08: ; bbWeight=3174.69, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref cmp gword ptr [r15+0x10], 0
- jne G_M63069_IG51
+ jne G_M63069_IG42
xor rdx, rdx ; gcrRegs +[rdx] mov gword ptr [rsp+0x30], rdx @@ -230,7 +230,7 @@ G_M63069_IG09: ; bbWeight=0.75, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ; gcrRegs +[r13] mov r12d, dword ptr [r13+0x08] test r12d, r12d
- jle G_M63069_IG68
+ jle G_M63069_IG67
;; size=108 bbWeight=0.75 PerfScore 19.53 G_M63069_IG10: ; bbWeight=0.75, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz lea r8d, [r12-0x01] @@ -243,7 +243,7 @@ G_M63069_IG10: ; bbWeight=0.75, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, ;; size=21 bbWeight=0.75 PerfScore 20.65 G_M63069_IG11: ; bbWeight=2.14, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [r13+0x08]
- jae G_M63069_IG64
+ jae G_M63069_IG63
mov edx, r14d mov rcx, gword ptr [r13+8*rdx+0x10] ; gcrRegs +[rcx] @@ -253,12 +253,12 @@ G_M63069_IG11: ; bbWeight=2.14, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, G_M63069_IG12: ; bbWeight=1.39, gcrefRegs=A0EA {rcx rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref mov edx, dword ptr [rcx+0x14] cmp edx, dword ptr [rcx+0x18]
- jl G_M63069_IG69
+ jl G_M63069_IG68
;; size=12 bbWeight=1.39 PerfScore 8.34 G_M63069_IG13: ; bbWeight=2.14, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] cmp r14d, r8d
- jl G_M63069_IG53
+ jl G_M63069_IG44
;; size=9 bbWeight=2.14 PerfScore 2.68 G_M63069_IG14: ; bbWeight=0.75, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref xor edx, edx @@ -280,12 +280,12 @@ G_M63069_IG17: ; bbWeight=99.21, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, by mov gword ptr [rsp+0x30], rdx mov gword ptr [rsp+0xF0], r14 cmp gword ptr [rsp+0xF0], 0
- je G_M63069_IG61
+ je G_M63069_IG60
;; size=30 bbWeight=99.21 PerfScore 520.85 G_M63069_IG18: ; bbWeight=99.93, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx r14] cmp byte ptr [rdi+0x34], 0
- jne G_M63069_IG70
+ jne G_M63069_IG69
;; size=10 bbWeight=99.93 PerfScore 399.71 G_M63069_IG19: ; bbWeight=99.83, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r15, gword ptr [rsp+0xF0] @@ -297,7 +297,7 @@ G_M63069_IG19: ; bbWeight=99.83, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG55
+ je G_M63069_IG52
;; size=35 bbWeight=99.83 PerfScore 374.36 G_M63069_IG20: ; bbWeight=399.32, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -347,11 +347,11 @@ G_M63069_IG25: ; bbWeight=98.98, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov rax, qword ptr GS:[0x0058] mov rax, qword ptr [rax] cmp dword ptr [rax+0xD8], 3
- jl G_M63069_IG72
+ jl G_M63069_IG71
mov rax, qword ptr [rax+0xE0] mov rax, qword ptr [rax+0x18] test rax, rax
- je G_M63069_IG72
+ je G_M63069_IG71
mov rax, bword ptr [rax] ; byrRegs +[rax] add rax, 16 @@ -371,7 +371,7 @@ G_M63069_IG27: ; bbWeight=395.91, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref ;; size=6 bbWeight=395.91 PerfScore 1187.72 G_M63069_IG28: ; bbWeight=98.98, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref cmp rbx, rax
- jne G_M63069_IG73
+ jne G_M63069_IG72
;; size=9 bbWeight=98.98 PerfScore 123.72 G_M63069_IG29: ; bbWeight=98.98, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -381,7 +381,7 @@ G_M63069_IG29: ; bbWeight=98.98, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- je G_M63069_IG74
+ je G_M63069_IG73
;; size=16 bbWeight=98.98 PerfScore 247.44 G_M63069_IG30: ; bbWeight=98.98, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx+0x38], 0 @@ -402,85 +402,23 @@ G_M63069_IG32: ; bbWeight=98.98, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov r12, gword ptr [rcx] ; gcrRegs +[r12] test rsi, rsi
+ je G_M63069_IG74 + mov rax, rsi + ; gcrRegs +[rax] + test rax, rax
je G_M63069_IG75
- ;; size=30 bbWeight=98.98 PerfScore 470.14 -G_M63069_IG33: ; bbWeight=98.98, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rcx, rsi - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M63069_IG35 - ;; size=8 bbWeight=98.98 PerfScore 148.47 -G_M63069_IG34: ; bbWeight=49.49, gcrefRegs=10EA {rcx rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rcx], rdx - je SHORT G_M63069_IG36 - ;; size=15 bbWeight=49.49 PerfScore 210.33 -G_M63069_IG35: ; bbWeight=98.98, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=26 bbWeight=98.98 PerfScore 346.42 -G_M63069_IG36: ; bbWeight=98.98, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov ecx, dword ptr [rsi+0x20] - inc ecx
+ ;; size=42 bbWeight=98.98 PerfScore 618.60 +G_M63069_IG33: ; bbWeight=49.49, gcrefRegs=10E9 {rax rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rax], rcx
je G_M63069_IG54
- ;; size=11 bbWeight=98.98 PerfScore 321.67 -G_M63069_IG37: ; bbWeight=395.91, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [rsi+0x20], ecx - ;; size=3 bbWeight=395.91 PerfScore 395.91 -G_M63069_IG38: ; bbWeight=791.81, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [r12+0xF0], r13d - mov ecx, dword ptr [r12+0x134] - mov eax, r13d - sub eax, ecx - mov edx, dword ptr [r12+0x138] - sub edx, ecx - cmp eax, edx - jae G_M63069_IG57 - ;; size=39 bbWeight=791.81 PerfScore 5542.69 -G_M63069_IG39: ; bbWeight=1583.63, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov rcx, r12 - ; gcrRegs +[rcx] - call [System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte] - ; gcrRegs -[rcx r12] - ; gcr arg pop 0 - test eax, eax - jne G_M63069_IG62 - ;; size=17 bbWeight=1583.63 PerfScore 7126.32 -G_M63069_IG40: ; bbWeight=98.97, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [rsp+0xDC] - mov ecx, r13d - sub ecx, r12d - cmp ecx, 30 - mov dword ptr [rsp+0xDC], r12d - jb G_M63069_IG02 - ;; size=31 bbWeight=98.97 PerfScore 371.12 -G_M63069_IG41: ; bbWeight=0.22, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, r13d - mov rcx, 0xD1FFAB1E ; const ptr - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - cmp byte ptr [rcx+0x9D], 0 - jne G_M63069_IG60 - ;; size=29 bbWeight=0.22 PerfScore 1.44 -G_M63069_IG42: ; bbWeight=1.77, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - cmp byte ptr [rdi+0x34], 0 - je SHORT G_M63069_IG43 - mov byte ptr [rdi+0x34], 0 - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=23 bbWeight=1.77 PerfScore 14.17 -G_M63069_IG43: ; bbWeight=0.89, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=13 bbWeight=0.89 PerfScore 2.66 -G_M63069_IG44: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=49.49 PerfScore 210.33 +G_M63069_IG34: ; bbWeight=24.74, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + jmp G_M63069_IG75 + ;; size=5 bbWeight=24.74 PerfScore 49.49 +G_M63069_IG35: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r12]
mov r14, gword ptr [rdi+0x10] ; gcrRegs +[r14] mov r15, gword ptr [r14+0x18] @@ -493,25 +431,25 @@ G_M63069_IG44: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ...

+25 (+1.44%) : 98080.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T19] ( 11, 388.65) ref -> rdi class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T26] ( 8, 201.62) ref -> rbp class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 488.56) ref -> [rsp+0xF0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T08] ( 5,1060.20) ref -> rsi class-hnd <System.Object>
+; V03 loc3 [V03,T08] ( 6,1060.20) ref -> rsi class-hnd <System.Object>
; V04 loc4 [V04,T04] ( 10,2126.52) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T28] ( 2, 96.48) int -> [rsp+0xDC] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -99,7 +99,7 @@ ; V86 tmp75 [V86,T00] ( 8,9638.14) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp77 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V89 tmp78 [V89,T18] ( 3, 481.91) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V89 tmp78 [V89,T18] ( 5, 481.91) ref -> rax class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V90 tmp79 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V91 tmp80 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -160,7 +160,7 @@ G_M63069_IG03: ; bbWeight=96.52, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x14] cmp eax, dword ptr [rcx+0x18]
- jl G_M63069_IG49
+ jl G_M63069_IG40
;; size=27 bbWeight=96.52 PerfScore 1158.30 G_M63069_IG04: ; bbWeight=386.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -170,14 +170,14 @@ G_M63069_IG04: ; bbWeight=386.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref G_M63069_IG05: ; bbWeight=96.52, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref mov gword ptr [rsp+0x30], r14 cmp gword ptr [rsp+0x30], 0
- jne G_M63069_IG66
+ jne G_M63069_IG65
cmp byte ptr [rbp+0x3C], 0
- jne G_M63069_IG44
+ jne G_M63069_IG35
;; size=27 bbWeight=96.52 PerfScore 772.20 G_M63069_IG06: ; bbWeight=95.62, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] cmp dword ptr [rdi+0x30], 0
- jne G_M63069_IG67
+ jne G_M63069_IG66
;; size=10 bbWeight=95.62 PerfScore 382.49 G_M63069_IG07: ; bbWeight=96.52, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r14, gword ptr [rdi+0x08] @@ -192,11 +192,11 @@ G_M63069_IG07: ; bbWeight=96.52, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG66
+ jne G_M63069_IG65
;; size=32 bbWeight=96.52 PerfScore 1158.30 G_M63069_IG08: ; bbWeight=3088.79, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref cmp gword ptr [r15+0x10], 0
- jne G_M63069_IG52
+ jne G_M63069_IG43
xor rdx, rdx ; gcrRegs +[rdx] mov gword ptr [rsp+0x30], rdx @@ -233,7 +233,7 @@ G_M63069_IG09: ; bbWeight=3.83, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ; gcrRegs +[r13] mov r12d, dword ptr [r13+0x08] test r12d, r12d
- jle G_M63069_IG68
+ jle G_M63069_IG67
;; size=108 bbWeight=3.83 PerfScore 99.68 G_M63069_IG10: ; bbWeight=3.83, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz lea r8d, [r12-0x01] @@ -246,7 +246,7 @@ G_M63069_IG10: ; bbWeight=3.83, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, ;; size=21 bbWeight=3.83 PerfScore 105.43 G_M63069_IG11: ; bbWeight=7.67, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [r13+0x08]
- jae G_M63069_IG64
+ jae G_M63069_IG63
mov edx, r14d mov rcx, gword ptr [r13+8*rdx+0x10] ; gcrRegs +[rcx] @@ -256,12 +256,12 @@ G_M63069_IG11: ; bbWeight=7.67, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, G_M63069_IG12: ; bbWeight=3.83, gcrefRegs=A0EA {rcx rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref mov edx, dword ptr [rcx+0x14] cmp edx, dword ptr [rcx+0x18]
- jl G_M63069_IG69
+ jl G_M63069_IG68
;; size=12 bbWeight=3.83 PerfScore 23.00 G_M63069_IG13: ; bbWeight=7.67, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] cmp r14d, r8d
- jl G_M63069_IG54
+ jl G_M63069_IG45
;; size=9 bbWeight=7.67 PerfScore 9.58 G_M63069_IG14: ; bbWeight=3.83, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref xor edx, edx @@ -283,12 +283,12 @@ G_M63069_IG17: ; bbWeight=96.52, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, by mov gword ptr [rsp+0x30], rdx mov gword ptr [rsp+0xF0], r14 cmp gword ptr [rsp+0xF0], 0
- je G_M63069_IG62
+ je G_M63069_IG61
;; size=30 bbWeight=96.52 PerfScore 506.75 G_M63069_IG18: ; bbWeight=97.35, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx r14] cmp byte ptr [rdi+0x34], 0
- jne G_M63069_IG70
+ jne G_M63069_IG69
;; size=10 bbWeight=97.35 PerfScore 389.42 G_M63069_IG19: ; bbWeight=97.26, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r15, gword ptr [rsp+0xF0] @@ -300,7 +300,7 @@ G_M63069_IG19: ; bbWeight=97.26, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG56
+ je G_M63069_IG53
;; size=35 bbWeight=97.26 PerfScore 364.72 G_M63069_IG20: ; bbWeight=389.03, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -350,11 +350,11 @@ G_M63069_IG25: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov rax, qword ptr GS:[0x0058] mov rax, qword ptr [rax] cmp dword ptr [rax+0xD8], 3
- jl G_M63069_IG72
+ jl G_M63069_IG71
mov rax, qword ptr [rax+0xE0] mov rax, qword ptr [rax+0x18] test rax, rax
- je G_M63069_IG72
+ je G_M63069_IG71
mov rax, bword ptr [rax] ; byrRegs +[rax] add rax, 16 @@ -374,7 +374,7 @@ G_M63069_IG27: ; bbWeight=385.53, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref ;; size=6 bbWeight=385.53 PerfScore 1156.58 G_M63069_IG28: ; bbWeight=96.38, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref cmp rbx, rax
- jne G_M63069_IG73
+ jne G_M63069_IG72
;; size=9 bbWeight=96.38 PerfScore 120.48 G_M63069_IG29: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -384,7 +384,7 @@ G_M63069_IG29: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- je G_M63069_IG74
+ je G_M63069_IG73
;; size=16 bbWeight=96.38 PerfScore 240.95 G_M63069_IG30: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx+0x38], 0 @@ -405,85 +405,23 @@ G_M63069_IG32: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov r12, gword ptr [rcx] ; gcrRegs +[r12] test rsi, rsi
+ je G_M63069_IG74 + mov rax, rsi + ; gcrRegs +[rax] + test rax, rax
je G_M63069_IG75
- ;; size=30 bbWeight=96.38 PerfScore 457.81 -G_M63069_IG33: ; bbWeight=96.38, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rcx, rsi - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M63069_IG35 - ;; size=8 bbWeight=96.38 PerfScore 144.57 -G_M63069_IG34: ; bbWeight=48.19, gcrefRegs=10EA {rcx rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rcx], rdx - je SHORT G_M63069_IG36 - ;; size=15 bbWeight=48.19 PerfScore 204.81 -G_M63069_IG35: ; bbWeight=96.38, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=26 bbWeight=96.38 PerfScore 337.33 -G_M63069_IG36: ; bbWeight=96.38, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov ecx, dword ptr [rsi+0x20] - inc ecx
+ ;; size=42 bbWeight=96.38 PerfScore 602.38 +G_M63069_IG33: ; bbWeight=48.19, gcrefRegs=10E9 {rax rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rax], rcx
je G_M63069_IG55
- ;; size=11 bbWeight=96.38 PerfScore 313.24 -G_M63069_IG37: ; bbWeight=385.53, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [rsi+0x20], ecx - ;; size=3 bbWeight=385.53 PerfScore 385.53 -G_M63069_IG38: ; bbWeight=771.05, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [r12+0xF0], r13d - mov ecx, dword ptr [r12+0x134] - mov eax, r13d - sub eax, ecx - mov edx, dword ptr [r12+0x138] - sub edx, ecx - cmp eax, edx - jae G_M63069_IG58 - ;; size=39 bbWeight=771.05 PerfScore 5397.36 -G_M63069_IG39: ; bbWeight=1542.10, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov rcx, r12 - ; gcrRegs +[rcx] - call [System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte] - ; gcrRegs -[rcx r12] - ; gcr arg pop 0 - test eax, eax - jne G_M63069_IG79 - ;; size=17 bbWeight=1542.10 PerfScore 6939.46 -G_M63069_IG40: ; bbWeight=96.38, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [rsp+0xDC] - mov ecx, r13d - sub ecx, r12d - cmp ecx, 30 - mov dword ptr [rsp+0xDC], r12d - jb G_M63069_IG02 - ;; size=31 bbWeight=96.38 PerfScore 361.43 -G_M63069_IG41: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, r13d - mov rcx, 0xD1FFAB1E ; const ptr - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - cmp byte ptr [rcx+0x9D], 0 - jne G_M63069_IG61 - ;; size=29 bbWeight=0.10 PerfScore 0.66 -G_M63069_IG42: ; bbWeight=0.81, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - cmp byte ptr [rdi+0x34], 0 - je SHORT G_M63069_IG43 - mov byte ptr [rdi+0x34], 0 - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=23 bbWeight=0.81 PerfScore 6.47 -G_M63069_IG43: ; bbWeight=0.40, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=13 bbWeight=0.40 PerfScore 1.21 -G_M63069_IG44: ; bbWeight=0.90, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=48.19 PerfScore 204.81 +G_M63069_IG34: ; bbWeight=24.10, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + jmp G_M63069_IG75 + ;; size=5 bbWeight=24.10 PerfScore 48.19 +G_M63069_IG35: ; bbWeight=0.90, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r12]
mov r14, gword ptr [rdi+0x10] ; gcrRegs +[r14] mov r15, gword ptr [r14+0x18] @@ -496,25 +434,25 @@ G_M63069_IG44: ; bbWeight=0.90, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ...

+25 (+1.44%) : 58781.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

@@ -13,7 +13,7 @@ ; V00 loc0 [V00,T19] ( 11, 386.02) ref -> rdi class-hnd exact <System.Threading.ThreadPoolWorkQueue> ; V01 loc1 [V01,T26] ( 8, 211.72) ref -> rbp class-hnd exact <System.Threading.ThreadPoolWorkQueueThreadLocals> ; V02 loc2 [V02 ] ( 7, 484.64) ref -> [rsp+0xF0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.Object>
-; V03 loc3 [V03,T08] ( 5,1050.97) ref -> rsi class-hnd <System.Object>
+; V03 loc3 [V03,T08] ( 6,1050.97) ref -> rsi class-hnd <System.Object>
; V04 loc4 [V04,T04] ( 10,2102.89) ref -> rbx class-hnd exact <System.Threading.Thread> ; V05 loc5 [V05,T31] ( 2, 95.64) int -> [rsp+0xDC] tier0-frame ;* V06 loc6 [V06 ] ( 0, 0 ) ubyte -> zero-ref @@ -99,7 +99,7 @@ ; V86 tmp75 [V86,T00] ( 8,9554.24) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp77 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V89 tmp78 [V89,T18] ( 3, 477.71) ref -> rcx class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+; V89 tmp78 [V89,T18] ( 5, 477.71) ref -> rax class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V90 tmp79 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> ;* V91 tmp80 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -160,7 +160,7 @@ G_M63069_IG03: ; bbWeight=96.14, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x14] cmp eax, dword ptr [rcx+0x18]
- jl G_M63069_IG49
+ jl G_M63069_IG40
;; size=27 bbWeight=96.14 PerfScore 1153.67 G_M63069_IG04: ; bbWeight=384.56, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -170,14 +170,14 @@ G_M63069_IG04: ; bbWeight=384.56, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref G_M63069_IG05: ; bbWeight=96.14, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref mov gword ptr [rsp+0x30], r14 cmp gword ptr [rsp+0x30], 0
- jne G_M63069_IG67
+ jne G_M63069_IG66
cmp byte ptr [rbp+0x3C], 0
- jne G_M63069_IG44
+ jne G_M63069_IG35
;; size=27 bbWeight=96.14 PerfScore 769.11 G_M63069_IG06: ; bbWeight=93.68, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] cmp dword ptr [rdi+0x30], 0
- jne G_M63069_IG68
+ jne G_M63069_IG67
;; size=10 bbWeight=93.68 PerfScore 374.71 G_M63069_IG07: ; bbWeight=96.14, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r14, gword ptr [rdi+0x08] @@ -192,11 +192,11 @@ G_M63069_IG07: ; bbWeight=96.14, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne G_M63069_IG67
+ jne G_M63069_IG66
;; size=32 bbWeight=96.14 PerfScore 1153.67 G_M63069_IG08: ; bbWeight=3076.45, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref cmp gword ptr [r15+0x10], 0
- jne G_M63069_IG52
+ jne G_M63069_IG43
xor rdx, rdx ; gcrRegs +[rdx] mov gword ptr [rsp+0x30], rdx @@ -233,7 +233,7 @@ G_M63069_IG09: ; bbWeight=8.48, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ; gcrRegs +[r13] mov r12d, dword ptr [r13+0x08] test r12d, r12d
- jle G_M63069_IG69
+ jle G_M63069_IG68
;; size=108 bbWeight=8.48 PerfScore 220.53 G_M63069_IG10: ; bbWeight=8.48, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz lea r8d, [r12-0x01] @@ -246,7 +246,7 @@ G_M63069_IG10: ; bbWeight=8.48, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, ;; size=21 bbWeight=8.48 PerfScore 233.25 G_M63069_IG11: ; bbWeight=23.45, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [r13+0x08]
- jae G_M63069_IG65
+ jae G_M63069_IG64
mov edx, r14d mov rcx, gword ptr [r13+8*rdx+0x10] ; gcrRegs +[rcx] @@ -256,12 +256,12 @@ G_M63069_IG11: ; bbWeight=23.45, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15} G_M63069_IG12: ; bbWeight=14.97, gcrefRegs=A0EA {rcx rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref mov edx, dword ptr [rcx+0x14] cmp edx, dword ptr [rcx+0x18]
- jl G_M63069_IG70
+ jl G_M63069_IG69
;; size=12 bbWeight=14.97 PerfScore 89.82 G_M63069_IG13: ; bbWeight=23.45, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] cmp r14d, r8d
- jl G_M63069_IG54
+ jl G_M63069_IG45
;; size=9 bbWeight=23.45 PerfScore 29.31 G_M63069_IG14: ; bbWeight=8.48, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref xor edx, edx @@ -283,12 +283,12 @@ G_M63069_IG17: ; bbWeight=96.14, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, by mov gword ptr [rsp+0x30], rdx mov gword ptr [rsp+0xF0], r14 cmp gword ptr [rsp+0xF0], 0
- je G_M63069_IG62
+ je G_M63069_IG61
;; size=30 bbWeight=96.14 PerfScore 504.73 G_M63069_IG18: ; bbWeight=95.78, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx r14] cmp byte ptr [rdi+0x34], 0
- jne G_M63069_IG71
+ jne G_M63069_IG70
;; size=10 bbWeight=95.78 PerfScore 383.10 G_M63069_IG19: ; bbWeight=95.68, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref mov r15, gword ptr [rsp+0xF0] @@ -300,7 +300,7 @@ G_M63069_IG19: ; bbWeight=95.68, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M63069_IG56
+ je G_M63069_IG53
;; size=35 bbWeight=95.68 PerfScore 358.80 G_M63069_IG20: ; bbWeight=382.72, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -350,11 +350,11 @@ G_M63069_IG25: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov rax, qword ptr GS:[0x0058] mov rax, qword ptr [rax] cmp dword ptr [rax+0xD8], 3
- jl G_M63069_IG73
+ jl G_M63069_IG72
mov rax, qword ptr [rax+0xE0] mov rax, qword ptr [rax+0x18] test rax, rax
- je G_M63069_IG73
+ je G_M63069_IG72
mov rax, bword ptr [rax] ; byrRegs +[rax] add rax, 16 @@ -374,7 +374,7 @@ G_M63069_IG27: ; bbWeight=382.17, gcrefRegs=00E8 {rbx rbp rsi rdi}, byref ;; size=6 bbWeight=382.17 PerfScore 1146.51 G_M63069_IG28: ; bbWeight=95.54, gcrefRegs=00E9 {rax rbx rbp rsi rdi}, byrefRegs=0000 {}, byref cmp rbx, rax
- jne G_M63069_IG74
+ jne G_M63069_IG73
;; size=9 bbWeight=95.54 PerfScore 119.43 G_M63069_IG29: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -384,7 +384,7 @@ G_M63069_IG29: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- je G_M63069_IG75
+ je G_M63069_IG74
;; size=16 bbWeight=95.54 PerfScore 238.86 G_M63069_IG30: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx+0x38], 0 @@ -405,85 +405,23 @@ G_M63069_IG32: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefR mov r12, gword ptr [rcx] ; gcrRegs +[r12] test rsi, rsi
+ je G_M63069_IG75 + mov rax, rsi + ; gcrRegs +[rax] + test rax, rax
je G_M63069_IG76
- ;; size=30 bbWeight=95.54 PerfScore 453.83 -G_M63069_IG33: ; bbWeight=95.54, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rcx, rsi - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M63069_IG35 - ;; size=8 bbWeight=95.54 PerfScore 143.31 -G_M63069_IG34: ; bbWeight=47.77, gcrefRegs=10EA {rcx rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode - cmp qword ptr [rcx], rdx - je SHORT G_M63069_IG36 - ;; size=15 bbWeight=47.77 PerfScore 203.03 -G_M63069_IG35: ; bbWeight=95.54, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=26 bbWeight=95.54 PerfScore 334.40 -G_M63069_IG36: ; bbWeight=95.54, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov ecx, dword ptr [rsi+0x20] - inc ecx
+ ;; size=42 bbWeight=95.54 PerfScore 597.14 +G_M63069_IG33: ; bbWeight=47.77, gcrefRegs=10E9 {rax rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E ; System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode + cmp qword ptr [rax], rcx
je G_M63069_IG55
- ;; size=11 bbWeight=95.54 PerfScore 310.51 -G_M63069_IG37: ; bbWeight=382.17, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [rsi+0x20], ecx - ;; size=3 bbWeight=382.17 PerfScore 382.17 -G_M63069_IG38: ; bbWeight=764.34, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov dword ptr [r12+0xF0], r13d - mov ecx, dword ptr [r12+0x134] - mov eax, r13d - sub eax, ecx - mov edx, dword ptr [r12+0x138] - sub edx, ecx - cmp eax, edx - jae G_M63069_IG58 - ;; size=39 bbWeight=764.34 PerfScore 5350.37 -G_M63069_IG39: ; bbWeight=1528.68, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref - mov rcx, r12 - ; gcrRegs +[rcx] - call [System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte] - ; gcrRegs -[rcx r12] - ; gcr arg pop 0 - test eax, eax - jne G_M63069_IG63 - ;; size=17 bbWeight=1528.68 PerfScore 6879.05 -G_M63069_IG40: ; bbWeight=95.54, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [rsp+0xDC] - mov ecx, r13d - sub ecx, r12d - cmp ecx, 30 - mov dword ptr [rsp+0xDC], r12d - jb G_M63069_IG02 - ;; size=31 bbWeight=95.54 PerfScore 358.26 -G_M63069_IG41: ; bbWeight=0.11, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov r12d, r13d - mov rcx, 0xD1FFAB1E ; const ptr - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - cmp byte ptr [rcx+0x9D], 0 - jne G_M63069_IG61 - ;; size=29 bbWeight=0.11 PerfScore 0.70 -G_M63069_IG42: ; bbWeight=0.86, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - cmp byte ptr [rdi+0x34], 0 - je SHORT G_M63069_IG43 - mov byte ptr [rdi+0x34], 0 - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=23 bbWeight=0.86 PerfScore 6.87 -G_M63069_IG43: ; bbWeight=0.43, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0xDC], r12d - jmp G_M63069_IG02 - ;; size=13 bbWeight=0.43 PerfScore 1.29 -G_M63069_IG44: ; bbWeight=2.46, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=47.77 PerfScore 203.03 +G_M63069_IG34: ; bbWeight=23.89, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + jmp G_M63069_IG76 + ;; size=5 bbWeight=23.89 PerfScore 47.77 +G_M63069_IG35: ; bbWeight=2.46, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r12]
mov r14, gword ptr [rdi+0x10] ; gcrRegs +[r14] mov r15, gword ptr [r14+0x18] @@ -496,25 +434,25 @@ G_M63069_IG44: ; bbWeight=2.46, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ...

benchmarks.run_tiered.windows.x64.checked.mch

-15 (-0.82%) : 73163.dasm - System.Net.Security.SslStream+d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)

@@ -232,7 +232,7 @@ G_M55896_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test eax, eax je SHORT G_M55896_IG04 mov r14d, dword ptr [rsi+0x10]
- jmp G_M55896_IG47
+ jmp G_M55896_IG48
;; size=43 bbWeight=1 PerfScore 11.50 G_M55896_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref mov rcx, gword ptr [rbx+0x10] @@ -350,7 +350,7 @@ G_M55896_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=55 bbWeight=1 PerfScore 14.75 G_M55896_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc ; gcrRegs +[rbx] @@ -468,11 +468,11 @@ G_M55896_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd ; gcrRegs -[rax] sub eax, dword ptr [rcx+0x0C] cmp eax, edx
- jge G_M55896_IG43
+ jge G_M55896_IG46
call [<unknown method>] ; byrRegs -[rcx rdi r14] ; gcr arg pop 0
- jmp G_M55896_IG43
+ jmp G_M55896_IG46
;; size=39 bbWeight=1 PerfScore 15.00 G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz mov rcx, gword ptr [rbx+0x10] @@ -486,7 +486,7 @@ G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test r9, r9 jne SHORT G_M55896_IG22 test r8d, r8d
- jne G_M55896_IG45
+ jne G_M55896_IG42
xor rdx, rdx ; gcrRegs +[rdx] xor r8d, r8d @@ -496,7 +496,7 @@ G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, G_M55896_IG22: ; bbWeight=4, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[rdx] cmp dword ptr [r9+0x08], r8d
- jb G_M55896_IG45
+ jb G_M55896_IG42
mov rdx, r9 ; gcrRegs +[rdx] mov eax, dword ptr [rdx+0x08] @@ -613,7 +613,7 @@ G_M55896_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=57 bbWeight=1 PerfScore 14.50 G_M55896_IG29: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc ; gcrRegs +[rbx] @@ -737,10 +737,10 @@ G_M55896_IG38: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, sub eax, dword ptr [rdx+0x08] sub eax, dword ptr [rcx+0x04] sub eax, dword ptr [rcx]
- jne G_M55896_IG46
+ jne G_M55896_IG43
xor r14d, r14d ; byrRegs -[r14]
- jmp G_M55896_IG47
+ jmp G_M55896_IG48
;; size=42 bbWeight=1 PerfScore 15.75 G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz ; byrRegs -[rcx rdx rdi] @@ -748,7 +748,7 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; byrRegs +[rcx] add dword ptr [rcx+0x0C], edi cmp dword ptr [rsi+0x10], 0xD1FFAB1E
- jne G_M55896_IG43
+ jne G_M55896_IG46
lea rdi, bword ptr [rbx+0x88] ; byrRegs +[rdi] mov rcx, rdi @@ -765,7 +765,7 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, sub r10d, r8d sub r10d, dword ptr [rcx] cmp r10d, 5
- jle G_M55896_IG43
+ jle G_M55896_IG46
mov rcx, rdi mov r10, r14 ; byrRegs +[r10] @@ -775,37 +775,69 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test r10, r10 jne SHORT G_M55896_IG40 or edx, eax
- jne G_M55896_IG45
+ jne SHORT G_M55896_IG42
xor r15, r15 ; byrRegs +[r15] xor r13d, r13d jmp SHORT G_M55896_IG41
- ;; size=101 bbWeight=4 PerfScore 110.00 -G_M55896_IG40: ; bbWeight=4, gcrefRegs=0408 {rbx r10}, byrefRegs=40C2 {rcx rsi rdi r14}, byref
+ ;; size=97 bbWeight=4 PerfScore 110.00 +G_M55896_IG40: ; bbWeight=4, gcrefRegs=0408 {rbx r10}, byrefRegs=40C2 {rcx rsi rdi r14}, byref, isz
; byrRegs -[r15] mov r9d, edx mov r11d, eax add r9, r11 mov r11d, dword ptr [r10+0x08] cmp r9, r11
- ja G_M55896_IG45
+ ja SHORT G_M55896_IG42
mov edx, edx lea r15, bword ptr [r10+rdx+0x10] ; byrRegs +[r15] mov r13d, eax
- ;; size=32 bbWeight=4 PerfScore 22.00
+ ;; size=28 bbWeight=4 PerfScore 22.00
G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C2 {rcx rsi rdi r14 r15}, byref, isz ; gcrRegs -[r10] add r8d, dword ptr [rcx] cmp r8d, r13d
- ja G_M55896_IG45
+ jbe SHORT G_M55896_IG44 + ;; size=8 bbWeight=4 PerfScore 17.00 +G_M55896_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rcx rdi r14-r15] + call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M55896_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + call [<unknown method>] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rax rcx rdx] + ; gcr arg pop 0 + mov rcx, rbx + ; gcrRegs +[rcx] + call CORINFO_HELP_THROW + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M55896_IG44: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[rdi r14-r15]
mov r12d, r8d add r15, r12 sub r13d, r8d
- jns SHORT G_M55896_IG42
+ jns SHORT G_M55896_IG45
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
mov r12, rcx ; gcrRegs +[r12] mov rcx, r12 @@ -821,8 +853,8 @@ G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C2 {rcx rs call [<unknown method>] ; gcrRegs -[rcx rdx r12] ; gcr arg pop 0
- ;; size=60 bbWeight=4 PerfScore 54.00 -G_M55896_IG42: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz
+ ;; size=48 bbWeight=4 PerfScore 37.00 +G_M55896_IG45: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz
mov bword ptr [rbp-0x88], r15 mov dword ptr [rbp-0x80], r13d lea rdx, [rbp-0x88] @@ -852,12 +884,12 @@ G_M55896_IG42: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rd ; gcrRegs -[rax] sub eax, dword ptr [rcx+0x0C] cmp eax, edx
- jge SHORT G_M55896_IG43
+ jge SHORT G_M55896_IG46
call [<unknown method>] ; byrRegs -[rcx rdi r14] ; gcr arg pop 0 ;; size=83 bbWeight=4 PerfScore 132.00
-G_M55896_IG43: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M55896_IG46: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
lea rdi, bword ptr [rbx+0x88] ; byrRegs +[rdi] mov r8, rdi @@ -873,46 +905,17 @@ G_M55896_IG43: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, cmp edx, dword ptr [rsi+0x10] jl G_M55896_IG21 ;; size=41 bbWeight=8 PerfScore 132.00
-G_M55896_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx] ; byrRegs -[rdi r8-r9 r14] mov r14d, dword ptr [rsi+0x10]
- jmp SHORT G_M55896_IG47 - ;; size=6 bbWeight=1 PerfScore 4.00 -G_M55896_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M55896_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - call [<unknown method>] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rax rcx rdx] - ; gcr arg pop 0 - mov rcx, rbx - ; gcrRegs +[rcx] - call CORINFO_HELP_THROW - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=45 bbWeight=0 PerfScore 0.00 -G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M55896_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov dword ptr [rsi+0x08], -2 lea rcx, bword ptr [rsi+0x18] ; byrRegs +[rcx] cmp gword ptr [rcx], 0
- jne SHORT G_M55896_IG48
+ jne SHORT G_M55896_IG49
mov dword ptr [rcx+0x08], r14d mov rdx, 0xD1FFAB1E ; const ptr mov rdx, gword ptr [rdx] @@ -921,9 +924,9 @@ G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx rsi]
- jmp SHORT G_M55896_IG49
...

-15 (-0.82%) : 77068.dasm - System.Net.Security.SslStream+d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)

@@ -233,7 +233,7 @@ G_M55896_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test eax, eax je SHORT G_M55896_IG04 mov r14d, dword ptr [rsi+0x10]
- jmp G_M55896_IG47
+ jmp G_M55896_IG48
;; size=43 bbWeight=1 PerfScore 11.50 G_M55896_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref mov rcx, gword ptr [rbx+0x10] @@ -351,7 +351,7 @@ G_M55896_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=55 bbWeight=1 PerfScore 14.75 G_M55896_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc ; gcrRegs +[rbx] @@ -469,11 +469,11 @@ G_M55896_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd ; gcrRegs -[rax] sub eax, dword ptr [rcx+0x0C] cmp eax, edx
- jge G_M55896_IG43
+ jge G_M55896_IG46
call [<unknown method>] ; byrRegs -[rcx rdi r14] ; gcr arg pop 0
- jmp G_M55896_IG43
+ jmp G_M55896_IG46
;; size=39 bbWeight=1 PerfScore 15.00 G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz mov rcx, gword ptr [rbx+0x10] @@ -487,7 +487,7 @@ G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test r9, r9 jne SHORT G_M55896_IG22 test r8d, r8d
- jne G_M55896_IG45
+ jne G_M55896_IG42
xor rdx, rdx ; gcrRegs +[rdx] xor r8d, r8d @@ -497,7 +497,7 @@ G_M55896_IG21: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, G_M55896_IG22: ; bbWeight=4, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[rdx] cmp dword ptr [r9+0x08], r8d
- jb G_M55896_IG45
+ jb G_M55896_IG42
mov rdx, r9 ; gcrRegs +[rdx] mov eax, dword ptr [rdx+0x08] @@ -614,7 +614,7 @@ G_M55896_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M55896_IG49
+ jmp G_M55896_IG50
;; size=57 bbWeight=1 PerfScore 14.50 G_M55896_IG29: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc ; gcrRegs +[rbx] @@ -738,10 +738,10 @@ G_M55896_IG38: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, sub eax, dword ptr [rdx+0x08] sub eax, dword ptr [rcx+0x04] sub eax, dword ptr [rcx]
- jne G_M55896_IG46
+ jne G_M55896_IG43
xor r14d, r14d ; byrRegs -[r14]
- jmp G_M55896_IG47
+ jmp G_M55896_IG48
;; size=42 bbWeight=1 PerfScore 15.75 G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz ; byrRegs -[rcx rdx rdi] @@ -749,7 +749,7 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; byrRegs +[rcx] add dword ptr [rcx+0x0C], edi cmp dword ptr [rsi+0x10], 0xD1FFAB1E
- jne G_M55896_IG43
+ jne G_M55896_IG46
lea rdi, bword ptr [rbx+0x88] ; byrRegs +[rdi] mov rcx, rdi @@ -766,7 +766,7 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, sub r10d, r8d sub r10d, dword ptr [rcx] cmp r10d, 5
- jle G_M55896_IG43
+ jle G_M55896_IG46
mov rcx, rdi mov r10, r14 ; byrRegs +[r10] @@ -776,37 +776,69 @@ G_M55896_IG39: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test r10, r10 jne SHORT G_M55896_IG40 or edx, eax
- jne G_M55896_IG45
+ jne SHORT G_M55896_IG42
xor r15, r15 ; byrRegs +[r15] xor r13d, r13d jmp SHORT G_M55896_IG41
- ;; size=101 bbWeight=4 PerfScore 110.00 -G_M55896_IG40: ; bbWeight=4, gcrefRegs=0408 {rbx r10}, byrefRegs=40C2 {rcx rsi rdi r14}, byref
+ ;; size=97 bbWeight=4 PerfScore 110.00 +G_M55896_IG40: ; bbWeight=4, gcrefRegs=0408 {rbx r10}, byrefRegs=40C2 {rcx rsi rdi r14}, byref, isz
; byrRegs -[r15] mov r9d, edx mov r11d, eax add r9, r11 mov r11d, dword ptr [r10+0x08] cmp r9, r11
- ja G_M55896_IG45
+ ja SHORT G_M55896_IG42
mov edx, edx lea r15, bword ptr [r10+rdx+0x10] ; byrRegs +[r15] mov r13d, eax
- ;; size=32 bbWeight=4 PerfScore 22.00
+ ;; size=28 bbWeight=4 PerfScore 22.00
G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C2 {rcx rsi rdi r14 r15}, byref, isz ; gcrRegs -[r10] add r8d, dword ptr [rcx] cmp r8d, r13d
- ja G_M55896_IG45
+ jbe SHORT G_M55896_IG44 + ;; size=8 bbWeight=4 PerfScore 17.00 +G_M55896_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rcx rdi r14-r15] + call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M55896_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + call [<unknown method>] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rax rcx rdx] + ; gcr arg pop 0 + mov rcx, rbx + ; gcrRegs +[rcx] + call CORINFO_HELP_THROW + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M55896_IG44: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[rdi r14-r15]
mov r12d, r8d add r15, r12 sub r13d, r8d
- jns SHORT G_M55896_IG42
+ jns SHORT G_M55896_IG45
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
mov r12, rcx ; gcrRegs +[r12] mov rcx, r12 @@ -822,8 +854,8 @@ G_M55896_IG41: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C2 {rcx rs call [<unknown method>] ; gcrRegs -[rcx rdx r12] ; gcr arg pop 0
- ;; size=60 bbWeight=4 PerfScore 54.00 -G_M55896_IG42: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz
+ ;; size=48 bbWeight=4 PerfScore 37.00 +G_M55896_IG45: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rdi r14 r15}, byref, isz
mov bword ptr [rbp-0x88], r15 mov dword ptr [rbp-0x80], r13d lea rdx, [rbp-0x88] @@ -853,12 +885,12 @@ G_M55896_IG42: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C0C0 {rsi rd ; gcrRegs -[rax] sub eax, dword ptr [rcx+0x0C] cmp eax, edx
- jge SHORT G_M55896_IG43
+ jge SHORT G_M55896_IG46
call [<unknown method>] ; byrRegs -[rcx rdi r14] ; gcr arg pop 0 ;; size=83 bbWeight=4 PerfScore 132.00
-G_M55896_IG43: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M55896_IG46: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
lea rdi, bword ptr [rbx+0x88] ; byrRegs +[rdi] mov r8, rdi @@ -874,46 +906,17 @@ G_M55896_IG43: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, cmp edx, dword ptr [rsi+0x10] jl G_M55896_IG21 ;; size=41 bbWeight=8 PerfScore 132.00
-G_M55896_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx] ; byrRegs -[rdi r8-r9 r14] mov r14d, dword ptr [rsi+0x10]
- jmp SHORT G_M55896_IG47 - ;; size=6 bbWeight=1 PerfScore 4.00 -G_M55896_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M55896_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - call [<unknown method>] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rax rcx rdx] - ; gcr arg pop 0 - mov rcx, rbx - ; gcrRegs +[rcx] - call CORINFO_HELP_THROW - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=45 bbWeight=0 PerfScore 0.00 -G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M55896_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov dword ptr [rsi+0x08], -2 lea rcx, bword ptr [rsi+0x18] ; byrRegs +[rcx] cmp gword ptr [rcx], 0
- jne SHORT G_M55896_IG48
+ jne SHORT G_M55896_IG49
mov dword ptr [rcx+0x08], r14d mov rdx, 0xD1FFAB1E ; const ptr mov rdx, gword ptr [rdx] @@ -922,9 +925,9 @@ G_M55896_IG47: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx rsi]
- jmp SHORT G_M55896_IG49
...

-6 (-0.65%) : 3113.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 21 single block inlinees; 14 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T36] ( 4, 1 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <System.Object>
+; V00 loc0 [V00,T37] ( 4, 1 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <System.Object>
; V01 loc1 [V01 ] ( 6, 2.50) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc2 [V02,T03] ( 6, 26.50) ref -> rbx class-hnd exact single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 6, 17 ) ref -> rsi class-hnd <System.Diagnostics.Tracing.EventListener> @@ -20,16 +20,16 @@ ; V09 loc9 [V09 ] ( 7, 42 ) struct (24) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]> ; V10 loc10 [V10,T01] ( 2,144 ) ref -> [rbp-0x70] class-hnd spill-single-def <System.Diagnostics.Tracing.EventListener> ; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T30] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp2 [V13,T32] ( 2, 2 ) ubyte -> rcx "Inlining Arg"
+; V12 tmp1 [V12,T31] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp2 [V13,T33] ( 2, 2 ) ubyte -> rcx "Inlining Arg"
;* V14 tmp3 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp5 [V16,T31] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V16 tmp5 [V16,T32] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]> ;* V18 tmp7 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ; V20 tmp9 [V20,T23] ( 3, 6 ) ref -> r12 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V21 tmp10 [V21,T11] ( 5, 14 ) long -> rcx "Inline stloc first use temp"
+; V21 tmp10 [V21,T10] ( 5, 14 ) long -> rcx "Inline stloc first use temp"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> ; V23 tmp12 [V23,T24] ( 3, 6 ) ref -> r12 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource> @@ -37,45 +37,46 @@ ; V26 tmp15 [V26,T13] ( 3, 12 ) ref -> r12 class-hnd "updating class info" <System.ComAwareWeakReference> ;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp18 [V29,T19] ( 2, 8 ) ref -> rax class-hnd "dup spill" <System.Object> -; V30 tmp19 [V30,T17] ( 4, 8 ) ref -> rax
+; V29 tmp18 [V29,T18] ( 2, 8 ) ref -> rax class-hnd "dup spill" <System.Object> +; V30 tmp19 [V30,T16] ( 4, 8 ) ref -> rax
;* V31 tmp20 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp21 [V32,T02] ( 2, 64 ) ref -> rdx class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V35 tmp24 [V35,T20] ( 2, 8 ) ref -> rax class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> -; V36 tmp25 [V36,T18] ( 4, 8 ) ref -> rax -; V37 tmp26 [V37,T10] ( 4, 16 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V35 tmp24 [V35,T19] ( 2, 8 ) ref -> rax class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> +; V36 tmp25 [V36,T17] ( 4, 8 ) ref -> rax +; V37 tmp26 [V37,T09] ( 4, 16 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>
-; V40 tmp29 [V40,T21] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
+; V40 tmp29 [V40,T20] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp32 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp32 [V43,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V45 tmp34 [V45,T09] ( 4, 12.50) ref -> rdi single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V46 tmp35 [V46,T12] ( 3, 10 ) ref -> r13 "field V05._current (fldOffset=0x8)" P-INDEP
+; V45 tmp34 [V45,T12] ( 4, 12.50) ref -> rdi single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V46 tmp35 [V46,T11] ( 3, 10 ) ref -> r13 "field V05._current (fldOffset=0x8)" P-INDEP
; V47 tmp36 [V47,T04] ( 6, 20.50) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V48 tmp37 [V48,T16] ( 3, 8.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+; V48 tmp37 [V48,T28] ( 2, 4.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V49 tmp38 [V49 ] ( 3, 20 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP ; V50 tmp39 [V50 ] ( 4, 36 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x8)" P-DEP ; V51 tmp40 [V51 ] ( 3, 20 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x10)" P-DEP ; V52 tmp41 [V52 ] ( 3, 20 ) int -> [rbp-0x44] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0x14)" P-DEP
-; V53 tmp42 [V53,T35] ( 3, 1.50) ref -> rdi single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V53 tmp42 [V53,T36] ( 3, 1.50) ref -> rdi single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V55 tmp44 [V55,T39] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V56 tmp45 [V56,T37] ( 2, 1 ) int -> r14 "field V17._version (fldOffset=0x14)" P-INDEP
+;* V55 tmp44 [V55,T40] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V56 tmp45 [V56,T38] ( 2, 1 ) int -> r14 "field V17._version (fldOffset=0x14)" P-INDEP
; V57 tmp46 [V57,T25] ( 3, 6 ) ref -> rcx "field V39._dictionary (fldOffset=0x0)" P-INDEP
-;* V58 tmp47 [V58,T33] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP -;* V59 tmp48 [V59,T34] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP -; V60 tmp49 [V60,T29] ( 2, 4 ) int -> rdx "field V39._version (fldOffset=0x14)" P-INDEP
+;* V58 tmp47 [V58,T34] ( 0, 0 ) ref -> zero-ref "field V39._currentKey (fldOffset=0x8)" P-INDEP +;* V59 tmp48 [V59,T35] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x10)" P-INDEP +; V60 tmp49 [V60,T30] ( 2, 4 ) int -> rdx "field V39._version (fldOffset=0x14)" P-INDEP
; V61 tmp50 [V61,T06] ( 3, 24 ) ref -> rcx "arr expr"
-; V62 PSPSym [V62,T38] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" -; V63 cse0 [V63,T14] ( 3, 12 ) int -> r13 "CSE - moderate" -; V64 cse1 [V64,T07] ( 3, 20 ) long -> r13 "CSE - aggressive" -; V65 rat0 [V65,T28] ( 3, 4 ) long -> rax "TLS field access" -; V66 rat1 [V66,T26] ( 3, 6 ) long -> rax "TLS access" -; V67 rat2 [V67,T27] ( 3, 6 ) long -> rax "ThreadStaticBlockBase access"
+; V62 PSPSym [V62,T39] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" +; V63 cse0 [V63,T22] ( 2, 8 ) int -> rcx "CSE - moderate" +; V64 cse1 [V64,T14] ( 2, 8 ) int -> rcx "CSE - moderate" +; V65 cse2 [V65,T07] ( 3, 20 ) long -> r13 "CSE - aggressive" +; V66 rat0 [V66,T29] ( 3, 4 ) long -> rax "TLS field access" +; V67 rat1 [V67,T26] ( 3, 6 ) long -> rax "TLS access" +; V68 rat2 [V68,T27] ( 3, 6 ) long -> rax "ThreadStaticBlockBase access"
; ; Lcl frame size = 104 @@ -100,11 +101,11 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, qword ptr GS:[0x0058] mov rax, qword ptr [rax] cmp dword ptr [rax+0xC8], 2
- jl G_M15982_IG40
+ jl G_M15982_IG39
mov rax, qword ptr [rax+0xD0] mov rax, qword ptr [rax+0x10] test rax, rax
- je G_M15982_IG40
+ je G_M15982_IG39
;; size=45 bbWeight=1 PerfScore 12.25 G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rax+0x0AB5], 0 @@ -131,7 +132,7 @@ G_M15982_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 xor edx, edx mov dword ptr [rbp-0x40], edx ;; size=15 bbWeight=0.50 PerfScore 2.62
-G_M15982_IG06: ; bbWeight=0.50, gcVars=0000001000000000 {V00}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG06: ; bbWeight=0.50, gcVars=0000002000000000 {V00}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x40], 0 jne G_M15982_IG33 lea rdx, [rbp-0x40] @@ -221,15 +222,16 @@ G_M15982_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, xor r15d, r15d ;; size=25 bbWeight=0.50 PerfScore 2.38 G_M15982_IG13: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- mov r13d, dword ptr [rdi+0x14] - cmp r14d, r13d - jne G_M15982_IG36 - cmp r15d, dword ptr [rdi+0x10] - jae G_M15982_IG39
+ mov ecx, dword ptr [rdi+0x14] + cmp r14d, ecx + jne G_M15982_IG37 + mov ecx, dword ptr [rdi+0x10] + cmp r15d, ecx + jae G_M15982_IG38
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] cmp r15d, dword ptr [rcx+0x08]
- jae G_M15982_IG37
+ jae G_M15982_IG36
mov eax, r15d mov r13, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[r13] @@ -239,7 +241,7 @@ G_M15982_IG13: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx] and rcx, -2 jne G_M15982_IG23
- ;; size=64 bbWeight=4 PerfScore 77.00
+ ;; size=65 bbWeight=4 PerfScore 74.00
G_M15982_IG14: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[r13] xor r12, r12 @@ -392,14 +394,14 @@ G_M15982_IG28: ; bbWeight=16, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=000 mov r8, rcx ; gcrRegs +[r8] ;; size=16 bbWeight=16 PerfScore 68.00
-G_M15982_IG29: ; bbWeight=128, gcVars=0000001000000002 {V00 V10}, gcrefRegs=1188 {rbx rdi r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG29: ; bbWeight=128, gcVars=0000002000000002 {V00 V10}, gcrefRegs=1188 {rbx rdi r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx] mov gword ptr [rbp-0x68], r8 ; GC ptr vars +{V08} test r8, r8 jne SHORT G_M15982_IG31 ;; size=9 bbWeight=128 PerfScore 288.00
-G_M15982_IG30: ; bbWeight=32, gcVars=0000001000000003 {V00 V08 V10}, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, gcvars, byref
+G_M15982_IG30: ; bbWeight=32, gcVars=0000002000000003 {V00 V08 V10}, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r8] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] @@ -417,12 +419,12 @@ G_M15982_IG31: ; bbWeight=128, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=00 cmp gword ptr [r8+0x08], rax je SHORT G_M15982_IG34 ;; size=14 bbWeight=128 PerfScore 768.00
-G_M15982_IG32: ; bbWeight=64, gcVars=0000001000000002 {V00 V10}, gcrefRegs=1189 {rax rbx rdi r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG32: ; bbWeight=64, gcVars=0000002000000002 {V00 V10}, gcrefRegs=1189 {rax rbx rdi r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00 V08} mov r8, gword ptr [r8+0x18] jmp SHORT G_M15982_IG29 ;; size=6 bbWeight=64 PerfScore 256.00
-G_M15982_IG33: ; bbWeight=0, gcVars=0000001000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15982_IG33: ; bbWeight=0, gcVars=0000002000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx rdi r8 r12] ; GC ptr vars -{V10} +{V00} call [System.Threading.Monitor:ThrowLockTakenException()] @@ -442,22 +444,17 @@ G_M15982_IG35: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, ; gcrRegs -[r12] jmp G_M15982_IG13 ;; size=5 bbWeight=4 PerfScore 8.00
-G_M15982_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M15982_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
- cmp r14d, r13d - jne SHORT G_M15982_IG38 - jmp SHORT G_M15982_IG39 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M15982_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M15982_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x40], 0 je G_M15982_IG04 mov rcx, gword ptr [rbp-0x60] @@ -468,14 +465,14 @@ G_M15982_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp G_M15982_IG04 ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M15982_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 2 call CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; gcr arg pop 0 jmp G_M15982_IG03 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M15982_IG41: ; bbWeight=0, gcVars=0000001000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V00 V36}
+G_M15982_IG40: ; bbWeight=0, gcVars=0000002000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V00 V37}
push rbp push r15 push r14 @@ -489,20 +486,20 @@ G_M15982_IG41: ; bbWeight=0, gcVars=0000001000000000 {V00}, gcrefRegs=000 mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0xA0] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M15982_IG42: ; bbWeight=0, gcVars=0000001000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M15982_IG41: ; bbWeight=0, gcVars=0000002000000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x40], 0
- je SHORT G_M15982_IG43
+ je SHORT G_M15982_IG42
mov rcx, gword ptr [rbp-0x60] ; gcrRegs +[rcx]
- ; GC ptr vars -{V00 V36}
+ ; GC ptr vars -{V00 V37}
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M15982_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15982_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

+2 (+0.87%) : 30667.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)

@@ -8,33 +8,34 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> -; V01 arg1 [V01,T13] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object> -; V02 arg2 [V02,T10] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> -; V03 arg3 [V03,T11] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
+; V00 arg0 [V00,T04] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> +; V01 arg1 [V01,T14] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object> +; V02 arg2 [V02,T11] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> +; V03 arg3 [V03,T12] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T15] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString> -; V06 loc2 [V06,T16] ( 2, 3 ) ref -> rdi class-hnd single-def <System.Xml.XmlDictionaryString>
+; V05 loc1 [V05,T16] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString> +; V06 loc2 [V06,T17] ( 2, 3 ) ref -> rdi class-hnd single-def <System.Xml.XmlDictionaryString>
;* V07 loc3 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc4 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V11 tmp2 [V11,T08] ( 6, 8.75) ref -> rbp class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> -; V12 tmp3 [V12,T12] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V10 tmp1 [V10,T19] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" +; V11 tmp2 [V11,T09] ( 6, 8.75) ref -> rbp class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> +; V12 tmp3 [V12,T13] ( 3, 6 ) int -> r15 "Inlining Arg"
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-;* V14 tmp5 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp5 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V16 tmp7 [V16,T02] ( 4, 17 ) ref -> rbp single-def "field V08._list (fldOffset=0x0)" P-INDEP ; V17 tmp8 [V17,T00] ( 6, 21 ) int -> r15 "field V08._index (fldOffset=0x8)" P-INDEP
-; V18 tmp9 [V18,T07] ( 2, 9 ) int -> rsi single-def "field V08._version (fldOffset=0xc)" P-INDEP -; V19 tmp10 [V19,T06] ( 2, 6 ) int -> r13 "field V08._current (fldOffset=0x10)" P-INDEP -; V20 tmp11 [V20,T14] ( 3, 3 ) ref -> rbp single-def "field V13._list (fldOffset=0x0)" P-INDEP -;* V21 tmp12 [V21,T19] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP -; V22 tmp13 [V22,T17] ( 2, 2 ) int -> rsi single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V18 tmp9 [V18,T08] ( 2, 9 ) int -> rsi single-def "field V08._version (fldOffset=0xc)" P-INDEP +; V19 tmp10 [V19,T07] ( 2, 6 ) int -> r13 "field V08._current (fldOffset=0x10)" P-INDEP +; V20 tmp11 [V20,T15] ( 3, 3 ) ref -> rbp single-def "field V13._list (fldOffset=0x0)" P-INDEP +;* V21 tmp12 [V21,T20] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP +; V22 tmp13 [V22,T18] ( 2, 2 ) int -> rsi single-def "field V13._version (fldOffset=0xc)" P-INDEP
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V13._current (fldOffset=0x10)" P-INDEP ; V24 tmp15 [V24,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 tmp16 [V25,T04] ( 3, 12 ) ref -> rcx "argument with side effect" -; V26 cse0 [V26,T05] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 tmp16 [V25,T05] ( 3, 12 ) ref -> rcx "argument with side effect" +; V26 cse0 [V26,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V27 cse1 [V27,T03] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -133,9 +134,10 @@ G_M6012_IG06: ; bbWeight=2, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0 ; gcr arg pop 0 ;; size=45 bbWeight=2 PerfScore 40.50 G_M6012_IG07: ; bbWeight=8, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbp+0x14]
+ mov ecx, dword ptr [rbp+0x14] + cmp esi, ecx
jne SHORT G_M6012_IG11
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M6012_IG08: ; bbWeight=4, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbp+0x10] cmp r15d, ecx @@ -171,7 +173,7 @@ G_M6012_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 229, prolog size 14, PerfScore 180.47, instruction count 74, allocated bytes for code 229 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
+; Total bytes of code 231, prolog size 14, PerfScore 174.47, instruction count 75, allocated bytes for code 231 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
; ============================================================ Unwind Info:

+2 (+0.87%) : 58455.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)

@@ -8,33 +8,34 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> -; V01 arg1 [V01,T13] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object> -; V02 arg2 [V02,T10] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> -; V03 arg3 [V03,T11] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
+; V00 arg0 [V00,T04] ( 7, 11 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator> +; V01 arg1 [V01,T14] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object> +; V02 arg2 [V02,T11] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerWriteContext> +; V03 arg3 [V03,T12] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.DataContracts.CollectionDataContract>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[int]>
-; V05 loc1 [V05,T15] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString> -; V06 loc2 [V06,T16] ( 2, 3 ) ref -> rdi class-hnd single-def <System.Xml.XmlDictionaryString>
+; V05 loc1 [V05,T16] ( 2, 3 ) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString> +; V06 loc2 [V06,T17] ( 2, 3 ) ref -> rdi class-hnd single-def <System.Xml.XmlDictionaryString>
;* V07 loc3 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc4 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[int]> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T18] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V11 tmp2 [V11,T08] ( 6, 8.75) ref -> rbp class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> -; V12 tmp3 [V12,T12] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V10 tmp1 [V10,T19] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" +; V11 tmp2 [V11,T09] ( 6, 8.75) ref -> rbp class-hnd "spilling QMark2" <System.Collections.Generic.List`1[int]> +; V12 tmp3 [V12,T13] ( 3, 6 ) int -> r15 "Inlining Arg"
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-;* V14 tmp5 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp5 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V16 tmp7 [V16,T02] ( 4, 17 ) ref -> rbp single-def "field V08._list (fldOffset=0x0)" P-INDEP ; V17 tmp8 [V17,T00] ( 6, 21 ) int -> r15 "field V08._index (fldOffset=0x8)" P-INDEP
-; V18 tmp9 [V18,T07] ( 2, 9 ) int -> rsi single-def "field V08._version (fldOffset=0xc)" P-INDEP -; V19 tmp10 [V19,T06] ( 2, 6 ) int -> r13 "field V08._current (fldOffset=0x10)" P-INDEP -; V20 tmp11 [V20,T14] ( 3, 3 ) ref -> rbp single-def "field V13._list (fldOffset=0x0)" P-INDEP -;* V21 tmp12 [V21,T19] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP -; V22 tmp13 [V22,T17] ( 2, 2 ) int -> rsi single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V18 tmp9 [V18,T08] ( 2, 9 ) int -> rsi single-def "field V08._version (fldOffset=0xc)" P-INDEP +; V19 tmp10 [V19,T07] ( 2, 6 ) int -> r13 "field V08._current (fldOffset=0x10)" P-INDEP +; V20 tmp11 [V20,T15] ( 3, 3 ) ref -> rbp single-def "field V13._list (fldOffset=0x0)" P-INDEP +;* V21 tmp12 [V21,T20] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP +; V22 tmp13 [V22,T18] ( 2, 2 ) int -> rsi single-def "field V13._version (fldOffset=0xc)" P-INDEP
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V13._current (fldOffset=0x10)" P-INDEP ; V24 tmp15 [V24,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 tmp16 [V25,T04] ( 3, 12 ) ref -> rcx "argument with side effect" -; V26 cse0 [V26,T05] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 tmp16 [V25,T05] ( 3, 12 ) ref -> rcx "argument with side effect" +; V26 cse0 [V26,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V27 cse1 [V27,T03] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -133,9 +134,10 @@ G_M6012_IG06: ; bbWeight=2, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0 ; gcr arg pop 0 ;; size=45 bbWeight=2 PerfScore 40.50 G_M6012_IG07: ; bbWeight=8, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbp+0x14]
+ mov ecx, dword ptr [rbp+0x14] + cmp esi, ecx
jne SHORT G_M6012_IG11
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M6012_IG08: ; bbWeight=4, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbp+0x10] cmp r15d, ecx @@ -171,7 +173,7 @@ G_M6012_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 229, prolog size 14, PerfScore 180.47, instruction count 74, allocated bytes for code 229 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
+; Total bytes of code 231, prolog size 14, PerfScore 174.47, instruction count 75, allocated bytes for code 231 (MethodHash=c618e883) for method (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
; ============================================================ Unwind Info:

+2 (+1.61%) : 30037.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)

@@ -8,27 +8,28 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V01 arg1 [V01,T06] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Type> -; V02 loc0 [V02,T09] ( 3, 2.50) ref -> rcx class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Type> +; V02 loc0 [V02,T10] ( 3, 2.50) ref -> rcx class-hnd exact single-def <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Text.Json.Serialization.JsonConverter]> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.JsonConverter> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.JsonConverter> ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T10] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V07 tmp1 [V07,T11] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Text.Json.Serialization.JsonConverter]> ;* V09 tmp3 [V09,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V11 tmp5 [V11,T03] ( 4, 12.50) ref -> rsi single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V12 tmp6 [V12,T02] ( 4, 8.50) ref -> r14 "field V03._current (fldOffset=0x8)" P-INDEP ; V13 tmp7 [V13,T00] ( 6, 20.50) int -> rbp "field V03._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T08] ( 2, 4.50) int -> rdi "field V03._version (fldOffset=0x14)" P-INDEP -; V15 tmp9 [V15,T11] ( 3, 1.50) ref -> rsi single-def "field V08._list (fldOffset=0x0)" P-INDEP
+; V14 tmp8 [V14,T09] ( 2, 4.50) int -> rdi "field V03._version (fldOffset=0x14)" P-INDEP +; V15 tmp9 [V15,T12] ( 3, 1.50) ref -> rsi single-def "field V08._list (fldOffset=0x0)" P-INDEP
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp11 [V17,T13] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP -; V18 tmp12 [V18,T12] ( 2, 1 ) int -> rdi "field V08._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp11 [V17,T14] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP +; V18 tmp12 [V18,T13] ( 2, 1 ) int -> rdi "field V08._version (fldOffset=0x14)" P-INDEP
; V19 tmp13 [V19,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V20 cse0 [V20,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V20 cse0 [V20,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V21 cse1 [V21,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -71,7 +72,8 @@ G_M48066_IG04: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 ;; size=20 bbWeight=2 PerfScore 17.50 G_M48066_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14]
- cmp edi, dword ptr [rsi+0x14]
+ mov ecx, dword ptr [rsi+0x14] + cmp edi, ecx
jne SHORT G_M48066_IG11 mov ecx, dword ptr [rsi+0x10] cmp ebp, ecx @@ -85,7 +87,7 @@ G_M48066_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[r14] inc ebp jmp SHORT G_M48066_IG04
- ;; size=32 bbWeight=4 PerfScore 71.00
+ ;; size=34 bbWeight=4 PerfScore 68.00
G_M48066_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx rsi r14] xor rax, rax @@ -125,7 +127,7 @@ G_M48066_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 10, PerfScore 118.38, instruction count 52, allocated bytes for code 124 (MethodHash=6c47443d) for method System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
+; Total bytes of code 126, prolog size 10, PerfScore 115.38, instruction count 53, allocated bytes for code 126 (MethodHash=6c47443d) for method System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-29 (-16.76%) : 245441.dasm - Program:M49() (FullOpts)

@@ -10,11 +10,12 @@ ; V00 loc0 [V00,T01] ( 4, 13 ) int -> rbx ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> rcx "arr expr" -; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> rax "arr expr" -; V05 PSPSym [V05,T05] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" -; V06 cse0 [V06,T03] ( 3, 12 ) int -> rax "CSE - aggressive" -; V07 cse1 [V07,T04] ( 2, 4.50) long -> rsi hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> rax "arr expr" +;* V04 tmp2 [V04,T04] ( 0, 0 ) ref -> zero-ref "arr expr" +; V05 PSPSym [V05,T06] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" +; V06 cse0 [V06,T02] ( 3, 12 ) byref -> rax "CSE - aggressive" +; V07 cse1 [V07,T03] ( 2, 8 ) ref -> rax "CSE - aggressive" +; V08 cse2 [V08,T05] ( 2, 4.50) long -> rsi hoist "CSE - aggressive"
; ; Lcl frame size = 48 @@ -31,73 +32,60 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcr arg pop 0 test eax, eax
- jle SHORT G_M37813_IG08
+ jle SHORT G_M37813_IG06
;; size=12 bbWeight=1 PerfScore 4.50 G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; static handle ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rsi] - test eax, eax - jne SHORT G_M37813_IG06 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rcx, gword ptr [rcx] - ; gcrRegs +[rcx] - cmp dword ptr [rcx+0x08], 0 - jbe SHORT G_M37813_IG13 - xor edx, edx - mov dword ptr [rcx+0x10], edx - ;; size=24 bbWeight=2 PerfScore 15.00 -G_M37813_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - test eax, eax - je SHORT G_M37813_IG09 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M37813_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp byte ptr [rsi], 0 + jne SHORT G_M37813_IG05 + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp dword ptr [rax+0x08], 0 + jbe SHORT G_M37813_IG10 + add rax, 16 + ; gcrRegs -[rax] + ; byrRegs +[rax] + xor ecx, ecx + mov dword ptr [rax], ecx + jmp SHORT G_M37813_IG07 + ;; size=34 bbWeight=4 PerfScore 55.00 +G_M37813_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[rax]
xor eax, eax mov dword ptr [(reloc)], eax ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M37813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M37813_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 48 pop rbx pop rsi pop rbp ret ;; size=8 bbWeight=1 PerfScore 2.75
-G_M37813_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rax] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], 0 - jbe SHORT G_M37813_IG10
+G_M37813_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref + ; byrRegs +[rax]
mov ecx, dword ptr [(reloc)] ; static handle
- mov dword ptr [rax+0x10], ecx - jmp SHORT G_M37813_IG11 - ;; size=30 bbWeight=4 PerfScore 45.00 -G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M37813_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rax], ecx + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M37813_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax]
inc ebx call [<unknown method>] ; gcr arg pop 0 cmp eax, ebx jg SHORT G_M37813_IG04 ;; size=12 bbWeight=4 PerfScore 18.00
-G_M37813_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M37813_IG08
+G_M37813_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M37813_IG06
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37813_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push rsi push rbx @@ -106,7 +94,7 @@ G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x40] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
add rsp, 48 pop rbx pop rsi @@ -114,7 +102,7 @@ G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 16, PerfScore 109.75, instruction count 57, allocated bytes for code 173 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
+; Total bytes of code 144, prolog size 16, PerfScore 98.75, instruction count 49, allocated bytes for code 144 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)
; ============================================================ Unwind Info: @@ -147,4 +135,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for Program:M49() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M37813_IG09..G_M37813_IG11) handled by [G_M37813_IG14..END) (fault)
+EH#0: try [G_M37813_IG07..G_M37813_IG08) handled by [G_M37813_IG11..END) (fault)
-14 (-6.36%) : 251549.dasm - Test.BB:TestEntryPoint() (FullOpts)
@@ -8,130 +8,117 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [rbp-0x18] class-hnd exact EH-live single-def <<unknown class>>
+; V00 loc0 [V00,T06] ( 2, 0 ) ref -> [rbp-0x10] class-hnd exact EH-live single-def <<unknown class>>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2" ; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp3 [V04,T02] ( 3, 10 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 10 ) long -> rcx "fgMakeTemp is creating a new local variable"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]> ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [rbp-0x0C] spill-single-def "bubbling QMark2" -; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> rbx single-def "CASTCLASS eval op1" -; V09 tmp8 [V09,T06] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> rdx class-hnd "spilling QMark2" <double[]> -; V11 PSPSym [V11,T03] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" -; V12 cse0 [V12,T01] ( 5, 24 ) ref -> rbx multi-def "CSE - aggressive"
+; V07 tmp6 [V07,T07] ( 2, 0 ) float -> [rbp-0x04] spill-single-def "bubbling QMark2" +; V08 tmp7 [V08,T04] ( 3, 0 ) ref -> rdx single-def "CASTCLASS eval op1" +; V09 tmp8 [V09,T05] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" +; V10 tmp9 [V10,T03] ( 5, 0 ) ref -> rax class-hnd "spilling QMark2" <double[]> +; V11 PSPSym [V11,T02] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - sub rsp, 56
+ sub rsp, 64
vzeroupper lea rbp, [rsp+0x40] mov qword ptr [rbp-0x20], rsp
- ;; size=18 bbWeight=1 PerfScore 4.75
+ ;; size=17 bbWeight=1 PerfScore 3.75
G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, 0xD1FFAB1E ; <unknown class> mov edx, 2 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x18], rax
+ mov gword ptr [rbp-0x10], rax
; GC ptr vars +{V00} ;; size=24 bbWeight=1 PerfScore 2.50
-G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52695_IG03: ; bbWeight=8, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov ecx, 2 cmp ecx, 3 jbe SHORT G_M52695_IG06 mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rbx, gword ptr [rcx] - ; gcrRegs +[rbx] - mov rdx, rbx
+ mov rdx, gword ptr [rcx]
; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M52695_IG07 - ;; size=31 bbWeight=8 PerfScore 42.00 -G_M52695_IG04: ; bbWeight=2, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M52695_IG03 + ;; size=28 bbWeight=8 PerfScore 40.00 +G_M52695_IG04: ; bbWeight=2, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; double[] cmp qword ptr [rdx], rcx je SHORT G_M52695_IG07 ;; size=15 bbWeight=2 PerfScore 8.50
-G_M52695_IG05: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 jmp SHORT G_M52695_IG07 ;; size=7 bbWeight=1 PerfScore 3.00 G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M52695_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx] - test rbx, rbx - je SHORT G_M52695_IG03 - ;; size=5 bbWeight=8 PerfScore 10.00
+G_M52695_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=8 PerfScore 2.00
G_M52695_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[rbx]
; GC ptr vars -{V00}
- add rsp, 56 - pop rbx
+ add rsp, 64
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push rbp
- push rbx - sub rsp, 40
+ sub rsp, 48
vzeroupper mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00 -G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00 V07} - mov rax, gword ptr [rbp-0x18]
+ ;; size=21 bbWeight=0 PerfScore 0.00 +G_M52695_IG10: ; bbWeight=0, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00} + mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax] vmovss xmm0, dword ptr [rax+0x10]
- vmovss dword ptr [rbp-0x0C], xmm0
+ vmovss dword ptr [rbp-0x04], xmm0
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rbx, gword ptr [rcx] - ; gcrRegs +[rbx] - mov rdx, rbx
+ mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
- test rdx, rdx
+ mov rax, rdx + test rax, rax
je SHORT G_M52695_IG11 mov rcx, 0xD1FFAB1E ; double[]
- cmp qword ptr [rdx], rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M52695_IG11
- mov rdx, rbx - ; GC ptr vars -{V00 V07}
+ ; GC ptr vars -{V00}
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[rdx rbx] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - ;; size=61 bbWeight=0 PerfScore 0.00 -G_M52695_IG11: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - vmovss xmm0, dword ptr [rbp-0x0C] - call [Test.BB:Method1(float,double[])]
; gcrRegs -[rdx]
+ ; gcr arg pop 0 + ;; size=55 bbWeight=0 PerfScore 0.00 +G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + vmovss xmm0, dword ptr [rbp-0x04] + mov rdx, rax + ; gcrRegs +[rdx] + call [Test.BB:Method1(float,double[])] + ; gcrRegs -[rax rdx]
; gcr arg pop 0 lea rax, G_M52695_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 40 - pop rbx
+ add rsp, 48
pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 18, PerfScore 73.00, instruction count 58, allocated bytes for code 220 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
+; Total bytes of code 206, prolog size 17, PerfScore 61.50, instruction count 51, allocated bytes for code 206 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)
; ============================================================ Unwind Info: @@ -139,26 +126,24 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for Test.BB:TestEntryPoint() 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM

-36 (-6.20%) : 176538.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -25,7 +25,7 @@ ; V13 tmp9 [V13,T08] ( 6, 12 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[int]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T00] ( 24,158 ) byref -> rcx "Inlining Arg"
+; V16 tmp12 [V16,T00] ( 20,154 ) byref -> rcx "Inlining Arg"
; V17 tmp13 [V17,T03] ( 8, 43 ) ref -> r11 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V19 tmp15 [V19,T12] ( 3, 3 ) ref -> rdx single-def "field V14._list (fldOffset=0x0)" P-INDEP @@ -57,9 +57,9 @@ G_M48461_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor esi, esi mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[int] cmp qword ptr [rbx], rcx
- jne G_M48461_IG26
+ jne G_M48461_IG25
cmp dword ptr [rbx+0x10], 0
- je G_M48461_IG25
+ je G_M48461_IG24
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] mov rcx, rdi call CORINFO_HELP_NEWSFAST @@ -89,13 +89,13 @@ G_M48461_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=1 PerfScore 1.00 G_M48461_IG05: ; bbWeight=1, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz test rdi, rdi
- je G_M48461_IG14
+ je G_M48461_IG13
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int] mov rbx, rcx cmp qword ptr [rdi], rbx
- jne G_M48461_IG14
+ jne SHORT G_M48461_IG13
jmp SHORT G_M48461_IG07
- ;; size=33 bbWeight=1 PerfScore 7.75
+ ;; size=29 bbWeight=1 PerfScore 7.75
G_M48461_IG06: ; bbWeight=9.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov r14d, dword ptr [rdi+0x18] add esi, r14d @@ -107,10 +107,10 @@ G_M48461_IG07: ; bbWeight=10.89, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[r11] mov eax, dword ptr [rcx+0x0C] cmp eax, dword ptr [r11+0x14]
- jne SHORT G_M48461_IG12
+ jne SHORT G_M48461_IG10
mov eax, dword ptr [rcx+0x08] cmp eax, dword ptr [r11+0x10]
- jae SHORT G_M48461_IG13
+ jae SHORT G_M48461_IG12
;; size=25 bbWeight=10.89 PerfScore 157.91 G_M48461_IG08: ; bbWeight=9.90, gcrefRegs=0880 {rdi r11}, byrefRegs=0002 {rcx}, byref, isz mov rdx, gword ptr [r11+0x08] @@ -145,43 +145,61 @@ G_M48461_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 mov r14d, eax
- jmp SHORT G_M48461_IG16
+ jmp SHORT G_M48461_IG15
;; size=21 bbWeight=0 PerfScore 0.00 G_M48461_IG12: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx]
- mov eax, dword ptr [rcx+0x0C] - mov r11, gword ptr [rcx] - ; gcrRegs +[r11] - cmp eax, dword ptr [r11+0x14] - jne SHORT G_M48461_IG10 - ;; size=12 bbWeight=0.99 PerfScore 7.92 -G_M48461_IG13: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref - ; gcrRegs -[r11] - mov r11, gword ptr [rcx] - ; gcrRegs +[r11] - mov r11d, dword ptr [r11+0x10] - ; gcrRegs -[r11]
+ mov rax, gword ptr [rcx] + ; gcrRegs +[rax] + mov r11d, dword ptr [rax+0x10]
inc r11d mov dword ptr [rcx+0x08], r11d xor r11d, r11d mov dword ptr [rcx+0x10], r11d
- jmp G_M48461_IG22 - ;; size=26 bbWeight=0.99 PerfScore 8.41 -G_M48461_IG14: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M48461_IG21 + ;; size=23 bbWeight=0.99 PerfScore 8.41 +G_M48461_IG13: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
; byrRegs -[rcx] cmp dword ptr [rdi], edi mov rbx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[int]
- jmp SHORT G_M48461_IG17
+ jmp SHORT G_M48461_IG16
;; size=14 bbWeight=0.01 PerfScore 0.05
-G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M48461_IG14: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rdi+0x18] ;; size=4 bbWeight=0.10 PerfScore 0.20
-G_M48461_IG16: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M48461_IG15: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
add esi, r14d ;; size=3 bbWeight=0.10 PerfScore 0.03
-G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG16: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rdi], rbx
- je SHORT G_M48461_IG18
+ jne SHORT G_M48461_IG18 + lea rcx, bword ptr [rdi+0x08] + ; byrRegs +[rcx] + mov r11, gword ptr [rcx] + ; gcrRegs +[r11] + mov eax, dword ptr [rcx+0x0C] + cmp eax, dword ptr [r11+0x14] + jne SHORT G_M48461_IG10 + mov eax, dword ptr [rcx+0x08] + cmp eax, dword ptr [r11+0x10] + jae SHORT G_M48461_IG20 + ;; size=30 bbWeight=0.11 PerfScore 2.04 +G_M48461_IG17: ; bbWeight=0.10, gcrefRegs=0880 {rdi r11}, byrefRegs=0002 {rcx}, byref, isz + mov rdx, gword ptr [r11+0x08] + ; gcrRegs +[rdx] + cmp eax, dword ptr [rdx+0x08] + jae SHORT G_M48461_IG09 + mov r11d, eax + ; gcrRegs -[r11] + mov r11d, dword ptr [rdx+4*r11+0x10] + mov dword ptr [rcx+0x10], r11d + inc dword ptr [rcx+0x08] + jmp SHORT G_M48461_IG14 + ;; size=26 bbWeight=0.10 PerfScore 1.43 +G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + ; byrRegs -[rcx]
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; function address @@ -189,43 +207,13 @@ G_M48461_IG17: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M48461_IG11 - jmp SHORT G_M48461_IG22 - ;; size=27 bbWeight=0.11 PerfScore 1.18 -G_M48461_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - lea rcx, bword ptr [rdi+0x08] - ; byrRegs +[rcx] - mov r11, gword ptr [rcx] - ; gcrRegs +[r11] - mov eax, dword ptr [rcx+0x0C] - cmp eax, dword ptr [r11+0x14] - jne SHORT G_M48461_IG20 - mov eax, dword ptr [rcx+0x08] - cmp eax, dword ptr [r11+0x10] - jae SHORT G_M48461_IG21 - ;; size=25 bbWeight=0.11 PerfScore 1.60 -G_M48461_IG19: ; bbWeight=0.10, gcrefRegs=0880 {rdi r11}, byrefRegs=0002 {rcx}, byref, isz - mov rdx, gword ptr [r11+0x08] - ; gcrRegs +[rdx] - cmp eax, dword ptr [rdx+0x08] - jae G_M48461_IG09 - mov r11d, eax - ; gcrRegs -[r11] - mov r11d, dword ptr [rdx+4*r11+0x10] - mov dword ptr [rcx+0x10], r11d - inc dword ptr [rcx+0x08] - jmp SHORT G_M48461_IG15 - ;; size=30 bbWeight=0.10 PerfScore 1.43
+ jne G_M48461_IG11 + ;; size=24 bbWeight=0.11 PerfScore 0.52 +G_M48461_IG19: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M48461_IG21 + ;; size=2 bbWeight=0.11 PerfScore 0.22
G_M48461_IG20: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
- ; gcrRegs -[rdx] - mov r11d, dword ptr [rcx+0x0C] - mov rax, gword ptr [rcx] - ; gcrRegs +[rax] - cmp r11d, dword ptr [rax+0x14] - jne G_M48461_IG10 - ;; size=17 bbWeight=0.01 PerfScore 0.08 -G_M48461_IG21: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref - ; gcrRegs -[rax]
+ ; byrRegs +[rcx]
mov r11, gword ptr [rcx] ; gcrRegs +[r11] mov r11d, dword ptr [r11+0x10] @@ -235,17 +223,17 @@ G_M48461_IG21: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx xor r11d, r11d mov dword ptr [rcx+0x10], r11d ;; size=21 bbWeight=0.01 PerfScore 0.07
-G_M48461_IG22: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M48461_IG21: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] cmp qword ptr [rdi], rbx
- jne SHORT G_M48461_IG27
+ jne SHORT G_M48461_IG26
;; size=5 bbWeight=1 PerfScore 4.00
-G_M48461_IG23: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] ; GC ptr vars -{V02} mov eax, esi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M48461_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M48461_IG23: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -254,7 +242,7 @@ G_M48461_IG24: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48461_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E mov edx, 12 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -264,7 +252,7 @@ G_M48461_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[rdi] jmp G_M48461_IG04 ;; size=38 bbWeight=0 PerfScore 0.00
-G_M48461_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48461_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -276,7 +264,7 @@ G_M48461_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] jmp G_M48461_IG04 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M48461_IG26: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars +{V02 V05} mov rcx, rdi @@ -286,9 +274,9 @@ G_M48461_IG27: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=008 call [r11]<unknown method> ; gcrRegs -[rcx rdi] ; gcr arg pop 0
- jmp SHORT G_M48461_IG23
+ jmp SHORT G_M48461_IG22
;; size=18 bbWeight=0 PerfScore 0.00
-G_M48461_IG28: ; bbWeight=0, gcVars=0000000000000020 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
...

+9 (+1.40%) : 311246.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)

@@ -151,7 +151,7 @@ G_M15514_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 xor esi, esi cmp dword ptr [rbx+0x10], 0
- jle G_M15514_IG23
+ jle G_M15514_IG21
;; size=30 bbWeight=1 PerfScore 10.00 G_M15514_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor rcx, rcx @@ -167,7 +167,7 @@ G_M15514_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov gword ptr [rsp+0x40], rax test rax, rax
- je G_M15514_IG28
+ je G_M15514_IG27
;; size=45 bbWeight=4 PerfScore 36.00 G_M15514_IG09: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref lea rdi, bword ptr [rax+0x10] @@ -182,11 +182,11 @@ G_M15514_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, mov dword ptr [rsp+0x48], edx mov byte ptr [rsp+0x4C], 0 cmp esi, dword ptr [rbx+0x10]
- jae G_M15514_IG30
+ jae G_M15514_IG29
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp esi, dword ptr [rdx+0x08]
- jae G_M15514_IG27
+ jae G_M15514_IG26
mov ecx, esi mov edx, dword ptr [rdx+4*rcx+0x10] ; gcrRegs -[rdx] @@ -197,7 +197,7 @@ G_M15514_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, mov ecx, dword ptr [rsp+0x48] mov edi, dword ptr [rsp+0x58] cmp ecx, edi
- ja G_M15514_IG29
+ ja G_M15514_IG28
mov rdx, bword ptr [rsp+0x50] ; byrRegs +[rdx] mov eax, ecx @@ -218,10 +218,10 @@ G_M15514_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, ; gcrRegs -[rcx rdx r14] ; gcr arg pop 0 ;; size=22 bbWeight=2 PerfScore 7.50
-G_M15514_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
+G_M15514_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
test edi, edi
- je SHORT G_M15514_IG16 - ;; size=4 bbWeight=4 PerfScore 5.00
+ je G_M15514_IG23 + ;; size=8 bbWeight=4 PerfScore 5.00
G_M15514_IG13: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref mov rcx, 0xD1FFAB1E ; byrRegs +[rcx] @@ -236,13 +236,13 @@ G_M15514_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; byrRegs -[rbp] mov edi, dword ptr [rsp+0x48] cmp edi, dword ptr [rsp+0x58]
- ja G_M15514_IG29
+ ja G_M15514_IG28
mov rbp, bword ptr [rsp+0x50] ; byrRegs +[rbp] test edi, edi
- jge SHORT G_M15514_IG18
+ jge SHORT G_M15514_IG16
;; size=23 bbWeight=4 PerfScore 25.00
-G_M15514_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
+G_M15514_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
mov r14, 0xD1FFAB1E ; gcrRegs +[r14] mov rcx, r14 @@ -252,22 +252,6 @@ G_M15514_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp SHORT G_M15514_IG17 - ;; size=24 bbWeight=2 PerfScore 11.50 -G_M15514_IG16: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r14] - ; byrRegs -[rbp] - lea rcx, [rsp+0x38] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rdx] - ; gcr arg pop 0 - jmp SHORT G_M15514_IG14 - ;; size=23 bbWeight=0.01 PerfScore 0.03 -G_M15514_IG17: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0020 {rbp}, byref - ; gcrRegs +[r14] - ; byrRegs +[rbp]
mov rcx, r14 ; gcrRegs +[rcx] mov rdx, r14 @@ -275,8 +259,8 @@ G_M15514_IG17: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0020 {rb call [<unknown method>] ; gcrRegs -[rcx rdx r14] ; gcr arg pop 0
- ;; size=12 bbWeight=2 PerfScore 7.00 -G_M15514_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
+ ;; size=34 bbWeight=2 PerfScore 14.50 +G_M15514_IG16: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
mov bword ptr [rsp+0x28], rbp mov dword ptr [rsp+0x30], edi lea rcx, [rsp+0x28] @@ -292,9 +276,9 @@ G_M15514_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, vmovdqu ymmword ptr [rsp+0x38], ymm0 vmovdqu xmmword ptr [rsp+0x50], xmm0 test rdx, rdx
- je SHORT G_M15514_IG20
+ je SHORT G_M15514_IG18
;; size=48 bbWeight=4 PerfScore 33.33
-G_M15514_IG19: ; bbWeight=1.94, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
+G_M15514_IG17: ; bbWeight=1.94, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; const ptr mov rcx, gword ptr [rcx] @@ -304,53 +288,53 @@ G_M15514_IG19: ; bbWeight=1.94, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=22 bbWeight=1.94 PerfScore 10.68
-G_M15514_IG20: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M15514_IG18: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi ; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rcx rdi] ; gcr arg pop 0 test esi, esi
- jle SHORT G_M15514_IG22
+ jle SHORT G_M15514_IG20
;; size=13 bbWeight=4 PerfScore 18.00
-G_M15514_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15514_IG19: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbx+0x10] cmp esi, eax
- jae SHORT G_M15514_IG30
+ jae G_M15514_IG29
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov rdx, rcx ; gcrRegs +[rdx] mov r8d, dword ptr [rdx+0x08] cmp esi, r8d
- jae SHORT G_M15514_IG27
+ jae SHORT G_M15514_IG26
mov r10d, esi mov edx, dword ptr [rdx+4*r10+0x10] ; gcrRegs -[rdx] lea r10d, [rsi-0x01] cmp r10d, eax
- jae SHORT G_M15514_IG30
+ jae SHORT G_M15514_IG29
cmp r10d, r8d
- jae SHORT G_M15514_IG27
+ jae SHORT G_M15514_IG26
mov eax, r10d cmp dword ptr [rcx+4*rax+0x10], edx
- jge SHORT G_M15514_IG25 - ;; size=54 bbWeight=2 PerfScore 36.50 -G_M15514_IG22: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jge SHORT G_M15514_IG24 + ;; size=58 bbWeight=2 PerfScore 36.50 +G_M15514_IG20: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] inc esi mov eax, dword ptr [rbx+0x10] cmp esi, eax jl G_M15514_IG08 ;; size=13 bbWeight=4 PerfScore 14.00
-G_M15514_IG23: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15514_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [<unknown method>] ; gcr arg pop 0 xor eax, eax cmp dword ptr [rbx+0x10], 100 sete al ;; size=15 bbWeight=0.50 PerfScore 3.62
-G_M15514_IG24: ; bbWeight=0.50, epilog, nogc, extend
+G_M15514_IG22: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 96 pop rbx pop rbp @@ -359,11 +343,20 @@ G_M15514_IG24: ; bbWeight=0.50, epilog, nogc, extend pop r14 ret ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M15514_IG25: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15514_IG23: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + lea rcx, [rsp+0x38] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rdx] + ; gcr arg pop 0 + jmp G_M15514_IG14 + ;; size=26 bbWeight=0.01 PerfScore 0.03 +G_M15514_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15514_IG26: ; bbWeight=0.50, epilog, nogc, extend
+G_M15514_IG25: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 96 pop rbx pop rbp @@ -372,31 +365,31 @@ G_M15514_IG26: ; bbWeight=0.50, epilog, nogc, extend pop r14 ret ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M15514_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15514_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M15514_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15514_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] xor rdi, rdi ; byrRegs +[rdi] xor ebp, ebp jmp G_M15514_IG10 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M15514_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15514_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] ; byrRegs -[rdi] call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M15514_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15514_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 643, prolog size 36, PerfScore 416.88, instruction count 174, allocated bytes for code 643 (MethodHash=b80ac365) for method Program:ManipulateListOfInt():ubyte (FullOpts)
+; Total bytes of code 652, prolog size 36, PerfScore 412.88, instruction count 173, allocated bytes for code 652 (MethodHash=b80ac365) for method Program:ManipulateListOfInt():ubyte (FullOpts)
; ============================================================ Unwind Info:

+5 (+2.27%) : 237889.dasm - GCUtil:FreePins2() (FullOpts)

@@ -11,29 +11,30 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]> ; V01 loc1 [V01 ] ( 2, 4 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.InteropServices.GCHandle> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
+; V03 tmp1 [V03,T13] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]>
-; V05 tmp3 [V05,T11] ( 3, 6 ) long -> rbp "Inline stloc first use temp"
+; V05 tmp3 [V05,T12] ( 3, 6 ) long -> rbp "Inline stloc first use temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp6 [V08,T09] ( 3, 8 ) long -> rbp "Inlining Arg" -;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp6 [V08,T10] ( 3, 8 ) long -> rbp "Inlining Arg" +;* V09 tmp7 [V09,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]> ; V11 tmp9 [V11,T01] ( 4, 32 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]> ;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V13 tmp11 [V13,T00] ( 6, 40.68) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V14 tmp12 [V14,T08] ( 3, 8.34) int -> r8 single-def "Inline stloc first use temp"
+; V14 tmp12 [V14,T09] ( 3, 8.34) int -> r8 single-def "Inline stloc first use temp"
; V15 tmp13 [V15,T04] ( 4, 17 ) ref -> rbx single-def "field V00._list (fldOffset=0x0)" P-INDEP ; V16 tmp14 [V16,T02] ( 6, 21 ) int -> rdi "field V00._index (fldOffset=0x8)" P-INDEP
-; V17 tmp15 [V17,T07] ( 2, 9 ) int -> rsi single-def "field V00._version (fldOffset=0xc)" P-INDEP -; V18 tmp16 [V18,T06] ( 2, 6 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
+; V17 tmp15 [V17,T08] ( 2, 9 ) int -> rsi single-def "field V00._version (fldOffset=0xc)" P-INDEP +; V18 tmp16 [V18,T07] ( 2, 6 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
; V19 tmp17 [V19 ] ( 2, 4 ) long -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01._handle (fldOffset=0x0)" P-DEP
-; V20 tmp18 [V20,T13] ( 3, 3 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -;* V21 tmp19 [V21,T15] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP -; V22 tmp20 [V22,T14] ( 2, 2 ) int -> rsi single-def "field V04._version (fldOffset=0xc)" P-INDEP
+; V20 tmp18 [V20,T14] ( 3, 3 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +;* V21 tmp19 [V21,T16] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP +; V22 tmp20 [V22,T15] ( 2, 2 ) int -> rsi single-def "field V04._version (fldOffset=0xc)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref single-def "field V04._current (fldOffset=0x10)" P-INDEP ; V24 tmp22 [V24,T03] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 cse0 [V25,T05] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -72,9 +73,10 @@ G_M58371_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr je SHORT G_M58371_IG10 ;; size=43 bbWeight=2 PerfScore 52.00 G_M58371_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- cmp esi, dword ptr [rbx+0x14]
+ mov ecx, dword ptr [rbx+0x14] + cmp esi, ecx
jne G_M58371_IG12
- ;; size=9 bbWeight=8 PerfScore 32.00
+ ;; size=11 bbWeight=8 PerfScore 26.00
G_M58371_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x10] cmp edi, ecx @@ -130,13 +132,13 @@ G_M58371_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M58371_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M58371_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rbp call [<unknown method>] ; gcr arg pop 0
- jmp SHORT G_M58371_IG04 - ;; size=11 bbWeight=0 PerfScore 0.00
+ jmp G_M58371_IG04 + ;; size=14 bbWeight=0 PerfScore 0.00
G_M58371_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] call [System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()] @@ -149,7 +151,7 @@ G_M58371_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 15, PerfScore 221.71, instruction count 67, allocated bytes for code 220 (MethodHash=a5b91bfc) for method GCUtil:FreePins2() (FullOpts)
+; Total bytes of code 225, prolog size 15, PerfScore 215.71, instruction count 68, allocated bytes for code 225 (MethodHash=a5b91bfc) for method GCUtil:FreePins2() (FullOpts)
; ============================================================ Unwind Info:

+5 (+2.27%) : 237890.dasm - GCUtil:FreePins() (FullOpts)

@@ -11,29 +11,30 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]> ; V01 loc1 [V01 ] ( 2, 4 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.InteropServices.GCHandle> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
+; V03 tmp1 [V03,T13] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]>
-; V05 tmp3 [V05,T11] ( 3, 6 ) long -> rbp "Inline stloc first use temp"
+; V05 tmp3 [V05,T12] ( 3, 6 ) long -> rbp "Inline stloc first use temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp6 [V08,T09] ( 3, 8 ) long -> rbp "Inlining Arg" -;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp6 [V08,T10] ( 3, 8 ) long -> rbp "Inlining Arg" +;* V09 tmp7 [V09,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]> ; V11 tmp9 [V11,T01] ( 4, 32 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]> ;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V13 tmp11 [V13,T00] ( 6, 40.68) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V14 tmp12 [V14,T08] ( 3, 8.34) int -> r8 single-def "Inline stloc first use temp"
+; V14 tmp12 [V14,T09] ( 3, 8.34) int -> r8 single-def "Inline stloc first use temp"
; V15 tmp13 [V15,T04] ( 4, 17 ) ref -> rbx single-def "field V00._list (fldOffset=0x0)" P-INDEP ; V16 tmp14 [V16,T02] ( 6, 21 ) int -> rdi "field V00._index (fldOffset=0x8)" P-INDEP
-; V17 tmp15 [V17,T07] ( 2, 9 ) int -> rsi single-def "field V00._version (fldOffset=0xc)" P-INDEP -; V18 tmp16 [V18,T06] ( 2, 6 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
+; V17 tmp15 [V17,T08] ( 2, 9 ) int -> rsi single-def "field V00._version (fldOffset=0xc)" P-INDEP +; V18 tmp16 [V18,T07] ( 2, 6 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
; V19 tmp17 [V19 ] ( 2, 4 ) long -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01._handle (fldOffset=0x0)" P-DEP
-; V20 tmp18 [V20,T13] ( 3, 3 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -;* V21 tmp19 [V21,T15] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP -; V22 tmp20 [V22,T14] ( 2, 2 ) int -> rsi single-def "field V04._version (fldOffset=0xc)" P-INDEP
+; V20 tmp18 [V20,T14] ( 3, 3 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +;* V21 tmp19 [V21,T16] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP +; V22 tmp20 [V22,T15] ( 2, 2 ) int -> rsi single-def "field V04._version (fldOffset=0xc)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref single-def "field V04._current (fldOffset=0x10)" P-INDEP ; V24 tmp22 [V24,T03] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 cse0 [V25,T05] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -72,9 +73,10 @@ G_M36241_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr je SHORT G_M36241_IG10 ;; size=43 bbWeight=2 PerfScore 52.00 G_M36241_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- cmp esi, dword ptr [rbx+0x14]
+ mov ecx, dword ptr [rbx+0x14] + cmp esi, ecx
jne G_M36241_IG12
- ;; size=9 bbWeight=8 PerfScore 32.00
+ ;; size=11 bbWeight=8 PerfScore 26.00
G_M36241_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x10] cmp edi, ecx @@ -130,13 +132,13 @@ G_M36241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M36241_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M36241_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rbp call [<unknown method>] ; gcr arg pop 0
- jmp SHORT G_M36241_IG04 - ;; size=11 bbWeight=0 PerfScore 0.00
+ jmp G_M36241_IG04 + ;; size=14 bbWeight=0 PerfScore 0.00
G_M36241_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] call [System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()] @@ -149,7 +151,7 @@ G_M36241_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 15, PerfScore 221.71, instruction count 67, allocated bytes for code 220 (MethodHash=986a726e) for method GCUtil:FreePins() (FullOpts)
+; Total bytes of code 225, prolog size 15, PerfScore 215.71, instruction count 68, allocated bytes for code 225 (MethodHash=986a726e) for method GCUtil:FreePins() (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-10 (-2.87%) : 31916.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -9,10 +9,10 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> rsi single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> rsi
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> rsi single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> rsi
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -20,14 +20,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T29] ( 2, 0 ) ref -> rcx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T30] ( 2, 0 ) ref -> rcx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> r10 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> r10 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -41,30 +41,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rdx "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rdx "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r14 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -80,40 +80,40 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r8 "arr expr"
-; V71 PSPSym [V71,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V72 cse0 [V72,T04] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V73 cse1 [V73,T26] ( 2, 16 ) int -> r8 "CSE - moderate"
+; V71 PSPSym [V71,T29] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V72 cse0 [V72,T09] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V73 cse1 [V73,T04] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V74 cse2 [V74,T27] ( 2, 16 ) int -> r8 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 80
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 72
+ sub rsp, 80
lea rbp, [rsp+0x70] xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x50], rsp mov rbx, rcx mov rsi, rdx
- ;; size=33 bbWeight=1 PerfScore 9.50
+ ;; size=31 bbWeight=1 PerfScore 8.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x40]
call [CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER] ; gcr arg pop 0 nop ;; size=11 bbWeight=1 PerfScore 3.75 G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
mov rdx, rbx call [System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort]] ; gcr arg pop 0 cmp byte ptr [rsi+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx] mov edi, dword ptr [rbx+0x14] @@ -122,9 +122,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=30 bbWeight=1 PerfScore 14.00 G_M19804_IG04: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8]
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, bword ptr [rbp-0x30]
; byrRegs +[rcx]
- mov edx, dword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x28]
test r8, r8 jne SHORT G_M19804_IG05 xor rax, rax @@ -150,14 +150,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0003 {rax rc ; byrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne G_M19804_IG14
+ jne G_M19804_IG13
;; size=28 bbWeight=4 PerfScore 25.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rbx+0x14] - cmp edi, r15d - jne SHORT G_M19804_IG10 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov r8d, dword ptr [rbx+0x14] + cmp edi, r8d + jne SHORT G_M19804_IG09 + mov r8d, dword ptr [rbx+0x10] + cmp r14d, r8d + jae SHORT G_M19804_IG10
mov r8, gword ptr [rbx+0x08] ; gcrRegs +[r8] cmp r14d, dword ptr [r8+0x08] @@ -166,7 +167,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8, gword ptr [r8+8*rcx+0x10] inc r14d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=41 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx r8] call [CORINFO_HELP_RNGCHKFAIL] @@ -178,13 +179,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp edi, r15d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx]
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0 @@ -194,9 +191,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, dword ptr [rbx+0x10] mov r8d, dword ptr [rcx+0x08] cmp r8d, edx
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=32 bbWeight=8 PerfScore 126.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
lea r8d, [rdx+0x01] mov dword ptr [rbx+0x10], r8d mov edx, edx @@ -208,9 +205,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rax rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=26 bbWeight=1 PerfScore 8.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -221,36 +218,34 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=13 bbWeight=1 PerfScore 3.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rcx, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rcx, [rbp-0x40]
call [CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT] ; gcr arg pop 0 nop ;; size=11 bbWeight=1 PerfScore 3.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 72
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 80
pop rbx pop rsi pop rdi pop r14
- pop r15
pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r15
push r14 push rdi push rsi ...

-7 (-2.27%) : 32551.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)

@@ -9,32 +9,33 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> -; V01 loc0 [V01,T15] ( 4, 1.50) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T11] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Diagnostics.Tracing.CounterGroup> +; V01 loc0 [V01,T16] ( 4, 1.50) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
; V02 loc1 [V02 ] ( 6, 5 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Tracing.DiagnosticCounter> ; V05 loc4 [V05,T06] ( 3, 10 ) ref -> rax class-hnd <<unknown class>>
-; V06 loc5 [V06,T08] ( 3, 6 ) ref -> rax class-hnd <<unknown class>> -; V07 loc6 [V07,T09] ( 3, 6 ) ref -> rax class-hnd <<unknown class>>
+; V06 loc5 [V06,T09] ( 3, 6 ) ref -> rax class-hnd <<unknown class>> +; V07 loc6 [V07,T10] ( 3, 6 ) ref -> rax class-hnd <<unknown class>>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T12] ( 2, 4 ) ubyte -> rcx "Inlining Arg" -; V10 tmp2 [V10,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V09 tmp1 [V09,T13] ( 2, 4 ) ubyte -> rcx "Inlining Arg" +; V10 tmp2 [V10,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.DiagnosticCounter]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T02] ( 4, 17 ) ref -> rbx single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T04] ( 4, 12 ) ref -> r14 "field V03._current (fldOffset=0x8)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 12 ) ref -> r14 "field V03._current (fldOffset=0x8)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 21 ) int -> rdi "field V03._index (fldOffset=0x10)" P-INDEP
-; V17 tmp9 [V17,T05] ( 3, 13 ) int -> rsi "field V03._version (fldOffset=0x14)" P-INDEP -; V18 tmp10 [V18,T13] ( 3, 3 ) ref -> rbx single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V17 tmp9 [V17,T07] ( 2, 9 ) int -> rsi "field V03._version (fldOffset=0x14)" P-INDEP +; V18 tmp10 [V18,T14] ( 3, 3 ) ref -> rbx single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V21 tmp13 [V21,T14] ( 2, 2 ) int -> rsi "field V11._version (fldOffset=0x14)" P-INDEP
+;* V20 tmp12 [V20,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V21 tmp13 [V21,T15] ( 2, 2 ) int -> rsi "field V11._version (fldOffset=0x14)" P-INDEP
; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V23 PSPSym [V23,T18] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V24 cse0 [V24,T16] ( 3, 1.50) ref -> rdx "CSE - moderate" -; V25 cse1 [V25,T03] ( 3, 20 ) int -> r14 "CSE - aggressive"
+; V23 PSPSym [V23,T19] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T17] ( 3, 1.50) ref -> rdx "CSE - moderate" +; V25 cse1 [V25,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse2 [V26,T04] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 64 @@ -61,7 +62,7 @@ G_M25759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor edx, edx mov dword ptr [rbp-0x28], edx ;; size=22 bbWeight=1 PerfScore 7.25
-G_M25759_IG03: ; bbWeight=1, gcVars=0000000000008000 {V01}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG03: ; bbWeight=1, gcVars=0000000000010000 {V01}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax] cmp byte ptr [rbp-0x28], 0 jne SHORT G_M25759_IG09 @@ -89,17 +90,18 @@ G_M25759_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor edi, edi ;; size=9 bbWeight=1 PerfScore 4.25 G_M25759_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [rbx+0x14] - cmp esi, r14d - jne SHORT G_M25759_IG12 - ;; size=9 bbWeight=8 PerfScore 26.00
+ mov ecx, dword ptr [rbx+0x14] + cmp esi, ecx + jne SHORT G_M25759_IG13 + ;; size=7 bbWeight=8 PerfScore 26.00
G_M25759_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp edi, dword ptr [rbx+0x10] - jae SHORT G_M25759_IG15
+ mov ecx, dword ptr [rbx+0x10] + cmp edi, ecx + jae SHORT G_M25759_IG14
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M25759_IG13
+ jae SHORT G_M25759_IG12
mov eax, edi mov r14, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[r14] @@ -110,7 +112,7 @@ G_M25759_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 test rax, rax je SHORT G_M25759_IG10
- ;; size=37 bbWeight=4 PerfScore 68.00
+ ;; size=39 bbWeight=4 PerfScore 65.00
G_M25759_IG08: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] mov rcx, rax @@ -158,26 +160,21 @@ G_M25759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp SHORT G_M25759_IG06 ;; size=25 bbWeight=2 PerfScore 19.50
-G_M25759_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- cmp esi, r14d - jne SHORT G_M25759_IG14 - jmp SHORT G_M25759_IG15 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25759_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M25759_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x28], 0
- je SHORT G_M25759_IG17
+ je SHORT G_M25759_IG16
;; size=6 bbWeight=1 PerfScore 3.00
-G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x30] ; gcrRegs +[rcx] ; GC ptr vars -{V01} @@ -185,10 +182,10 @@ G_M25759_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M25759_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M25759_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M25759_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbx pop rsi @@ -197,8 +194,8 @@ G_M25759_IG18: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M25759_IG19: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V01 V15}
+G_M25759_IG18: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V01 V16}
push rbp push r14 push rdi @@ -209,20 +206,20 @@ G_M25759_IG19: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=000 mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x60] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M25759_IG20: ; bbWeight=0, gcVars=0000000000008000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25759_IG19: ; bbWeight=0, gcVars=0000000000010000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x28], 0
- je SHORT G_M25759_IG21
+ je SHORT G_M25759_IG20
mov rcx, gword ptr [rbp-0x30] ; gcrRegs +[rcx]
- ; GC ptr vars -{V01 V15}
+ ; GC ptr vars -{V01 V16}
call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25759_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25759_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M25759_IG22: ; bbWeight=0, funclet epilog, nogc, extend
+G_M25759_IG21: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -232,7 +229,7 @@ G_M25759_IG22: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 309, prolog size 22, PerfScore 196.38, instruction count 101, allocated bytes for code 309 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
+; Total bytes of code 302, prolog size 22, PerfScore 180.38, instruction count 99, allocated bytes for code 302 (MethodHash=a2079b60) for method System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
; ============================================================ Unwind Info: @@ -269,4 +266,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Diagnostics.Tracing.CounterGroup:ResetCounters():this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M25759_IG03..G_M25759_IG15) handled by [G_M25759_IG19..END) (fault)
+EH#0: try [G_M25759_IG03..G_M25759_IG14) handled by [G_M25759_IG18..END) (fault)
-8 (-1.54%) : 29804.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
@@ -9,68 +9,69 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T17] ( 7, 7 ) ref -> [rbp+0x10] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> -; V01 arg1 [V01,T14] ( 3, 10 ) int -> rbx single-def
+; V00 arg0 [V00,T18] ( 7, 7 ) ref -> [rbp+0x10] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> +; V01 arg1 [V01,T15] ( 3, 10 ) int -> rbx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T15] ( 4, 11 ) ubyte -> [rbp-0x3C] do-not-enreg[Z] EH-live -; V04 loc1 [V04,T05] ( 7, 28 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V03 loc0 [V03,T16] ( 4, 11 ) ubyte -> [rbp-0x34] do-not-enreg[Z] EH-live +; V04 loc1 [V04,T04] ( 7, 28 ) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ;* V07 loc4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
+; V10 tmp1 [V10,T21] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T20] ( 3, 6 ) int -> r14 "Inlining Arg"
+; V14 tmp5 [V14,T22] ( 3, 6 ) int -> r14 "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp11 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp11 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]> ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]> ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp15 [V24,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp15 [V24,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V26 tmp17 [V26,T16] ( 2, 9 ) ref -> rsi single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V27 tmp18 [V27,T04] ( 4, 25 ) ref -> r14 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T17] ( 2, 9 ) ref -> rsi single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V27 tmp18 [V27,T05] ( 4, 25 ) ref -> r14 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T07] ( 3, 16 ) ref -> rdx "field V05._current (fldOffset=0x8)" P-INDEP ; V29 tmp20 [V29,T00] ( 6, 41 ) int -> r13 "field V05._index (fldOffset=0x10)" P-INDEP
-; V30 tmp21 [V30,T11] ( 3, 17 ) int -> r15 "field V05._version (fldOffset=0x14)" P-INDEP
+; V30 tmp21 [V30,T19] ( 2, 9 ) int -> r15 "field V05._version (fldOffset=0x14)" P-INDEP
; V31 tmp22 [V31,T06] ( 4, 25 ) ref -> rbx single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V32 tmp23 [V32,T08] ( 3, 16 ) ref -> rcx "field V07._current (fldOffset=0x8)" P-INDEP ; V33 tmp24 [V33,T01] ( 6, 41 ) int -> rdi "field V07._index (fldOffset=0x10)" P-INDEP
-; V34 tmp25 [V34,T18] ( 2, 9 ) int -> rsi "field V07._version (fldOffset=0x14)" P-INDEP -; V35 tmp26 [V35,T22] ( 3, 3 ) ref -> r14 single-def "field V17._list (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T20] ( 2, 9 ) int -> rsi "field V07._version (fldOffset=0x14)" P-INDEP +; V35 tmp26 [V35,T24] ( 3, 3 ) ref -> r14 single-def "field V17._list (fldOffset=0x0)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._current (fldOffset=0x8)" P-INDEP
-;* V37 tmp28 [V37,T26] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP -; V38 tmp29 [V38,T24] ( 2, 2 ) int -> r15 "field V17._version (fldOffset=0x14)" P-INDEP -; V39 tmp30 [V39,T23] ( 3, 3 ) ref -> rbx single-def "field V22._list (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T28] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP +; V38 tmp29 [V38,T26] ( 2, 2 ) int -> r15 "field V17._version (fldOffset=0x14)" P-INDEP +; V39 tmp30 [V39,T25] ( 3, 3 ) ref -> rbx single-def "field V22._list (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._current (fldOffset=0x8)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP -; V42 tmp33 [V42,T25] ( 2, 2 ) int -> rsi "field V22._version (fldOffset=0x14)" P-INDEP -; V43 tmp34 [V43,T21] ( 2, 4 ) int -> r8 "argument with side effect"
+;* V41 tmp32 [V41,T29] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x10)" P-INDEP +; V42 tmp33 [V42,T27] ( 2, 2 ) int -> rsi "field V22._version (fldOffset=0x14)" P-INDEP +; V43 tmp34 [V43,T23] ( 2, 4 ) int -> r8 "argument with side effect"
; V44 tmp35 [V44,T02] ( 3, 48 ) ref -> rdx "arr expr" ; V45 tmp36 [V45,T03] ( 3, 48 ) ref -> rcx "arr expr"
-; V46 PSPSym [V46,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V47 cse0 [V47,T09] ( 3, 24 ) int -> r12 "CSE - aggressive" -; V48 cse1 [V48,T10] ( 2, 16 ) int -> rcx "CSE - aggressive"
+; V46 PSPSym [V46,T30] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V47 cse0 [V47,T13] ( 2, 16 ) int -> rdx "CSE - aggressive" +; V48 cse1 [V48,T09] ( 2, 16 ) int -> rdx "CSE - aggressive" +; V49 cse2 [V49,T14] ( 2, 16 ) int -> rcx "CSE - aggressive" +; V50 cse3 [V50,T10] ( 2, 16 ) int -> rcx "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rdi push rsi push rbx
- sub rsp, 56
+ sub rsp, 64
lea rbp, [rsp+0x70] mov qword ptr [rbp-0x50], rsp mov gword ptr [rbp+0x10], rcx @@ -78,8 +79,8 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ebx, edx mov rsi, r8 ; gcrRegs +[rsi]
- ;; size=34 bbWeight=1 PerfScore 11.25 -G_M12834_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 10.25 +G_M12834_IG02: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] test rcx, rcx jne SHORT G_M12834_IG03 @@ -108,7 +109,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ;; size=36 bbWeight=1 PerfScore 16.00 G_M12834_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz xor eax, eax
- mov dword ptr [rbp-0x3C], eax
+ mov dword ptr [rbp-0x34], eax
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[rax] ; gcr arg pop 0 @@ -143,10 +144,10 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ;; size=77 bbWeight=1 PerfScore 28.25 G_M12834_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref mov dword ptr [rdi+0x1C], r14d
- mov gword ptr [rbp-0x48], rdi
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V04} ;; size=8 bbWeight=1 PerfScore 2.00
-G_M12834_IG06: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov r14, rcx @@ -196,11 +197,12 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 ; gcr arg pop 0 ;; size=32 bbWeight=4 PerfScore 60.00 G_M12834_IG09: ; bbWeight=8, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [r14+0x14] - cmp r15d, r12d - jne SHORT G_M12834_IG12 - cmp r13d, dword ptr [r14+0x10] - jae SHORT G_M12834_IG13
+ mov edx, dword ptr [r14+0x14] + cmp r15d, edx + jne SHORT G_M12834_IG11 + mov edx, dword ptr [r14+0x10] + cmp r13d, edx + jae SHORT G_M12834_IG12
mov rdx, gword ptr [r14+0x08] ; gcrRegs +[rdx] cmp r13d, dword ptr [rdx+0x08] @@ -209,7 +211,7 @@ G_M12834_IG09: ; bbWeight=8, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 mov rdx, gword ptr [rdx+8*r8+0x10] inc r13d jmp SHORT G_M12834_IG07
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=41 bbWeight=8 PerfScore 136.00
G_M12834_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rsi rdi r14] call [CORINFO_HELP_RNGCHKFAIL] @@ -221,12 +223,8 @@ G_M12834_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M12834_IG12: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M12834_IG12: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- cmp r15d, r12d - jne SHORT G_M12834_IG11 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M12834_IG13: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi ; gcrRegs +[rcx] mov edx, ebx @@ -235,108 +233,106 @@ G_M12834_IG13: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rcx rsi r8] ; gcr arg pop 0
- mov dword ptr [rbp-0x3C], eax
+ mov dword ptr [rbp-0x34], eax
;; size=17 bbWeight=8 PerfScore 38.00
-G_M12834_IG14: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M12834_IG13: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, rsp
- call G_M12834_IG18
+ call G_M12834_IG17
; gcrRegs -[rdi] ;; size=8 bbWeight=1 PerfScore 1.25
-G_M12834_IG15: ; bbWeight=1, nogc, extend
+G_M12834_IG14: ; bbWeight=1, nogc, extend
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M12834_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12834_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00 V04}
- mov eax, dword ptr [rbp-0x3C]
+ mov eax, dword ptr [rbp-0x34]
;; size=3 bbWeight=1 PerfScore 1.00
-G_M12834_IG17: ; bbWeight=1, epilog, nogc, extend - add rsp, 56
+G_M12834_IG16: ; bbWeight=1, epilog, nogc, extend + add rsp, 64
pop rbx pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=17 bbWeight=1 PerfScore 5.25 -G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=15 bbWeight=1 PerfScore 4.75 +G_M12834_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15 push r14 push r13
- push r12
push rdi push rsi push rbx
- sub rsp, 40
+ sub rsp, 48
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x70]
- ;; size=29 bbWeight=1 PerfScore 11.75 -G_M12834_IG19: ; bbWeight=1, gcVars=0000000000020020 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=27 bbWeight=1 PerfScore 10.75 +G_M12834_IG18: ; bbWeight=1, gcVars=0000000000040010 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V04}
- cmp dword ptr [rbp-0x3C], 0 - jne SHORT G_M12834_IG24
+ cmp dword ptr [rbp-0x34], 0 + jne SHORT G_M12834_IG23
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rbx, rcx ; gcrRegs +[rbx] mov esi, dword ptr [rbx+0x14] xor edi, edi
- jmp SHORT G_M12834_IG21
+ jmp SHORT G_M12834_IG20
;; size=20 bbWeight=1 PerfScore 8.50
-G_M12834_IG20: ; bbWeight=4, gcVars=0000000000000020 {V04}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12834_IG19: ; bbWeight=4, gcVars=0000000000000010 {V04}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00} test dword ptr [rcx+0x34], 0xD1FFAB1E
- jne SHORT G_M12834_IG21 - mov rdx, gword ptr [rbp-0x48]
+ jne SHORT G_M12834_IG20 + mov rdx, gword ptr [rbp-0x40]
; gcrRegs +[rdx] ...

+3 (+0.44%) : 32552.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)

@@ -9,81 +9,83 @@ ; 0 inlinees with PGO data; 21 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T31] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>> -; V01 loc1 [V01,T00] ( 15,333 ) ref -> rbx class-hnd exact single-def <<unknown class>> -; V02 loc2 [V02,T10] ( 9, 84 ) int -> rdi -; V03 loc3 [V03,T33] ( 4, 20 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live <System.Object>
+; V00 loc0 [V00,T33] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>> +; V01 loc1 [V01,T00] ( 14,301 ) ref -> rbx class-hnd exact single-def <<unknown class>> +; V02 loc2 [V02,T11] ( 9, 84 ) int -> rdi +; V03 loc3 [V03,T35] ( 4, 20 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live <System.Object>
; V04 loc4 [V04 ] ( 6, 40 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ;* V05 loc5 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.CounterGroup> ;* V07 loc7 [V07 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime>
-; V08 loc8 [V08,T22] ( 3, 48 ) int -> rcx
+; V08 loc8 [V08,T24] ( 3, 48 ) int -> rcx
; V09 loc9 [V09 ] ( 2, 32 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op <System.TimeSpan> ;* V10 loc10 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]> ;* V11 loc11 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.CounterGroup> ; V12 OutArgs [V12 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T42] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T44] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V15 tmp3 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
-; V17 tmp5 [V17,T25] ( 2, 32 ) ubyte -> rcx "Inlining Arg" -; V18 tmp6 [V18,T24] ( 2, 32 ) ref -> r15 class-hnd "Inlining Arg" <<unknown class>>
+; V17 tmp5 [V17,T27] ( 2, 32 ) ubyte -> rcx "Inlining Arg" +; V18 tmp6 [V18,T26] ( 2, 32 ) ref -> r15 class-hnd "Inlining Arg" <<unknown class>>
;* V19 tmp7 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]> ;* V20 tmp8 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V21 tmp9 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V23 tmp11 [V23 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V24 tmp12 [V24,T21] ( 3, 48 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>> -; V25 tmp13 [V25,T15] ( 4, 64 ) int -> rdx "Inline stloc first use temp"
+; V24 tmp12 [V24,T23] ( 3, 48 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>> +; V25 tmp13 [V25,T17] ( 4, 64 ) int -> rdx "Inline stloc first use temp"
;* V26 tmp14 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V27 tmp15 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V28 tmp16 [V28 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V31 tmp19 [V31,T16] ( 4, 64 ) int -> rcx "Inline return value spill temp" -; V32 tmp20 [V32,T23] ( 3, 48 ) int -> rcx "Inline return value spill temp" -;* V33 tmp21 [V33,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp19 [V31,T18] ( 4, 64 ) int -> rcx "Inline return value spill temp" +; V32 tmp20 [V32,T25] ( 3, 48 ) int -> rcx "Inline return value spill temp" +;* V33 tmp21 [V33,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V35 tmp23 [V35 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]>
-;* V36 tmp24 [V36,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V36 tmp24 [V36,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V38 tmp26 [V38,T14] ( 3, 68 ) int -> r8 "Inline stloc first use temp"
+; V38 tmp26 [V38,T16] ( 3, 68 ) int -> r8 "Inline stloc first use temp"
;* V39 tmp27 [V39 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V40 tmp28 [V40,T38] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V41 tmp29 [V41,T05] ( 4,136 ) ref -> r15 "field V05._list (fldOffset=0x0)" P-INDEP -; V42 tmp30 [V42,T07] ( 5,112 ) ref -> [rbp-0x68] spill-single-def "field V05._current (fldOffset=0x8)" P-INDEP
+;* V40 tmp28 [V40,T40] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V41 tmp29 [V41,T07] ( 4,136 ) ref -> r15 "field V05._list (fldOffset=0x0)" P-INDEP +; V42 tmp30 [V42,T06] ( 5,112 ) ref -> [rbp-0x68] spill-single-def "field V05._current (fldOffset=0x8)" P-INDEP
; V43 tmp31 [V43,T01] ( 6,168 ) int -> r12 "field V05._index (fldOffset=0x10)" P-INDEP
-; V44 tmp32 [V44,T09] ( 3,104 ) int -> r13 "field V05._version (fldOffset=0x14)" P-INDEP -; V45 tmp33 [V45,T12] ( 3, 80 ) long -> [rbp-0x50] spill-single-def "field V07._dateData (fldOffset=0x0)" P-INDEP
+; V44 tmp32 [V44,T14] ( 2, 72 ) int -> r13 "field V05._version (fldOffset=0x14)" P-INDEP +; V45 tmp33 [V45,T13] ( 3, 80 ) long -> [rbp-0x50] spill-single-def "field V07._dateData (fldOffset=0x0)" P-INDEP
; V46 tmp34 [V46 ] ( 2, 32 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V09._ticks (fldOffset=0x0)" P-DEP
-;* V47 tmp35 [V47,T39] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP -; V48 tmp36 [V48,T11] ( 2, 48 ) ref -> rcx "field V10._current (fldOffset=0x8)" P-INDEP
+;* V47 tmp35 [V47,T41] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP +; V48 tmp36 [V48,T12] ( 2, 48 ) ref -> rcx "field V10._current (fldOffset=0x8)" P-INDEP
; V49 tmp37 [V49,T02] ( 6,168 ) int -> r13 "field V10._index (fldOffset=0x10)" P-INDEP
-; V50 tmp38 [V50,T13] ( 2, 72 ) int -> r15 "field V10._version (fldOffset=0x14)" P-INDEP -;* V51 tmp39 [V51,T29] ( 0, 0 ) long -> zero-ref "field V14._ticks (fldOffset=0x0)" P-INDEP -; V52 tmp40 [V52,T19] ( 2, 64 ) long -> [rbp-0x58] spill-single-def "field V15._dateData (fldOffset=0x0)" P-INDEP -; V53 tmp41 [V53,T20] ( 2, 64 ) long -> rax "field V16._dateData (fldOffset=0x0)" P-INDEP -; V54 tmp42 [V54,T32] ( 3, 24 ) ref -> r15 "field V19._list (fldOffset=0x0)" P-INDEP
+; V50 tmp38 [V50,T15] ( 2, 72 ) int -> r15 "field V10._version (fldOffset=0x14)" P-INDEP +;* V51 tmp39 [V51,T31] ( 0, 0 ) long -> zero-ref "field V14._ticks (fldOffset=0x0)" P-INDEP +; V52 tmp40 [V52,T21] ( 2, 64 ) long -> [rbp-0x58] spill-single-def "field V15._dateData (fldOffset=0x0)" P-INDEP +; V53 tmp41 [V53,T22] ( 2, 64 ) long -> rax "field V16._dateData (fldOffset=0x0)" P-INDEP +; V54 tmp42 [V54,T34] ( 3, 24 ) ref -> r15 "field V19._list (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref "field V19._current (fldOffset=0x8)" P-INDEP
-;* V56 tmp44 [V56,T40] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x10)" P-INDEP -; V57 tmp45 [V57,T35] ( 2, 16 ) int -> r13 "field V19._version (fldOffset=0x14)" P-INDEP
+;* V56 tmp44 [V56,T42] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x10)" P-INDEP +; V57 tmp45 [V57,T37] ( 2, 16 ) int -> r13 "field V19._version (fldOffset=0x14)" P-INDEP
;* V58 tmp46 [V58 ] ( 0, 0 ) long -> zero-ref "field V21._dateData (fldOffset=0x0)" P-INDEP ;* V59 tmp47 [V59 ] ( 0, 0 ) long -> zero-ref "field V22._dateData (fldOffset=0x0)" P-INDEP
-; V60 tmp48 [V60,T26] ( 2, 32 ) long -> rcx "field V26._dateData (fldOffset=0x0)" P-INDEP
+; V60 tmp48 [V60,T28] ( 2, 32 ) long -> rcx "field V26._dateData (fldOffset=0x0)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) long -> zero-ref "field V27._dateData (fldOffset=0x0)" P-INDEP
-; V62 tmp50 [V62,T27] ( 2, 32 ) long -> rcx "field V29._ticks (fldOffset=0x0)" P-INDEP -; V63 tmp51 [V63,T34] ( 2, 16 ) ref -> rcx "field V35._list (fldOffset=0x0)" P-INDEP
+; V62 tmp50 [V62,T29] ( 2, 32 ) long -> rcx "field V29._ticks (fldOffset=0x0)" P-INDEP +; V63 tmp51 [V63,T36] ( 2, 16 ) ref -> rcx "field V35._list (fldOffset=0x0)" P-INDEP
;* V64 tmp52 [V64 ] ( 0, 0 ) ref -> zero-ref "field V35._current (fldOffset=0x8)" P-INDEP
-;* V65 tmp53 [V65,T41] ( 0, 0 ) int -> zero-ref "field V35._index (fldOffset=0x10)" P-INDEP -; V66 tmp54 [V66,T36] ( 2, 16 ) int -> r15 "field V35._version (fldOffset=0x14)" P-INDEP
+;* V65 tmp53 [V65,T43] ( 0, 0 ) int -> zero-ref "field V35._index (fldOffset=0x10)" P-INDEP +; V66 tmp54 [V66,T38] ( 2, 16 ) int -> r15 "field V35._version (fldOffset=0x14)" P-INDEP
; V67 tmp55 [V67,T03] ( 3,192 ) ref -> rax "arr expr" ; V68 tmp56 [V68,T04] ( 3,192 ) ref -> rcx "arr expr"
-; V69 PSPSym [V69,T43] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[V] "PSPSym" -; V70 cse0 [V70,T30] ( 4, 25 ) byref -> rsi hoist "CSE - moderate" -; V71 cse1 [V71,T37] ( 3, 12 ) ref -> rdx "CSE - conservative"
+; V69 PSPSym [V69,T45] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[V] "PSPSym" +; V70 cse0 [V70,T32] ( 4, 25 ) byref -> rsi hoist "CSE - moderate" +; V71 cse1 [V71,T39] ( 3, 12 ) ref -> rdx "CSE - conservative"
; V72 cse2 [V72,T08] ( 3, 96 ) int -> r8 "CSE - aggressive"
-; V73 cse3 [V73,T06] ( 3,160 ) int -> rax "CSE - aggressive" -; V74 cse4 [V74,T28] ( 2, 32 ) int -> rax "CSE - moderate"
+; V73 cse3 [V73,T05] ( 3,160 ) int -> r12 "CSE - aggressive" +; V74 cse4 [V74,T10] ( 2, 64 ) int -> rax "CSE - moderate" +; V75 cse5 [V75,T09] ( 2,128 ) int -> rax "CSE - aggressive" +; V76 cse6 [V76,T30] ( 2, 32 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 104 @@ -134,7 +136,7 @@ G_M58893_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; gcrRegs -[rdx] mov dword ptr [rbp-0x40], edx ;; size=21 bbWeight=8 PerfScore 36.00
-G_M58893_IG04: ; bbWeight=8, gcVars=0000000200000000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M58893_IG04: ; bbWeight=8, gcVars=0000000800000000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
cmp byte ptr [rbp-0x40], 0 jne G_M58893_IG13 lea rdx, [rbp-0x40] @@ -168,15 +170,16 @@ G_M58893_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, G_M58893_IG07: ; bbWeight=64, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref mov eax, dword ptr [r15+0x14] cmp r13d, eax
- jne G_M58893_IG17
+ jne G_M58893_IG18
;; size=13 bbWeight=64 PerfScore 208.00 G_M58893_IG08: ; bbWeight=32, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
- cmp r12d, dword ptr [r15+0x10] - jae G_M58893_IG20
+ mov eax, dword ptr [r15+0x10] + cmp r12d, eax + jae G_M58893_IG19
mov rax, gword ptr [r15+0x08] ; gcrRegs +[rax] cmp r12d, dword ptr [rax+0x08]
- jae G_M58893_IG18
+ jae G_M58893_IG17
mov ecx, r12d mov rax, gword ptr [rax+8*rcx+0x10] mov gword ptr [rbp-0x68], rax @@ -201,7 +204,7 @@ G_M58893_IG08: ; bbWeight=32, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=004 and rdx, rax cmp rcx, rdx jge SHORT G_M58893_IG10
- ;; size=107 bbWeight=32 PerfScore 928.00
+ ;; size=110 bbWeight=32 PerfScore 904.00
G_M58893_IG09: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz inc dword ptr [rbx+0x14] mov rcx, gword ptr [rbx+0x08] @@ -254,7 +257,7 @@ G_M58893_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M58893_IG14: ; bbWeight=16, gcVars=0000000200000080 {V03 V42}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M58893_IG14: ; bbWeight=16, gcVars=0000000800000040 {V03 V42}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15] ; byrRegs +[rsi] ; GC ptr vars +{V42} @@ -267,7 +270,7 @@ G_M58893_IG14: ; bbWeight=16, gcVars=0000000200000080 {V03 V42}, gcrefReg ; gcr arg pop 0 jmp SHORT G_M58893_IG10 ;; size=15 bbWeight=16 PerfScore 100.00
-G_M58893_IG15: ; bbWeight=16, gcVars=0000000200000000 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M58893_IG15: ; bbWeight=16, gcVars=0000000800000000 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; GC ptr vars -{V42} mov ecx, 1 jmp SHORT G_M58893_IG11 @@ -276,30 +279,24 @@ G_M58893_IG16: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=004 mov ecx, edi jmp SHORT G_M58893_IG12 ;; size=4 bbWeight=16 PerfScore 36.00
-G_M58893_IG17: ; bbWeight=32, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[r15] - cmp r13d, eax - jne SHORT G_M58893_IG19 - jmp SHORT G_M58893_IG20 - ;; size=7 bbWeight=32 PerfScore 104.00 -G_M58893_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r14]
+G_M58893_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r14-r15]
; byrRegs -[rsi] call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M58893_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58893_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M58893_IG20: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M58893_IG19: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rbx r14] ; byrRegs +[rsi] cmp byte ptr [rbp-0x40], 0
- je SHORT G_M58893_IG22
+ je SHORT G_M58893_IG21
;; size=6 bbWeight=8 PerfScore 24.00
-G_M58893_IG21: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
+G_M58893_IG20: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
mov rcx, gword ptr [rbp-0x60] ; gcrRegs +[rcx] ; GC ptr vars -{V03} @@ -307,45 +304,47 @@ G_M58893_IG21: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rs ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=10 bbWeight=4 PerfScore 16.00
-G_M58893_IG22: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M58893_IG21: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, rbx ; gcrRegs +[rcx] mov r15d, dword ptr [rcx+0x14] xor r13d, r13d
- jmp SHORT G_M58893_IG24
+ jmp SHORT G_M58893_IG23
;; size=12 bbWeight=8 PerfScore 36.00
-G_M58893_IG23: ; bbWeight=16, gcrefRegs=400A {rcx rbx r14}, byrefRegs=0040 {rsi}, byref
+G_M58893_IG22: ; bbWeight=16, gcrefRegs=400A {rcx rbx r14}, byrefRegs=0040 {rsi}, byref
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=8 bbWeight=16 PerfScore 96.00
-G_M58893_IG24: ; bbWeight=64, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz - cmp r15d, dword ptr [rbx+0x14] - jne SHORT G_M58893_IG32 - ;; size=6 bbWeight=64 PerfScore 256.00 -G_M58893_IG25: ; bbWeight=32, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M58893_IG23: ; bbWeight=64, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz + mov r12d, dword ptr [rbx+0x14] + cmp r15d, r12d + jne SHORT G_M58893_IG31 + ;; size=9 bbWeight=64 PerfScore 208.00 +G_M58893_IG24: ; bbWeight=32, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
mov r8d, dword ptr [rbx+0x10] cmp r13d, r8d ...

+7 (+0.87%) : 32468.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

@@ -9,54 +9,55 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T14] ( 8, 260 ) ref -> rsi class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T00] ( 16,1249 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 loc0 [V00,T15] ( 8, 260 ) ref -> rsi class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T01] ( 15,1121 ) ref -> rdi class-hnd single-def <<unknown class>>
; V02 loc2 [V02,T05] ( 9, 641 ) ref -> rbx class-hnd single-def <<unknown class>> ; V03 loc3 [V03,T08] ( 8, 392 ) int -> registers
-; V04 loc4 [V04,T38] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def <<unknown class>>
+; V04 loc4 [V04,T39] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def <<unknown class>>
; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
-; V06 loc6 [V06,T25] ( 2, 192 ) long -> r14 -; V07 loc7 [V07,T28] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
+; V06 loc6 [V06,T26] ( 2, 192 ) long -> r14 +; V07 loc7 [V07,T29] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T01] ( 12,1152 ) int -> r13
+; V09 loc9 [V09,T00] ( 12,1152 ) int -> r13
; V10 loc10 [V10,T07] ( 5, 448 ) ref -> rdx class-hnd exact <System.Threading.TimerQueue> ; V11 loc11 [V11,T10] ( 4, 384 ) long -> rax ; V12 loc12 [V12,T09] ( 6, 384 ) int -> r12 ;* V13 loc13 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]> ;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue> ; V15 OutArgs [V15 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T36] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
+; V16 tmp1 [V16,T37] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V18 tmp3 [V18,T30] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V19 tmp4 [V19,T20] ( 2, 256 ) ubyte -> rcx "Inlining Arg" -; V20 tmp5 [V20,T22] ( 3, 192 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>> -; V21 tmp6 [V21,T15] ( 4, 256 ) int -> rax "Inline stloc first use temp" -; V22 tmp7 [V22,T17] ( 2, 256 ) ref -> rax class-hnd exact "Inlining Arg" <System.Threading.TimerQueue>
+;* V18 tmp3 [V18,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V19 tmp4 [V19,T21] ( 2, 256 ) ubyte -> rcx "Inlining Arg" +; V20 tmp5 [V20,T23] ( 3, 192 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>> +; V21 tmp6 [V21,T16] ( 4, 256 ) int -> rax "Inline stloc first use temp" +; V22 tmp7 [V22,T18] ( 2, 256 ) ref -> rax class-hnd exact "Inlining Arg" <System.Threading.TimerQueue>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
-;* V24 tmp9 [V24,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp9 [V24,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V26 tmp11 [V26,T13] ( 3, 272 ) int -> r8 "Inline stloc first use temp" -;* V27 tmp12 [V27,T33] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP -; V28 tmp13 [V28,T12] ( 2, 192 ) ref -> r12 "field V13._current (fldOffset=0x8)" P-INDEP
+; V26 tmp11 [V26,T14] ( 3, 272 ) int -> r8 "Inline stloc first use temp" +;* V27 tmp12 [V27,T34] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP +; V28 tmp13 [V28,T13] ( 2, 192 ) ref -> r12 "field V13._current (fldOffset=0x8)" P-INDEP
; V29 tmp14 [V29,T02] ( 6, 656 ) int -> r13 "field V13._index (fldOffset=0x10)" P-INDEP
-; V30 tmp15 [V30,T26] ( 2, 144 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP -; V31 tmp16 [V31,T31] ( 2, 32 ) ref -> rax "field V23._list (fldOffset=0x0)" P-INDEP
+; V30 tmp15 [V30,T27] ( 2, 144 ) int -> r14 "field V13._version (fldOffset=0x14)" P-INDEP +; V31 tmp16 [V31,T32] ( 2, 32 ) ref -> rax "field V23._list (fldOffset=0x0)" P-INDEP
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp18 [V33,T34] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP -; V34 tmp19 [V34,T32] ( 2, 32 ) int -> r14 "field V23._version (fldOffset=0x14)" P-INDEP
+;* V33 tmp18 [V33,T35] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP +; V34 tmp19 [V34,T33] ( 2, 32 ) int -> r14 "field V23._version (fldOffset=0x14)" P-INDEP
; V35 tmp20 [V35,T03] ( 3, 768 ) ref -> rcx "arr expr" ; V36 tmp21 [V36,T11] ( 3, 384 ) ref -> rax "arr expr"
-; V37 tmp22 [V37,T18] ( 2, 256 ) ref -> rdx "arr expr"
+; V37 tmp22 [V37,T19] ( 2, 256 ) ref -> rdx "arr expr"
; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> rax "arr expr"
-; V39 tmp24 [V39,T19] ( 2, 256 ) ref -> rcx "argument with side effect" -; V40 PSPSym [V40,T37] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym" -; V41 cse0 [V41,T35] ( 4, 4 ) byref -> rbx "CSE - moderate" -; V42 cse1 [V42,T29] ( 6, 51 ) ref -> rdx multi-def "CSE - moderate" -; V43 cse2 [V43,T06] ( 3, 384 ) int -> r8 "CSE - aggressive" -; V44 cse3 [V44,T16] ( 4, 256 ) int -> rcx "CSE - moderate" -; V45 cse4 [V45,T23] ( 3, 192 ) ref -> rdx "CSE - moderate" -; V46 cse5 [V46,T27] ( 2, 128 ) int -> r8 "CSE - moderate" -; V47 cse6 [V47,T24] ( 3, 192 ) int -> r8 "CSE - moderate"
+; V39 tmp24 [V39,T20] ( 2, 256 ) ref -> rcx "argument with side effect" +; V40 PSPSym [V40,T38] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym" +; V41 cse0 [V41,T36] ( 4, 4 ) byref -> rbx "CSE - moderate" +; V42 cse1 [V42,T30] ( 6, 51 ) ref -> rdx multi-def "CSE - moderate" +; V43 cse2 [V43,T12] ( 3, 384 ) int -> r12 "CSE - aggressive" +; V44 cse3 [V44,T06] ( 3, 384 ) int -> r8 "CSE - aggressive" +; V45 cse4 [V45,T17] ( 4, 256 ) int -> rcx "CSE - moderate" +; V46 cse5 [V46,T24] ( 3, 192 ) ref -> rdx "CSE - moderate" +; V47 cse6 [V47,T28] ( 2, 128 ) int -> r8 "CSE - moderate" +; V48 cse7 [V48,T25] ( 3, 192 ) int -> r8 "CSE - moderate"
; ; Lcl frame size = 88 @@ -88,7 +89,7 @@ G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor edx, edx mov dword ptr [rbp-0x40], edx ;; size=32 bbWeight=1 PerfScore 9.50
-G_M45973_IG03: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+G_M45973_IG03: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; byrRegs -[rax] cmp byte ptr [rbp-0x40], 0 je SHORT G_M45973_IG05 @@ -163,7 +164,7 @@ G_M45973_IG09: ; bbWeight=64, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=000 xor edx, edx mov dword ptr [rbp-0x48], edx ;; size=61 bbWeight=64 PerfScore 976.00
-G_M45973_IG10: ; bbWeight=64, gcVars=0000000010000000 {V07}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG10: ; bbWeight=64, gcVars=0000000020000000 {V07}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x48], 0 jne G_M45973_IG23 lea rdx, [rbp-0x48] @@ -341,7 +342,8 @@ G_M45973_IG28: ; bbWeight=64, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs ; gcr arg pop 0 ;; size=24 bbWeight=64 PerfScore 720.00 G_M45973_IG29: ; bbWeight=128, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r14d, dword ptr [rdi+0x14]
+ mov r12d, dword ptr [rdi+0x14] + cmp r14d, r12d
jne SHORT G_M45973_IG36 mov r8d, dword ptr [rdi+0x10] cmp r13d, r8d @@ -355,15 +357,16 @@ G_M45973_IG29: ; bbWeight=128, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=00 ; gcrRegs +[r12] inc r13d jmp SHORT G_M45973_IG28
- ;; size=38 bbWeight=128 PerfScore 2272.00
+ ;; size=41 bbWeight=128 PerfScore 2176.00
G_M45973_IG30: ; bbWeight=128, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax r12]
- inc dword ptr [rdi+0x14]
+ inc r12d + mov dword ptr [rdi+0x14], r12d
xor ecx, ecx mov dword ptr [rdi+0x10], ecx test r8d, r8d jle SHORT G_M45973_IG32
- ;; size=13 bbWeight=128 PerfScore 704.00
+ ;; size=17 bbWeight=128 PerfScore 480.00
G_M45973_IG31: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] @@ -401,8 +404,8 @@ G_M45973_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M45973_IG37: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V38}
+G_M45973_IG37: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V39}
push rbp push r15 push r14 @@ -416,12 +419,12 @@ G_M45973_IG37: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=000 mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x90] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M45973_IG38: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG38: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x40], 0 je SHORT G_M45973_IG39 mov rcx, gword ptr [rbp-0x50] ; gcrRegs +[rcx]
- ; GC ptr vars -{V04 V38}
+ ; GC ptr vars -{V04 V39}
call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -441,8 +444,8 @@ G_M45973_IG40: ; bbWeight=0, funclet epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=0 PerfScore 0.00
-G_M45973_IG41: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V07 V28}
+G_M45973_IG41: ; bbWeight=0, gcVars=0000000020000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V07 V29}
push rbp push r15 push r14 @@ -456,12 +459,12 @@ G_M45973_IG41: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=000 mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x90] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M45973_IG42: ; bbWeight=0, gcVars=0000000010000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M45973_IG42: ; bbWeight=0, gcVars=0000000020000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x48], 0 je SHORT G_M45973_IG43 mov rcx, gword ptr [rbp-0x58] ; gcrRegs +[rcx]
- ; GC ptr vars -{V07 V28}
+ ; GC ptr vars -{V07 V29}
call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -482,7 +485,7 @@ G_M45973_IG44: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 805, prolog size 28, PerfScore 12029.75, instruction count 234, allocated bytes for code 805 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts)
+; Total bytes of code 812, prolog size 28, PerfScore 11709.75, instruction count 236, allocated bytes for code 812 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts)
; ============================================================ Unwind Info:

+2 (+1.96%) : 32109.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)

@@ -9,26 +9,27 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> -; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl> +; V01 arg1 [V01,T08] ( 3, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
; V02 loc0 [V02 ] ( 3, 7 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
-;* V08 tmp3 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp3 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V10 tmp5 [V10,T02] ( 4, 17 ) ref -> rsi single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T04] ( 2, 6 ) ref -> rcx "field V03._current (fldOffset=0x8)" P-INDEP
+; V11 tmp6 [V11,T05] ( 2, 6 ) ref -> rcx "field V03._current (fldOffset=0x8)" P-INDEP
; V12 tmp7 [V12,T00] ( 6, 21 ) int -> rbp "field V03._index (fldOffset=0x10)" P-INDEP
-; V13 tmp8 [V13,T05] ( 2, 9 ) int -> rdi "field V03._version (fldOffset=0x14)" P-INDEP -; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> rsi single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T06] ( 2, 9 ) int -> rdi "field V03._version (fldOffset=0x14)" P-INDEP +; V14 tmp9 [V14,T11] ( 3, 3 ) ref -> rsi single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._current (fldOffset=0x8)" P-INDEP
-;* V16 tmp11 [V16,T12] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP -; V17 tmp12 [V17,T11] ( 2, 2 ) int -> rdi "field V07._version (fldOffset=0x14)" P-INDEP
+;* V16 tmp11 [V16,T13] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP +; V17 tmp12 [V17,T12] ( 2, 2 ) int -> rdi "field V07._version (fldOffset=0x14)" P-INDEP
; V18 tmp13 [V18,T01] ( 3, 24 ) ref -> rdx "arr expr"
-; V19 cse0 [V19,T03] ( 2, 8 ) int -> rdx "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 8 ) int -> rdx "CSE - aggressive" +; V20 cse1 [V20,T03] ( 2, 16 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -65,9 +66,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=16 bbWeight=2 PerfScore 13.50 G_M38703_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, dword ptr [rsi+0x14]
+ mov edx, dword ptr [rsi+0x14] + cmp edi, edx
jne SHORT G_M38703_IG10
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M38703_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov edx, dword ptr [rsi+0x10] cmp ebp, edx @@ -104,7 +106,7 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 8, PerfScore 129.50, instruction count 38, allocated bytes for code 102 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 123.50, instruction count 39, allocated bytes for code 104 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.windows.x64.checked.mch

-27 (-6.22%) : 57547.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)

@@ -8,10 +8,10 @@ ; 4 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 10, 64.70) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
+; V00 arg0 [V00,T03] ( 9, 63.70) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
; V01 arg1 [V01,T11] ( 4, 18 ) byref -> rsi single-def
-; V02 arg2 [V02,T13] ( 3, 10 ) ref -> rdi class-hnd single-def <System.Object[]> -; V03 arg3 [V03,T14] ( 3, 10 ) ref -> rbp class-hnd single-def <System.String[]>
+; V02 arg2 [V02,T14] ( 3, 10 ) ref -> rdi class-hnd single-def <System.Object[]> +; V03 arg3 [V03,T15] ( 3, 10 ) ref -> rbp class-hnd single-def <System.String[]>
; V04 loc0 [V04,T22] ( 3, 2 ) ref -> rax class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method> ;* V05 loc1 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ; V06 loc2 [V06,T04] ( 10, 54.50) ref -> r12 class-hnd exact <Microsoft.VisualBasic.CompilerServices.Symbols+Method> @@ -25,28 +25,29 @@ ;* V14 tmp2 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.VisualBasic.CompilerServices.Symbols+Method]> ;* V15 tmp3 [V15,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-;* V17 tmp5 [V17,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp5 [V17,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V19 tmp7 [V19,T21] ( 2, 3 ) ref -> r15 single-def "field V05._list (fldOffset=0x0)" P-INDEP -; V20 tmp8 [V20,T16] ( 2, 5.34) ref -> r12 "field V05._current (fldOffset=0x8)" P-INDEP -; V21 tmp9 [V21,T09] ( 6, 18.36) int -> r13 "field V05._index (fldOffset=0x10)" P-INDEP -; V22 tmp10 [V22,T17] ( 2, 9 ) int -> r14 single-def "field V05._version (fldOffset=0x14)" P-INDEP
+;* V19 tmp7 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V05._list (fldOffset=0x0)" P-INDEP +; V20 tmp8 [V20,T17] ( 2, 5.34) ref -> r12 "field V05._current (fldOffset=0x8)" P-INDEP +; V21 tmp9 [V21,T09] ( 6, 18.36) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP +; V22 tmp10 [V22,T18] ( 2, 9 ) int -> r14 single-def "field V05._version (fldOffset=0x14)" P-INDEP
;* V23 tmp11 [V23,T25] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP ; V24 tmp12 [V24,T00] ( 9, 77.36) ref -> [rsp+0x38] "field V08._current (fldOffset=0x8)" P-INDEP ; V25 tmp13 [V25,T01] ( 6, 71.43) int -> [rsp+0x44] "field V08._index (fldOffset=0x10)" P-INDEP
-; V26 tmp14 [V26,T12] ( 2, 18 ) int -> [rsp+0x40] spill-single-def "field V08._version (fldOffset=0x14)" P-INDEP
+; V26 tmp14 [V26,T13] ( 2, 18 ) int -> r13 "field V08._version (fldOffset=0x14)" P-INDEP
; V27 tmp15 [V27,T23] ( 2, 2 ) ref -> rcx single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V29 tmp17 [V29,T27] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP
+;* V29 tmp17 [V29,T28] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x10)" P-INDEP
; V30 tmp18 [V30,T24] ( 2, 2 ) int -> r14 single-def "field V13._version (fldOffset=0x14)" P-INDEP
-; V31 tmp19 [V31,T19] ( 2, 4 ) ref -> rcx "field V14._list (fldOffset=0x0)" P-INDEP
+;* V31 tmp19 [V31,T26] ( 0, 0 ) ref -> zero-ref "field V14._list (fldOffset=0x0)" P-INDEP
;* V32 tmp20 [V32 ] ( 0, 0 ) ref -> zero-ref "field V14._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp21 [V33,T26] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP -; V34 tmp22 [V34,T20] ( 2, 4 ) int -> r10 "field V14._version (fldOffset=0x14)" P-INDEP
+;* V33 tmp21 [V33,T27] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x10)" P-INDEP +; V34 tmp22 [V34,T20] ( 2, 4 ) int -> r13 "field V14._version (fldOffset=0x14)" P-INDEP
; V35 tmp23 [V35,T10] ( 3, 20.04) ref -> rcx "arr expr" ; V36 tmp24 [V36,T02] ( 3, 80.15) ref -> rdx "arr expr" ; V37 cse0 [V37,T05] ( 2, 32.00) int -> rdx "CSE - aggressive"
-; V38 cse1 [V38,T15] ( 2, 8.00) int -> rcx "CSE - moderate"
+; V38 cse1 [V38,T16] ( 2, 8.00) int -> rcx "CSE - moderate" +; V39 cse2 [V39,T12] ( 3, 18 ) int -> r13 "CSE - aggressive"
; ; Lcl frame size = 88 @@ -75,157 +76,148 @@ G_M47424_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 mov rcx, rbx ; gcrRegs +[rcx] mov r14d, dword ptr [rcx+0x14]
- mov r15, rbx - ; gcrRegs +[r15] - xor r13d, r13d
+ xor r15d, r15d
jmp G_M47424_IG15
- ;; size=18 bbWeight=1 PerfScore 4.75 -G_M47424_IG03: ; bbWeight=2, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, byref
+ ;; size=15 bbWeight=1 PerfScore 4.50 +G_M47424_IG03: ; bbWeight=2, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx] +[r12] cmp byte ptr [r12+0x4D], 0 jne G_M47424_IG15 cmp byte ptr [r12+0x4E], 0 jne G_M47424_IG15 mov dword ptr [rsp+0x54], 1
- mov rcx, r15 - ; gcrRegs +[rcx] - mov r10d, dword ptr [rcx+0x14]
xor ecx, ecx
- ; gcrRegs -[rcx] - mov dword ptr [rsp+0x40], r10d
jmp G_M47424_IG11
- ;; size=51 bbWeight=2 PerfScore 29.00 -G_M47424_IG04: ; bbWeight=8, gcrefRegs=98A8 {rbx rbp rdi r11 r12 r15}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs +[r11] - cmp byte ptr [r11+0x4D], 0
+ ;; size=39 bbWeight=2 PerfScore 22.50 +G_M47424_IG04: ; bbWeight=8, gcrefRegs=14A8 {rbx rbp rdi r10 r12}, byrefRegs=0040 {rsi}, byref, isz + ; gcrRegs +[r10] + cmp byte ptr [r10+0x4D], 0
mov ecx, dword ptr [rsp+0x44]
- mov r10d, dword ptr [rsp+0x40]
jne G_M47424_IG11
- cmp byte ptr [r11+0x4E], 0
+ cmp byte ptr [r10+0x4E], 0
jne G_M47424_IG11
- mov rdx, gword ptr [r11+0x08]
+ mov rdx, gword ptr [r10+0x08]
; gcrRegs +[rdx] cmp rdx, gword ptr [r12+0x08] jne SHORT G_M47424_IG08
- movzx rdx, byte ptr [r11+0x4C]
+ movzx rdx, byte ptr [r10+0x4C]
; gcrRegs -[rdx] cmp dl, byte ptr [r12+0x4C] je G_M47424_IG11
- ;; size=58 bbWeight=8 PerfScore 176.00 -G_M47424_IG05: ; bbWeight=4, gcrefRegs=98A8 {rbx rbp rdi r11 r12 r15}, byrefRegs=0040 {rsi}, byref
+ ;; size=53 bbWeight=8 PerfScore 168.00 +G_M47424_IG05: ; bbWeight=4, gcrefRegs=14A8 {rbx rbp rdi r10 r12}, byrefRegs=0040 {rsi}, byref
mov dword ptr [rsp+0x44], ecx ;; size=4 bbWeight=4 PerfScore 4.00
-G_M47424_IG06: ; bbWeight=8, gcrefRegs=98A8 {rbx rbp rdi r11 r12 r15}, byrefRegs=0040 {rsi}, byref
+G_M47424_IG06: ; bbWeight=8, gcrefRegs=14A8 {rbx rbp rdi r10 r12}, byrefRegs=0040 {rsi}, byref
xor edx, edx mov dword ptr [rsp+0x48], edx ;; size=6 bbWeight=8 PerfScore 10.00
-G_M47424_IG07: ; bbWeight=8, gcrefRegs=98A8 {rbx rbp rdi r11 r12 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M47424_IG07: ; bbWeight=8, gcrefRegs=14A8 {rbx rbp rdi r10 r12}, byrefRegs=0040 {rsi}, byref, isz
mov dword ptr [rsp+0x20], edx lea rdx, [rsp+0x48] mov qword ptr [rsp+0x28], rdx mov dword ptr [rsp+0x30], 1 mov rcx, r12 ; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], r11
+ mov gword ptr [rsp+0x38], r10
; GC ptr vars +{V24}
- mov rdx, r11
+ mov rdx, r10
; gcrRegs +[rdx] mov r8, rdi ; gcrRegs +[r8] mov r9, rbp ; gcrRegs +[r9] call [<unknown method>]
- ; gcrRegs -[rcx rdx r8-r9 r11] +[rax]
+ ; gcrRegs -[rcx rdx r8-r10] +[rax]
; gcr arg pop 0 cmp rax, r12 jne SHORT G_M47424_IG09
- mov r11, gword ptr [rsp+0x38] - ; gcrRegs +[r11] - cmp byte ptr [r11+0x50], 0
+ mov r10, gword ptr [rsp+0x38] + ; gcrRegs +[r10] + cmp byte ptr [r10+0x50], 0
mov ecx, dword ptr [rsp+0x44]
- mov r10d, dword ptr [rsp+0x40]
jne SHORT G_M47424_IG11
- mov byte ptr [r11+0x50], 1
+ mov byte ptr [r10+0x50], 1
jmp SHORT G_M47424_IG10
- ;; size=78 bbWeight=8 PerfScore 158.00 -G_M47424_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=98A8 {rbx rbp rdi r11 r12 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ ;; size=73 bbWeight=8 PerfScore 150.00 +G_M47424_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=14A8 {rbx rbp rdi r10 r12}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars -{V24} mov dword ptr [rsp+0x44], ecx jmp SHORT G_M47424_IG06 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M47424_IG09: ; bbWeight=8, gcVars=0000000000000001 {V24}, gcrefRegs=90A9 {rax rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs -[r11] +[rax]
+G_M47424_IG09: ; bbWeight=8, gcVars=0000000000000001 {V24}, gcrefRegs=10A9 {rax rbx rbp rdi r12}, byrefRegs=0040 {rsi}, gcvars, byref, isz + ; gcrRegs -[r10] +[rax]
; GC ptr vars +{V00 V24} xor edx, edx
- mov r11, gword ptr [rsp+0x38] - ; gcrRegs +[r11] - cmp rax, r11
+ mov r10, gword ptr [rsp+0x38] + ; gcrRegs +[r10] + cmp rax, r10
mov dword ptr [rsp+0x54], edx mov ecx, dword ptr [rsp+0x44]
- mov r10d, dword ptr [rsp+0x40]
jne SHORT G_M47424_IG11 cmp byte ptr [r12+0x50], 0 jne SHORT G_M47424_IG11 mov byte ptr [r12+0x50], 1
- ;; size=39 bbWeight=8 PerfScore 84.00 -G_M47424_IG10: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, gcvars, byref, isz - ; gcrRegs -[rax r11]
+ ;; size=34 bbWeight=8 PerfScore 76.00 +G_M47424_IG10: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, gcvars, byref, isz + ; gcrRegs -[rax r10]
; GC ptr vars -{V00 V24} mov edx, dword ptr [rsi] sub edx, 1 jo SHORT G_M47424_IG21 mov dword ptr [rsi], edx ;; size=9 bbWeight=8 PerfScore 34.00
-G_M47424_IG11: ; bbWeight=16, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, byref, isz - cmp r10d, dword ptr [rbx+0x14]
+G_M47424_IG11: ; bbWeight=16, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, byref, isz + cmp r13d, dword ptr [rbx+0x14]
jne SHORT G_M47424_IG23 ;; size=6 bbWeight=16 PerfScore 64.00
-G_M47424_IG12: ; bbWeight=16.00, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M47424_IG12: ; bbWeight=16.00, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, byref, isz
mov edx, dword ptr [rbx+0x10] cmp ecx, edx jae SHORT G_M47424_IG14 ;; size=7 bbWeight=16.00 PerfScore 52.00
-G_M47424_IG13: ; bbWeight=13.36, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M47424_IG13: ; bbWeight=13.36, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, byref, isz
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp ecx, dword ptr [rdx+0x08] jae SHORT G_M47424_IG22 mov r8d, ecx
- mov r11, gword ptr [rdx+8*r8+0x10] - ; gcrRegs +[r11]
+ mov r10, gword ptr [rdx+8*r8+0x10] + ; gcrRegs +[r10]
inc ecx mov dword ptr [rsp+0x44], ecx jmp G_M47424_IG04 ;; size=28 bbWeight=13.36 PerfScore 153.62
-G_M47424_IG14: ; bbWeight=16, gcrefRegs=90A8 {rbx rbp rdi r12 r15}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rdx r11]
+G_M47424_IG14: ; bbWeight=16, gcrefRegs=10A8 {rbx rbp rdi r12}, byrefRegs=0040 {rsi}, byref, isz + ; gcrRegs -[rdx r10]
cmp dword ptr [rsp+0x54], 0 jne SHORT G_M47424_IG18 ;; size=7 bbWeight=16 PerfScore 48.00
-G_M47424_IG15: ; bbWeight=8, gcrefRegs=80A8 {rbx rbp rdi r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M47424_IG15: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[r12]
- cmp r14d, dword ptr [rbx+0x14]
+ mov r13d, dword ptr [rbx+0x14] + cmp r14d, r13d
jne SHORT G_M47424_IG23
- ;; size=6 bbWeight=8 PerfScore 32.00 -G_M47424_IG16: ; bbWeight=4.00, gcrefRegs=80A8 {rbx rbp rdi r15}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=9 bbWeight=8 PerfScore 26.00 +G_M47424_IG16: ; bbWeight=4.00, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
mov ecx, dword ptr [rbx+0x10]
- cmp r13d, ecx
+ cmp r15d, ecx
jae SHORT G_M47424_IG20 ;; size=8 bbWeight=4.00 PerfScore 13.00
-G_M47424_IG17: ; bbWeight=3.34, gcrefRegs=80A8 {rbx rbp rdi r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M47424_IG17: ; bbWeight=3.34, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx]
- cmp r13d, dword ptr [rcx+0x08]
+ cmp r15d, dword ptr [rcx+0x08]
jae SHORT G_M47424_IG22
- mov edx, r13d
...

-20 (-3.85%) : 337924.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ReserveOneMessage():ubyte:this (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 8, 29 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]>
-; V01 loc0 [V01 ] ( 8, 32 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> -; V02 loc1 [V02,T10] ( 4, 3 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def <<unknown class>> -; V03 loc2 [V03 ] ( 6, 6 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc3 [V04,T11] ( 3, 3 ) ubyte -> [rbp-0x34] do-not-enreg[Z] EH-live -; V05 loc4 [V05,T04] ( 4, 25 ) ref -> [rbp-0x50] do-not-enreg[Z] class-hnd EH-live <<unknown class>> -; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V01 loc0 [V01 ] ( 8, 36 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> +; V02 loc1 [V02,T10] ( 4, 3 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>> +; V03 loc2 [V03 ] ( 6, 6 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc3 [V04,T11] ( 3, 3 ) ubyte -> [rbp-0x2C] do-not-enreg[Z] EH-live +; V05 loc4 [V05,T04] ( 4, 25 ) ref -> [rbp-0x48] do-not-enreg[Z] class-hnd EH-live <<unknown class>> +; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 2, 32 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> @@ -25,50 +25,49 @@ ;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V16 tmp9 [V16,T02] ( 2, 32 ) ubyte -> rcx "Inlining Arg"
-; V17 tmp10 [V17,T00] ( 3, 40 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>> -; V18 tmp11 [V18,T05] ( 3, 24 ) ubyte -> rdi "Inline stloc first use temp"
+; V17 tmp10 [V17,T00] ( 3, 48 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T05] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
-; V20 tmp13 [V20 ] ( 6, 23 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP -; V21 tmp14 [V21 ] ( 4, 18 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
+; V20 tmp13 [V20 ] ( 6, 27 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP +; V21 tmp14 [V21 ] ( 4, 18 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref "field V09._id (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T08] ( 3, 6 ) ref -> rbx single-def "BlockOp address local"
-; V24 PSPSym [V24,T13] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V24 PSPSym [V24,T13] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V25 cse0 [V25,T06] ( 6, 15 ) ref -> rdx multi-def "CSE - aggressive" ;
-; Lcl frame size = 104
+; Lcl frame size = 96
G_M11515_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rdi
push rsi push rbx
- sub rsp, 104 - lea rbp, [rsp+0x80]
+ sub rsp, 96 + lea rbp, [rsp+0x70]
xor eax, eax
- mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x50], rsp
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 7.25
+ ;; size=25 bbWeight=1 PerfScore 6.25
G_M11515_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] mov rcx, gword ptr [rdx+0x10] ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x40], rcx
; GC ptr vars +{V02} xor edx, edx ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x30], edx
+ mov dword ptr [rbp-0x28], edx
;; size=17 bbWeight=1 PerfScore 6.25 G_M11515_IG03: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x30], 0
+ cmp byte ptr [rbp-0x28], 0
jne SHORT G_M11515_IG06
- lea rdx, [rbp-0x30]
+ lea rdx, [rbp-0x28]
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x30]
+ movzx rcx, byte ptr [rbp-0x28]
test ecx, ecx jne SHORT G_M11515_IG04 mov rdx, 0xD1FFAB1E @@ -85,7 +84,7 @@ G_M11515_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx+0x08] ; gcrRegs +[rsi] mov rcx, gword ptr [rsi+0x08]
- lea rdx, [rbp-0x28]
+ lea rdx, [rbp-0x20]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] @@ -94,7 +93,7 @@ G_M11515_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr je SHORT G_M11515_IG05 mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x28]
+ mov rdx, gword ptr [rbp-0x20]
; gcrRegs +[rdx] cmp dword ptr [rcx], ecx call [<unknown method>] @@ -105,7 +104,7 @@ G_M11515_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M11515_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx] xor ecx, ecx
- mov dword ptr [rbp-0x34], ecx
+ mov dword ptr [rbp-0x2C], ecx
jmp SHORT G_M11515_IG08 ;; size=7 bbWeight=1 PerfScore 3.25 G_M11515_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -115,9 +114,9 @@ G_M11515_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M11515_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- cmp byte ptr [rbp-0x30], 0
+ cmp byte ptr [rbp-0x28], 0
je SHORT G_M11515_IG10
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] ; GC ptr vars -{V02} call <unknown method> @@ -129,44 +128,44 @@ G_M11515_IG08: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=000 ; gcrRegs -[rbx] ; GC ptr vars +{V02} mov rcx, rsp
- call G_M11515_IG25
+ call G_M11515_IG23
;; size=8 bbWeight=1 PerfScore 1.25 G_M11515_IG09: ; bbWeight=1, nogc, extend
- jmp G_M11515_IG23
+ jmp G_M11515_IG21
;; size=5 bbWeight=1 PerfScore 2.00 G_M11515_IG10: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] ; GC ptr vars -{V02}
- mov rcx, gword ptr [rbp-0x28]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx] mov r8, rbx ; gcrRegs +[r8]
- mov rdx, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx r8] ; gcr arg pop 0 test eax, eax
- jne G_M11515_IG19
+ jne G_M11515_IG17
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] mov rdx, gword ptr [rdx+0x10]
- mov gword ptr [rbp-0x50], rdx
+ mov gword ptr [rbp-0x48], rdx
; GC ptr vars +{V05} xor edx, edx ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x40], edx
+ mov dword ptr [rbp-0x38], edx
;; size=49 bbWeight=8 PerfScore 104.00 G_M11515_IG11: ; bbWeight=8, gcVars=0000000000000010 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x40], 0 - jne SHORT G_M11515_IG17 - lea rdx, [rbp-0x40] - mov rcx, gword ptr [rbp-0x50]
+ cmp byte ptr [rbp-0x38], 0 + jne SHORT G_M11515_IG15 + lea rdx, [rbp-0x38] + mov rcx, gword ptr [rbp-0x48]
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x40]
+ movzx rcx, byte ptr [rbp-0x38]
test ecx, ecx jne SHORT G_M11515_IG13 ;; size=27 bbWeight=8 PerfScore 62.00 @@ -185,45 +184,39 @@ G_M11515_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx+0x08] ; gcrRegs +[rsi] mov rcx, gword ptr [rsi+0x08]
- lea rdx, [rbp-0x28]
+ lea rdx, [rbp-0x20]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov edi, eax - test edi, edi - je SHORT G_M11515_IG15 - ;; size=30 bbWeight=8 PerfScore 112.00 -G_M11515_IG14: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test eax, eax + je SHORT G_M11515_IG14
mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x28]
+ mov rdx, gword ptr [rbp-0x20]
; gcrRegs +[rdx] cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx rdx rsi] ; gcr arg pop 0
- ;; size=16 bbWeight=4 PerfScore 36.00 -G_M11515_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test edi, edi - jne SHORT G_M11515_IG18 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M11515_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M11515_IG16 + ;; size=46 bbWeight=8 PerfScore 198.00 +G_M11515_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] xor ecx, ecx
- mov dword ptr [rbp-0x34], ecx - jmp SHORT G_M11515_IG21
+ mov dword ptr [rbp-0x2C], ecx + jmp SHORT G_M11515_IG19
;; size=7 bbWeight=1 PerfScore 3.25
-G_M11515_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11515_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M11515_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11515_IG16: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx]
- cmp byte ptr [rbp-0x40], 0
+ cmp byte ptr [rbp-0x38], 0
je G_M11515_IG10
- mov rcx, gword ptr [rbp-0x50]
+ mov rcx, gword ptr [rbp-0x48]
; gcrRegs +[rcx] ; GC ptr vars -{V05} call <unknown method> @@ -231,114 +224,108 @@ G_M11515_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp G_M11515_IG10 ;; size=24 bbWeight=8 PerfScore 56.00
-G_M11515_IG19: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M11515_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x20] lea rcx, bword ptr [rbx+0x10] ; byrRegs +[rcx] ...

-8 (-3.62%) : 338033.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessagesubyte (FullOpts)

@@ -9,37 +9,36 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 4, 10 ) ref -> [rbp+0x10] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte]>
-; V01 arg1 [V01,T01] ( 5, 15 ) ref -> [rbp+0x18] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V01 arg1 [V01,T00] ( 5, 19 ) ref -> [rbp+0x18] class-hnd EH-live single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
; V02 arg2 [V02,T07] ( 3, 2 ) byref -> [rbp+0x20] EH-live single-def ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x14] do-not-enreg[Z] EH-live -; V05 loc2 [V05 ] ( 6, 28 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
+; V04 loc1 [V04,T05] ( 3, 9 ) int -> [rbp-0x0C] do-not-enreg[Z] EH-live +; V05 loc2 [V05 ] ( 6, 32 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
+; V08 tmp1 [V08,T01] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader>
-; V10 tmp3 [V10,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
+; V10 tmp3 [V10,T02] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte]>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> ; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V13 tmp6 [V13,T06] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V14 tmp7 [V14,T00] ( 3, 24 ) ubyte -> rsi "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V16 tmp9 [V16 ] ( 4, 20 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP -; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
+; V16 tmp9 [V16 ] ( 4, 24 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V05.key (fldOffset=0x0)" P-DEP +; V17 tmp10 [V17 ] ( 3, 16 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP
;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref "field V09._id (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) long -> zero-ref "field V11._id (fldOffset=0x0)" P-INDEP ; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" ;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M8667_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push rsi
push rbx
- sub rsp, 64
+ sub rsp, 72
lea rbp, [rsp+0x50] xor eax, eax
- mov qword ptr [rbp-0x28], rax
+ mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x30], rsp mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} @@ -49,35 +48,35 @@ G_M8667_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} ; GC ptr vars +{V02} mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=37 bbWeight=1 PerfScore 9.25 -G_M8667_IG02: ; bbWeight=1, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=36 bbWeight=1 PerfScore 8.25 +G_M8667_IG02: ; bbWeight=1, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdx] mov rax, gword ptr [rdx+0x10] ; gcrRegs +[rax] cmp byte ptr [rax], al xor eax, eax ; gcrRegs -[rax]
- mov dword ptr [rbp-0x14], eax
+ mov dword ptr [rbp-0x0C], eax
jmp SHORT G_M8667_IG05 ;; size=13 bbWeight=1 PerfScore 8.25 G_M8667_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx]
- mov rcx, gword ptr [rbp-0x28]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx] mov r8, rbx ; gcrRegs +[r8]
- mov rdx, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx r8] ; gcr arg pop 0 test eax, eax je SHORT G_M8667_IG04
- mov rcx, gword ptr [rbp-0x28]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx] mov r8, rbx ; gcrRegs +[r8]
- mov rdx, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx r8] @@ -86,9 +85,9 @@ G_M8667_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ;; size=53 bbWeight=4 PerfScore 50.00 G_M8667_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- mov edx, dword ptr [rbp-0x14]
+ mov edx, dword ptr [rbp-0x0C]
inc edx
- mov dword ptr [rbp-0x14], edx
+ mov dword ptr [rbp-0x0C], edx
mov rdx, gword ptr [rbp+0x18] ; gcrRegs +[rdx] mov rbx, gword ptr [rbp+0x10] @@ -97,51 +96,43 @@ G_M8667_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M8667_IG05: ; bbWeight=8, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [rdx+0x08] ; gcrRegs +[rcx]
- lea rdx, [rbp-0x28]
+ lea rdx, [rbp-0x20]
; gcrRegs -[rdx] cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov esi, eax - test esi, esi - je SHORT G_M8667_IG07 - ;; size=22 bbWeight=8 PerfScore 80.00 -G_M8667_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test eax, eax + je SHORT G_M8667_IG06
mov rdx, gword ptr [rbp+0x18] ; gcrRegs +[rdx] mov rcx, gword ptr [rdx+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x28]
+ mov rdx, gword ptr [rbp-0x20]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=20 bbWeight=4 PerfScore 40.00 -G_M8667_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test esi, esi - jne SHORT G_M8667_IG03 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M8667_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ jmp SHORT G_M8667_IG03 + ;; size=42 bbWeight=8 PerfScore 174.00 +G_M8667_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[rbx] ; GC ptr vars -{V00 V01 V02}
- add rsp, 64
+ add rsp, 72
pop rbx
- pop rsi
pop rbp ret
- ;; size=8 bbWeight=1 PerfScore 2.75 -G_M8667_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M8667_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x50]
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M8667_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M8667_IG08: ; bbWeight=0, gcVars=0000000000000091 {V00 V01 V02}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V01 V02 V04} mov rcx, bword ptr [rbp+0x20] ; byrRegs +[rcx] @@ -152,15 +143,14 @@ G_M8667_IG10: ; bbWeight=0, gcVars=0000000000000092 {V00 V01 V02}, gcrefR ; gcr arg pop 0 lea rax, G_M8667_IG04 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M8667_IG11: ; bbWeight=0, funclet epilog, nogc, extend - add rsp, 48
+G_M8667_IG09: ; bbWeight=0, funclet epilog, nogc, extend + add rsp, 40
pop rbx
- pop rsi
pop rbp ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 221, prolog size 37, PerfScore 217.25, instruction count 70, allocated bytes for code 221 (MethodHash=12a5de24) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
+; Total bytes of code 213, prolog size 36, PerfScore 259.75, instruction count 64, allocated bytes for code 213 (MethodHash=12a5de24) for method System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -168,29 +158,27 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M8667_IG03..G_M8667_IG04) handled by [G_M8667_IG09..END) (class: 1000022)
+EH#0: try [G_M8667_IG03..G_M8667_IG04) handled by [G_M8667_IG07..END) (class: 1000022)
+10 (+1.46%) : 283391.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
@@ -151,23 +151,23 @@ G_M54793_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 lea rdi, [rsp+0x40] mov dword ptr [rbp+0x20], 256 xor r14d, r14d
- jmp G_M54793_IG19
+ jmp G_M54793_IG16
;; size=51 bbWeight=0.50 PerfScore 4.38 G_M54793_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz ; gcrRegs -[rax] ; byrRegs +[rdi] test eax, eax
- jne G_M54793_IG34
+ jne G_M54793_IG33
mov r15d, dword ptr [rsi+0x08] cmp r15d, r14d jg SHORT G_M54793_IG14 lea r13d, [r15+r15] test r13d, r13d
- jl G_M54793_IG32
+ jl G_M54793_IG31
cmp r15d, r13d je SHORT G_M54793_IG13 ;; size=35 bbWeight=2 PerfScore 15.00
-G_M54793_IG08: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
+G_M54793_IG08: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
movsxd rdx, r13d mov rcx, 0xD1FFAB1E ; System.String[] call CORINFO_HELP_NEWARR_1_OBJ @@ -179,18 +179,18 @@ G_M54793_IG08: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 lea rdx, bword ptr [rsi+0x10] ; byrRegs +[rdx] cmp r13d, r15d
- jg SHORT G_M54793_IG15 - ;; size=35 bbWeight=1.67 PerfScore 6.67
+ jg G_M54793_IG27 + ;; size=39 bbWeight=1.67 PerfScore 6.67
G_M54793_IG09: ; bbWeight=1.19, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref ; gcrRegs -[rax rsi] mov r15d, r13d ;; size=3 bbWeight=1.19 PerfScore 0.30
-G_M54793_IG10: ; bbWeight=1.67, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref, isz
+G_M54793_IG10: ; bbWeight=1.67, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref
mov r8d, r15d shl r8, 3 cmp r8, 0x400
- ja SHORT G_M54793_IG17 - ;; size=16 bbWeight=1.67 PerfScore 3.33
+ ja G_M54793_IG28 + ;; size=20 bbWeight=1.67 PerfScore 3.33
G_M54793_IG11: ; bbWeight=1.67, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref call <unknown method> ; byrRegs -[rcx rdx] @@ -217,9 +217,9 @@ G_M54793_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd mov r15d, ecx mov r13d, dword ptr [rbp+0x20] cmp r13d, 256
- ja G_M54793_IG33
+ ja G_M54793_IG32
test r13d, r13d
- jge SHORT G_M54793_IG18
+ jge SHORT G_M54793_IG15
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov r12, rcx @@ -229,40 +229,21 @@ G_M54793_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx]
- jmp SHORT G_M54793_IG16 - ;; size=56 bbWeight=2 PerfScore 20.50 -G_M54793_IG15: ; bbWeight=0.48, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref, isz - ; gcrRegs -[rsi] - ; byrRegs +[rcx rdx] - jmp SHORT G_M54793_IG10 - ;; size=2 bbWeight=0.48 PerfScore 0.96 -G_M54793_IG16: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs +[rsi] - ; byrRegs -[rcx rdx]
mov rcx, r12 ; gcrRegs +[rcx] mov rdx, r12 ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx r12]
- jmp SHORT G_M54793_IG18 - ;; size=14 bbWeight=2 PerfScore 11.00 -G_M54793_IG17: ; bbWeight=0.00, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref, isz - ; gcrRegs -[rsi] +[r12] - ; byrRegs +[rcx rdx] - call [<unknown method>] - ; byrRegs -[rcx rdx] - jmp SHORT G_M54793_IG12 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M54793_IG18: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; gcrRegs -[r12] +[rsi]
+ ;; size=66 bbWeight=2 PerfScore 23.50 +G_M54793_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
mov bword ptr [rbp+0x10], rdi mov dword ptr [rbp+0x18], r13d lea rcx, [rbp+0x10] call <unknown method> ; gcrRegs +[rax] cmp r14d, dword ptr [rsi+0x08]
- jae G_M54793_IG31
+ jae G_M54793_IG30
mov ecx, r14d lea rcx, bword ptr [rsi+8*rcx+0x10] ; byrRegs +[rcx] @@ -274,21 +255,21 @@ G_M54793_IG18: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd mov dword ptr [rbp+0x20], 256 mov r14d, r15d ;; size=53 bbWeight=2 PerfScore 22.50
-G_M54793_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
+G_M54793_IG16: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] xor r9, r9 ; gcrRegs +[r9] mov gword ptr [rsp+0x20], r9 ;; size=12 bbWeight=4 PerfScore 13.00
-G_M54793_IG20: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
+G_M54793_IG17: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[r9] mov gword ptr [rsp+0x28], r9 ;; size=5 bbWeight=4 PerfScore 4.00
-G_M54793_IG21: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
+G_M54793_IG18: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
mov gword ptr [rsp+0x30], r9 ;; size=5 bbWeight=4 PerfScore 4.00
-G_M54793_IG22: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
+G_M54793_IG19: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 {rdi}, byref
mov gword ptr [rsp+0x38], r9 lea r9, [rbp+0x20] mov edx, r14d @@ -300,16 +281,16 @@ G_M54793_IG22: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0080 cmp eax, 259 jne G_M54793_IG07 ;; size=32 bbWeight=4 PerfScore 25.00
-G_M54793_IG23: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M54793_IG20: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] ; byrRegs -[rdi] mov r15d, dword ptr [rsi+0x08] cmp r15d, r14d
- jle SHORT G_M54793_IG27
+ jle SHORT G_M54793_IG24
test r14d, r14d
- jl G_M54793_IG32
+ jl G_M54793_IG31
;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M54793_IG24: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M54793_IG21: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
movsxd rdx, r14d mov rcx, 0xD1FFAB1E ; System.String[] call CORINFO_HELP_NEWARR_1_OBJ @@ -323,18 +304,18 @@ G_M54793_IG24: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, mov r8d, r14d shl r8, 3 cmp r8, 0x400
- ja SHORT G_M54793_IG30
+ ja SHORT G_M54793_IG29
;; size=45 bbWeight=0.50 PerfScore 2.37
-G_M54793_IG25: ; bbWeight=0.42, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref
+G_M54793_IG22: ; bbWeight=0.42, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref
; gcrRegs -[rax rsi] call <unknown method> ; byrRegs -[rcx rdx] ;; size=5 bbWeight=0.42 PerfScore 0.42
-G_M54793_IG26: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M54793_IG23: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, rbx ; gcrRegs +[rsi] test rsi, rsi
- jne SHORT G_M54793_IG27
+ jne SHORT G_M54793_IG24
mov r12, 0xD1FFAB1E ; gcrRegs +[r12] mov rcx, r12 @@ -344,20 +325,20 @@ G_M54793_IG26: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rcx rdx rbx r12] ;; size=30 bbWeight=0.50 PerfScore 2.62
-G_M54793_IG27: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M54793_IG24: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rax, rsi ; gcrRegs +[rax] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp+0x08], rcx
- je SHORT G_M54793_IG28
+ je SHORT G_M54793_IG25
call CORINFO_HELP_FAIL_FAST ; gcrRegs -[rax rsi] ;; size=24 bbWeight=0.50 PerfScore 2.25
-G_M54793_IG28: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M54793_IG25: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs +[rax] nop ;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M54793_IG29: ; bbWeight=0.50, epilog, nogc, extend
+G_M54793_IG26: ; bbWeight=0.50, epilog, nogc, extend
lea rsp, [rbp+0x28] pop rbx pop rsi @@ -369,28 +350,38 @@ G_M54793_IG29: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M54793_IG30: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz - ; gcrRegs -[rax] +[rbx] - ; byrRegs +[rcx rdx]
+G_M54793_IG27: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, gcvars, byref + ; gcrRegs -[rax] +[rbx r12] + ; byrRegs +[rcx rdx rdi] + jmp G_M54793_IG10 + ;; size=5 bbWeight=0.48 PerfScore 0.96 +G_M54793_IG28: ; bbWeight=0.00, gcrefRegs=1008 {rbx r12}, byrefRegs=0086 {rcx rdx rdi}, byref
call [<unknown method>] ; byrRegs -[rcx rdx]
- jmp SHORT G_M54793_IG26
+ jmp G_M54793_IG12 + ;; size=11 bbWeight=0.00 PerfScore 0.00 +G_M54793_IG29: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref, isz + ; gcrRegs -[r12] + ; byrRegs -[rdi] +[rcx rdx] + call [<unknown method>] + ; byrRegs -[rcx rdx] + jmp SHORT G_M54793_IG23
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M54793_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54793_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M54793_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54793_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 71 mov edx, 13 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)] int3 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M54793_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54793_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M54793_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M54793_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] ...

+2 (+1.60%) : 308427.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)

@@ -8,32 +8,33 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> -; V01 arg1 [V01,T11] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
+; V00 arg0 [V00,T11] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> +; V01 arg1 [V01,T12] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]> ; V03 loc1 [V03 ] ( 4, 8 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.IO.Compression.ZipGenericExtraField> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp2 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> ; V08 tmp4 [V08 ] ( 2, 4 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V03._data (fldOffset=0x0)" P-DEP ; V09 tmp5 [V09 ] ( 2, 4 ) ushort -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._tag (fldOffset=0x8)" P-DEP ; V10 tmp6 [V10 ] ( 2, 4 ) ushort -> [rsp+0x32] do-not-enreg[X] addr-exposed "field V03._size (fldOffset=0xa)" P-DEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> rdi single-def "V02.[000..008)" ; V12 tmp8 [V12,T01] ( 6, 21 ) int -> rbp "V02.[008..012)"
-; V13 tmp9 [V13,T08] ( 2, 9 ) int -> rsi "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rdx "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ushort -> rax "V02.[024..026)" -; V16 tmp12 [V16,T07] ( 2, 6 ) ushort -> rcx "V02.[026..028)"
+; V13 tmp9 [V13,T09] ( 2, 9 ) int -> rsi "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rdx "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ushort -> rax "V02.[024..026)" +; V16 tmp12 [V16,T08] ( 2, 6 ) ushort -> rcx "V02.[026..028)"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)"
-; V19 tmp15 [V19,T12] ( 2, 2 ) int -> rsi "V05.[012..016)"
+; V19 tmp15 [V19,T13] ( 2, 2 ) int -> rsi "V05.[012..016)"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)" ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "V05.[024..026)" ;* V22 tmp18 [V22 ] ( 0, 0 ) ushort -> zero-ref "V05.[026..028)" ; V23 tmp19 [V23,T00] ( 4, 32 ) byref -> rcx "Spilling address for field-by-field copy" ; V24 tmp20 [V24,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 cse0 [V25,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 cse0 [V25,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T04] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 56 @@ -68,9 +69,10 @@ G_M41630_IG03: ; bbWeight=2, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=29 bbWeight=2 PerfScore 13.50 G_M41630_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rdi+0x14]
+ mov ecx, dword ptr [rdi+0x14] + cmp esi, ecx
jne SHORT G_M41630_IG08
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M41630_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rdi+0x10] cmp ebp, ecx @@ -111,7 +113,7 @@ G_M41630_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 15, PerfScore 145.75, instruction count 43, allocated bytes for code 125 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
+; Total bytes of code 127, prolog size 15, PerfScore 139.75, instruction count 44, allocated bytes for code 127 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
; ============================================================ Unwind Info:

+24 (+3.52%) : 260685.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)

@@ -125,7 +125,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd ; gcrRegs +[rdx] ; byrRegs -[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=23 bbWeight=1 PerfScore 12.00 G_M40104_IG03: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -152,7 +152,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -167,12 +167,12 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd sub rsp, 512 lea r12, [rsp+0x20] test r14d, r14d
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=30 bbWeight=1 PerfScore 5.50 G_M40104_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref ; byrRegs +[r12] cmp r13d, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=13 bbWeight=4 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref mov eax, 192 @@ -183,7 +183,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd add rcx, r8 mov edx, r14d cmp rcx, rdx
- ja G_M40104_IG37
+ ja G_M40104_IG35
add r8, rdi ; byrRegs +[r8] mov bword ptr [rbp+0x10], r8 @@ -203,7 +203,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000020 {V24}, gcrefRegs=004 call [<unknown method>] ; gcrRegs -[rcx rdx r10] ;; size=22 bbWeight=2 PerfScore 7.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r8, bword ptr [rbp+0x10] ; byrRegs +[r8] mov eax, dword ptr [rbp+0x3C] @@ -220,15 +220,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; GC ptr vars -{V24} call [<unknown method>] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp+0x40] mov dword ptr [rbp+0x38], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=77 bbWeight=4 PerfScore 67.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+ jge G_M40104_IG27 + ;; size=81 bbWeight=4 PerfScore 67.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r10, 0xD1FFAB1E ; gcrRegs +[r10] mov r8, r10 @@ -241,39 +241,16 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx r8 r10]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref, isz - ; GC ptr vars -{V79} - mov eax, dword ptr [rbp+0x38] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref - mov eax, r13d - jmp G_M40104_IG11 - ;; size=8 bbWeight=0.58 PerfScore 1.30 -G_M40104_IG17: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs -[r12] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 60 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000010 {V79}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref - ; byrRegs +[r12] - ; GC ptr vars +{V04 V79}
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] mov rdx, rcx ; gcrRegs +[rdx]
- ; GC ptr vars -{V04 V79}
+ ; GC ptr vars -{V79}
call [<unknown method>] ; gcrRegs -[rcx rdx] mov eax, dword ptr [rbp+0x38]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov rdx, r12 @@ -288,51 +265,38 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd test r13d, r13d jg G_M40104_IG09 ;; size=33 bbWeight=4 PerfScore 26.00
-G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi r12]
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs +[rdi] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 62 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdi]
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx] test rsi, rsi
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rsi+0x08] lea rdx, bword ptr [rsi+0x0C] ; byrRegs +[rdx] @@ -342,29 +306,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rcx rsi] ; byrRegs -[rdx] ;; size=17 bbWeight=0.50 PerfScore 2.89
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rbx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp+0x48] pop rbx pop rsi @@ -376,33 +340,60 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=1 PerfScore 5.50
-G_M40104_IG33: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref
; gcrRegs +[rbx rsi]
+ ; byrRegs +[rdi r12] + mov eax, dword ptr [rbp+0x38] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref + mov eax, r13d + jmp G_M40104_IG11 + ;; size=8 bbWeight=0.58 PerfScore 1.30 +G_M40104_IG29: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + ; byrRegs -[r12]
mov rcx, rbx ; gcrRegs +[rcx] mov edx, 60 call [<unknown method>] ; gcrRegs -[rcx]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG34: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.04 PerfScore 0.21 +G_M40104_IG30: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + mov rcx, rbx + ; gcrRegs +[rcx] + mov edx, 62 + call [<unknown method>] + ; gcrRegs -[rcx] + jmp G_M40104_IG08
...

libraries_tests.run.windows.x64.Release.mch

-10 (-1.75%) : 25106.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)

@@ -30,13 +30,13 @@ ; V18 tmp10 [V18,T12] ( 3, 5.79) ref -> rdx class-hnd "dup spill" <Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup> ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref ; V20 tmp12 [V20,T13] ( 2, 1.93) ref -> rdx
-; V21 tmp13 [V21,T00] ( 10, 16.65) byref -> r15 "Inlining Arg"
+; V21 tmp13 [V21,T00] ( 9, 16.16) byref -> r15 "Inlining Arg"
; V22 tmp14 [V22,T18] ( 4, 3.67) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ; V23 tmp15 [V23,T16] ( 3, 4.40) ref -> rcx "arr expr" ; V24 tmp16 [V24,T17] ( 3, 4.40) int -> rdx "index expr" ; V25 PSPSym [V25,T22] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V26 cse0 [V26,T20] ( 3, 2.69) int -> rdx "CSE - moderate"
-; V27 cse1 [V27,T19] ( 4, 3.19) ref -> r13 "CSE - moderate"
+; V27 cse1 [V27,T19] ( 3, 2.94) ref -> r13 "CSE - moderate"
; V28 rat0 [V28,T14] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" ; V29 rat1 [V29,T05] ( 3, 8.07) long -> rcx "spilling expr" ; V30 rat2 [V30,T07] ( 3, 6.45) long -> r11 "fgMakeTemp is creating a new local variable" @@ -68,13 +68,13 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M62024_IG02: ; bbWeight=1, gcVars=0000000000200000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref ; GC ptr vars +{V06 V21} test rdi, rdi
- je G_M62024_IG30
+ je G_M62024_IG29
test rbx, rbx
- je G_M62024_IG31
+ je G_M62024_IG30
mov rcx, qword ptr [rsi+0x38] mov r11, qword ptr [rcx+0x10] test r11, r11
- je G_M62024_IG21
+ je G_M62024_IG20
;; size=35 bbWeight=1 PerfScore 7.75 G_M62024_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref mov rcx, rdi @@ -123,7 +123,7 @@ G_M62024_IG08: ; bbWeight=0.96, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=4 mov rdx, gword ptr [rdx+0x10] test rdx, rdx je SHORT G_M62024_IG11
- jmp G_M62024_IG20
+ jmp G_M62024_IG19
;; size=23 bbWeight=0.96 PerfScore 8.20 G_M62024_IG09: ; bbWeight=0.52, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz ; gcrRegs -[rdx r15] @@ -144,13 +144,13 @@ G_M62024_IG10: ; bbWeight=1.44, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=4 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- jne G_M62024_IG20
+ jne G_M62024_IG19
;; size=18 bbWeight=1.44 PerfScore 9.36 G_M62024_IG11: ; bbWeight=2.33, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz ; gcrRegs -[r15] mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup] cmp qword ptr [rdi], rcx
- jne SHORT G_M62024_IG18
+ jne SHORT G_M62024_IG17
;; size=15 bbWeight=2.33 PerfScore 9.92 G_M62024_IG12: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz lea r15, bword ptr [rdi+0x08] @@ -161,10 +161,10 @@ G_M62024_IG12: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 ; gcrRegs +[rcx] mov edx, dword ptr [r15+0x14] cmp edx, dword ptr [rcx+0x14]
- jne SHORT G_M62024_IG16
+ jne SHORT G_M62024_IG15
mov edx, dword ptr [r15+0x10] cmp edx, dword ptr [rcx+0x10]
- jae SHORT G_M62024_IG17
+ jae SHORT G_M62024_IG16
;; size=28 bbWeight=0.98 PerfScore 14.46 G_M62024_IG13: ; bbWeight=0.73, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=C000 {r14 r15}, byref, isz ; gcrRegs -[r13] @@ -195,23 +195,18 @@ G_M62024_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M62024_IG16: ; bbWeight=0.25, gcrefRegs=2080 {rdi r13}, byrefRegs=C000 {r14 r15}, byref, isz
+G_M62024_IG16: ; bbWeight=0.98, gcrefRegs=2080 {rdi r13}, byrefRegs=C000 {r14 r15}, byref, isz
; gcrRegs +[r13] ; byrRegs +[r14-r15]
- mov ecx, dword ptr [r15+0x14] - cmp ecx, dword ptr [r13+0x14] - jne SHORT G_M62024_IG15 - ;; size=10 bbWeight=0.25 PerfScore 1.48 -G_M62024_IG17: ; bbWeight=0.98, gcrefRegs=2080 {rdi r13}, byrefRegs=C000 {r14 r15}, byref, isz
mov ecx, dword ptr [r13+0x10] inc ecx mov dword ptr [r15+0x10], ecx xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [r15+0x08], rcx
- jmp SHORT G_M62024_IG22
+ jmp SHORT G_M62024_IG21
;; size=18 bbWeight=0.98 PerfScore 6.37
-G_M62024_IG18: ; bbWeight=2.33, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
+G_M62024_IG17: ; bbWeight=2.33, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rcx r13] +[rbx] ; byrRegs -[r15] mov rcx, rdi @@ -223,17 +218,17 @@ G_M62024_IG18: ; bbWeight=2.33, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 test eax, eax jne G_M62024_IG05 ;; size=24 bbWeight=2.33 PerfScore 11.08
-G_M62024_IG19: ; bbWeight=0.89, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M62024_IG18: ; bbWeight=0.89, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M62024_IG22
+ jmp SHORT G_M62024_IG21
;; size=2 bbWeight=0.89 PerfScore 1.79
-G_M62024_IG20: ; bbWeight=0.96, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz
+G_M62024_IG19: ; bbWeight=0.96, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs +[r15] mov byte ptr [r14], 1 mov gword ptr [rbp-0x48], r15
- jmp SHORT G_M62024_IG26
+ jmp SHORT G_M62024_IG25
;; size=10 bbWeight=0.96 PerfScore 3.86
-G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000200000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref
+G_M62024_IG20: ; bbWeight=0.20, gcVars=0000000000200000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[r15] +[rbx] ; GC ptr vars -{V04} mov rcx, rsi @@ -243,14 +238,14 @@ G_M62024_IG21: ; bbWeight=0.20, gcVars=0000000000200000 {V06}, gcrefRegs= mov r11, rax jmp G_M62024_IG03 ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62024_IG22: ; bbWeight=0.89, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M62024_IG21: ; bbWeight=0.89, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rbx] ; GC ptr vars -{V06} +{V02 V04} mov rcx, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup] cmp qword ptr [rdi], rcx
- je SHORT G_M62024_IG24
+ je SHORT G_M62024_IG23
;; size=15 bbWeight=0.89 PerfScore 3.80
-G_M62024_IG23: ; bbWeight=0.46, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref
+G_M62024_IG22: ; bbWeight=0.46, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -259,12 +254,12 @@ G_M62024_IG23: ; bbWeight=0.46, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14 ; gcrRegs -[rcx rdi] ; gcr arg pop 0 ;; size=16 bbWeight=0.46 PerfScore 1.63
-G_M62024_IG24: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M62024_IG23: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov byte ptr [r14], 0 xor rax, rax ; gcrRegs +[rax] ;; size=6 bbWeight=0.89 PerfScore 1.12
-G_M62024_IG25: ; bbWeight=0.89, epilog, nogc, extend
+G_M62024_IG24: ; bbWeight=0.89, epilog, nogc, extend
add rsp, 64 pop rbx pop rsi @@ -275,23 +270,23 @@ G_M62024_IG25: ; bbWeight=0.89, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.89 PerfScore 4.24
-G_M62024_IG26: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG25: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rdi] ; byrRegs -[r14] ; GC ptr vars +{V02 V04 V06 V21} mov rcx, rsp
- call G_M62024_IG32
+ call G_M62024_IG31
; gcrRegs -[rdi] ;; size=8 bbWeight=0.11 PerfScore 0.13
-G_M62024_IG27: ; bbWeight=0.11, nogc, extend
+G_M62024_IG26: ; bbWeight=0.11, nogc, extend
nop ;; size=1 bbWeight=0.11 PerfScore 0.03
-G_M62024_IG28: ; bbWeight=0.11, gcVars=0000000000200000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG27: ; bbWeight=0.11, gcVars=0000000000200000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V02 V04 V21} mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax] ;; size=4 bbWeight=0.11 PerfScore 0.11
-G_M62024_IG29: ; bbWeight=0.11, epilog, nogc, extend
+G_M62024_IG28: ; bbWeight=0.11, epilog, nogc, extend
add rsp, 64 pop rbx pop rsi @@ -302,7 +297,7 @@ G_M62024_IG29: ; bbWeight=0.11, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.11 PerfScore 0.51
-G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] ; GC ptr vars -{V06} mov ecx, 17 @@ -310,13 +305,13 @@ G_M62024_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M62024_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M62024_IG32: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62024_IG31: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V04 V06 V21} push rbp push r15 @@ -330,16 +325,16 @@ G_M62024_IG32: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefR mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x70] ;; size=27 bbWeight=0.11 PerfScore 1.15
-G_M62024_IG33: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62024_IG32: ; bbWeight=0.11, gcVars=0000000000200004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M62024_IG35
+ je SHORT G_M62024_IG34
mov rcx, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup] cmp qword ptr [rdi], rcx
- je SHORT G_M62024_IG35
+ je SHORT G_M62024_IG34
;; size=24 bbWeight=0.11 PerfScore 0.69
-G_M62024_IG34: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M62024_IG33: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -348,10 +343,10 @@ G_M62024_IG34: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rdi] ; gcr arg pop 0 ;; size=16 bbWeight=0.06 PerfScore 0.19
-G_M62024_IG35: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG34: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0.11 PerfScore 0.03
-G_M62024_IG36: ; bbWeight=0.11, funclet epilog, nogc, extend
+G_M62024_IG35: ; bbWeight=0.11, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -363,7 +358,7 @@ G_M62024_IG36: ; bbWeight=0.11, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0.11 PerfScore 0.51
-; Total bytes of code 570, prolog size 45, PerfScore 143.95, instruction count 172, allocated bytes for code 570 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 560, prolog size 45, PerfScore 142.47, instruction count 169, allocated bytes for code 560 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================ ...

-16 (-1.72%) : 22997.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -33,7 +33,7 @@ ; V21 tmp16 [V21,T28] ( 3, 0.97) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>> ; V22 tmp17 [V22,T26] ( 4, 1.20) int -> rdx "Inline stloc first use temp" ; V23 tmp18 [V23,T24] ( 3, 1.50) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
-; V24 tmp19 [V24,T00] ( 12, 9.10) byref -> rbx "Inlining Arg"
+; V24 tmp19 [V24,T00] ( 10, 8.47) byref -> rbx "Inlining Arg"
; V25 tmp20 [V25,T17] ( 4, 2.26) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V27 tmp22 [V27,T07] ( 2, 4 ) long -> rax "argument with side effect" @@ -72,14 +72,14 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rcx] test rbx, rbx
- je G_M57116_IG40
+ je G_M57116_IG39
mov rsi, qword ptr [rcx] mov rdx, rsi mov rax, qword ptr [rdx+0x38] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x68] test rax, rax
- je G_M57116_IG26
+ je G_M57116_IG25
;; size=35 bbWeight=1 PerfScore 10.75 G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] @@ -100,7 +100,7 @@ G_M57116_IG04: ; bbWeight=0.35, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0x80] test r11, r11
- je G_M57116_IG27
+ je G_M57116_IG26
;; size=23 bbWeight=0.35 PerfScore 2.54 G_M57116_IG05: ; bbWeight=0.35, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov rcx, rdi @@ -110,7 +110,7 @@ G_M57116_IG05: ; bbWeight=0.35, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ebx, eax test ebx, ebx
- jne G_M57116_IG29
+ jne G_M57116_IG28
;; size=16 bbWeight=0.35 PerfScore 1.66 G_M57116_IG06: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -118,7 +118,7 @@ G_M57116_IG06: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+0x58] test rcx, rcx
- je G_M57116_IG28
+ je G_M57116_IG27
;; size=20 bbWeight=0.31 PerfScore 2.22 G_M57116_IG07: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -150,7 +150,7 @@ G_M57116_IG09: ; bbWeight=0.65, gcVars=0000000000000002 {V00}, gcrefRegs= mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+0x58] test rdx, rdx
- je G_M57116_IG36
+ je G_M57116_IG35
;; size=20 bbWeight=0.65 PerfScore 4.71 G_M57116_IG10: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, rdx @@ -171,7 +171,7 @@ G_M57116_IG10: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0x70] test r11, r11
- je G_M57116_IG37
+ je G_M57116_IG36
;; size=44 bbWeight=0.65 PerfScore 8.45 G_M57116_IG11: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, rbx @@ -194,10 +194,10 @@ G_M57116_IG13: ; bbWeight=0.60, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov edx, dword ptr [rbx+0x14] cmp edx, dword ptr [rcx+0x14]
- jne G_M57116_IG24
+ jne G_M57116_IG23
mov edx, dword ptr [rbx+0x10] cmp edx, dword ptr [rcx+0x10]
- jae G_M57116_IG25
+ jae G_M57116_IG24
;; size=31 bbWeight=0.60 PerfScore 8.77 G_M57116_IG14: ; bbWeight=0.45, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[rax] @@ -264,7 +264,7 @@ G_M57116_IG18: ; bbWeight=1.02, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, G_M57116_IG19: ; bbWeight=0.65, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, gword ptr [rbp-0x28] ; gcrRegs +[rax]
- jmp G_M57116_IG33
+ jmp G_M57116_IG32
;; size=9 bbWeight=0.65 PerfScore 1.95 G_M57116_IG20: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -296,20 +296,10 @@ G_M57116_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57116_IG24: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M57116_IG24: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs +[rbx] mov rax, gword ptr [rbp-0x28] ; gcrRegs +[rax]
- mov ecx, dword ptr [rbx+0x14] - mov r11, gword ptr [rbx] - ; gcrRegs +[r11] - cmp ecx, dword ptr [r11+0x14] - jne SHORT G_M57116_IG23 - ;; size=16 bbWeight=0.16 PerfScore 1.42 -G_M57116_IG25: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax]
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx] mov ecx, dword ptr [rcx+0x10] @@ -319,9 +309,9 @@ G_M57116_IG25: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp G_M57116_IG33
+ jmp G_M57116_IG32
;; size=26 bbWeight=0.16 PerfScore 1.50
-G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG25: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx] +[rbx] ; byrRegs -[rbx] ; GC ptr vars -{V04} @@ -331,7 +321,7 @@ G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000002 {V00}, gcrefRegs= ; gcr arg pop 0 jmp G_M57116_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M57116_IG27: ; bbWeight=0.07, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG26: ; bbWeight=0.07, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -340,7 +330,7 @@ G_M57116_IG27: ; bbWeight=0.07, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG05 ;; size=26 bbWeight=0.07 PerfScore 0.26
-G_M57116_IG28: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -349,15 +339,15 @@ G_M57116_IG28: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, rax jmp G_M57116_IG07 ;; size=26 bbWeight=0.06 PerfScore 0.23
-G_M57116_IG29: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi] mov rcx, qword ptr [rsi+0x38] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+0x60] test rcx, rcx
- je G_M57116_IG38
+ je G_M57116_IG37
;; size=20 bbWeight=0.04 PerfScore 0.32
-G_M57116_IG30: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG29: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
movsxd rdx, ebx call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -376,9 +366,9 @@ G_M57116_IG30: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0x88] test r11, r11
- je G_M57116_IG39
+ je G_M57116_IG38
;; size=47 bbWeight=0.04 PerfScore 0.49
-G_M57116_IG31: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG30: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x08] @@ -392,7 +382,7 @@ G_M57116_IG31: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov dword ptr [rcx+0x10], ebx ;; size=24 bbWeight=0.04 PerfScore 0.37
-G_M57116_IG32: ; bbWeight=0.04, epilog, nogc, extend
+G_M57116_IG31: ; bbWeight=0.04, epilog, nogc, extend
add rsp, 56 pop rbx pop rsi @@ -400,14 +390,14 @@ G_M57116_IG32: ; bbWeight=0.04, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=0.04 PerfScore 0.14
-G_M57116_IG33: ; bbWeight=0.65, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57116_IG32: ; bbWeight=0.65, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rax] ; GC ptr vars +{V04 V09} mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[Xunit.Sdk.ReflectionAttributeInfo] cmp qword ptr [rax], rcx
- jne SHORT G_M57116_IG35
+ jne SHORT G_M57116_IG34
;; size=15 bbWeight=0.65 PerfScore 2.76
-G_M57116_IG34: ; bbWeight=0.65, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M57116_IG33: ; bbWeight=0.65, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[rax] ; GC ptr vars -{V04 V09} add rsp, 56 @@ -417,7 +407,7 @@ G_M57116_IG34: ; bbWeight=0.65, gcVars=0000000000000002 {V00}, gcrefRegs= pop rbp ret ;; size=9 bbWeight=0.65 PerfScore 2.11
-G_M57116_IG35: ; bbWeight=0.20, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57116_IG34: ; bbWeight=0.20, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax] ; GC ptr vars +{V04 V09} mov rcx, rax @@ -427,9 +417,9 @@ G_M57116_IG35: ; bbWeight=0.20, gcVars=0000000000000202 {V00 V04}, gcrefR call [r11]<unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0
- jmp SHORT G_M57116_IG34
+ jmp SHORT G_M57116_IG33
;; size=18 bbWeight=0.20 PerfScore 1.11
-G_M57116_IG36: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG35: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -438,7 +428,7 @@ G_M57116_IG36: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdx, rax jmp G_M57116_IG10 ;; size=26 bbWeight=0.13 PerfScore 0.49
-G_M57116_IG37: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG36: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS @@ -446,31 +436,31 @@ G_M57116_IG37: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG11 ;; size=26 bbWeight=0.13 PerfScore 0.49
-G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG37: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rcx, rax
- jmp G_M57116_IG30
+ jmp G_M57116_IG29
;; size=26 bbWeight=0.01 PerfScore 0.03
-G_M57116_IG39: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
...

-16 (-1.70%) : 95823.dasm - System.Collections.Generic.List1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -33,7 +33,7 @@ ; V21 tmp16 [V21,T26] ( 3, 1.60) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>> ; V22 tmp17 [V22,T23] ( 4, 1.93) int -> rdx "Inline stloc first use temp" ; V23 tmp18 [V23,T19] ( 3, 2.53) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
-; V24 tmp19 [V24,T01] ( 12, 6.91) byref -> rbx "Inlining Arg"
+; V24 tmp19 [V24,T01] ( 10, 6.48) byref -> rbx "Inlining Arg"
; V25 tmp20 [V25,T25] ( 4, 1.74) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> ; V26 tmp21 [V26,T07] ( 2, 4 ) long -> rax "argument with side effect" ; V27 tmp22 [V27,T20] ( 3, 2.13) ref -> rcx "arr expr" @@ -71,14 +71,14 @@ G_M57116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M57116_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rcx] test rbx, rbx
- je G_M57116_IG40
+ je G_M57116_IG39
mov rsi, qword ptr [rcx] mov rdx, rsi mov rax, qword ptr [rdx+0x38] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x88] test rax, rax
- je G_M57116_IG26
+ je G_M57116_IG25
;; size=38 bbWeight=1 PerfScore 10.75 G_M57116_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] @@ -99,7 +99,7 @@ G_M57116_IG04: ; bbWeight=0.53, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0xA0] test r11, r11
- je G_M57116_IG27
+ je G_M57116_IG26
;; size=23 bbWeight=0.53 PerfScore 3.86 G_M57116_IG05: ; bbWeight=0.53, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov rcx, rdi @@ -109,7 +109,7 @@ G_M57116_IG05: ; bbWeight=0.53, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ebx, eax test ebx, ebx
- jne G_M57116_IG29
+ jne G_M57116_IG28
;; size=16 bbWeight=0.53 PerfScore 2.53 G_M57116_IG06: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -117,7 +117,7 @@ G_M57116_IG06: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+0x68] test rcx, rcx
- je G_M57116_IG28
+ je G_M57116_IG27
;; size=20 bbWeight=0.49 PerfScore 3.53 G_M57116_IG07: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_GETGENERICS_GCSTATIC_BASE @@ -149,7 +149,7 @@ G_M57116_IG09: ; bbWeight=0.47, gcVars=0000000000000001 {V00}, gcrefRegs= mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+0x68] test rdx, rdx
- je G_M57116_IG36
+ je G_M57116_IG35
;; size=20 bbWeight=0.47 PerfScore 3.39 G_M57116_IG10: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, rdx @@ -170,7 +170,7 @@ G_M57116_IG10: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0x90] test r11, r11
- je G_M57116_IG37
+ je G_M57116_IG36
;; size=47 bbWeight=0.47 PerfScore 6.08 G_M57116_IG11: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, rbx @@ -193,10 +193,10 @@ G_M57116_IG13: ; bbWeight=0.46, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov edx, dword ptr [rbx+0x14] cmp edx, dword ptr [rcx+0x14]
- jne G_M57116_IG24
+ jne G_M57116_IG23
mov edx, dword ptr [rbx+0x10] cmp edx, dword ptr [rcx+0x10]
- jae G_M57116_IG25
+ jae G_M57116_IG24
;; size=31 bbWeight=0.46 PerfScore 6.71 G_M57116_IG14: ; bbWeight=0.35, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[rax] @@ -263,7 +263,7 @@ G_M57116_IG18: ; bbWeight=1.10, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, G_M57116_IG19: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, gword ptr [rbp-0x28] ; gcrRegs +[rax]
- jmp G_M57116_IG33
+ jmp G_M57116_IG32
;; size=9 bbWeight=0.47 PerfScore 1.40 G_M57116_IG20: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -295,20 +295,10 @@ G_M57116_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57116_IG24: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M57116_IG24: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs +[rbx] mov rax, gword ptr [rbp-0x28] ; gcrRegs +[rax]
- mov ecx, dword ptr [rbx+0x14] - mov r11, gword ptr [rbx] - ; gcrRegs +[r11] - cmp ecx, dword ptr [r11+0x14] - jne SHORT G_M57116_IG23 - ;; size=16 bbWeight=0.11 PerfScore 0.97 -G_M57116_IG25: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rax r11] - mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax]
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx] mov ecx, dword ptr [rcx+0x10] @@ -318,9 +308,9 @@ G_M57116_IG25: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp G_M57116_IG33
+ jmp G_M57116_IG32
;; size=26 bbWeight=0.11 PerfScore 1.02
-G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M57116_IG25: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx] +[rbx] ; byrRegs -[rbx] ; GC ptr vars -{V04} @@ -330,7 +320,7 @@ G_M57116_IG26: ; bbWeight=0.20, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcr arg pop 0 jmp G_M57116_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M57116_IG27: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG26: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -339,7 +329,7 @@ G_M57116_IG27: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG05 ;; size=26 bbWeight=0.11 PerfScore 0.40
-G_M57116_IG28: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57116_IG27: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -348,15 +338,15 @@ G_M57116_IG28: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rcx, rax jmp G_M57116_IG07 ;; size=26 bbWeight=0.10 PerfScore 0.37
-G_M57116_IG29: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG28: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi] mov rcx, qword ptr [rsi+0x38] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx+0x70] test rcx, rcx
- je G_M57116_IG38
+ je G_M57116_IG37
;; size=20 bbWeight=0.05 PerfScore 0.33
-G_M57116_IG30: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG29: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
movsxd rdx, ebx call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -375,9 +365,9 @@ G_M57116_IG30: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rcx, qword ptr [rcx] mov r11, qword ptr [rcx+0xA8] test r11, r11
- je G_M57116_IG39
+ je G_M57116_IG38
;; size=47 bbWeight=0.05 PerfScore 0.51
-G_M57116_IG31: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG30: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x08] @@ -391,7 +381,7 @@ G_M57116_IG31: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov dword ptr [rcx+0x10], ebx ;; size=24 bbWeight=0.05 PerfScore 0.38
-G_M57116_IG32: ; bbWeight=0.05, epilog, nogc, extend
+G_M57116_IG31: ; bbWeight=0.05, epilog, nogc, extend
add rsp, 56 pop rbx pop rsi @@ -399,14 +389,14 @@ G_M57116_IG32: ; bbWeight=0.05, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=0.05 PerfScore 0.15
-G_M57116_IG33: ; bbWeight=0.47, gcVars=0000000000000101 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57116_IG32: ; bbWeight=0.47, gcVars=0000000000000101 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rax] ; GC ptr vars +{V04} mov rcx, 0xD1FFAB1E ; System.Linq.Grouping`2+<GetEnumerator>d__9[Xunit.Abstractions.ITestMethod,Xunit.Sdk.IXunitTestCase] cmp qword ptr [rax], rcx
- jne SHORT G_M57116_IG35
+ jne SHORT G_M57116_IG34
;; size=15 bbWeight=0.47 PerfScore 1.99
-G_M57116_IG34: ; bbWeight=0.47, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M57116_IG33: ; bbWeight=0.47, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[rax] ; GC ptr vars -{V04} add rsp, 56 @@ -416,7 +406,7 @@ G_M57116_IG34: ; bbWeight=0.47, gcVars=0000000000000001 {V00}, gcrefRegs= pop rbp ret ;; size=9 bbWeight=0.47 PerfScore 1.52
-G_M57116_IG35: ; bbWeight=0.13, gcVars=0000000000000101 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57116_IG34: ; bbWeight=0.13, gcVars=0000000000000101 {V00 V04}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax] ; GC ptr vars +{V04} mov rcx, rax @@ -426,9 +416,9 @@ G_M57116_IG35: ; bbWeight=0.13, gcVars=0000000000000101 {V00 V04}, gcrefR call [r11]<unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0
- jmp SHORT G_M57116_IG34
+ jmp SHORT G_M57116_IG33
;; size=18 bbWeight=0.13 PerfScore 0.70
-G_M57116_IG36: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG35: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr @@ -437,7 +427,7 @@ G_M57116_IG36: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdx, rax jmp G_M57116_IG10 ;; size=26 bbWeight=0.09 PerfScore 0.35
-G_M57116_IG37: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57116_IG36: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS @@ -445,31 +435,31 @@ G_M57116_IG37: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r11, rax jmp G_M57116_IG11 ;; size=26 bbWeight=0.09 PerfScore 0.35
-G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG37: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdi] mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rcx, rax
- jmp G_M57116_IG30
+ jmp G_M57116_IG29
;; size=26 bbWeight=0.01 PerfScore 0.03
-G_M57116_IG39: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57116_IG38: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
...

+21 (+1.71%) : 114351.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T00] ( 27, 99.72) byref -> rbx this single-def ; V01 arg1 [V01,T13] ( 4, 3.50) byref -> rsi single-def
-; V02 loc0 [V02,T03] ( 18, 52.27) ushort -> r15
+; V02 loc0 [V02,T03] ( 18, 52.31) ushort -> r15
; V03 loc1 [V03 ] ( 39, 28.72) struct (32) [rbp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T10] ( 6, 7.17) ushort -> r13 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -109,33 +109,33 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, G_M25128_IG03: ; bbWeight=1.19, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref mov ecx, dword ptr [rbx+0x10] cmp ecx, dword ptr [rbx+0x08]
- jge G_M25128_IG29
+ jge G_M25128_IG26
;; size=12 bbWeight=1.19 PerfScore 7.14 G_M25128_IG04: ; bbWeight=4.76, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref lea eax, [rcx+0x01] mov dword ptr [rbx+0x10], eax cmp ecx, dword ptr [rbx+0x08]
- jae G_M25128_IG50
+ jae G_M25128_IG51
mov rax, bword ptr [rbx] ; byrRegs +[rax] mov ecx, ecx movzx r14, word ptr [rax+2*rcx] test r14d, r14d
- je G_M25128_IG65
+ je G_M25128_IG67
;; size=34 bbWeight=4.76 PerfScore 52.38 G_M25128_IG05: ; bbWeight=1.19, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref ; byrRegs -[rax] mov r15d, r14d test r15d, r15d
- je G_M25128_IG44
+ je G_M25128_IG46
;; size=12 bbWeight=1.19 PerfScore 1.79 G_M25128_IG06: ; bbWeight=1.07, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 44
- je G_M25128_IG30
+ je G_M25128_IG27
;; size=10 bbWeight=1.07 PerfScore 1.34 G_M25128_IG07: ; bbWeight=0.88, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 61
- je G_M25128_IG34
+ je G_M25128_IG31
;; size=10 bbWeight=0.88 PerfScore 1.10 G_M25128_IG08: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz mov ecx, r15d @@ -161,41 +161,179 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref xor r13d, r13d cmp r15d, 39
- je G_M25128_IG51
+ je G_M25128_IG52
cmp r15d, 34
- je G_M25128_IG51
+ je G_M25128_IG52
;; size=23 bbWeight=0.50 PerfScore 1.38 G_M25128_IG12: ; bbWeight=6.17, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref test r15d, r15d
- je G_M25128_IG49
+ je G_M25128_IG50
;; size=9 bbWeight=6.17 PerfScore 7.71
-G_M25128_IG13: ; bbWeight=6.05, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M25128_IG13: ; bbWeight=6.05, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref
test r13d, r13d
- jne G_M25128_IG54
+ jne G_M25128_IG56
cmp r15d, 44
- je SHORT G_M25128_IG15 - ;; size=15 bbWeight=6.05 PerfScore 15.12
+ je G_M25128_IG43 + ;; size=19 bbWeight=6.05 PerfScore 15.12
G_M25128_IG14: ; bbWeight=5.84, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 61
- jne G_M25128_IG37
+ je G_M25128_IG43
;; size=10 bbWeight=5.84 PerfScore 7.31
-G_M25128_IG15: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref - dec dword ptr [rbx+0x10] - ;; size=3 bbWeight=0.38 PerfScore 1.14 -G_M25128_IG16: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - ; byrRegs -[rbx] - test r13d, r13d - jne SHORT G_M25128_IG20 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M25128_IG15: ; bbWeight=5.67, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp r15d, 39 + je G_M25128_IG67 + ;; size=10 bbWeight=5.67 PerfScore 7.08 +G_M25128_IG16: ; bbWeight=5.62, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp r15d, 34 + je G_M25128_IG67 + ;; size=10 bbWeight=5.62 PerfScore 7.03 +G_M25128_IG17: ; bbWeight=5.67, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz + cmp r15d, 92 + je SHORT G_M25128_IG22 + ;; size=6 bbWeight=5.67 PerfScore 7.08 +G_M25128_IG18: ; bbWeight=5.61, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbp+0x28] + mov rdx, bword ptr [rbp+0x30] + ; byrRegs +[rdx] + mov eax, dword ptr [rbp+0x38] + cmp ecx, eax + jae G_M25128_IG66 + mov eax, ecx + mov word ptr [rdx+2*rax], r15w + inc ecx + mov dword ptr [rbp+0x28], ecx + ;; size=30 bbWeight=5.61 PerfScore 37.88 +G_M25128_IG19: ; bbWeight=5.67, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rdx] + mov ecx, dword ptr [rbx+0x10] + cmp ecx, dword ptr [rbx+0x08] + jge G_M25128_IG30 + ;; size=12 bbWeight=5.67 PerfScore 33.99 +G_M25128_IG20: ; bbWeight=22.66, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + lea edx, [rcx+0x01] + mov dword ptr [rbx+0x10], edx + cmp ecx, dword ptr [rbx+0x08] + jae G_M25128_IG51 + mov rdx, bword ptr [rbx] + ; byrRegs +[rdx] + mov ecx, ecx + movzx r15, word ptr [rdx+2*rcx] + test r15d, r15d + je G_M25128_IG67 + ;; size=34 bbWeight=22.66 PerfScore 249.28 +G_M25128_IG21: ; bbWeight=5.67, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rdx] + jmp G_M25128_IG12 + ;; size=5 bbWeight=5.67 PerfScore 11.33 +G_M25128_IG22: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbx+0x10] + cmp ecx, dword ptr [rbx+0x08] + jge G_M25128_IG44 + ;; size=12 bbWeight=0.05 PerfScore 0.32 +G_M25128_IG23: ; bbWeight=0.22, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbx+0x10] + lea edx, [rcx+0x01] + mov dword ptr [rbx+0x10], edx + cmp ecx, dword ptr [rbx+0x08] + jae G_M25128_IG51 + mov rdx, bword ptr [rbx] + ; byrRegs +[rdx] + movzx rdx, word ptr [rdx+2*rcx] + ; byrRegs -[rdx] + test edx, edx + je G_M25128_IG67 + ;; size=33 bbWeight=0.22 PerfScore 2.76 +G_M25128_IG24: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp edx, 61 + ja G_M25128_IG59 + cmp edx, 39 + ja G_M25128_IG58 + cmp edx, 34 + jne G_M25128_IG57 + ;; size=27 bbWeight=0.05 PerfScore 0.20 +G_M25128_IG25: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbp+0x28] + mov rax, bword ptr [rbp+0x30] + ; byrRegs +[rax] + mov r8d, dword ptr [rbp+0x38] + cmp ecx, r8d + jae G_M25128_IG49 + mov r8d, ecx + mov word ptr [rax+2*r8], dx + inc ecx + mov dword ptr [rbp+0x28], ecx + jmp G_M25128_IG19 + ;; size=38 bbWeight=0.05 PerfScore 0.47 +G_M25128_IG26: ; bbWeight=4.76, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rax] + xor r14d, r14d + jmp G_M25128_IG05 + ;; size=8 bbWeight=4.76 PerfScore 10.72 +G_M25128_IG27: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + ; byrRegs -[rbx rsi] + mov eax, 2 + mov rcx, 0xD1FFAB1E + cmp qword ptr [rbp+0x08], rcx + je SHORT G_M25128_IG28 + call CORINFO_HELP_FAIL_FAST + ; gcr arg pop 0 + ;; size=26 bbWeight=0.19 PerfScore 0.86 +G_M25128_IG28: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.19 PerfScore 0.05 +G_M25128_IG29: ; bbWeight=0.19, epilog, nogc, extend + lea rsp, [rbp+0x40] + pop rbx + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.19 PerfScore 0.95 +G_M25128_IG30: ; bbWeight=22.66, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, gcvars, byref + ; gcrRegs +[rdi] + ; byrRegs +[rbx rsi] + xor r15d, r15d + jmp G_M25128_IG21 + ;; size=8 bbWeight=22.66 PerfScore 50.99 +G_M25128_IG31: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + ; byrRegs -[rbx rsi] + mov eax, 1 + mov rcx, 0xD1FFAB1E + cmp qword ptr [rbp+0x08], rcx + je SHORT G_M25128_IG32 + call CORINFO_HELP_FAIL_FAST + ; gcr arg pop 0 + ;; size=26 bbWeight=0.19 PerfScore 0.86 +G_M25128_IG32: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.19 PerfScore 0.05 +G_M25128_IG33: ; bbWeight=0.19, epilog, nogc, extend + lea rsp, [rbp+0x40] + pop rbx + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.19 PerfScore 0.95 +G_M25128_IG34: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz + ; gcrRegs +[rdi] + ; byrRegs +[rsi]
mov ecx, dword ptr [rbp+0x28] test ecx, ecx
- jle SHORT G_M25128_IG20
+ jle SHORT G_M25128_IG37
lea r14d, [rcx-0x01] cmp r14d, ecx
- jl SHORT G_M25128_IG19
+ jl SHORT G_M25128_IG36
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M25128_IG35: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov rcx, rdi ; gcrRegs +[rcx] mov rdx, rdi @@ -204,9 +342,9 @@ G_M25128_IG18: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, ...

+25 (+2.01%) : 35034.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T00] ( 26,129.22) byref -> rbx this single-def ; V01 arg1 [V01,T13] ( 4, 3.50) byref -> rsi single-def
-; V02 loc0 [V02,T03] ( 18, 69.32) ushort -> r15
+; V02 loc0 [V02,T03] ( 18, 69.33) ushort -> r15
; V03 loc1 [V03 ] ( 39, 37.40) struct (32) [rbp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder> ; V04 loc2 [V04,T10] ( 6, 9.39) ushort -> r13 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]> @@ -110,7 +110,7 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, G_M25128_IG03: ; bbWeight=1.16, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref mov ecx, dword ptr [rbx+0x10] cmp ecx, dword ptr [rbx+0x08]
- jge G_M25128_IG32
+ jge G_M25128_IG29
;; size=12 bbWeight=1.16 PerfScore 6.98 G_M25128_IG04: ; bbWeight=4.65, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref lea eax, [rcx+0x01] @@ -128,15 +128,15 @@ G_M25128_IG05: ; bbWeight=1.16, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx ; byrRegs -[rax] mov r15d, r14d test r15d, r15d
- je G_M25128_IG43
+ je G_M25128_IG47
;; size=12 bbWeight=1.16 PerfScore 1.74 G_M25128_IG06: ; bbWeight=1.01, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 44
- je G_M25128_IG33
+ je G_M25128_IG30
;; size=10 bbWeight=1.01 PerfScore 1.27 G_M25128_IG07: ; bbWeight=0.85, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 61
- je G_M25128_IG37
+ je G_M25128_IG34
;; size=10 bbWeight=0.85 PerfScore 1.06 G_M25128_IG08: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz mov ecx, r15d @@ -162,43 +162,200 @@ G_M25128_IG10: ; bbWeight=0.53, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx G_M25128_IG11: ; bbWeight=0.53, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref xor r13d, r13d cmp r15d, 39
- je G_M25128_IG30
+ je G_M25128_IG27
;; size=13 bbWeight=0.53 PerfScore 0.79 G_M25128_IG12: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 34
- je G_M25128_IG30
+ je G_M25128_IG27
;; size=10 bbWeight=0.50 PerfScore 0.62 G_M25128_IG13: ; bbWeight=8.34, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref test r15d, r15d
- je G_M25128_IG46
+ je G_M25128_IG50
;; size=9 bbWeight=8.34 PerfScore 10.42
-G_M25128_IG14: ; bbWeight=8.16, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M25128_IG14: ; bbWeight=8.16, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref
test r13d, r13d
- jne G_M25128_IG65
+ jne G_M25128_IG66
cmp r15d, 44
- je SHORT G_M25128_IG16 - ;; size=15 bbWeight=8.16 PerfScore 20.41
+ je G_M25128_IG46 + ;; size=19 bbWeight=8.16 PerfScore 20.41
G_M25128_IG15: ; bbWeight=7.83, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref cmp r15d, 61
- jne G_M25128_IG40
+ je G_M25128_IG46
;; size=10 bbWeight=7.83 PerfScore 9.78
-G_M25128_IG16: ; bbWeight=0.33, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref - dec dword ptr [rbx+0x10] - ;; size=3 bbWeight=0.33 PerfScore 0.98 -G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - ; byrRegs -[rbx] - test r13d, r13d - jne SHORT G_M25128_IG21 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M25128_IG16: ; bbWeight=7.84, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp r15d, 39 + je G_M25128_IG64 + ;; size=10 bbWeight=7.84 PerfScore 9.80 +G_M25128_IG17: ; bbWeight=7.83, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp r15d, 34 + je G_M25128_IG64 + ;; size=10 bbWeight=7.83 PerfScore 9.79 +G_M25128_IG18: ; bbWeight=7.81, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz + cmp r15d, 92 + je SHORT G_M25128_IG23 + ;; size=6 bbWeight=7.81 PerfScore 9.77 +G_M25128_IG19: ; bbWeight=7.77, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbp+0x28] + mov rdx, bword ptr [rbp+0x30] + ; byrRegs +[rdx] + mov eax, dword ptr [rbp+0x38] + cmp ecx, eax + jae G_M25128_IG61 + mov eax, ecx + mov word ptr [rdx+2*rax], r15w + inc ecx + mov dword ptr [rbp+0x28], ecx + ;; size=30 bbWeight=7.77 PerfScore 52.45 +G_M25128_IG20: ; bbWeight=7.81, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rdx] + mov ecx, dword ptr [rbx+0x10] + cmp ecx, dword ptr [rbx+0x08] + jge G_M25128_IG33 + ;; size=12 bbWeight=7.81 PerfScore 46.88 +G_M25128_IG21: ; bbWeight=31.25, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + lea edx, [rcx+0x01] + mov dword ptr [rbx+0x10], edx + cmp ecx, dword ptr [rbx+0x08] + jae G_M25128_IG63 + mov rdx, bword ptr [rbx] + ; byrRegs +[rdx] + mov ecx, ecx + movzx r15, word ptr [rdx+2*rcx] + test r15d, r15d + je G_M25128_IG64 + ;; size=34 bbWeight=31.25 PerfScore 343.80 +G_M25128_IG22: ; bbWeight=7.81, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rdx] + jmp G_M25128_IG13 + ;; size=5 bbWeight=7.81 PerfScore 15.63 +G_M25128_IG23: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbx+0x10] + cmp ecx, dword ptr [rbx+0x08] + jge G_M25128_IG52 + ;; size=12 bbWeight=0.04 PerfScore 0.26 +G_M25128_IG24: ; bbWeight=0.17, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbx+0x10] + lea edx, [rcx+0x01] + mov dword ptr [rbx+0x10], edx + cmp ecx, dword ptr [rbx+0x08] + jae G_M25128_IG63 + mov rdx, bword ptr [rbx] + ; byrRegs +[rdx] + movzx rdx, word ptr [rdx+2*rcx] + ; byrRegs -[rdx] + test edx, edx + je G_M25128_IG64 + ;; size=33 bbWeight=0.17 PerfScore 2.17 +G_M25128_IG25: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + cmp edx, 61 + ja G_M25128_IG69 + cmp edx, 39 + ja G_M25128_IG68 + cmp edx, 34 + jne G_M25128_IG67 + ;; size=27 bbWeight=0.04 PerfScore 0.16 +G_M25128_IG26: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + mov ecx, dword ptr [rbp+0x28] + mov rax, bword ptr [rbp+0x30] + ; byrRegs +[rax] + mov r8d, dword ptr [rbp+0x38] + cmp ecx, r8d + jae G_M25128_IG54 + mov r8d, ecx + mov word ptr [rax+2*r8], dx + inc ecx + mov dword ptr [rbp+0x28], ecx + jmp G_M25128_IG20 + ;; size=38 bbWeight=0.04 PerfScore 0.37 +G_M25128_IG27: ; bbWeight=0.03, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rax] + mov r13d, r14d + mov eax, dword ptr [rbx+0x10] + cmp eax, dword ptr [rbx+0x08] + jge G_M25128_IG53 + lea ecx, [rax+0x01] + mov dword ptr [rbx+0x10], ecx + cmp eax, dword ptr [rbx+0x08] + jae G_M25128_IG63 + mov rcx, bword ptr [rbx] + ; byrRegs +[rcx] + movzx r15, word ptr [rcx+2*rax] + test r15d, r15d + je G_M25128_IG64 + ;; size=47 bbWeight=0.03 PerfScore 0.43 +G_M25128_IG28: ; bbWeight=0.03, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs -[rcx] + jmp G_M25128_IG13 + ;; size=5 bbWeight=0.03 PerfScore 0.05 +G_M25128_IG29: ; bbWeight=4.65, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref + xor r14d, r14d + jmp G_M25128_IG05 + ;; size=8 bbWeight=4.65 PerfScore 10.47 +G_M25128_IG30: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + ; byrRegs -[rbx rsi] + mov eax, 2 + mov rcx, 0xD1FFAB1E + cmp qword ptr [rbp+0x08], rcx + je SHORT G_M25128_IG31 + call CORINFO_HELP_FAIL_FAST + ; gcr arg pop 0 + ;; size=26 bbWeight=0.16 PerfScore 0.73 +G_M25128_IG31: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.16 PerfScore 0.04 +G_M25128_IG32: ; bbWeight=0.16, epilog, nogc, extend + lea rsp, [rbp+0x40] + pop rbx + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.16 PerfScore 0.82 +G_M25128_IG33: ; bbWeight=31.25, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, gcvars, byref + ; gcrRegs +[rdi] + ; byrRegs +[rbx rsi] + xor r15d, r15d + jmp G_M25128_IG22 + ;; size=8 bbWeight=31.25 PerfScore 70.32 +G_M25128_IG34: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + ; byrRegs -[rbx rsi] + mov eax, 1 + mov rcx, 0xD1FFAB1E + cmp qword ptr [rbp+0x08], rcx + je SHORT G_M25128_IG35 + call CORINFO_HELP_FAIL_FAST + ; gcr arg pop 0 + ;; size=26 bbWeight=0.16 PerfScore 0.73 +G_M25128_IG35: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.16 PerfScore 0.04 +G_M25128_IG36: ; bbWeight=0.16, epilog, nogc, extend + lea rsp, [rbp+0x40] + pop rbx + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.16 PerfScore 0.82 +G_M25128_IG37: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz + ; gcrRegs +[rdi] + ; byrRegs +[rsi]
mov ecx, dword ptr [rbp+0x28] test ecx, ecx
- jle SHORT G_M25128_IG21
+ jle SHORT G_M25128_IG40
lea r15d, [rcx-0x01] cmp r15d, ecx ...

+24 (+3.52%) : 99224.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)

@@ -125,7 +125,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd ; gcrRegs +[rdx] ; byrRegs -[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=23 bbWeight=1 PerfScore 12.00 G_M40104_IG03: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -152,7 +152,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -167,12 +167,12 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd sub rsp, 512 lea r12, [rsp+0x20] test r14d, r14d
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=30 bbWeight=1 PerfScore 5.50 G_M40104_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref ; byrRegs +[r12] cmp r13d, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=13 bbWeight=4 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref mov eax, 192 @@ -183,7 +183,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd add rcx, r8 mov edx, r14d cmp rcx, rdx
- ja G_M40104_IG37
+ ja G_M40104_IG35
add r8, rdi ; byrRegs +[r8] mov bword ptr [rbp+0x10], r8 @@ -203,7 +203,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000020 {V24}, gcrefRegs=004 call [<unknown method>] ; gcrRegs -[rcx rdx r10] ;; size=22 bbWeight=2 PerfScore 7.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r8, bword ptr [rbp+0x10] ; byrRegs +[r8] mov eax, dword ptr [rbp+0x3C] @@ -220,15 +220,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; GC ptr vars -{V24} call [<unknown method>] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp+0x40] mov dword ptr [rbp+0x38], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=77 bbWeight=4 PerfScore 67.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+ jge G_M40104_IG27 + ;; size=81 bbWeight=4 PerfScore 67.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r10, 0xD1FFAB1E ; gcrRegs +[r10] mov r8, r10 @@ -241,39 +241,16 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx r8 r10]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref, isz - ; GC ptr vars -{V79} - mov eax, dword ptr [rbp+0x38] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref - mov eax, r13d - jmp G_M40104_IG11 - ;; size=8 bbWeight=0.58 PerfScore 1.30 -G_M40104_IG17: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs -[r12] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 60 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000010 {V79}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref - ; byrRegs +[r12] - ; GC ptr vars +{V04 V79}
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] mov rdx, rcx ; gcrRegs +[rdx]
- ; GC ptr vars -{V04 V79}
+ ; GC ptr vars -{V79}
call [<unknown method>] ; gcrRegs -[rcx rdx] mov eax, dword ptr [rbp+0x38]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov rdx, r12 @@ -288,51 +265,38 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd test r13d, r13d jg G_M40104_IG09 ;; size=33 bbWeight=4 PerfScore 26.00
-G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi r12]
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs +[rdi] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 62 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdi]
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx] test rsi, rsi
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rsi+0x08] lea rdx, bword ptr [rsi+0x0C] ; byrRegs +[rdx] @@ -342,29 +306,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rcx rsi] ; byrRegs -[rdx] ;; size=17 bbWeight=0.50 PerfScore 2.89
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rbx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp+0x48] pop rbx pop rsi @@ -376,33 +340,60 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=1 PerfScore 5.50
-G_M40104_IG33: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref
; gcrRegs +[rbx rsi]
+ ; byrRegs +[rdi r12] + mov eax, dword ptr [rbp+0x38] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref + mov eax, r13d + jmp G_M40104_IG11 + ;; size=8 bbWeight=0.58 PerfScore 1.30 +G_M40104_IG29: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + ; byrRegs -[r12]
mov rcx, rbx ; gcrRegs +[rcx] mov edx, 60 call [<unknown method>] ; gcrRegs -[rcx]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG34: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.04 PerfScore 0.21 +G_M40104_IG30: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + mov rcx, rbx + ; gcrRegs +[rcx] + mov edx, 62 + call [<unknown method>] + ; gcrRegs -[rcx] + jmp G_M40104_IG08
...

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-23 (-4.00%) : 299625.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+d__8`1[ubyte]:MoveNext():this (FullOpts)

@@ -9,38 +9,38 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 23, 31 ) byref -> [rbp+0x10] this EH-live single-def
-; V01 loc0 [V01,T18] ( 5, 5 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V01 loc0 [V01,T18] ( 5, 5 ) int -> [rbp-0x1C] do-not-enreg[Z] EH-live
; V02 loc1 [V02,T20] ( 2, 5 ) ref -> rbx class-hnd single-def <System.Text.Json.Serialization.Tests.NumberHandlingTests> ; V03 loc2 [V03,T16] ( 3, 12 ) ubyte -> rdi ; V04 loc3 [V04,T14] ( 3, 12 ) ref -> rax class-hnd exact <System.String> ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String> ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc6 [V07 ] ( 6, 15 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
+; V07 loc6 [V07 ] ( 6, 15 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V11 tmp2 [V11,T10] ( 4, 16 ) ref -> r14
+; V11 tmp2 [V11,T09] ( 4, 16 ) ref -> rsi
; V12 tmp3 [V12,T30] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> ; V13 tmp4 [V13,T21] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ubyte]> ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ubyte]> ;* V15 tmp6 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T06] ( 3, 24 ) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+; V16 tmp7 [V16,T05] ( 3, 24 ) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp11 [V20,T11] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+; V20 tmp11 [V20,T10] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp13 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V25 tmp16 [V25,T09] ( 3, 16.01) ref -> rdx class-hnd "Inlining Arg" <System.Threading.Tasks.Task> -;* V26 tmp17 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V25 tmp16 [V25,T08] ( 3, 16.01) ref -> rdx class-hnd "Inlining Arg" <System.Threading.Tasks.Task> +;* V26 tmp17 [V26,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V27 tmp18 [V27,T00] ( 9,144 ) byref -> rsi "Inlining Arg" ; V28 tmp19 [V28,T04] ( 4, 32 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]> ; V29 tmp20 [V29,T19] ( 4, 6 ) byref -> rcx single-def "Inlining Arg" ;* V30 tmp21 [V30,T29] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult> ; V31 tmp22 [V31,T28] ( 2, 0.01) ref -> rcx class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-; V32 tmp23 [V32 ] ( 6, 15 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V07.m_task (fldOffset=0x0)" P-DEP
+; V32 tmp23 [V32 ] ( 6, 15 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V07.m_task (fldOffset=0x0)" P-DEP
; V33 tmp24 [V33,T23] ( 3, 3 ) ref -> rdx single-def "field V14._list (fldOffset=0x0)" P-INDEP ;* V34 tmp25 [V34,T25] ( 0, 0 ) int -> zero-ref single-def "field V14._index (fldOffset=0x8)" P-INDEP ; V35 tmp26 [V35,T24] ( 2, 2 ) int -> rsi single-def "field V14._version (fldOffset=0xc)" P-INDEP @@ -48,39 +48,38 @@ ; V37 tmp28 [V37,T17] ( 2, 8 ) ref -> rax "field V17.m_task (fldOffset=0x0)" P-INDEP ; V38 tmp29 [V38,T01] ( 3, 48 ) ref -> rax "arr expr" ; V39 tmp30 [V39,T02] ( 3, 48 ) int -> rdx "index expr"
-; V40 tmp31 [V40,T12] ( 2, 16 ) ref -> r9 "argument with side effect"
+; V40 tmp31 [V40,T11] ( 2, 16 ) ref -> r9 "argument with side effect"
; V41 tmp32 [V41,T22] ( 2, 4 ) ref -> rdx "argument with side effect"
-; V42 PSPSym [V42,T27] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+; V42 PSPSym [V42,T27] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
; V43 cse0 [V43,T07] ( 3, 24 ) int -> rdx "CSE - aggressive"
-; V44 cse1 [V44,T08] ( 3, 24 ) int -> r14 "CSE - aggressive" -; V45 cse2 [V45,T05] ( 4, 32 ) ref -> rdi "CSE - aggressive"
+; V44 cse1 [V44,T13] ( 2, 16 ) int -> rdx "CSE - aggressive" +; V45 cse2 [V45,T06] ( 3, 24 ) ref -> rdi "CSE - aggressive"
; V46 cse3 [V46,T15] ( 3, 12 ) ref -> r8 "CSE - moderate" ;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M52297_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r14
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x60]
+ sub rsp, 56 + lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0x40], rsp
+ mov qword ptr [rbp-0x28], rax + mov qword ptr [rbp-0x30], rsp
mov bword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=29 bbWeight=1 PerfScore 9.00
+ ;; size=27 bbWeight=1 PerfScore 8.00
G_M52297_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref ; byrRegs +[rcx] mov edx, dword ptr [rcx+0x10]
- mov dword ptr [rbp-0x24], edx
+ mov dword ptr [rbp-0x1C], edx
mov rbx, gword ptr [rcx+0x08] ; gcrRegs +[rbx] ;; size=10 bbWeight=1 PerfScore 5.00 G_M52297_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
- cmp dword ptr [rbp-0x24], 0
+ cmp dword ptr [rbp-0x1C], 0
je SHORT G_M52297_IG04 mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -100,15 +99,15 @@ G_M52297_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, ;; size=40 bbWeight=1 PerfScore 13.00 G_M52297_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref ; byrRegs -[rdi]
- cmp dword ptr [rbp-0x24], 0
+ cmp dword ptr [rbp-0x1C], 0
jne G_M52297_IG09 mov rdx, gword ptr [rcx+0x38] ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x30], rdx
+ mov gword ptr [rbp-0x28], rdx
xor edx, edx ; gcrRegs -[rdx] mov qword ptr [rcx+0x38], rdx
- mov dword ptr [rbp-0x24], -1
+ mov dword ptr [rbp-0x1C], -1
mov dword ptr [rcx+0x10], -1 jmp G_M52297_IG08 ;; size=43 bbWeight=1 PerfScore 11.25 @@ -119,13 +118,13 @@ G_M52297_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - test r14, r14
+ mov rsi, rax + ; gcrRegs +[rsi] + test rsi, rsi
jne SHORT G_M52297_IG06
- mov r14, 0xD1FFAB1E
+ mov rsi, 0xD1FFAB1E
;; size=31 bbWeight=4 PerfScore 28.00
-G_M52297_IG06: ; bbWeight=4, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M52297_IG06: ; bbWeight=4, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rax ; gcrRegs +[rdx] mov r8, 0xD1FFAB1E @@ -138,28 +137,28 @@ G_M52297_IG06: ; bbWeight=4, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 mov r9, rax ; gcrRegs +[r9] mov edx, edi
- mov r8, r14
+ mov r8, rsi
; gcrRegs +[r8] mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.Json.Serialization.Tests.NumberHandlingTests:PerformAsRootTypeSerialization[ubyte](ubyte,System.String,System.String):System.Threading.Tasks.Task:this]
- ; gcrRegs -[rcx r8-r9 r14]
+ ; gcrRegs -[rcx rsi r8-r9]
; gcr arg pop 0 cmp byte ptr [rax], al
- mov gword ptr [rbp-0x30], rax - mov rcx, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x28], rax + mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx] test dword ptr [rcx+0x34], 0xD1FFAB1E jne SHORT G_M52297_IG08 ;; size=58 bbWeight=4 PerfScore 67.00
-G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx rbx] xor edx, edx mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov dword ptr [rcx+0x10], edx lea rcx, bword ptr [rcx+0x38]
- mov rdx, gword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] @@ -176,16 +175,16 @@ G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- lea rcx, [rbp-0x30]
+ lea rcx, [rbp-0x28]
call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M52297_IG16 - ;; size=57 bbWeight=1 PerfScore 15.25
+ jmp SHORT G_M52297_IG15 + ;; size=54 bbWeight=1 PerfScore 15.25
G_M52297_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx] ; byrRegs -[rdi]
- mov rdx, gword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx] mov eax, dword ptr [rdx+0x34] and eax, 0xD1FFAB1E @@ -202,12 +201,12 @@ G_M52297_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] mov rax, rdi ; gcrRegs +[rax]
- mov r14d, dword ptr [rsi+0x0C] - cmp r14d, dword ptr [rax+0x14] - jne SHORT G_M52297_IG13
+ mov edx, dword ptr [rsi+0x0C] + cmp edx, dword ptr [rax+0x14] + jne SHORT G_M52297_IG12
mov edx, dword ptr [rsi+0x08] cmp edx, dword ptr [rax+0x10]
- jae SHORT G_M52297_IG14
+ jae SHORT G_M52297_IG13
mov rax, gword ptr [rax+0x08] cmp edx, dword ptr [rax+0x08] jae SHORT G_M52297_IG11 @@ -216,7 +215,7 @@ G_M52297_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov byte ptr [rsi+0x10], al inc dword ptr [rsi+0x08] jmp G_M52297_IG05
- ;; size=57 bbWeight=8 PerfScore 238.00
+ ;; size=55 bbWeight=8 PerfScore 238.00
G_M52297_IG10: ; bbWeight=0.00, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] +[rdx] ; byrRegs -[rcx rsi] @@ -239,48 +238,44 @@ G_M52297_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M52297_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref, isz
+G_M52297_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref
; gcrRegs +[rdi] ; byrRegs +[rcx rsi]
- cmp r14d, dword ptr [rdi+0x14] - jne SHORT G_M52297_IG12 - ;; size=6 bbWeight=8 PerfScore 32.00 -G_M52297_IG14: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref
mov edx, dword ptr [rdi+0x10] inc edx mov dword ptr [rsi+0x08], edx mov byte ptr [rsi+0x10], 0 ;; size=12 bbWeight=8 PerfScore 34.00
-G_M52297_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+G_M52297_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[rdi] ; byrRegs -[rsi]
- cmp dword ptr [rbp-0x24], 0 - jge SHORT G_M52297_IG18 - jmp SHORT G_M52297_IG18
+ cmp dword ptr [rbp-0x1C], 0 + jge SHORT G_M52297_IG17 + jmp SHORT G_M52297_IG17
;; size=8 bbWeight=1 PerfScore 5.00
-G_M52297_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M52297_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rcx] +[rdi] ...

-23 (-4.00%) : 277132.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+d__8`1[ubyte]:MoveNext():this (FullOpts)

@@ -9,38 +9,38 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 23, 31 ) byref -> [rbp+0x10] this EH-live single-def
-; V01 loc0 [V01,T18] ( 5, 5 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V01 loc0 [V01,T18] ( 5, 5 ) int -> [rbp-0x1C] do-not-enreg[Z] EH-live
; V02 loc1 [V02,T20] ( 2, 5 ) ref -> rbx class-hnd single-def <System.Text.Json.Serialization.Tests.NumberHandlingTests> ; V03 loc2 [V03,T16] ( 3, 12 ) ubyte -> rdi ; V04 loc3 [V04,T14] ( 3, 12 ) ref -> rax class-hnd exact <System.String> ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String> ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc6 [V07 ] ( 6, 15 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
+; V07 loc6 [V07 ] ( 6, 15 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V11 tmp2 [V11,T10] ( 4, 16 ) ref -> r14
+; V11 tmp2 [V11,T09] ( 4, 16 ) ref -> rsi
; V12 tmp3 [V12,T30] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> ; V13 tmp4 [V13,T21] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ubyte]> ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ubyte]> ;* V15 tmp6 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T06] ( 3, 24 ) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+; V16 tmp7 [V16,T05] ( 3, 24 ) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp11 [V20,T11] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+; V20 tmp11 [V20,T10] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp13 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V25 tmp16 [V25,T09] ( 3, 16.01) ref -> rdx class-hnd "Inlining Arg" <System.Threading.Tasks.Task> -;* V26 tmp17 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V25 tmp16 [V25,T08] ( 3, 16.01) ref -> rdx class-hnd "Inlining Arg" <System.Threading.Tasks.Task> +;* V26 tmp17 [V26,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V27 tmp18 [V27,T00] ( 9,144 ) byref -> rsi "Inlining Arg" ; V28 tmp19 [V28,T04] ( 4, 32 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]> ; V29 tmp20 [V29,T19] ( 4, 6 ) byref -> rcx single-def "Inlining Arg" ;* V30 tmp21 [V30,T29] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult> ; V31 tmp22 [V31,T28] ( 2, 0.01) ref -> rcx class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-; V32 tmp23 [V32 ] ( 6, 15 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V07.m_task (fldOffset=0x0)" P-DEP
+; V32 tmp23 [V32 ] ( 6, 15 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V07.m_task (fldOffset=0x0)" P-DEP
; V33 tmp24 [V33,T23] ( 3, 3 ) ref -> rdx single-def "field V14._list (fldOffset=0x0)" P-INDEP ;* V34 tmp25 [V34,T25] ( 0, 0 ) int -> zero-ref single-def "field V14._index (fldOffset=0x8)" P-INDEP ; V35 tmp26 [V35,T24] ( 2, 2 ) int -> rsi single-def "field V14._version (fldOffset=0xc)" P-INDEP @@ -48,39 +48,38 @@ ; V37 tmp28 [V37,T17] ( 2, 8 ) ref -> rax "field V17.m_task (fldOffset=0x0)" P-INDEP ; V38 tmp29 [V38,T01] ( 3, 48 ) ref -> rax "arr expr" ; V39 tmp30 [V39,T02] ( 3, 48 ) int -> rdx "index expr"
-; V40 tmp31 [V40,T12] ( 2, 16 ) ref -> r9 "argument with side effect"
+; V40 tmp31 [V40,T11] ( 2, 16 ) ref -> r9 "argument with side effect"
; V41 tmp32 [V41,T22] ( 2, 4 ) ref -> rdx "argument with side effect"
-; V42 PSPSym [V42,T27] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+; V42 PSPSym [V42,T27] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
; V43 cse0 [V43,T07] ( 3, 24 ) int -> rdx "CSE - aggressive"
-; V44 cse1 [V44,T08] ( 3, 24 ) int -> r14 "CSE - aggressive" -; V45 cse2 [V45,T05] ( 4, 32 ) ref -> rdi "CSE - aggressive"
+; V44 cse1 [V44,T13] ( 2, 16 ) int -> rdx "CSE - aggressive" +; V45 cse2 [V45,T06] ( 3, 24 ) ref -> rdi "CSE - aggressive"
; V46 cse3 [V46,T15] ( 3, 12 ) ref -> r8 "CSE - moderate" ;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M52297_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r14
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x60]
+ sub rsp, 56 + lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0x40], rsp
+ mov qword ptr [rbp-0x28], rax + mov qword ptr [rbp-0x30], rsp
mov bword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=29 bbWeight=1 PerfScore 9.00
+ ;; size=27 bbWeight=1 PerfScore 8.00
G_M52297_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref ; byrRegs +[rcx] mov edx, dword ptr [rcx+0x10]
- mov dword ptr [rbp-0x24], edx
+ mov dword ptr [rbp-0x1C], edx
mov rbx, gword ptr [rcx+0x08] ; gcrRegs +[rbx] ;; size=10 bbWeight=1 PerfScore 5.00 G_M52297_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
- cmp dword ptr [rbp-0x24], 0
+ cmp dword ptr [rbp-0x1C], 0
je SHORT G_M52297_IG04 mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -100,15 +99,15 @@ G_M52297_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, ;; size=40 bbWeight=1 PerfScore 13.00 G_M52297_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref ; byrRegs -[rdi]
- cmp dword ptr [rbp-0x24], 0
+ cmp dword ptr [rbp-0x1C], 0
jne G_M52297_IG09 mov rdx, gword ptr [rcx+0x38] ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x30], rdx
+ mov gword ptr [rbp-0x28], rdx
xor edx, edx ; gcrRegs -[rdx] mov qword ptr [rcx+0x38], rdx
- mov dword ptr [rbp-0x24], -1
+ mov dword ptr [rbp-0x1C], -1
mov dword ptr [rcx+0x10], -1 jmp G_M52297_IG08 ;; size=43 bbWeight=1 PerfScore 11.25 @@ -119,13 +118,13 @@ G_M52297_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - test r14, r14
+ mov rsi, rax + ; gcrRegs +[rsi] + test rsi, rsi
jne SHORT G_M52297_IG06
- mov r14, 0xD1FFAB1E
+ mov rsi, 0xD1FFAB1E
;; size=31 bbWeight=4 PerfScore 28.00
-G_M52297_IG06: ; bbWeight=4, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M52297_IG06: ; bbWeight=4, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rax ; gcrRegs +[rdx] mov r8, 0xD1FFAB1E @@ -138,28 +137,28 @@ G_M52297_IG06: ; bbWeight=4, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 mov r9, rax ; gcrRegs +[r9] mov edx, edi
- mov r8, r14
+ mov r8, rsi
; gcrRegs +[r8] mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.Json.Serialization.Tests.NumberHandlingTests:PerformAsRootTypeSerialization[ubyte](ubyte,System.String,System.String):System.Threading.Tasks.Task:this]
- ; gcrRegs -[rcx r8-r9 r14]
+ ; gcrRegs -[rcx rsi r8-r9]
; gcr arg pop 0 cmp byte ptr [rax], al
- mov gword ptr [rbp-0x30], rax - mov rcx, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x28], rax + mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx] test dword ptr [rcx+0x34], 0xD1FFAB1E jne SHORT G_M52297_IG08 ;; size=58 bbWeight=4 PerfScore 67.00
-G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx rbx] xor edx, edx mov rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx] mov dword ptr [rcx+0x10], edx lea rcx, bword ptr [rcx+0x38]
- mov rdx, gword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] @@ -176,16 +175,16 @@ G_M52297_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- lea rcx, [rbp-0x30]
+ lea rcx, [rbp-0x28]
call [<unknown method>] ; gcrRegs -[rax rdx] ; gcr arg pop 0
- jmp G_M52297_IG16 - ;; size=57 bbWeight=1 PerfScore 15.25
+ jmp SHORT G_M52297_IG15 + ;; size=54 bbWeight=1 PerfScore 15.25
G_M52297_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx] ; byrRegs -[rdi]
- mov rdx, gword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx] mov eax, dword ptr [rdx+0x34] and eax, 0xD1FFAB1E @@ -202,12 +201,12 @@ G_M52297_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] mov rax, rdi ; gcrRegs +[rax]
- mov r14d, dword ptr [rsi+0x0C] - cmp r14d, dword ptr [rax+0x14] - jne SHORT G_M52297_IG13
+ mov edx, dword ptr [rsi+0x0C] + cmp edx, dword ptr [rax+0x14] + jne SHORT G_M52297_IG12
mov edx, dword ptr [rsi+0x08] cmp edx, dword ptr [rax+0x10]
- jae SHORT G_M52297_IG14
+ jae SHORT G_M52297_IG13
mov rax, gword ptr [rax+0x08] cmp edx, dword ptr [rax+0x08] jae SHORT G_M52297_IG11 @@ -216,7 +215,7 @@ G_M52297_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov byte ptr [rsi+0x10], al inc dword ptr [rsi+0x08] jmp G_M52297_IG05
- ;; size=57 bbWeight=8 PerfScore 238.00
+ ;; size=55 bbWeight=8 PerfScore 238.00
G_M52297_IG10: ; bbWeight=0.00, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] +[rdx] ; byrRegs -[rcx rsi] @@ -239,48 +238,44 @@ G_M52297_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M52297_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref, isz
+G_M52297_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref
; gcrRegs +[rdi] ; byrRegs +[rcx rsi]
- cmp r14d, dword ptr [rdi+0x14] - jne SHORT G_M52297_IG12 - ;; size=6 bbWeight=8 PerfScore 32.00 -G_M52297_IG14: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref
mov edx, dword ptr [rdi+0x10] inc edx mov dword ptr [rsi+0x08], edx mov byte ptr [rsi+0x10], 0 ;; size=12 bbWeight=8 PerfScore 34.00
-G_M52297_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+G_M52297_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[rdi] ; byrRegs -[rsi]
- cmp dword ptr [rbp-0x24], 0 - jge SHORT G_M52297_IG18 - jmp SHORT G_M52297_IG18
+ cmp dword ptr [rbp-0x1C], 0 + jge SHORT G_M52297_IG17 + jmp SHORT G_M52297_IG17
;; size=8 bbWeight=1 PerfScore 5.00
-G_M52297_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M52297_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rcx] +[rdi] ...

-20 (-3.85%) : 333824.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 8, 29 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]>
-; V01 loc0 [V01 ] ( 8, 32 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> -; V02 loc1 [V02,T10] ( 4, 3 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def <<unknown class>> -; V03 loc2 [V03 ] ( 6, 6 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc3 [V04,T11] ( 3, 3 ) ubyte -> [rbp-0x34] do-not-enreg[Z] EH-live -; V05 loc4 [V05,T04] ( 4, 25 ) ref -> [rbp-0x50] do-not-enreg[Z] class-hnd EH-live <<unknown class>> -; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V01 loc0 [V01 ] ( 8, 36 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader]> +; V02 loc1 [V02,T10] ( 4, 3 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>> +; V03 loc2 [V03 ] ( 6, 6 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc3 [V04,T11] ( 3, 3 ) ubyte -> [rbp-0x2C] do-not-enreg[Z] EH-live +; V05 loc4 [V05,T04] ( 4, 25 ) ref -> [rbp-0x48] do-not-enreg[Z] class-hnd EH-live <<unknown class>> +; V06 loc5 [V06 ] ( 6, 41 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 2, 32 ) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Tasks.Dataflow.ISourceBlock`1[int]> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.Tasks.Dataflow.DataflowMessageHeader> @@ -25,50 +25,49 @@ ;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources> ; V16 tmp9 [V16,T02] ( 2, 32 ) ubyte -> rcx "Inlining Arg"
-; V17 tmp10 [V17,T00] ( 3, 40 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>> -; V18 tmp11 [V18,T05] ( 3, 24 ) ubyte -> rdi "Inline stloc first use temp"
+; V17 tmp10 [V17,T00] ( 3, 48 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T05] ( 2, 16 ) ubyte -> rax "Inline stloc first use temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
-; V20 tmp13 [V20 ] ( 6, 23 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP -; V21 tmp14 [V21 ] ( 4, 18 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
+; V20 tmp13 [V20 ] ( 6, 27 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V01.key (fldOffset=0x0)" P-DEP +; V21 tmp14 [V21 ] ( 4, 18 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x8)" P-DEP
;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref "field V09._id (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T08] ( 3, 6 ) ref -> rbx single-def "BlockOp address local"
-; V24 PSPSym [V24,T13] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V24 PSPSym [V24,T13] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V25 cse0 [V25,T06] ( 6, 15 ) ref -> rdx multi-def "CSE - aggressive" ;
-; Lcl frame size = 104
+; Lcl frame size = 96
G_M15095_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rdi
push rsi push rbx
- sub rsp, 104 - lea rbp, [rsp+0x80]
+ sub rsp, 96 + lea rbp, [rsp+0x70]
xor eax, eax
- mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x50], rsp
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 7.25
+ ;; size=25 bbWeight=1 PerfScore 6.25
G_M15095_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] mov rcx, gword ptr [rdx+0x10] ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x40], rcx
; GC ptr vars +{V02} xor edx, edx ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x30], edx
+ mov dword ptr [rbp-0x28], edx
;; size=17 bbWeight=1 PerfScore 6.25 G_M15095_IG03: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x30], 0
+ cmp byte ptr [rbp-0x28], 0
jne SHORT G_M15095_IG06
- lea rdx, [rbp-0x30]
+ lea rdx, [rbp-0x28]
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x30]
+ movzx rcx, byte ptr [rbp-0x28]
test ecx, ecx jne SHORT G_M15095_IG04 mov rdx, 0xD1FFAB1E @@ -85,7 +84,7 @@ G_M15095_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx+0x08] ; gcrRegs +[rsi] mov rcx, gword ptr [rsi+0x08]
- lea rdx, [rbp-0x28]
+ lea rdx, [rbp-0x20]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] @@ -94,7 +93,7 @@ G_M15095_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr je SHORT G_M15095_IG05 mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x28]
+ mov rdx, gword ptr [rbp-0x20]
; gcrRegs +[rdx] cmp dword ptr [rcx], ecx call [<unknown method>] @@ -105,7 +104,7 @@ G_M15095_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M15095_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx] xor ecx, ecx
- mov dword ptr [rbp-0x34], ecx
+ mov dword ptr [rbp-0x2C], ecx
jmp SHORT G_M15095_IG08 ;; size=7 bbWeight=1 PerfScore 3.25 G_M15095_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -115,9 +114,9 @@ G_M15095_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M15095_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- cmp byte ptr [rbp-0x30], 0
+ cmp byte ptr [rbp-0x28], 0
je SHORT G_M15095_IG10
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] ; GC ptr vars -{V02} call <unknown method> @@ -129,44 +128,44 @@ G_M15095_IG08: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=000 ; gcrRegs -[rbx] ; GC ptr vars +{V02} mov rcx, rsp
- call G_M15095_IG25
+ call G_M15095_IG23
;; size=8 bbWeight=1 PerfScore 1.25 G_M15095_IG09: ; bbWeight=1, nogc, extend
- jmp G_M15095_IG23
+ jmp G_M15095_IG21
;; size=5 bbWeight=1 PerfScore 2.00 G_M15095_IG10: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] ; GC ptr vars -{V02}
- mov rcx, gword ptr [rbp-0x28]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx] mov r8, rbx ; gcrRegs +[r8]
- mov rdx, qword ptr [rbp-0x20]
+ mov rdx, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx r8] ; gcr arg pop 0 test eax, eax
- jne G_M15095_IG19
+ jne G_M15095_IG17
mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] mov rdx, gword ptr [rdx+0x10]
- mov gword ptr [rbp-0x50], rdx
+ mov gword ptr [rbp-0x48], rdx
; GC ptr vars +{V05} xor edx, edx ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x40], edx
+ mov dword ptr [rbp-0x38], edx
;; size=49 bbWeight=8 PerfScore 104.00 G_M15095_IG11: ; bbWeight=8, gcVars=0000000000000010 {V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x40], 0 - jne SHORT G_M15095_IG17 - lea rdx, [rbp-0x40] - mov rcx, gword ptr [rbp-0x50]
+ cmp byte ptr [rbp-0x38], 0 + jne SHORT G_M15095_IG15 + lea rdx, [rbp-0x38] + mov rcx, gword ptr [rbp-0x48]
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x40]
+ movzx rcx, byte ptr [rbp-0x38]
test ecx, ecx jne SHORT G_M15095_IG13 ;; size=27 bbWeight=8 PerfScore 62.00 @@ -185,45 +184,39 @@ G_M15095_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx+0x08] ; gcrRegs +[rsi] mov rcx, gword ptr [rsi+0x08]
- lea rdx, [rbp-0x28]
+ lea rdx, [rbp-0x20]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov edi, eax - test edi, edi - je SHORT G_M15095_IG15 - ;; size=30 bbWeight=8 PerfScore 112.00 -G_M15095_IG14: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test eax, eax + je SHORT G_M15095_IG14
mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x28]
+ mov rdx, gword ptr [rbp-0x20]
; gcrRegs +[rdx] cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx rdx rsi] ; gcr arg pop 0
- ;; size=16 bbWeight=4 PerfScore 36.00 -G_M15095_IG15: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test edi, edi - jne SHORT G_M15095_IG18 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M15095_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M15095_IG16 + ;; size=46 bbWeight=8 PerfScore 198.00 +G_M15095_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] xor ecx, ecx
- mov dword ptr [rbp-0x34], ecx - jmp SHORT G_M15095_IG21
+ mov dword ptr [rbp-0x2C], ecx + jmp SHORT G_M15095_IG19
;; size=7 bbWeight=1 PerfScore 3.25
-G_M15095_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15095_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M15095_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15095_IG16: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx]
- cmp byte ptr [rbp-0x40], 0
+ cmp byte ptr [rbp-0x38], 0
je G_M15095_IG10
- mov rcx, gword ptr [rbp-0x50]
+ mov rcx, gword ptr [rbp-0x48]
; gcrRegs +[rcx] ; GC ptr vars -{V05} call <unknown method> @@ -231,114 +224,108 @@ G_M15095_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp G_M15095_IG10 ;; size=24 bbWeight=8 PerfScore 56.00
-G_M15095_IG19: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15095_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x20] lea rcx, bword ptr [rbx+0x10] ; byrRegs +[rcx] ...

+2 (+1.60%) : 150417.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)

@@ -8,32 +8,33 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> -; V01 arg1 [V01,T11] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
+; V00 arg0 [V00,T11] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> +; V01 arg1 [V01,T12] ( 3, 4 ) ref -> rbx class-hnd single-def <System.IO.Stream>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]> ; V03 loc1 [V03 ] ( 4, 8 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.IO.Compression.ZipGenericExtraField> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Compression.ZipGenericExtraField]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp2 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]> ; V08 tmp4 [V08 ] ( 2, 4 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V03._data (fldOffset=0x0)" P-DEP ; V09 tmp5 [V09 ] ( 2, 4 ) ushort -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._tag (fldOffset=0x8)" P-DEP ; V10 tmp6 [V10 ] ( 2, 4 ) ushort -> [rsp+0x32] do-not-enreg[X] addr-exposed "field V03._size (fldOffset=0xa)" P-DEP ; V11 tmp7 [V11,T03] ( 4, 17 ) ref -> rdi single-def "V02.[000..008)" ; V12 tmp8 [V12,T01] ( 6, 21 ) int -> rbp "V02.[008..012)"
-; V13 tmp9 [V13,T08] ( 2, 9 ) int -> rsi "V02.[012..016)" -; V14 tmp10 [V14,T05] ( 2, 6 ) ref -> rdx "V02.[016..024)" -; V15 tmp11 [V15,T06] ( 2, 6 ) ushort -> rax "V02.[024..026)" -; V16 tmp12 [V16,T07] ( 2, 6 ) ushort -> rcx "V02.[026..028)"
+; V13 tmp9 [V13,T09] ( 2, 9 ) int -> rsi "V02.[012..016)" +; V14 tmp10 [V14,T06] ( 2, 6 ) ref -> rdx "V02.[016..024)" +; V15 tmp11 [V15,T07] ( 2, 6 ) ushort -> rax "V02.[024..026)" +; V16 tmp12 [V16,T08] ( 2, 6 ) ushort -> rcx "V02.[026..028)"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)"
-; V19 tmp15 [V19,T12] ( 2, 2 ) int -> rsi "V05.[012..016)"
+; V19 tmp15 [V19,T13] ( 2, 2 ) int -> rsi "V05.[012..016)"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)" ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "V05.[024..026)" ;* V22 tmp18 [V22 ] ( 0, 0 ) ushort -> zero-ref "V05.[026..028)" ; V23 tmp19 [V23,T00] ( 4, 32 ) byref -> rcx "Spilling address for field-by-field copy" ; V24 tmp20 [V24,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V25 cse0 [V25,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V25 cse0 [V25,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T04] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 56 @@ -68,9 +69,10 @@ G_M41630_IG03: ; bbWeight=2, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=29 bbWeight=2 PerfScore 13.50 G_M41630_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rdi+0x14]
+ mov ecx, dword ptr [rdi+0x14] + cmp esi, ecx
jne SHORT G_M41630_IG08
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M41630_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rdi+0x10] cmp ebp, ecx @@ -111,7 +113,7 @@ G_M41630_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 15, PerfScore 145.75, instruction count 43, allocated bytes for code 125 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
+; Total bytes of code 127, prolog size 15, PerfScore 139.75, instruction count 44, allocated bytes for code 127 (MethodHash=bf4e5d61) for method System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
; ============================================================ Unwind Info:

+40 (+3.38%) : 236139.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)

@@ -53,7 +53,7 @@ ;* V42 tmp33 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]> ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]> ; V44 tmp35 [V44 ] ( 6,128.00) struct (16) [rsp+0x58] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V45 tmp36 [V45,T17] ( 8, 24 ) int -> r15 "Inline return value spill temp"
+; V45 tmp36 [V45,T17] ( 8, 24 ) int -> r13 "Inline return value spill temp"
; V46 tmp37 [V46,T03] ( 2, 64 ) long -> rcx "impAppendStmt" ; V47 tmp38 [V47,T13] ( 2, 32.00) long -> rcx "impAppendStmt" ; V48 tmp39 [V48,T32] ( 3, 16.00) int -> r15 "Inline stloc first use temp" @@ -80,10 +80,10 @@ ;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ; V70 tmp61 [V70 ] ( 3, 48 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V24._bits (fldOffset=0x0)" P-DEP ; V71 tmp62 [V71 ] ( 3, 48 ) int -> [rsp+0x90] do-not-enreg[X] addr-exposed "field V24._sign (fldOffset=0x8)" P-DEP
-; V72 tmp63 [V72,T24] ( 3, 16 ) byref -> rdx "field V26._reference (fldOffset=0x0)" P-INDEP -; V73 tmp64 [V73,T28] ( 3, 16 ) int -> r9 "field V26._length (fldOffset=0x8)" P-INDEP -; V74 tmp65 [V74,T25] ( 3, 16 ) byref -> rcx "field V29._reference (fldOffset=0x0)" P-INDEP -; V75 tmp66 [V75,T29] ( 3, 16 ) int -> rax "field V29._length (fldOffset=0x8)" P-INDEP
+; V72 tmp63 [V72,T24] ( 3, 20.33) byref -> rdx "field V26._reference (fldOffset=0x0)" P-INDEP +; V73 tmp64 [V73,T26] ( 3, 20.33) int -> r9 "field V26._length (fldOffset=0x8)" P-INDEP +; V74 tmp65 [V74,T28] ( 3, 16 ) byref -> rcx "field V29._reference (fldOffset=0x0)" P-INDEP +; V75 tmp66 [V75,T30] ( 3, 16 ) int -> rax "field V29._length (fldOffset=0x8)" P-INDEP
; V76 tmp67 [V76 ] ( 3, 24 ) ref -> [rsp+0x78] do-not-enreg[X] addr-exposed "field V31._bits (fldOffset=0x0)" P-DEP ; V77 tmp68 [V77 ] ( 3, 24 ) int -> [rsp+0x80] do-not-enreg[X] addr-exposed "field V31._sign (fldOffset=0x8)" P-DEP ; V78 tmp69 [V78,T16] ( 4, 24.67) ref -> r14 "field V32._bits (fldOffset=0x0)" P-INDEP @@ -96,9 +96,9 @@ ;* V85 tmp76 [V85 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP ; V86 tmp77 [V86 ] ( 3, 48 ) ref -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V37._bits (fldOffset=0x0)" P-DEP ; V87 tmp78 [V87 ] ( 3, 48 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed "field V37._sign (fldOffset=0x8)" P-DEP
-; V88 tmp79 [V88,T26] ( 3, 16 ) byref -> rdx "field V39._reference (fldOffset=0x0)" P-INDEP -; V89 tmp80 [V89,T30] ( 3, 16 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP -; V90 tmp81 [V90,T27] ( 3, 16 ) byref -> rcx "field V42._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp79 [V88,T25] ( 3, 20.33) byref -> rdx "field V39._reference (fldOffset=0x0)" P-INDEP +; V89 tmp80 [V89,T27] ( 3, 20.33) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP +; V90 tmp81 [V90,T29] ( 3, 16 ) byref -> rcx "field V42._reference (fldOffset=0x0)" P-INDEP
; V91 tmp82 [V91,T31] ( 3, 16 ) int -> rax "field V42._length (fldOffset=0x8)" P-INDEP ; V92 tmp83 [V92 ] ( 4, 56.00) int -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V44._flags (fldOffset=0x0)" P-DEP ; V93 tmp84 [V93 ] ( 3, 64.00) int -> [rsp+0x5C] do-not-enreg[X] addr-exposed "field V44._hi32 (fldOffset=0x4)" P-DEP @@ -151,7 +151,7 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor esi, esi mov edi, dword ptr [rbx+0x08] test edi, edi
- jle G_M48799_IG37
+ jle G_M48799_IG43
;; size=32 bbWeight=1 PerfScore 7.50 G_M48799_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -162,7 +162,7 @@ G_M48799_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rsp+0x108] ; gcrRegs +[rdx] cmp esi, dword ptr [rdx+0x08]
- jae G_M48799_IG41
+ jae G_M48799_IG44
mov rdx, gword ptr [rsp+0x108] mov ecx, esi lea rcx, [rcx+2*rcx] @@ -186,7 +186,7 @@ G_M48799_IG06: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by mov rcx, gword ptr [rsp+0x108] ; gcrRegs +[rcx] cmp ebp, dword ptr [rcx+0x08]
- jae G_M48799_IG41
+ jae G_M48799_IG44
mov rcx, gword ptr [rsp+0x108] lea rdx, [rdx+2*rdx] lea rdx, bword ptr [rcx+8*rdx+0x10] @@ -206,7 +206,7 @@ G_M48799_IG08: ; bbWeight=16, extend movzx rax, byte ptr [rsp+0xE0] sub eax, ecx test eax, eax
- jle G_M48799_IG20
+ jle G_M48799_IG23
;; size=31 bbWeight=16 PerfScore 61.33 G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rdx] @@ -217,7 +217,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] cmp eax, 60
- jae G_M48799_IG41
+ jae G_M48799_IG44
mov ecx, eax shl rcx, 4 lea rdx, bword ptr [rdx+rcx+0x10] @@ -227,7 +227,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[r15] mov r13d, dword ptr [rdx+0x08] test r14, r14
- jne SHORT G_M48799_IG13
+ jne SHORT G_M48799_IG15
test r15, r15 jne SHORT G_M48799_IG12 vxorps xmm0, xmm0, xmm0 @@ -245,43 +245,62 @@ G_M48799_IG10: ; bbWeight=8, nogc, extend vmovdqu xmm0, xmmword ptr [rsp+0x88] vmovdqu xmmword ptr [rsp+0x98], xmm0 ;; size=18 bbWeight=8 PerfScore 32.00
-G_M48799_IG11: ; bbWeight=8, isz, extend - jmp SHORT G_M48799_IG18 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M48799_IG12: ; bbWeight=3.67, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M48799_IG11: ; bbWeight=8, extend + jmp G_M48799_IG21 + ;; size=5 bbWeight=8 PerfScore 16.00 +G_M48799_IG12: ; bbWeight=8.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15] xor rdx, rdx ; byrRegs +[rdx] xor r9d, r9d
- jmp SHORT G_M48799_IG14 - ;; size=7 bbWeight=3.67 PerfScore 9.17 -G_M48799_IG13: ; bbWeight=4.33, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[r14] - ; byrRegs -[rdx] - lea rdx, bword ptr [r14+0x10] - ; byrRegs +[rdx] - mov r9d, dword ptr [r14+0x08] - ;; size=8 bbWeight=4.33 PerfScore 10.83 -G_M48799_IG14: ; bbWeight=8.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0004 {rdx}, byref, isz - ; gcrRegs -[r14]
+ ;; size=5 bbWeight=8.00 PerfScore 4.00 +G_M48799_IG13: ; bbWeight=8.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0004 {rdx}, byref, isz
test r15, r15
- jne SHORT G_M48799_IG16
+ jne SHORT G_M48799_IG19
;; size=5 bbWeight=8.00 PerfScore 10.00
-G_M48799_IG15: ; bbWeight=3.67, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
+G_M48799_IG14: ; bbWeight=3.67, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; gcrRegs -[r15] xor rcx, rcx ; byrRegs +[rcx] xor eax, eax
- jmp SHORT G_M48799_IG17
+ jmp SHORT G_M48799_IG20
;; size=6 bbWeight=3.67 PerfScore 9.17
-G_M48799_IG16: ; bbWeight=4.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0004 {rdx}, byref
+G_M48799_IG15: ; bbWeight=4.33, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r14-r15] + ; byrRegs -[rcx rdx] + lea rdx, bword ptr [r14+0x10] + ; byrRegs +[rdx] + mov r9d, dword ptr [r14+0x08] + jmp SHORT G_M48799_IG13 + ;; size=10 bbWeight=4.33 PerfScore 19.50 +G_M48799_IG16: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rdx] + lea rcx, [rsp+0xE8] + lea rdx, [rsp+0xC0] + call [<unknown method>] + ; gcr arg pop 0 + mov r14d, eax + ;; size=25 bbWeight=8 PerfScore 34.00 +G_M48799_IG17: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + vmovups xmm0, xmmword ptr [rsp+0xD0] + vmovups xmmword ptr [rsp+0x58], xmm0 + mov rcx, qword ptr [rsp+0x60] + mov edx, dword ptr [rsp+0x5C] + or rcx, rdx + jne G_M48799_IG41 + ;; size=33 bbWeight=16 PerfScore 116.00 +G_M48799_IG18: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + jmp G_M48799_IG38 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M48799_IG19: ; bbWeight=4.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0004 {rdx}, byref
; gcrRegs +[r15]
- ; byrRegs -[rcx]
+ ; byrRegs +[rdx]
lea rcx, bword ptr [r15+0x10] ; byrRegs +[rcx] mov eax, dword ptr [r15+0x08] ;; size=8 bbWeight=4.33 PerfScore 10.83
-G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref
+G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rdx}, byref
; gcrRegs -[r15] mov bword ptr [rsp+0x48], rdx mov dword ptr [rsp+0x50], r9d @@ -296,21 +315,21 @@ G_M48799_IG17: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0006 {rcx rd call [<unknown method>] ; gcr arg pop 0 ;; size=48 bbWeight=8 PerfScore 76.00
-G_M48799_IG18: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, nogc
+G_M48799_IG21: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsp+0x98] vmovdqu xmmword ptr [rsp+0x28], xmm0 ;; size=15 bbWeight=8 PerfScore 32.00
-G_M48799_IG19: ; bbWeight=8, extend
+G_M48799_IG22: ; bbWeight=8, extend
lea rdx, [rsp+0x28] lea rcx, [rsp+0xE8] call [<unknown method>] ; gcr arg pop 0 mov r14d, eax
- jmp G_M48799_IG32
+ jmp G_M48799_IG17
;; size=27 bbWeight=8 PerfScore 50.00
-G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M48799_IG23: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jge G_M48799_IG31
+ jge G_M48799_IG16
mov r14, gword ptr [rsp+0xE8] ; gcrRegs +[r14] mov r8d, dword ptr [rsp+0xF0] @@ -320,7 +339,7 @@ G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov ecx, eax neg ecx cmp ecx, 60
- jae G_M48799_IG41
+ jae G_M48799_IG44
mov ecx, eax neg ecx shl rcx, 4 @@ -331,9 +350,9 @@ G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[r15] mov r13d, dword ptr [rdx+0x08] test r14, r14
- jne SHORT G_M48799_IG24
+ jne SHORT G_M48799_IG29
test r15, r15
- jne SHORT G_M48799_IG23
+ jne SHORT G_M48799_IG26
vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rsp+0x68], xmm0 movsxd rdx, r8d @@ -345,47 +364,67 @@ G_M48799_IG20: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[r14-r15] ; gcr arg pop 0 ;; size=111 bbWeight=8 PerfScore 184.67
-G_M48799_IG21: ; bbWeight=8, nogc, extend
+G_M48799_IG24: ; bbWeight=8, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68] vmovdqu xmmword ptr [rsp+0x78], xmm0 ;; size=12 bbWeight=8 PerfScore 32.00
-G_M48799_IG22: ; bbWeight=8, isz, extend - jmp SHORT G_M48799_IG29 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M48799_IG23: ; bbWeight=3.67, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M48799_IG25: ; bbWeight=8, extend + jmp G_M48799_IG36 + ;; size=5 bbWeight=8 PerfScore 16.00 +G_M48799_IG26: ; bbWeight=8.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15] xor rdx, rdx ; byrRegs +[rdx] xor r9d, r9d
- jmp SHORT G_M48799_IG25 - ;; size=7 bbWeight=3.67 PerfScore 9.17 -G_M48799_IG24: ; bbWeight=4.33, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[r14] - ; byrRegs -[rdx] - lea rdx, bword ptr [r14+0x10]
...

+24 (+3.52%) : 249268.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)

@@ -125,7 +125,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd ; gcrRegs +[rdx] ; byrRegs -[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG17
+ jbe G_M40104_IG29
;; size=23 bbWeight=1 PerfScore 12.00 G_M40104_IG03: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -152,7 +152,7 @@ G_M40104_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe G_M40104_IG21
+ jbe G_M40104_IG30
;; size=16 bbWeight=1 PerfScore 8.00 G_M40104_IG07: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0080 {rdi}, byref mov ecx, ecx @@ -167,12 +167,12 @@ G_M40104_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rd sub rsp, 512 lea r12, [rsp+0x20] test r14d, r14d
- jle G_M40104_IG22
+ jle G_M40104_IG16
;; size=30 bbWeight=1 PerfScore 5.50 G_M40104_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref ; byrRegs +[r12] cmp r13d, 192
- jl G_M40104_IG16
+ jl G_M40104_IG28
;; size=13 bbWeight=4 PerfScore 5.00 G_M40104_IG10: ; bbWeight=1.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref mov eax, 192 @@ -183,7 +183,7 @@ G_M40104_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd add rcx, r8 mov edx, r14d cmp rcx, rdx
- ja G_M40104_IG37
+ ja G_M40104_IG35
add r8, rdi ; byrRegs +[r8] mov bword ptr [rbp+0x10], r8 @@ -203,7 +203,7 @@ G_M40104_IG12: ; bbWeight=2, gcVars=0000000000000020 {V24}, gcrefRegs=004 call [<unknown method>] ; gcrRegs -[rcx rdx r10] ;; size=22 bbWeight=2 PerfScore 7.50
-G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r8, bword ptr [rbp+0x10] ; byrRegs +[r8] mov eax, dword ptr [rbp+0x3C] @@ -220,15 +220,15 @@ G_M40104_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; GC ptr vars -{V24} call [<unknown method>] test eax, eax
- je G_M40104_IG36
+ je G_M40104_IG34
mov eax, dword ptr [rbp+0x40] mov dword ptr [rbp+0x38], eax cmp eax, 256
- ja G_M40104_IG37
+ ja G_M40104_IG35
test eax, eax
- jge SHORT G_M40104_IG15 - ;; size=77 bbWeight=4 PerfScore 67.00 -G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref, isz
+ jge G_M40104_IG27 + ;; size=81 bbWeight=4 PerfScore 67.00 +G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov r10, 0xD1FFAB1E ; gcrRegs +[r10] mov r8, r10 @@ -241,39 +241,16 @@ G_M40104_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx r8 r10]
- jmp SHORT G_M40104_IG18 - ;; size=31 bbWeight=2 PerfScore 14.00 -G_M40104_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref, isz - ; GC ptr vars -{V79} - mov eax, dword ptr [rbp+0x38] - jmp SHORT G_M40104_IG19 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M40104_IG16: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref - mov eax, r13d - jmp G_M40104_IG11 - ;; size=8 bbWeight=0.58 PerfScore 1.30 -G_M40104_IG17: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs -[r12] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 60 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG04 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG18: ; bbWeight=2, gcVars=0000000000000010 {V79}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref - ; byrRegs +[r12] - ; GC ptr vars +{V04 V79}
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] mov rdx, rcx ; gcrRegs +[rdx]
- ; GC ptr vars -{V04 V79}
+ ; GC ptr vars -{V79}
call [<unknown method>] ; gcrRegs -[rcx rdx] mov eax, dword ptr [rbp+0x38]
- ;; size=16 bbWeight=2 PerfScore 10.50 -G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
+ ;; size=45 bbWeight=2 PerfScore 20.50 +G_M40104_IG15: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov rdx, r12 @@ -288,51 +265,38 @@ G_M40104_IG19: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rd test r13d, r13d jg G_M40104_IG09 ;; size=33 bbWeight=4 PerfScore 26.00
-G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG16: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi r12]
- jmp SHORT G_M40104_IG22 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M40104_IG21: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref - ; byrRegs +[rdi] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 62 - call [<unknown method>] - ; gcrRegs -[rcx] - jmp G_M40104_IG08 - ;; size=19 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG22: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdi]
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG33 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG31 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG17: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 60 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG24: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG18: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG34 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG25: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG32 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG19: ; bbWeight=0.46, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 47 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG20: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx] test rsi, rsi
- je SHORT G_M40104_IG28
+ je SHORT G_M40104_IG22
;; size=5 bbWeight=1 PerfScore 1.25
-G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M40104_IG21: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rsi+0x08] lea rdx, bword ptr [rsi+0x0C] ; byrRegs +[rdx] @@ -342,29 +306,29 @@ G_M40104_IG27: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rcx rsi] ; byrRegs -[rdx] ;; size=17 bbWeight=0.50 PerfScore 2.89
-G_M40104_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x18] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M40104_IG35 - ;; size=12 bbWeight=1 PerfScore 8.00 -G_M40104_IG29: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ jbe G_M40104_IG33 + ;; size=16 bbWeight=1 PerfScore 8.00 +G_M40104_IG23: ; bbWeight=0.46, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], 62 inc dword ptr [rbx+0x18] ;; size=12 bbWeight=0.46 PerfScore 1.96
-G_M40104_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M40104_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rbx] mov rcx, 0xD1FFAB1E cmp qword ptr [rbp], rcx
- je SHORT G_M40104_IG31
+ je SHORT G_M40104_IG25
call CORINFO_HELP_FAIL_FAST ;; size=21 bbWeight=1 PerfScore 4.25
-G_M40104_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40104_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend
+G_M40104_IG26: ; bbWeight=1, epilog, nogc, extend
lea rsp, [rbp+0x48] pop rbx pop rsi @@ -376,33 +340,60 @@ G_M40104_IG32: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=1 PerfScore 5.50
-G_M40104_IG33: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40104_IG27: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, gcvars, byref
; gcrRegs +[rbx rsi]
+ ; byrRegs +[rdi r12] + mov eax, dword ptr [rbp+0x38] + jmp G_M40104_IG15 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M40104_IG28: ; bbWeight=0.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=1080 {rdi r12}, byref + mov eax, r13d + jmp G_M40104_IG11 + ;; size=8 bbWeight=0.58 PerfScore 1.30 +G_M40104_IG29: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + ; byrRegs -[r12]
mov rcx, rbx ; gcrRegs +[rcx] mov edx, 60 call [<unknown method>] ; gcrRegs -[rcx]
- jmp SHORT G_M40104_IG24 - ;; size=16 bbWeight=0.04 PerfScore 0.21 -G_M40104_IG34: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M40104_IG04 + ;; size=19 bbWeight=0.04 PerfScore 0.21 +G_M40104_IG30: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref + mov rcx, rbx + ; gcrRegs +[rcx] + mov edx, 62 + call [<unknown method>] + ; gcrRegs -[rcx] + jmp G_M40104_IG08
...

realworld.run.windows.x64.checked.mch

-12 (-3.76%) : 19374.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)

@@ -10,72 +10,72 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> rbx class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04,T12] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [rbp-0x38] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04,T13] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> r8 class-hnd exact <System.String>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> r8 single-def "CASTCLASS eval op1"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V14 tmp6 [V14,T08] ( 3, 5.50) ref -> rsi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> rdi single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> r8 "field V05._current (fldOffset=0x8)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 20.50) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP -; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP +; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> rdi single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP -; V22 tmp14 [V22,T14] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x10)" P-INDEP +; V22 tmp14 [V22,T15] ( 2, 1 ) int -> r14 "field V11._version (fldOffset=0x14)" P-INDEP
; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V24 PSPSym [V24,T15] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V25 cse0 [V25,T05] ( 3, 12 ) int -> r13 "CSE - aggressive" -; V26 cse1 [V26,T09] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V25 cse0 [V25,T07] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V26 cse1 [V26,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V27 cse2 [V27,T10] ( 4, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x50], rsp
+ sub rsp, 56 + lea rbp, [rsp+0x60] + mov qword ptr [rbp-0x40], rsp
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=27 bbWeight=1 PerfScore 8.25
G_M53769_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0x40], rbx
+ mov gword ptr [rbp-0x38], rbx
; GC ptr vars +{V02} xor edx, edx
- mov dword ptr [rbp-0x38], edx
+ mov dword ptr [rbp-0x30], edx
;; size=9 bbWeight=1 PerfScore 2.25
-G_M53769_IG03: ; bbWeight=1, gcVars=0000000000010000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0
+G_M53769_IG03: ; bbWeight=1, gcVars=0000000000020000 {V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0
jne SHORT G_M53769_IG06
- lea rdx, [rbp-0x38]
+ lea rdx, [rbp-0x30]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x38]
+ movzx rcx, byte ptr [rbp-0x30]
call [<unknown method>] ; gcr arg pop 0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M53769_IG12
+ je G_M53769_IG11
;; size=41 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz mov rdx, rdi @@ -85,22 +85,23 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M53769_IG11
+ je SHORT G_M53769_IG10
mov rdi, rax mov r14d, dword ptr [rdi+0x14] xor r15d, r15d ;; size=33 bbWeight=0.50 PerfScore 2.62 G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- mov r13d, dword ptr [rdi+0x14] - cmp r14d, r13d - jne SHORT G_M53769_IG07 - cmp r15d, dword ptr [rdi+0x10] - jae SHORT G_M53769_IG08
+ mov ecx, dword ptr [rdi+0x14] + cmp r14d, ecx + jne SHORT G_M53769_IG09 + mov ecx, dword ptr [rdi+0x10] + cmp r15d, ecx + jae SHORT G_M53769_IG07
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M53769_IG09
+ jae SHORT G_M53769_IG08
mov edx, r15d mov r8, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[r8] @@ -112,7 +113,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0 jmp SHORT G_M53769_IG05
- ;; size=50 bbWeight=4 PerfScore 85.00
+ ;; size=51 bbWeight=4 PerfScore 82.00
G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rsi rdi] call [System.Threading.Monitor:ThrowLockTakenException()] @@ -121,26 +122,22 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M53769_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx]
- cmp r14d, r13d - jne SHORT G_M53769_IG10 - ;; size=5 bbWeight=4 PerfScore 5.00 -G_M53769_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx
- jmp SHORT G_M53769_IG12
+ jmp SHORT G_M53769_IG11
;; size=8 bbWeight=4 PerfScore 13.00
-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi] mov r8, rdi ; gcrRegs +[r8] @@ -155,75 +152,72 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)] ; gcrRegs -[rcx rdx rsi rdi r8] ; gcr arg pop 0
- jmp SHORT G_M53769_IG08
+ jmp SHORT G_M53769_IG07
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M53769_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53769_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG14
+ cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, gword ptr [rbp-0x40]
+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx] ; GC ptr vars -{V02} call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.00
-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M53769_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 64
+G_M53769_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 56
pop rbx pop rsi pop rdi
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M53769_IG16: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V16}
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M53769_IG15: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V17}
push rbp push r15 push r14
- push r13
push rdi push rsi push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70] - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M53769_IG17: ; bbWeight=0, gcVars=0000000000010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x38], 0 - je SHORT G_M53769_IG18 - mov rcx, gword ptr [rbp-0x40]
+ lea rbp, [rbp+0x60] + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M53769_IG16: ; bbWeight=0, gcVars=0000000000020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53769_IG17 + mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
- ; GC ptr vars -{V02 V16}
+ ; GC ptr vars -{V02 V17}
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53769_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

-18 (-3.75%) : 19547.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)

@@ -8,74 +8,74 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 11, 25 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.ML.Data.SimpleFileHandle> -; V01 loc0 [V01,T13] ( 4, 2 ) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object> -; V02 loc1 [V02 ] ( 5, 4 ) ubyte -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V00 this [V00,T03] ( 11, 25 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.ML.Data.SimpleFileHandle> +; V01 loc0 [V01,T14] ( 4, 2 ) ref -> [rbp-0x28] class-hnd EH-live spill-single-def <System.Object> +; V02 loc1 [V02 ] ( 5, 4 ) ubyte -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc2 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.IO.Stream> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V09 tmp4 [V09,T08] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V09 tmp4 [V09,T09] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.IO.Stream>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Stream>
-; V11 tmp6 [V11,T10] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp6 [V11,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
-;* V13 tmp8 [V13,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp8 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V15 tmp10 [V15,T03] ( 4, 24 ) ref -> [rbp-0x38] EH-live single-def "field V03._list (fldOffset=0x0)" P-INDEP
+; V15 tmp10 [V15,T04] ( 4, 24 ) ref -> [rbp-0x30] EH-live single-def "field V03._list (fldOffset=0x0)" P-INDEP
; V16 tmp11 [V16,T02] ( 6, 28 ) ref -> rsi "field V03._current (fldOffset=0x8)" P-INDEP
-; V17 tmp12 [V17,T00] ( 6, 41 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live "field V03._index (fldOffset=0x10)" P-INDEP -; V18 tmp13 [V18,T06] ( 3, 16 ) int -> [rbp-0x28] EH-live single-def "field V03._version (fldOffset=0x14)" P-INDEP -; V19 tmp14 [V19,T11] ( 3, 3 ) ref -> rbx single-def "field V12._list (fldOffset=0x0)" P-INDEP
+; V17 tmp12 [V17,T00] ( 6, 41 ) int -> [rbp-0x1C] do-not-enreg[Z] EH-live "field V03._index (fldOffset=0x10)" P-INDEP +; V18 tmp13 [V18,T08] ( 2, 8 ) int -> [rbp-0x20] EH-live single-def "field V03._version (fldOffset=0x14)" P-INDEP +; V19 tmp14 [V19,T12] ( 3, 3 ) ref -> rbx single-def "field V12._list (fldOffset=0x0)" P-INDEP
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V21 tmp16 [V21,T15] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP -; V22 tmp17 [V22,T14] ( 2, 2 ) int -> rsi single-def "field V12._version (fldOffset=0x14)" P-INDEP -; V23 tmp18 [V23,T09] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+;* V21 tmp16 [V21,T16] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP +; V22 tmp17 [V22,T15] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP +; V23 tmp18 [V23,T10] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V24 tmp19 [V24,T01] ( 3, 48 ) ref -> rcx "arr expr"
-; V25 PSPSym [V25,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V26 cse0 [V26,T05] ( 3, 24 ) int -> rsi "CSE - aggressive" -; V27 cse1 [V27,T12] ( 3, 3 ) ref -> rax "CSE - aggressive"
+; V25 PSPSym [V25,T17] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V26 cse0 [V26,T07] ( 2, 16 ) int -> rcx "CSE - aggressive" +; V27 cse1 [V27,T05] ( 2, 16 ) int -> rcx "CSE - aggressive" +; V28 cse2 [V28,T13] ( 3, 3 ) ref -> rax "CSE - aggressive"
;
-; Lcl frame size = 72
+; Lcl frame size = 80
G_M27267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rdi
push rsi push rbx
- sub rsp, 72
+ sub rsp, 80
lea rbp, [rsp+0x60] xor eax, eax
- mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x18], rax
mov qword ptr [rbp-0x40], rsp mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=27 bbWeight=1 PerfScore 8.00 -G_M27267_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=26 bbWeight=1 PerfScore 7.00 +G_M27267_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x18] ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x30], rdx
+ mov gword ptr [rbp-0x28], rdx
; GC ptr vars +{V01} ;; size=8 bbWeight=1 PerfScore 3.00
-G_M27267_IG03: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG03: ; bbWeight=1, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx]
- cmp byte ptr [rbp-0x20], 0
+ cmp byte ptr [rbp-0x18], 0
jne G_M27267_IG10
- lea rdx, [rbp-0x20] - mov rcx, gword ptr [rbp-0x30]
+ lea rdx, [rbp-0x18] + mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x20]
+ movzx rcx, byte ptr [rbp-0x18]
call [<unknown method>] ; gcr arg pop 0 mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp gword ptr [rcx+0x28], 0
- je G_M27267_IG18
+ je G_M27267_IG16
mov rax, gword ptr [rcx+0x20] ; gcrRegs +[rax] test rax, rax @@ -117,37 +117,36 @@ G_M27267_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov rbx, gword ptr [rcx+0x28] ; gcrRegs +[rbx]
- mov esi, dword ptr [rbx+0x14] - mov gword ptr [rbp-0x38], rbx
+ mov eax, dword ptr [rbx+0x14] + mov gword ptr [rbp-0x30], rbx
; GC ptr vars +{V15}
- xor eax, eax - mov dword ptr [rbp-0x24], eax - mov dword ptr [rbp-0x28], esi
+ xor edx, edx + mov dword ptr [rbp-0x1C], edx + mov dword ptr [rbp-0x20], eax
;; size=23 bbWeight=1 PerfScore 8.25
-G_M27267_IG07: ; bbWeight=8, gcVars=0000000000002018 {V00 V01 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG07: ; bbWeight=8, gcVars=0000000000004018 {V00 V01 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rbx]
- mov rbx, gword ptr [rbp-0x38]
+ mov rbx, gword ptr [rbp-0x30]
; gcrRegs +[rbx]
- mov esi, dword ptr [rbx+0x14] - mov edi, dword ptr [rbp-0x28] - cmp edi, esi
+ mov ecx, dword ptr [rbx+0x14] + cmp dword ptr [rbp-0x20], ecx
jne SHORT G_M27267_IG11
- mov ecx, dword ptr [rbp-0x24] - cmp ecx, dword ptr [rbx+0x10] - jae SHORT G_M27267_IG12
+ mov ecx, dword ptr [rbx+0x10] + cmp dword ptr [rbp-0x1C], ecx + jae SHORT G_M27267_IG14
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08]
- cmp dword ptr [rbp-0x24], eax - jae SHORT G_M27267_IG14 - mov eax, dword ptr [rbp-0x24]
+ cmp dword ptr [rbp-0x1C], eax + jae SHORT G_M27267_IG12 + mov eax, dword ptr [rbp-0x1C]
mov rsi, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[rsi]
- mov ecx, dword ptr [rbp-0x24]
+ mov ecx, dword ptr [rbp-0x1C]
; gcrRegs -[rcx] inc ecx
- mov dword ptr [rbp-0x24], ecx - ;; size=50 bbWeight=8 PerfScore 180.00
+ mov dword ptr [rbp-0x1C], ecx + ;; size=48 bbWeight=8 PerfScore 186.00
G_M27267_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rsi, rsi je SHORT G_M27267_IG09 @@ -169,49 +168,38 @@ G_M27267_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp SHORT G_M27267_IG07 ;; size=15 bbWeight=4 PerfScore 37.00
-G_M27267_IG10: ; bbWeight=0, gcVars=0000000000002000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27267_IG10: ; bbWeight=0, gcVars=0000000000004000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx] ; GC ptr vars -{V00 V15} call [System.Threading.Monitor:ThrowLockTakenException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M27267_IG11: ; bbWeight=8, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27267_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M27267_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M27267_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + nop + jmp SHORT G_M27267_IG16 + ;; size=3 bbWeight=0 PerfScore 0.00 +G_M27267_IG14: ; bbWeight=8, gcVars=0000000000004008 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00}
- cmp edi, esi - jne SHORT G_M27267_IG15 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M27267_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx ; gcrRegs +[rcx] mov rbx, gword ptr [rbp+0x10] ; gcrRegs +[rbx] mov gword ptr [rbx+0x28], rcx cmp byte ptr [rbx+0x30], 0
- je SHORT G_M27267_IG18
+ je SHORT G_M27267_IG16
;; size=16 bbWeight=8 PerfScore 50.00
-G_M27267_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27267_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- jmp SHORT G_M27267_IG17 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M27267_IG14: ; bbWeight=0, gcVars=0000000000002000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - ; GC ptr vars -{V00} - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M27267_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M27267_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - nop - jmp SHORT G_M27267_IG18 - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M27267_IG17: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - ; GC ptr vars +{V00}
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] ; GC ptr vars -{V00} @@ -220,126 +208,117 @@ G_M27267_IG17: ; bbWeight=1, gcVars=0000000000002010 {V00 V01}, gcrefRegs ; gcr arg pop 0 nop ;; size=11 bbWeight=1 PerfScore 5.25
-G_M27267_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbp-0x20], 0 - je SHORT G_M27267_IG19 - mov rcx, gword ptr [rbp-0x30]
+G_M27267_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp byte ptr [rbp-0x18], 0 + je SHORT G_M27267_IG17 + mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx] ; GC ptr vars -{V01} call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=1 PerfScore 5.00
-G_M27267_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27267_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M27267_IG20: ; bbWeight=1, epilog, nogc, extend
...

-25 (-3.69%) : 37920.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)

@@ -9,67 +9,67 @@ ; Final local variable assignments ; ; V00 this [V00,T07] ( 18, 20 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Management.Automation.Internal.PipelineProcessor>
-; V01 arg1 [V01,T08] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T09] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
-; V03 loc1 [V03,T26] ( 2, 0 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <System.Runtime.ExceptionServices.ExceptionDispatchInfo> -; V04 loc2 [V04,T16] ( 3, 2 ) ref -> [rbp-0x38] do-not-enreg[M] class-hnd EH-live <System.Management.Automation.CommandProcessorBase> -; V05 loc3 [V05,T17] ( 2, 2 ) ref -> rax class-hnd single-def <System.Management.Automation.CommandProcessorBase> -; V06 loc4 [V06,T22] ( 3, 0 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T27] ( 2, 0 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Runtime.ExceptionServices.ExceptionDispatchInfo> +; V04 loc2 [V04,T17] ( 3, 2 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <System.Management.Automation.CommandProcessorBase> +; V05 loc3 [V05,T18] ( 2, 2 ) ref -> rax class-hnd single-def <System.Management.Automation.CommandProcessorBase> +; V06 loc4 [V06,T23] ( 3, 0 ) ref -> rax class-hnd single-def <<unknown class>>
;* V07 loc5 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Internal.PipelineProcessor]>
-; V08 loc6 [V08,T19] ( 2, 1 ) ref -> [rbp-0x40] must-init class-hnd EH-live single-def <System.Array>
+; V08 loc6 [V08,T20] ( 2, 1 ) ref -> [rbp-0x38] must-init class-hnd EH-live single-def <System.Array>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Management.Automation.Internal.Pipe>
-; V12 tmp2 [V12,T27] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp2 [V12,T28] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V14 tmp4 [V14,T23] ( 3, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
+; V14 tmp4 [V14,T24] ( 3, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp6 [V16,T24] ( 3, 0 ) ref -> rdx -; V17 tmp7 [V17,T25] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V18 tmp8 [V18,T15] ( 2, 2 ) ubyte -> rdx "Inline return value spill temp"
+; V16 tmp6 [V16,T25] ( 3, 0 ) ref -> rdx +; V17 tmp7 [V17,T26] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V18 tmp8 [V18,T16] ( 2, 2 ) ubyte -> rdx "Inline return value spill temp"
;* V19 tmp9 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Management.Automation.Runspaces.LocalPipeline> ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.Runspaces.PipelineStopper>
-; V21 tmp11 [V21,T09] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
+; V21 tmp11 [V21,T10] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.Runspaces.PipelineReader`1[System.Object]>
-; V23 tmp13 [V23,T11] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V23 tmp13 [V23,T12] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.Internal.PipelineProcessor]>
-;* V25 tmp15 [V25,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp15 [V25,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V27 tmp17 [V27,T02] ( 4, 25 ) ref -> rbx single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V28 tmp18 [V28,T04] ( 2, 12 ) ref -> rcx "field V07._current (fldOffset=0x8)" P-INDEP ; V29 tmp19 [V29,T00] ( 6, 41 ) int -> r14 "field V07._index (fldOffset=0x10)" P-INDEP
-; V30 tmp20 [V30,T05] ( 3, 17 ) int -> rdi single-def "field V07._version (fldOffset=0x14)" P-INDEP -; V31 tmp21 [V31,T12] ( 3, 3 ) ref -> rbx single-def "field V24._list (fldOffset=0x0)" P-INDEP
+; V30 tmp20 [V30,T08] ( 2, 9 ) int -> rdi single-def "field V07._version (fldOffset=0x14)" P-INDEP +; V31 tmp21 [V31,T13] ( 3, 3 ) ref -> rbx single-def "field V24._list (fldOffset=0x0)" P-INDEP
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._current (fldOffset=0x8)" P-INDEP
-;* V33 tmp23 [V33,T20] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP -; V34 tmp24 [V34,T18] ( 2, 2 ) int -> rdi single-def "field V24._version (fldOffset=0x14)" P-INDEP -; V35 tmp25 [V35,T10] ( 3, 6 ) ref -> rax single-def "arr expr"
+;* V33 tmp23 [V33,T21] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP +; V34 tmp24 [V34,T19] ( 2, 2 ) int -> rdi single-def "field V24._version (fldOffset=0x14)" P-INDEP +; V35 tmp25 [V35,T11] ( 3, 6 ) ref -> rax single-def "arr expr"
; V36 tmp26 [V36,T01] ( 3, 48 ) ref -> rcx "arr expr"
-; V37 PSPSym [V37,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V38 cse0 [V38,T03] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V39 cse1 [V39,T13] ( 3, 3 ) ref -> rdx "CSE - moderate" -; V40 cse2 [V40,T14] ( 3, 3 ) ref -> rbx "CSE - moderate"
+; V37 PSPSym [V37,T22] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" +; V38 cse0 [V38,T06] ( 2, 16 ) int -> rcx "CSE - aggressive" +; V39 cse1 [V39,T03] ( 2, 16 ) int -> rcx "CSE - aggressive" +; V40 cse2 [V40,T14] ( 3, 3 ) ref -> rdx "CSE - moderate" +; V41 cse3 [V41,T15] ( 3, 3 ) ref -> rbx "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 64
G_M17519_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x70]
+ sub rsp, 64 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x40], rax - mov qword ptr [rbp-0x50], rsp
+ mov qword ptr [rbp-0x38], rax + mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 10.25 -G_M17519_IG02: ; bbWeight=1, gcVars=0000000000080080 {V00 V08}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 9.25 +G_M17519_IG02: ; bbWeight=1, gcVars=0000000000100080 {V00 V08}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] ; GC ptr vars +{V08} mov rdx, gword ptr [rcx+0x60] @@ -80,15 +80,15 @@ G_M17519_IG02: ; bbWeight=1, gcVars=0000000000080080 {V00 V08}, gcrefRegs movzx rdx, byte ptr [rdx+0x20] ; gcrRegs -[rdx] test edx, edx
- jne G_M17519_IG22
+ jne G_M17519_IG21
;; size=28 bbWeight=1 PerfScore 8.50 G_M17519_IG03: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref xor rdx, rdx ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x38], rdx
+ mov gword ptr [rbp-0x30], rdx
; GC ptr vars +{V04} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M17519_IG04: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17519_IG04: ; bbWeight=1, gcVars=0000000000120080 {V00 V04 V08}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdx] mov rdx, 0xD1FFAB1E ; const ptr cmp rbx, gword ptr [rdx] @@ -136,7 +136,7 @@ G_M17519_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp SHORT G_M17519_IG08 ;; size=21 bbWeight=1 PerfScore 6.50
-G_M17519_IG06: ; bbWeight=0, gcVars=0000000000080080 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG06: ; bbWeight=0, gcVars=0000000000100080 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04} call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -146,13 +146,13 @@ G_M17519_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M17519_IG08: ; bbWeight=1, gcVars=0000000000090080 {V00 V04 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V04 V16}
+G_M17519_IG08: ; bbWeight=1, gcVars=0000000000120080 {V00 V04 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V04 V17}
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x38]
+ mov rdx, gword ptr [rbp-0x30]
; gcrRegs +[rdx]
- ; GC ptr vars -{V04 V16}
+ ; GC ptr vars -{V04 V17}
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 @@ -169,7 +169,7 @@ G_M17519_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, gword ptr [rsi+0x10] ; gcrRegs +[rbx] test rbx, rbx
- je SHORT G_M17519_IG15
+ je SHORT G_M17519_IG14
mov edi, dword ptr [rbx+0x14] xor r14d, r14d jmp SHORT G_M17519_IG11 @@ -184,11 +184,12 @@ G_M17519_IG10: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=10 bbWeight=4 PerfScore 25.00 G_M17519_IG11: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rbx+0x14] - cmp edi, r15d - jne SHORT G_M17519_IG14 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M17519_IG15
+ mov ecx, dword ptr [rbx+0x14] + cmp edi, ecx + jne SHORT G_M17519_IG13 + mov ecx, dword ptr [rbx+0x10] + cmp r14d, ecx + jae SHORT G_M17519_IG14
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] cmp r14d, dword ptr [rcx+0x08] @@ -197,7 +198,7 @@ G_M17519_IG11: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov rcx, gword ptr [rcx+8*rdx+0x10] inc r14d jmp SHORT G_M17519_IG10
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=38 bbWeight=8 PerfScore 136.00
G_M17519_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx rsi] call CORINFO_HELP_RNGCHKFAIL @@ -210,59 +211,54 @@ G_M17519_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr int3 ;; size=7 bbWeight=0 PerfScore 0.00 G_M17519_IG14: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r15d - jne SHORT G_M17519_IG13 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M17519_IG15: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x40], rax - jmp SHORT G_M17519_IG18
+ mov gword ptr [rbp-0x38], rax + jmp SHORT G_M17519_IG17
;; size=15 bbWeight=8 PerfScore 50.00
-G_M17519_IG16: ; bbWeight=0, gcVars=0000000004080080 {V00 V03 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG15: ; bbWeight=0, gcVars=0000000008100080 {V00 V03 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rsi]
- ; GC ptr vars +{V03}
+ ; GC ptr vars +{V03 V27}
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M17519_IG17: ; bbWeight=0, gcVars=0000000004000080 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars -{V08}
+G_M17519_IG16: ; bbWeight=0, gcVars=0000000008000080 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V08 V27}
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] ; GC ptr vars -{V00} call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- jmp SHORT G_M17519_IG23
+ jmp SHORT G_M17519_IG22
;; size=12 bbWeight=0 PerfScore 0.00
-G_M17519_IG18: ; bbWeight=1, gcVars=0000000000080080 {V00 V08}, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG17: ; bbWeight=1, gcVars=0000000000100080 {V00 V08}, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax rsi] ; GC ptr vars -{V03} +{V00 V08} mov rcx, rsp
- call G_M17519_IG37
+ call G_M17519_IG36
; gcrRegs -[rax rsi] ;; size=8 bbWeight=1 PerfScore 1.25
-G_M17519_IG19: ; bbWeight=1, nogc, extend
+G_M17519_IG18: ; bbWeight=1, nogc, extend
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M17519_IG20: ; bbWeight=1, gcVars=0000000000080000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17519_IG19: ; bbWeight=1, gcVars=0000000000100000 {V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
- mov rax, gword ptr [rbp-0x40]
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M17519_IG21: ; bbWeight=1, epilog, nogc, extend - add rsp, 72
+G_M17519_IG20: ; bbWeight=1, epilog, nogc, extend + add rsp, 64
pop rbx pop rsi pop rdi pop r14
- pop r15
pop rbp ret ...

+2 (+1.94%) : 38226.dasm - System.Management.Automation.ModuleIntrinsics:PatternContainsWildcard(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]):ubyte (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 4, 3.50) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]>
+; V00 arg0 [V00,T07] ( 4, 3.50) ref -> rcx class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.WildcardPattern]>
-;* V02 loc1 [V02,T10] ( 0, 0 ) ubyte -> zero-ref
+;* V02 loc1 [V02,T11] ( 0, 0 ) ubyte -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.WildcardPattern]> ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> @@ -19,13 +19,14 @@ ; V08 tmp5 [V08,T02] ( 4, 12.50) ref -> rbx single-def "field V01._list (fldOffset=0x0)" P-INDEP ; V09 tmp6 [V09,T04] ( 2, 6 ) ref -> rcx "field V01._current (fldOffset=0x8)" P-INDEP ; V10 tmp7 [V10,T00] ( 6, 20.50) int -> rdi "field V01._index (fldOffset=0x10)" P-INDEP
-; V11 tmp8 [V11,T07] ( 2, 4.50) int -> rsi single-def "field V01._version (fldOffset=0x14)" P-INDEP -; V12 tmp9 [V12,T08] ( 3, 1.50) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T08] ( 2, 4.50) int -> rsi single-def "field V01._version (fldOffset=0x14)" P-INDEP +; V12 tmp9 [V12,T09] ( 3, 1.50) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x8)" P-INDEP
-;* V14 tmp11 [V14,T11] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x10)" P-INDEP -; V15 tmp12 [V15,T09] ( 2, 1 ) int -> rsi single-def "field V04._version (fldOffset=0x14)" P-INDEP
+;* V14 tmp11 [V14,T12] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x10)" P-INDEP +; V15 tmp12 [V15,T10] ( 2, 1 ) int -> rsi single-def "field V04._version (fldOffset=0x14)" P-INDEP
; V16 tmp13 [V16,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V17 cse0 [V17,T03] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V17 cse0 [V17,T06] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V18 cse1 [V18,T03] ( 2, 8 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -56,7 +57,8 @@ G_M6619_IG04: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, jne SHORT G_M6619_IG06 ;; size=14 bbWeight=2 PerfScore 12.50 G_M6619_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbx+0x14]
+ mov ecx, dword ptr [rbx+0x14] + cmp esi, ecx
jne SHORT G_M6619_IG11 mov ecx, dword ptr [rbx+0x10] cmp edi, ecx @@ -69,7 +71,7 @@ G_M6619_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre mov rcx, gword ptr [rcx+8*rax+0x10] inc edi jmp SHORT G_M6619_IG04
- ;; size=32 bbWeight=4 PerfScore 71.00
+ ;; size=34 bbWeight=4 PerfScore 68.00
G_M6619_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx] mov eax, 1 @@ -101,7 +103,7 @@ G_M6619_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 103, prolog size 7, PerfScore 93.25, instruction count 41, allocated bytes for code 103 (MethodHash=a116e624) for method System.Management.Automation.ModuleIntrinsics:PatternContainsWildcard(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]):ubyte (FullOpts)
+; Total bytes of code 105, prolog size 7, PerfScore 90.25, instruction count 42, allocated bytes for code 105 (MethodHash=a116e624) for method System.Management.Automation.ModuleIntrinsics:PatternContainsWildcard(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+2 (+2.25%) : 35005.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> -; V01 arg1 [V01,T07] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
+; V00 this [V00,T07] ( 3, 4 ) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler> +; V01 arg1 [V01,T08] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -19,13 +19,14 @@ ; V08 tmp4 [V08,T02] ( 4, 12.50) ref -> rsi single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V09 tmp5 [V09,T03] ( 3, 8 ) ref -> rax "field V02._current (fldOffset=0x8)" P-INDEP ; V10 tmp6 [V10,T00] ( 6, 20.50) int -> rbp "field V02._index (fldOffset=0x10)" P-INDEP
-; V11 tmp7 [V11,T08] ( 2, 4.50) int -> rdi "field V02._version (fldOffset=0x14)" P-INDEP -; V12 tmp8 [V12,T09] ( 3, 1.50) ref -> rsi single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V11 tmp7 [V11,T09] ( 2, 4.50) int -> rdi "field V02._version (fldOffset=0x14)" P-INDEP +; V12 tmp8 [V12,T10] ( 3, 1.50) ref -> rsi single-def "field V05._list (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._current (fldOffset=0x8)" P-INDEP
-;* V14 tmp10 [V14,T11] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP -; V15 tmp11 [V15,T10] ( 2, 1 ) int -> rdi "field V05._version (fldOffset=0x14)" P-INDEP
+;* V14 tmp10 [V14,T12] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP +; V15 tmp11 [V15,T11] ( 2, 1 ) int -> rdi "field V05._version (fldOffset=0x14)" P-INDEP
; V16 tmp12 [V16,T01] ( 3, 24 ) ref -> rdx "arr expr"
-; V17 cse0 [V17,T04] ( 2, 8 ) int -> rdx "CSE - aggressive"
+; V17 cse0 [V17,T06] ( 2, 8 ) int -> rdx "CSE - aggressive" +; V18 cse1 [V18,T04] ( 2, 8 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -61,7 +62,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=10 bbWeight=2 PerfScore 10.50 G_M37225_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, dword ptr [rsi+0x14]
+ mov edx, dword ptr [rsi+0x14] + cmp edi, edx
jne SHORT G_M37225_IG08 mov edx, dword ptr [rsi+0x10] cmp ebp, edx @@ -75,7 +77,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rax] inc ebp jmp SHORT G_M37225_IG04
- ;; size=32 bbWeight=4 PerfScore 71.00
+ ;; size=34 bbWeight=4 PerfScore 68.00
G_M37225_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdx rbx rsi] add rsp, 40 @@ -95,7 +97,7 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 89, prolog size 8, PerfScore 102.50, instruction count 36, allocated bytes for code 89 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
+; Total bytes of code 91, prolog size 8, PerfScore 99.50, instruction count 37, allocated bytes for code 91 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
; ============================================================ Unwind Info:

+12 (+7.50%) : 38272.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)

@@ -8,42 +8,44 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Management.Automation.PSModuleInfo> -; V01 arg1 [V01,T00] ( 11, 32 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]>
+; V00 arg0 [V00,T10] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Management.Automation.PSModuleInfo> +; V01 arg1 [V01,T00] ( 10, 28 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSModuleInfo]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSModuleInfo]> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]>
-; V09 tmp6 [V09,T07] ( 3, 8.50) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp7 [V10,T05] ( 4, 9 ) int -> r14 single-def "Inline stloc first use temp" -;* V11 tmp8 [V11,T12] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP -; V12 tmp9 [V12,T04] ( 2, 6 ) ref -> rcx "field V02._current (fldOffset=0x8)" P-INDEP
+; V09 tmp6 [V09,T08] ( 3, 8.50) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V10 tmp7 [V10,T06] ( 4, 9 ) int -> r15 single-def "Inline stloc first use temp" +;* V11 tmp8 [V11,T13] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 6 ) ref -> rcx "field V02._current (fldOffset=0x8)" P-INDEP
; V13 tmp10 [V13,T01] ( 6, 21 ) int -> rbp "field V02._index (fldOffset=0x10)" P-INDEP
-; V14 tmp11 [V14,T06] ( 2, 9 ) int -> rdi single-def "field V02._version (fldOffset=0x14)" P-INDEP -; V15 tmp12 [V15,T10] ( 2, 2 ) ref -> rcx single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V14 tmp11 [V14,T07] ( 2, 9 ) int -> rdi single-def "field V02._version (fldOffset=0x14)" P-INDEP +; V15 tmp12 [V15,T11] ( 2, 2 ) ref -> rcx single-def "field V05._list (fldOffset=0x0)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._current (fldOffset=0x8)" P-INDEP
-;* V17 tmp14 [V17,T13] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x10)" P-INDEP -; V18 tmp15 [V18,T11] ( 2, 2 ) int -> rdi single-def "field V05._version (fldOffset=0x14)" P-INDEP
+;* V17 tmp14 [V17,T14] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x10)" P-INDEP +; V18 tmp15 [V18,T12] ( 2, 2 ) int -> rdi single-def "field V05._version (fldOffset=0x14)" P-INDEP
; V19 tmp16 [V19,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V20 cse0 [V20,T03] ( 3, 12 ) int -> r14 "CSE - aggressive"
+; V20 cse0 [V20,T04] ( 3, 12 ) int -> r15 "CSE - aggressive" +; V21 cse1 [V21,T03] ( 3, 20 ) int -> r14 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M24725_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=18 bbWeight=1 PerfScore 6.75
G_M24725_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -64,12 +66,13 @@ G_M24725_IG03: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 jne SHORT G_M24725_IG09 ;; size=26 bbWeight=2 PerfScore 23.00 G_M24725_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, dword ptr [rbx+0x14]
+ mov r14d, dword ptr [rbx+0x14] + cmp edi, r14d
jne SHORT G_M24725_IG12
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=9 bbWeight=8 PerfScore 26.00
G_M24725_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [rbx+0x10] - cmp ebp, r14d
+ mov r15d, dword ptr [rbx+0x10] + cmp ebp, r15d
jae SHORT G_M24725_IG06 mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -82,16 +85,17 @@ G_M24725_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ;; size=29 bbWeight=4 PerfScore 55.00 G_M24725_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx]
- inc dword ptr [rbx+0x14]
+ inc r14d + mov dword ptr [rbx+0x14], r14d
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], r14d
+ cmp dword ptr [rcx+0x08], r15d
jbe SHORT G_M24725_IG08
- ;; size=13 bbWeight=4 PerfScore 36.00
+ ;; size=17 bbWeight=4 PerfScore 29.00
G_M24725_IG07: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- lea edx, [r14+0x01]
+ lea edx, [r15+0x01]
mov dword ptr [rbx+0x10], edx
- mov edx, r14d
+ mov edx, r15d
lea rcx, bword ptr [rcx+8*rdx+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -116,14 +120,15 @@ G_M24725_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M24725_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi pop r14
+ pop r15
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 4.25
G_M24725_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -134,7 +139,7 @@ G_M24725_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 10, PerfScore 165.00, instruction count 56, allocated bytes for code 160 (MethodHash=b52a9f6a) for method System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 153.50, instruction count 60, allocated bytes for code 172 (MethodHash=b52a9f6a) for method System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
; ============================================================ Unwind Info: @@ -142,14 +147,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 7
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

smoke_tests.nativeaot.windows.x64.checked.mch

-10 (-3.21%) : 2594.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> rsi single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> rsi
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> rsi single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> rsi
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> r10 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> r10 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rdx "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rdx "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r14 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,38 +78,38 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r8 "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V72 cse1 [V72,T26] ( 2, 16 ) int -> r8 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V73 cse2 [V73,T27] ( 2, 16 ) int -> r8 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 64
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x70]
+ sub rsp, 64 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rcx mov rsi, rdx
- ;; size=29 bbWeight=1 PerfScore 8.50
+ ;; size=27 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75 G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
mov rdx, rbx call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; gcr arg pop 0 cmp byte ptr [rsi+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx] mov edi, dword ptr [rbx+0x14] @@ -118,9 +118,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=29 bbWeight=1 PerfScore 12.00 G_M19804_IG04: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8]
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, bword ptr [rbp-0x30]
; byrRegs +[rcx]
- mov edx, dword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x28]
test r8, r8 jne SHORT G_M19804_IG05 xor rax, rax @@ -146,14 +146,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0003 {rax rc ; byrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=23 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rbx+0x14] - cmp edi, r15d - jne SHORT G_M19804_IG10 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov r8d, dword ptr [rbx+0x14] + cmp edi, r8d + jne SHORT G_M19804_IG09 + mov r8d, dword ptr [rbx+0x10] + cmp r14d, r8d + jae SHORT G_M19804_IG10
mov r8, gword ptr [rbx+0x08] ; gcrRegs +[r8] cmp r14d, dword ptr [r8+0x08] @@ -162,7 +163,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8, gword ptr [r8+8*rcx+0x10] inc r14d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=41 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx r8] call CORINFO_HELP_RNGCHKFAIL @@ -174,13 +175,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp edi, r15d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx]
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -190,9 +187,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, dword ptr [rbx+0x10] mov r8d, dword ptr [rcx+0x08] cmp r8d, edx
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=31 bbWeight=8 PerfScore 110.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
lea r8d, [rdx+0x01] mov dword ptr [rbx+0x10], r8d mov edx, edx @@ -204,9 +201,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=25 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -217,33 +214,31 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rcx, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 72
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 64
pop rbx pop rsi pop rdi pop r14
- pop r15
pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 40
...

-10 (-3.21%) : 22966.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> rsi single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> rsi
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> rsi single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> rsi
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> r10 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> r10 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rdx "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rdx "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r14 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,38 +78,38 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r8 "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V72 cse1 [V72,T26] ( 2, 16 ) int -> r8 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V73 cse2 [V73,T27] ( 2, 16 ) int -> r8 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 64
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x70]
+ sub rsp, 64 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rcx mov rsi, rdx
- ;; size=29 bbWeight=1 PerfScore 8.50
+ ;; size=27 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75 G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
mov rdx, rbx call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; gcr arg pop 0 cmp byte ptr [rsi+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx] mov edi, dword ptr [rbx+0x14] @@ -118,9 +118,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=29 bbWeight=1 PerfScore 12.00 G_M19804_IG04: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8]
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, bword ptr [rbp-0x30]
; byrRegs +[rcx]
- mov edx, dword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x28]
test r8, r8 jne SHORT G_M19804_IG05 xor rax, rax @@ -146,14 +146,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0003 {rax rc ; byrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=23 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rbx+0x14] - cmp edi, r15d - jne SHORT G_M19804_IG10 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov r8d, dword ptr [rbx+0x14] + cmp edi, r8d + jne SHORT G_M19804_IG09 + mov r8d, dword ptr [rbx+0x10] + cmp r14d, r8d + jae SHORT G_M19804_IG10
mov r8, gword ptr [rbx+0x08] ; gcrRegs +[r8] cmp r14d, dword ptr [r8+0x08] @@ -162,7 +163,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8, gword ptr [r8+8*rcx+0x10] inc r14d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=41 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx r8] call CORINFO_HELP_RNGCHKFAIL @@ -174,13 +175,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp edi, r15d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx]
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -190,9 +187,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, dword ptr [rbx+0x10] mov r8d, dword ptr [rcx+0x08] cmp r8d, edx
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=31 bbWeight=8 PerfScore 110.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
lea r8d, [rdx+0x01] mov dword ptr [rbx+0x10], r8d mov edx, edx @@ -204,9 +201,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=25 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -217,33 +214,31 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rcx, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 72
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 64
pop rbx pop rsi pop rdi pop r14
- pop r15
pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 40
...

-10 (-3.21%) : 17683.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T18] ( 3, 3 ) long -> rbx single-def -; V01 arg1 [V01,T19] ( 3, 3 ) long -> rsi single-def -; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> -; V03 loc1 [V03,T20] ( 4, 11 ) long -> rsi
+; V00 arg0 [V00,T19] ( 3, 3 ) long -> rbx single-def +; V01 arg1 [V01,T20] ( 3, 3 ) long -> rsi single-def +; V02 loc0 [V02 ] ( 4, 17 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> +; V03 loc1 [V03,T21] ( 4, 11 ) long -> rsi
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -18,14 +18,14 @@ ; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> r10 "Inlining Arg" -; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> r10 "Inlining Arg" +; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> rax "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" @@ -39,30 +39,30 @@ ;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp28 [V35,T21] ( 4, 18 ) int -> rdx "Inline stloc first use temp" -; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" -; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP -; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp28 [V35,T22] ( 4, 18 ) int -> rdx "Inline stloc first use temp" +; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp30 [V37 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar" +; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V39 tmp32 [V39 ] ( 3, 13 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> rbx single-def "field V04._list (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r8 "field V04._current (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r14 "field V04._index (fldOffset=0x10)" P-INDEP
-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP -; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP -; V45 tmp38 [V45,T15] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> rdi "field V04._version (fldOffset=0x14)" P-INDEP +; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP +; V45 tmp38 [V45,T16] ( 2, 8 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> rbx single-def "field V13._list (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x8)" P-INDEP
-;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP -; V51 tmp44 [V51,T25] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
+;* V50 tmp43 [V50,T28] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x10)" P-INDEP +; V51 tmp44 [V51,T26] ( 2, 2 ) int -> rdi "field V13._version (fldOffset=0x14)" P-INDEP
; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> rax "field V14._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP -; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP -; V55 tmp48 [V55,T16] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> r10 "field V14._length (fldOffset=0x8)" P-INDEP +; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP +; V55 tmp48 [V55,T17] ( 2, 8 ) int -> r10 "field V15._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP @@ -78,38 +78,38 @@ ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r8 "arr expr"
-; V71 cse0 [V71,T04] ( 3, 24 ) int -> r15 "CSE - aggressive" -; V72 cse1 [V72,T26] ( 2, 16 ) int -> r8 "CSE - moderate"
+; V71 cse0 [V71,T09] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V72 cse1 [V72,T04] ( 2, 16 ) int -> r8 "CSE - aggressive" +; V73 cse2 [V73,T27] ( 2, 16 ) int -> r8 "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 64
G_M19804_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x70]
+ sub rsp, 64 + lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rcx mov rsi, rdx
- ;; size=29 bbWeight=1 PerfScore 8.50
+ ;; size=27 bbWeight=1 PerfScore 7.50
G_M19804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75 G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
mov rdx, rbx call System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpanFromNullTerminated(ulong):System.ReadOnlySpan`1[ushort] ; gcr arg pop 0 cmp byte ptr [rsi+0x08], 0
- je SHORT G_M19804_IG11
+ je SHORT G_M19804_IG10
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx] mov edi, dword ptr [rbx+0x14] @@ -118,9 +118,9 @@ G_M19804_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=29 bbWeight=1 PerfScore 12.00 G_M19804_IG04: ; bbWeight=4, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8]
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, bword ptr [rbp-0x30]
; byrRegs +[rcx]
- mov edx, dword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x28]
test r8, r8 jne SHORT G_M19804_IG05 xor rax, rax @@ -146,14 +146,15 @@ G_M19804_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0003 {rax rc ; byrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M19804_IG14
+ jne SHORT G_M19804_IG13
;; size=23 bbWeight=4 PerfScore 17.00 G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rbx+0x14] - cmp edi, r15d - jne SHORT G_M19804_IG10 - cmp r14d, dword ptr [rbx+0x10] - jae SHORT G_M19804_IG11
+ mov r8d, dword ptr [rbx+0x14] + cmp edi, r8d + jne SHORT G_M19804_IG09 + mov r8d, dword ptr [rbx+0x10] + cmp r14d, r8d + jae SHORT G_M19804_IG10
mov r8, gword ptr [rbx+0x08] ; gcrRegs +[r8] cmp r14d, dword ptr [r8+0x08] @@ -162,7 +163,7 @@ G_M19804_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8, gword ptr [r8+8*rcx+0x10] inc r14d jmp SHORT G_M19804_IG04
- ;; size=38 bbWeight=8 PerfScore 142.00
+ ;; size=41 bbWeight=8 PerfScore 136.00
G_M19804_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx r8] call CORINFO_HELP_RNGCHKFAIL @@ -174,13 +175,9 @@ G_M19804_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M19804_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp edi, r15d - jne SHORT G_M19804_IG09 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, gword ptr [rsi] ; gcrRegs +[rbx]
- lea rcx, [rbp-0x38]
+ lea rcx, [rbp-0x30]
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 @@ -190,9 +187,9 @@ G_M19804_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, dword ptr [rbx+0x10] mov r8d, dword ptr [rcx+0x08] cmp r8d, edx
- jbe SHORT G_M19804_IG13
+ jbe SHORT G_M19804_IG12
;; size=31 bbWeight=8 PerfScore 110.00
-G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19804_IG11: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
lea r8d, [rdx+0x01] mov dword ptr [rbx+0x10], r8d mov edx, edx @@ -204,9 +201,9 @@ G_M19804_IG12: ; bbWeight=1, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M19804_IG14
+ jmp SHORT G_M19804_IG13
;; size=25 bbWeight=1 PerfScore 6.00
-G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M19804_IG12: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rax rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -217,33 +214,31 @@ G_M19804_IG13: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=12 bbWeight=1 PerfScore 1.75
-G_M19804_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rcx, [rbp-0x48]
+G_M19804_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rcx, [rbp-0x40]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT ; gcr arg pop 0 nop ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19804_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 72
+G_M19804_IG14: ; bbWeight=1, epilog, nogc, extend + add rsp, 64
pop rbx pop rsi pop rdi pop r14
- pop r15
pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M19804_IG16: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M19804_IG15: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r15
push r14 push rdi push rsi push rbx
- sub rsp, 40
...

+2 (+1.02%) : 2575.dasm - System.Runtime.InteropServices.ComWrappers:DetachNonPromotedObjects() (FullOpts)

@@ -9,33 +9,34 @@ ; ;* V00 loc0 [V00 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]> ;* V01 loc1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.InteropServices.GCHandle>
-; V02 loc2 [V02,T05] ( 5, 10 ) ref -> rbp class-hnd exact <System.Runtime.InteropServices.ComWrappers+ReferenceTrackerNativeObjectWrapper>
+; V02 loc2 [V02,T06] ( 5, 10 ) ref -> rbp class-hnd exact <System.Runtime.InteropServices.ComWrappers+ReferenceTrackerNativeObjectWrapper>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "updating class info" <System.Runtime.InteropServices.ComWrappers+ReferenceTrackerNativeObjectWrapper>
-; V05 tmp2 [V05,T09] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
+; V05 tmp2 [V05,T10] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Runtime.InteropServices.GCHandle]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp9 [V12,T08] ( 3, 6 ) long -> rcx "Inline stloc first use temp"
+; V12 tmp9 [V12,T09] ( 3, 6 ) long -> rcx "Inline stloc first use temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V16 tmp13 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp13 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]> ; V18 tmp15 [V18,T02] ( 4, 17 ) ref -> rbx single-def "field V00._list (fldOffset=0x0)" P-INDEP ; V19 tmp16 [V19,T00] ( 6, 21 ) int -> rdi "field V00._index (fldOffset=0x8)" P-INDEP
-; V20 tmp17 [V20,T06] ( 2, 9 ) int -> rsi "field V00._version (fldOffset=0xc)" P-INDEP -; V21 tmp18 [V21,T03] ( 3, 8 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
+; V20 tmp17 [V20,T07] ( 2, 9 ) int -> rsi "field V00._version (fldOffset=0xc)" P-INDEP +; V21 tmp18 [V21,T04] ( 3, 8 ) long -> rcx "field V00._current (fldOffset=0x10)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) long -> zero-ref "field V01._handle (fldOffset=0x0)" P-INDEP
-; V23 tmp20 [V23,T10] ( 3, 3 ) ref -> rbx single-def "field V06._list (fldOffset=0x0)" P-INDEP -;* V24 tmp21 [V24,T12] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP -; V25 tmp22 [V25,T11] ( 2, 2 ) int -> rsi "field V06._version (fldOffset=0xc)" P-INDEP
+; V23 tmp20 [V23,T11] ( 3, 3 ) ref -> rbx single-def "field V06._list (fldOffset=0x0)" P-INDEP +;* V24 tmp21 [V24,T13] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP +; V25 tmp22 [V25,T12] ( 2, 2 ) int -> rsi "field V06._version (fldOffset=0xc)" P-INDEP
;* V26 tmp23 [V26 ] ( 0, 0 ) long -> zero-ref "field V06._current (fldOffset=0x10)" P-INDEP ; V27 tmp24 [V27,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V28 cse0 [V28,T04] ( 2, 8 ) int -> rcx "CSE - aggressive"
+; V28 cse0 [V28,T05] ( 2, 8 ) int -> rcx "CSE - aggressive" +; V29 cse1 [V29,T03] ( 2, 16 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -101,9 +102,10 @@ G_M56142_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 ;; size=85 bbWeight=2 PerfScore 32.00 G_M56142_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbx+0x14]
+ mov ecx, dword ptr [rbx+0x14] + cmp esi, ecx
jne SHORT G_M56142_IG11
- ;; size=5 bbWeight=8 PerfScore 32.00
+ ;; size=7 bbWeight=8 PerfScore 26.00
G_M56142_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x10] cmp edi, ecx @@ -149,7 +151,7 @@ G_M56142_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 197, prolog size 8, PerfScore 149.00, instruction count 62, allocated bytes for code 197 (MethodHash=9ce224b1) for method System.Runtime.InteropServices.ComWrappers:DetachNonPromotedObjects() (FullOpts)
+; Total bytes of code 199, prolog size 8, PerfScore 143.00, instruction count 63, allocated bytes for code 199 (MethodHash=9ce224b1) for method System.Runtime.InteropServices.ComWrappers:DetachNonPromotedObjects() (FullOpts)
; ============================================================ Unwind Info:

+4 (+1.72%) : 11355.dasm - System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)

@@ -7,7 +7,7 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T14] ( 5, 4 ) ref -> rbx this class-hnd exact single-def <System.Linq.Expressions.Interpreter.InstructionList>
+; V00 this [V00,T15] ( 5, 4 ) ref -> rbx this class-hnd exact single-def <System.Linq.Expressions.Interpreter.InstructionList>
; V01 loc0 [V01,T04] ( 7, 20.50) ref -> rax class-hnd exact single-def <System.Linq.Expressions.Interpreter.RuntimeLabel[]> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Interpreter.BranchLabel]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Interpreter.BranchLabel> @@ -16,7 +16,7 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "Strict ordering of exceptions for Array store" <System.Linq.Expressions.Interpreter.RuntimeLabel> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Interpreter.RuntimeLabel> ; V08 tmp4 [V08,T03] ( 3, 24 ) int -> rcx "impAppendStmt"
-; V09 tmp5 [V09,T23] ( 2, 2 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V09 tmp5 [V09,T24] ( 2, 2 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Interpreter.BranchLabel]> ;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Interpreter.RuntimeLabel> ; V12 tmp8 [V12,T10] ( 2, 8 ) int -> r11 "Inlining Arg" @@ -27,25 +27,26 @@ ; V17 tmp13 [V17,T07] ( 4, 12.50) ref -> rcx single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V18 tmp14 [V18,T05] ( 5, 12 ) ref -> r10 "field V02._current (fldOffset=0x8)" P-INDEP ; V19 tmp15 [V19,T01] ( 6, 20.50) int -> r8 "field V02._index (fldOffset=0x10)" P-INDEP
-; V20 tmp16 [V20,T16] ( 2, 4.50) int -> rdx "field V02._version (fldOffset=0x14)" P-INDEP
+; V20 tmp16 [V20,T17] ( 2, 4.50) int -> rdx "field V02._version (fldOffset=0x14)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V06.Index (fldOffset=0x0)" P-INDEP ;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V06.StackDepth (fldOffset=0x4)" P-INDEP ;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V06.ContinuationStackDepth (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24,T20] ( 0, 0 ) int -> zero-ref "field V07.Index (fldOffset=0x0)" P-INDEP -;* V25 tmp21 [V25,T21] ( 0, 0 ) int -> zero-ref "field V07.StackDepth (fldOffset=0x4)" P-INDEP -;* V26 tmp22 [V26,T22] ( 0, 0 ) int -> zero-ref "field V07.ContinuationStackDepth (fldOffset=0x8)" P-INDEP -; V27 tmp23 [V27,T24] ( 3, 1.50) ref -> rcx single-def "field V10._list (fldOffset=0x0)" P-INDEP
+;* V24 tmp20 [V24,T21] ( 0, 0 ) int -> zero-ref "field V07.Index (fldOffset=0x0)" P-INDEP +;* V25 tmp21 [V25,T22] ( 0, 0 ) int -> zero-ref "field V07.StackDepth (fldOffset=0x4)" P-INDEP +;* V26 tmp22 [V26,T23] ( 0, 0 ) int -> zero-ref "field V07.ContinuationStackDepth (fldOffset=0x8)" P-INDEP +; V27 tmp23 [V27,T25] ( 3, 1.50) ref -> rcx single-def "field V10._list (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x8)" P-INDEP
-;* V29 tmp25 [V29,T26] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x10)" P-INDEP -; V30 tmp26 [V30,T25] ( 2, 1 ) int -> rdx "field V10._version (fldOffset=0x14)" P-INDEP -; V31 tmp27 [V31,T17] ( 2, 4 ) int -> r11 "field V11.Index (fldOffset=0x0)" P-INDEP -; V32 tmp28 [V32,T18] ( 2, 4 ) int -> r10 "field V11.StackDepth (fldOffset=0x4)" P-INDEP -; V33 tmp29 [V33,T19] ( 2, 4 ) int -> rbx "field V11.ContinuationStackDepth (fldOffset=0x8)" P-INDEP
+;* V29 tmp25 [V29,T27] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x10)" P-INDEP +; V30 tmp26 [V30,T26] ( 2, 1 ) int -> rdx "field V10._version (fldOffset=0x14)" P-INDEP +; V31 tmp27 [V31,T18] ( 2, 4 ) int -> r11 "field V11.Index (fldOffset=0x0)" P-INDEP +; V32 tmp28 [V32,T19] ( 2, 4 ) int -> r10 "field V11.StackDepth (fldOffset=0x4)" P-INDEP +; V33 tmp29 [V33,T20] ( 2, 4 ) int -> rbx "field V11.ContinuationStackDepth (fldOffset=0x8)" P-INDEP
; V34 tmp30 [V34,T02] ( 3, 24 ) ref -> r10 "arr expr" ; V35 tmp31 [V35,T06] ( 4, 16 ) byref -> r9 "BlockOp address local" ; V36 tmp32 [V36,T00] ( 4, 32 ) byref -> rcx single-def "BlockOp address local"
-; V37 cse0 [V37,T09] ( 2, 8 ) int -> r10 "CSE - aggressive" -; V38 cse1 [V38,T15] ( 3, 6 ) int -> r9 "CSE - aggressive"
+; V37 cse0 [V37,T14] ( 2, 8 ) int -> r10 "CSE - aggressive" +; V38 cse1 [V38,T09] ( 2, 8 ) int -> r10 "CSE - aggressive" +; V39 cse2 [V39,T16] ( 3, 6 ) int -> r9 "CSE - aggressive"
; ; Lcl frame size = 32 @@ -110,7 +111,8 @@ G_M53470_IG07: ; bbWeight=2, gcrefRegs=0403 {rax rcx r10}, byrefRegs=0000 ;; size=51 bbWeight=2 PerfScore 35.50 G_M53470_IG08: ; bbWeight=4, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r9]
- cmp edx, dword ptr [rcx+0x14]
+ mov r10d, dword ptr [rcx+0x14] + cmp edx, r10d
jne SHORT G_M53470_IG14 mov r10d, dword ptr [rcx+0x10] cmp r8d, r10d @@ -123,7 +125,7 @@ G_M53470_IG08: ; bbWeight=4, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, mov r10, gword ptr [r10+8*r9+0x10] inc r8d jmp SHORT G_M53470_IG07
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M53470_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx r10] mov ecx, dword ptr [rax+0x08] @@ -164,7 +166,7 @@ G_M53470_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 173.25, instruction count 65, allocated bytes for code 232 (MethodHash=c4742f21) for method System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)
+; Total bytes of code 236, prolog size 8, PerfScore 170.25, instruction count 66, allocated bytes for code 236 (MethodHash=c4742f21) for method System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)
; ============================================================ Unwind Info:

+4 (+2.84%) : 12747.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)

@@ -13,21 +13,22 @@ ;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V06 tmp2 [V06,T10] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[int]>
+; V06 tmp2 [V06,T11] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.List`1[int]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]> ;* V08 tmp4 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.List`1[int]> ; V10 tmp6 [V10,T03] ( 4, 12.50) ref -> rdi single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V11 tmp7 [V11,T00] ( 6, 20.50) int -> r14 "field V02._index (fldOffset=0x8)" P-INDEP
-; V12 tmp8 [V12,T08] ( 2, 4.50) int -> rbp "field V02._version (fldOffset=0xc)" P-INDEP
+; V12 tmp8 [V12,T09] ( 2, 4.50) int -> rbp "field V02._version (fldOffset=0xc)" P-INDEP
; V13 tmp9 [V13,T04] ( 3, 8 ) int -> rdx "field V02._current (fldOffset=0x10)" P-INDEP
-; V14 tmp10 [V14,T11] ( 3, 1.50) ref -> rdi single-def "field V07._list (fldOffset=0x0)" P-INDEP -;* V15 tmp11 [V15,T13] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x8)" P-INDEP -; V16 tmp12 [V16,T12] ( 2, 1 ) int -> rbp "field V07._version (fldOffset=0xc)" P-INDEP
+; V14 tmp10 [V14,T12] ( 3, 1.50) ref -> rdi single-def "field V07._list (fldOffset=0x0)" P-INDEP +;* V15 tmp11 [V15,T14] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x8)" P-INDEP +; V16 tmp12 [V16,T13] ( 2, 1 ) int -> rbp "field V07._version (fldOffset=0xc)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V07._current (fldOffset=0x10)" P-INDEP ; V18 tmp14 [V18,T01] ( 3, 24 ) ref -> r8 "arr expr"
-; V19 cse0 [V19,T05] ( 2, 8 ) int -> r8 "CSE - aggressive" -; V20 cse1 [V20,T09] ( 3, 2.50) ref -> rdi "CSE - aggressive"
+; V19 cse0 [V19,T08] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V20 cse1 [V20,T05] ( 2, 8 ) int -> r8 "CSE - aggressive" +; V21 cse2 [V21,T10] ( 3, 2.50) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 32 @@ -73,7 +74,8 @@ G_M44928_IG04: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=15 bbWeight=2 PerfScore 7.00 G_M44928_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp ebp, dword ptr [rdi+0x14]
+ mov r8d, dword ptr [rdi+0x14] + cmp ebp, r8d
jne SHORT G_M44928_IG09 mov r8d, dword ptr [rdi+0x10] cmp r14d, r8d @@ -86,7 +88,7 @@ G_M44928_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 mov edx, dword ptr [r8+4*rcx+0x10] inc r14d jmp SHORT G_M44928_IG04
- ;; size=37 bbWeight=4 PerfScore 71.00
+ ;; size=41 bbWeight=4 PerfScore 68.00
G_M44928_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi rdi r8] xor rax, rax @@ -113,7 +115,7 @@ G_M44928_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 141, prolog size 10, PerfScore 108.88, instruction count 49, allocated bytes for code 141 (MethodHash=bf92507f) for method System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
+; Total bytes of code 145, prolog size 10, PerfScore 105.88, instruction count 50, allocated bytes for code 145 (MethodHash=bf92507f) for method System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 380 249 120 11 -3,574 +943
benchmarks.run.windows.x64.checked.mch 121 24 95 2 -247 +282
benchmarks.run_pgo.windows.x64.checked.mch 75 22 52 1 -418 +1,166
benchmarks.run_tiered.windows.x64.checked.mch 29 14 13 2 -166 +31
coreclr_tests.run.windows.x64.checked.mch 122 60 59 3 -542 +225
libraries.crossgen2.windows.x64.checked.mch 38 22 16 0 -194 +79
libraries.pmi.windows.x64.checked.mch 319 160 152 7 -1,306 +456
libraries_tests.run.windows.x64.Release.mch 57 18 38 1 -179 +154
librariestestsnotieredcompilation.run.windows.x64.Release.mch 360 192 156 12 -1,504 +633
realworld.run.windows.x64.checked.mch 146 41 104 1 -520 +287
smoke_tests.nativeaot.windows.x64.checked.mch 34 18 13 3 -122 +32
1,681 820 818 43 -8,772 +4,288

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,157 61,702 67,455 133 (0.10%) 133 (0.10%)
benchmarks.run.windows.x64.checked.mch 36,886 6 36,880 55 (0.15%) 55 (0.15%)
benchmarks.run_pgo.windows.x64.checked.mch 107,598 68,114 39,484 379 (0.35%) 379 (0.35%)
benchmarks.run_tiered.windows.x64.checked.mch 82,880 62,052 20,828 63 (0.08%) 63 (0.08%)
coreclr_tests.run.windows.x64.checked.mch 492,183 273,478 218,705 118 (0.02%) 118 (0.02%)
libraries.crossgen2.windows.x64.checked.mch 274,111 15 274,096 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 343,885 6 343,879 90 (0.03%) 92 (0.03%)
libraries_tests.run.windows.x64.Release.mch 120,206 100,260 19,946 40 (0.03%) 40 (0.03%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 341,591 21,947 319,644 2,320 (0.67%) 2,321 (0.67%)
realworld.run.windows.x64.checked.mch 38,742 3 38,739 14 (0.04%) 14 (0.04%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,421 11 32,410 13 (0.04%) 13 (0.04%)
1,999,660 587,594 1,412,066 3,225 (0.16%) 3,228 (0.16%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 46770084 (overridden on cmd)
Total bytes of diff: 46767453 (overridden on cmd)
Total bytes of delta: -2631 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 123682.dasm (1.41 % of base)
          27 : 82204.dasm (0.92 % of base)
          26 : 25579.dasm (0.34 % of base)
          25 : 49373.dasm (0.87 % of base)
          24 : 51590.dasm (2.05 % of base)
          23 : 52097.dasm (0.78 % of base)
          23 : 52099.dasm (0.80 % of base)
          19 : 46316.dasm (0.56 % of base)
          18 : 46310.dasm (0.38 % of base)
          18 : 49018.dasm (1.54 % of base)
          17 : 49173.dasm (0.63 % of base)
          17 : 49355.dasm (0.53 % of base)
          17 : 24839.dasm (0.21 % of base)
          17 : 82125.dasm (0.78 % of base)
          15 : 66421.dasm (0.31 % of base)
          15 : 64381.dasm (0.58 % of base)
          15 : 59785.dasm (0.31 % of base)
          15 : 59704.dasm (0.59 % of base)
          14 : 82192.dasm (0.49 % of base)
          13 : 59579.dasm (0.81 % of base)

Top file improvements (bytes):
         -91 : 35482.dasm (-3.70 % of base)
         -68 : 54998.dasm (-0.86 % of base)
         -68 : 28834.dasm (-0.86 % of base)
         -56 : 64687.dasm (-0.71 % of base)
         -51 : 46090.dasm (-3.51 % of base)
         -49 : 119123.dasm (-1.43 % of base)
         -49 : 126289.dasm (-2.30 % of base)
         -49 : 114455.dasm (-2.32 % of base)
         -46 : 25319.dasm (-0.60 % of base)
         -40 : 35146.dasm (-2.04 % of base)
         -40 : 58862.dasm (-2.04 % of base)
         -39 : 116340.dasm (-5.08 % of base)
         -39 : 117300.dasm (-5.08 % of base)
         -39 : 113580.dasm (-1.55 % of base)
         -36 : 30499.dasm (-2.49 % of base)
         -35 : 100330.dasm (-1.95 % of base)
         -34 : 49610.dasm (-0.74 % of base)
         -29 : 66434.dasm (-0.62 % of base)
         -29 : 59936.dasm (-0.61 % of base)
         -29 : 46376.dasm (-0.61 % of base)

79 total files with Code Size differences (45 improved, 34 regressed), 11 unchanged.

Top method regressions (bytes):
          32 (1.41 % of base) : 123682.dasm - YesSql.Services.DefaultQuery+<CountAsync>d__31:MoveNext():this (FullOpts)
          27 (0.92 % of base) : 82204.dasm - Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26:MoveNext():this (Tier1)
          26 (0.34 % of base) : 25579.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
          25 (0.87 % of base) : 49373.dasm - Microsoft.AspNetCore.Mvc.Controller:get_TempData():Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary:this (Tier1)
          24 (2.05 % of base) : 51590.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          23 (0.80 % of base) : 52099.dasm - Microsoft.AspNetCore.Mvc.Controller:get_TempData():Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary:this (Tier1)
          23 (0.78 % of base) : 52097.dasm - Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26:MoveNext():this (Tier1)
          19 (0.56 % of base) : 46316.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorPagePropertyActivator:Activate(System.Object,Microsoft.AspNetCore.Mvc.Rendering.ViewContext):this (Tier1)
          18 (0.38 % of base) : 46310.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderPageCoreAsync>d__20:MoveNext():this (Tier1)
          18 (1.54 % of base) : 49018.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          17 (0.63 % of base) : 49173.dasm - Benchmarks.Controllers.FortunesController+<Ef>d__3:MoveNext():this (Tier1)
          17 (0.78 % of base) : 82125.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorPageBase:StartTagHelperWritingScope(System.Text.Encodings.Web.HtmlEncoder):this (Tier1)
          17 (0.53 % of base) : 49355.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderAsync>d__18:MoveNext():this (Tier1)
          17 (0.21 % of base) : 24839.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
          15 (0.59 % of base) : 59704.dasm - Benchmarks.Controllers.FortunesController+<Ef>d__3:MoveNext():this (Tier1)
          15 (0.58 % of base) : 64381.dasm - Benchmarks.Middleware.FortunesDapperMiddleware+<Invoke>d__4:MoveNext():this (Tier1)
          15 (0.31 % of base) : 66421.dasm - Microsoft.AspNetCore.Mvc.Routing.UrlHelperFactory:GetUrlHelper(Microsoft.AspNetCore.Mvc.ActionContext):Microsoft.AspNetCore.Mvc.IUrlHelper:this (Tier1)
          15 (0.31 % of base) : 59785.dasm - Microsoft.AspNetCore.Mvc.Routing.UrlHelperFactory:GetUrlHelper(Microsoft.AspNetCore.Mvc.ActionContext):Microsoft.AspNetCore.Mvc.IUrlHelper:this (Tier1)
          14 (0.49 % of base) : 82192.dasm - Microsoft.AspNetCore.Mvc.Controller:get_TempData():Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary:this (Tier1)
          13 (0.81 % of base) : 59589.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorPageBase:get_BufferScope():Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers.IViewBufferScope:this (Tier1)

Top method improvements (bytes):
         -91 (-3.70 % of base) : 35482.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -68 (-0.86 % of base) : 54998.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         -68 (-0.86 % of base) : 28834.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         -56 (-0.71 % of base) : 64687.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         -51 (-3.51 % of base) : 46090.dasm - Microsoft.EntityFrameworkCore.DbContext+<Microsoft-EntityFrameworkCore-Infrastructure-IResettableService-ResetStateAsync>d__79:MoveNext():this (Tier1)
         -49 (-2.30 % of base) : 126289.dasm - Fluid.Ast.FilterExpression+<EvaluateAsync>d__12:MoveNext():this (FullOpts)
         -49 (-2.32 % of base) : 114455.dasm - Fluid.Ast.FilterExpression+<EvaluateAsync>d__12:MoveNext():this (Tier1)
         -49 (-1.43 % of base) : 119123.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
         -46 (-0.60 % of base) : 25319.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier1)
         -40 (-2.04 % of base) : 35146.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.AntiforgeryApplicationModelProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelProviderContext):this (Tier1-OSR)
         -40 (-2.04 % of base) : 58862.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.AntiforgeryApplicationModelProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelProviderContext):this (Tier1-OSR)
         -39 (-1.55 % of base) : 113580.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier1)
         -39 (-5.08 % of base) : 116340.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
         -39 (-5.08 % of base) : 117300.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
         -36 (-2.49 % of base) : 30499.dasm - Npgsql.Internal.NpgsqlConnector+<WriteParse>d__304:MoveNext():this (Tier1-OSR)
         -35 (-1.95 % of base) : 100330.dasm - System.Linq.Enumerable:Aggregate[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Func`3[System.__Canon,System.__Canon,System.__Canon]):System.__Canon (Tier1)
         -34 (-0.74 % of base) : 49610.dasm - AspNetCoreGeneratedDocument.Views_Fortunes_Fortunes+<<ExecuteAsync>b__8_1>d:MoveNext():this (Tier1)
         -29 (-0.62 % of base) : 66434.dasm - AspNetCoreGeneratedDocument.Views_Fortunes_Fortunes+<<ExecuteAsync>b__8_1>d:MoveNext():this (Tier1)
         -29 (-0.61 % of base) : 59936.dasm - AspNetCoreGeneratedDocument.Views_Fortunes_Fortunes+<<ExecuteAsync>b__8_1>d:MoveNext():this (Tier1)
         -29 (-0.61 % of base) : 46376.dasm - AspNetCoreGeneratedDocument.Views_Fortunes_Fortunes+<<ExecuteAsync>b__8_1>d:MoveNext():this (Tier1)

Top method regressions (percentages):
           2 (2.13 % of base) : 126912.dasm - Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (FullOpts)
           2 (2.13 % of base) : 114732.dasm - Fluid.Ast.NamedExpressionList:.ctor(System.Collections.Generic.List`1[Fluid.Ast.FilterArgument]):this (Tier1)
          24 (2.05 % of base) : 51590.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           2 (1.61 % of base) : 126681.dasm - AngleSharp.Dom.EventTarget:HasEventListener(System.String):ubyte:this (FullOpts)
          18 (1.54 % of base) : 49018.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           5 (1.52 % of base) : 36472.dasm - System.Diagnostics.Metrics.Meter:GetPublishedInstruments():System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument] (Tier1-OSR)
          32 (1.41 % of base) : 123682.dasm - YesSql.Services.DefaultQuery+<CountAsync>d__31:MoveNext():this (FullOpts)
           5 (1.25 % of base) : 116338.dasm - Microsoft.AspNetCore.Hosting.BootstrapHostBuilder:RunDefaultCallbacks():Microsoft.Extensions.DependencyInjection.ServiceDescriptor:this (Tier1-OSR)
           5 (1.25 % of base) : 20192.dasm - Microsoft.AspNetCore.Hosting.BootstrapHostBuilder:RunDefaultCallbacks():Microsoft.Extensions.DependencyInjection.ServiceDescriptor:this (Tier1-OSR)
           5 (1.25 % of base) : 117298.dasm - Microsoft.AspNetCore.Hosting.BootstrapHostBuilder:RunDefaultCallbacks():Microsoft.Extensions.DependencyInjection.ServiceDescriptor:this (Tier1-OSR)
           5 (1.25 % of base) : 12834.dasm - Microsoft.AspNetCore.Hosting.BootstrapHostBuilder:RunDefaultCallbacks():Microsoft.Extensions.DependencyInjection.ServiceDescriptor:this (Tier1-OSR)
           2 (1.05 % of base) : 9756.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier1-OSR)
          11 (0.93 % of base) : 100505.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          27 (0.92 % of base) : 82204.dasm - Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26:MoveNext():this (Tier1)
          25 (0.87 % of base) : 49373.dasm - Microsoft.AspNetCore.Mvc.Controller:get_TempData():Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary:this (Tier1)
           6 (0.83 % of base) : 121905.dasm - Newtonsoft.Json.JsonPosition:BuildPath(System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition],System.Nullable`1[Newtonsoft.Json.JsonPosition]):System.String (FullOpts)
          13 (0.81 % of base) : 59589.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorPageBase:get_BufferScope():Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers.IViewBufferScope:this (Tier1)
          13 (0.81 % of base) : 59579.dasm - Microsoft.AspNetCore.Mvc.Razor.RazorPageBase:get_TagHelperFactory():Microsoft.AspNetCore.Mvc.Razor.ITagHelperFactory:this (Tier1)
          23 (0.80 % of base) : 52099.dasm - Microsoft.AspNetCore.Mvc.Controller:get_TempData():Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary:this (Tier1)
           2 (0.80 % of base) : 121452.dasm - Microsoft.Data.Sqlite.SqliteCommand:DisposePreparedStatements(ubyte):this (FullOpts)

Top method improvements (percentages):
         -39 (-5.08 % of base) : 116340.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
         -39 (-5.08 % of base) : 117300.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
         -18 (-5.06 % of base) : 20474.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier1)
         -12 (-4.01 % of base) : 98253.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Instrumented Tier1)
         -18 (-3.73 % of base) : 71072.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -18 (-3.73 % of base) : 56158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -18 (-3.73 % of base) : 57424.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -91 (-3.70 % of base) : 35482.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -26 (-3.59 % of base) : 78255.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptorProviderContext):this (Tier1-OSR)
         -26 (-3.59 % of base) : 35292.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptorProviderContext):this (Tier1-OSR)
         -26 (-3.59 % of base) : 69165.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptorProviderContext):this (Tier1-OSR)
         -26 (-3.59 % of base) : 58866.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider:OnProvidersExecuting(Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptorProviderContext):this (Tier1-OSR)
         -51 (-3.51 % of base) : 46090.dasm - Microsoft.EntityFrameworkCore.DbContext+<Microsoft-EntityFrameworkCore-Infrastructure-IResettableService-ResetStateAsync>d__79:MoveNext():this (Tier1)
         -24 (-3.49 % of base) : 22021.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 77225.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 9218.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 34142.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 23222.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 29749.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)
         -24 (-3.49 % of base) : 57462.dasm - Microsoft.AspNetCore.Hosting.ServiceCollectionExtensions:Clone(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier1-OSR)


benchmarks.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11727476 (overridden on cmd)
Total bytes of diff: 11727511 (overridden on cmd)
Total bytes of delta: 35 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          14 : 7670.dasm (0.80 % of base)
          11 : 17119.dasm (1.38 % of base)
          11 : 5520.dasm (1.38 % of base)
           7 : 29346.dasm (0.71 % of base)
           6 : 5458.dasm (0.40 % of base)
           6 : 17632.dasm (0.40 % of base)
           5 : 7595.dasm (0.08 % of base)
           4 : 1407.dasm (0.17 % of base)
           4 : 15949.dasm (0.15 % of base)
           4 : 24399.dasm (0.05 % of base)
           4 : 30607.dasm (0.17 % of base)
           4 : 10039.dasm (0.08 % of base)
           4 : 26891.dasm (0.68 % of base)
           4 : 32392.dasm (0.16 % of base)
           4 : 7669.dasm (0.12 % of base)
           4 : 8332.dasm (3.01 % of base)
           4 : 8393.dasm (3.01 % of base)
           4 : 8415.dasm (3.01 % of base)
           4 : 8463.dasm (3.01 % of base)
           4 : 15811.dasm (0.08 % of base)

Top file improvements (bytes):
         -91 : 33609.dasm (-3.66 % of base)
         -24 : 23715.dasm (-1.48 % of base)
         -15 : 2970.dasm (-0.81 % of base)
         -15 : 17920.dasm (-0.81 % of base)
         -12 : 18114.dasm (-3.76 % of base)
         -12 : 11152.dasm (-3.76 % of base)
          -9 : 29513.dasm (-0.10 % of base)
          -8 : 581.dasm (-0.54 % of base)
          -8 : 12335.dasm (-0.54 % of base)
          -6 : 18377.dasm (-1.43 % of base)
          -6 : 59.dasm (-0.65 % of base)
          -6 : 5928.dasm (-1.43 % of base)
          -6 : 11622.dasm (-0.65 % of base)
          -5 : 7250.dasm (-0.13 % of base)
          -5 : 943.dasm (-0.83 % of base)
          -5 : 12578.dasm (-0.83 % of base)
          -4 : 7762.dasm (-0.15 % of base)
          -2 : 1158.dasm (-0.36 % of base)
          -2 : 33385.dasm (-0.29 % of base)
          -2 : 14261.dasm (-0.36 % of base)

59 total files with Code Size differences (21 improved, 38 regressed), 2 unchanged.

Top method regressions (bytes):
          14 (0.80 % of base) : 7670.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
          11 (1.38 % of base) : 17119.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          11 (1.38 % of base) : 5520.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           7 (0.71 % of base) : 29346.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           6 (0.40 % of base) : 5458.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
           6 (0.40 % of base) : 17632.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
           5 (0.08 % of base) : 7595.dasm - ProtoBuf.Meta.MetaType:ApplyDefaultBehaviourImpl(int):this (FullOpts)
           4 (0.16 % of base) : 32392.dasm - JetStream.Hand:score():this (FullOpts)
           4 (0.68 % of base) : 26891.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (3.01 % of base) : 8463.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8415.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8393.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8332.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (0.12 % of base) : 7669.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this (FullOpts)
           4 (0.05 % of base) : 24399.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           4 (0.15 % of base) : 15949.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
           4 (0.17 % of base) : 1407.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           4 (0.17 % of base) : 30607.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           4 (0.08 % of base) : 10039.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteElements(System.Xml.Serialization.SourceInfo,System.String,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.String,ubyte,ubyte):this (FullOpts)
           4 (0.08 % of base) : 15811.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteElements(System.Xml.Serialization.SourceInfo,System.String,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.String,ubyte,ubyte):this (FullOpts)

Top method improvements (bytes):
         -91 (-3.66 % of base) : 33609.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -24 (-1.48 % of base) : 23715.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -15 (-0.81 % of base) : 2970.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -15 (-0.81 % of base) : 17920.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -12 (-3.76 % of base) : 18114.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-3.76 % of base) : 11152.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
          -9 (-0.10 % of base) : 29513.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-0.54 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.54 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -6 (-0.65 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.65 % of base) : 11622.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-1.43 % of base) : 18377.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -6 (-1.43 % of base) : 5928.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -5 (-0.13 % of base) : 7250.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -5 (-0.83 % of base) : 943.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.83 % of base) : 12578.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -4 (-0.15 % of base) : 7762.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -2 (-0.36 % of base) : 1158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -2 (-0.36 % of base) : 14261.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -2 (-0.29 % of base) : 33385.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)

Top method regressions (percentages):
           4 (3.01 % of base) : 8463.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8415.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8393.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           4 (3.01 % of base) : 8332.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
           2 (2.25 % of base) : 3814.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           2 (2.25 % of base) : 18895.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           2 (1.98 % of base) : 9145.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           2 (1.61 % of base) : 13687.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
           2 (1.61 % of base) : 8002.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
           2 (1.54 % of base) : 23028.dasm - System.Formats.Tar.TarReader:Dispose():this (FullOpts)
           2 (1.44 % of base) : 7335.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
          11 (1.38 % of base) : 17119.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
          11 (1.38 % of base) : 5520.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (1.02 % of base) : 17607.dasm - System.Diagnostics.Metrics.Meter:GetCachedInstrument(System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument],System.Type,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Instrument (FullOpts)
           3 (1.02 % of base) : 5424.dasm - System.Diagnostics.Metrics.Meter:GetCachedInstrument(System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument],System.Type,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Instrument (FullOpts)
           2 (0.90 % of base) : 29163.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           2 (0.87 % of base) : 31186.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.87 % of base) : 23596.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.84 % of base) : 13848.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (FullOpts)
           2 (0.84 % of base) : 1605.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (FullOpts)

Top method improvements (percentages):
         -12 (-3.76 % of base) : 18114.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -12 (-3.76 % of base) : 11152.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -91 (-3.66 % of base) : 33609.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -24 (-1.48 % of base) : 23715.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -6 (-1.43 % of base) : 18377.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -6 (-1.43 % of base) : 5928.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -5 (-0.83 % of base) : 943.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.83 % of base) : 12578.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -15 (-0.81 % of base) : 17920.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -15 (-0.81 % of base) : 2970.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          -6 (-0.65 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.65 % of base) : 11622.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -8 (-0.54 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.54 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -2 (-0.36 % of base) : 1158.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -2 (-0.36 % of base) : 14261.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -2 (-0.29 % of base) : 33385.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -4 (-0.15 % of base) : 7762.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          -5 (-0.13 % of base) : 7250.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
          -1 (-0.10 % of base) : 14825.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34353258 (overridden on cmd)
Total bytes of diff: 34354006 (overridden on cmd)
Total bytes of delta: 748 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         147 : 9017.dasm (3.01 % of base)
          76 : 93741.dasm (1.89 % of base)
          36 : 40926.dasm (1.25 % of base)
          31 : 104269.dasm (1.02 % of base)
          26 : 106958.dasm (1.04 % of base)
          26 : 106957.dasm (1.04 % of base)
          25 : 102609.dasm (1.41 % of base)
          25 : 41478.dasm (1.42 % of base)
          25 : 58781.dasm (1.44 % of base)
          25 : 97986.dasm (1.42 % of base)
          25 : 98080.dasm (1.44 % of base)
          25 : 92316.dasm (1.44 % of base)
          25 : 102446.dasm (1.42 % of base)
          21 : 75018.dasm (1.21 % of base)
          21 : 87341.dasm (1.22 % of base)
          21 : 100786.dasm (1.00 % of base)
          21 : 84500.dasm (1.21 % of base)
          21 : 86385.dasm (1.21 % of base)
          20 : 74730.dasm (1.18 % of base)
          20 : 107337.dasm (1.18 % of base)

Top file improvements (bytes):
         -91 : 90436.dasm (-3.66 % of base)
         -36 : 46267.dasm (-1.64 % of base)
         -36 : 89379.dasm (-1.70 % of base)
         -36 : 90939.dasm (-1.70 % of base)
         -36 : 103555.dasm (-1.65 % of base)
         -29 : 92216.dasm (-1.28 % of base)
         -28 : 86629.dasm (-1.60 % of base)
         -25 : 85599.dasm (-1.43 % of base)
         -13 : 93851.dasm (-2.52 % of base)
         -10 : 39649.dasm (-1.77 % of base)
          -9 : 67426.dasm (-0.77 % of base)
          -9 : 72380.dasm (-0.72 % of base)
          -9 : 87859.dasm (-0.72 % of base)
          -8 : 10965.dasm (-0.78 % of base)
          -8 : 59401.dasm (-0.78 % of base)
          -8 : 72881.dasm (-0.78 % of base)
          -8 : 101981.dasm (-0.78 % of base)
          -7 : 97740.dasm (-0.20 % of base)
          -5 : 102627.dasm (-0.18 % of base)
          -3 : 38120.dasm (-0.48 % of base)

50 total files with Code Size differences (22 improved, 28 regressed), 1 unchanged.

Top method regressions (bytes):
         147 (3.01 % of base) : 9017.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (1.89 % of base) : 93741.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          36 (1.25 % of base) : 40926.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          31 (1.02 % of base) : 104269.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          26 (1.04 % of base) : 106958.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          26 (1.04 % of base) : 106957.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.41 % of base) : 102609.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 41478.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 58781.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 97986.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 98080.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 92316.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 102446.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.00 % of base) : 100786.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
          21 (1.21 % of base) : 75018.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.22 % of base) : 87341.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.21 % of base) : 84500.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.21 % of base) : 86385.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.18 % of base) : 74730.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.18 % of base) : 107337.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (bytes):
         -91 (-3.66 % of base) : 90436.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -36 (-1.70 % of base) : 90939.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -36 (-1.70 % of base) : 89379.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -36 (-1.64 % of base) : 46267.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -36 (-1.65 % of base) : 103555.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -29 (-1.28 % of base) : 92216.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
         -28 (-1.60 % of base) : 86629.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -25 (-1.43 % of base) : 85599.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -13 (-2.52 % of base) : 93851.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -10 (-1.77 % of base) : 39649.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -9 (-0.72 % of base) : 87859.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -9 (-0.77 % of base) : 67426.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -9 (-0.72 % of base) : 72380.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-0.78 % of base) : 10965.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 59401.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 72881.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 101981.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -7 (-0.20 % of base) : 97740.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
          -5 (-0.18 % of base) : 102627.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          -3 (-0.48 % of base) : 38120.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)

Top method regressions (percentages):
         147 (3.01 % of base) : 9017.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          76 (1.89 % of base) : 93741.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 58781.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 98080.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.44 % of base) : 92316.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 41478.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 97986.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.42 % of base) : 102446.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          25 (1.41 % of base) : 102609.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          36 (1.25 % of base) : 40926.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
          21 (1.22 % of base) : 87341.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.21 % of base) : 75018.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.21 % of base) : 84500.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          21 (1.21 % of base) : 86385.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.19 % of base) : 48878.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.19 % of base) : 84138.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.19 % of base) : 93699.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.18 % of base) : 74730.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.18 % of base) : 107337.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
          20 (1.16 % of base) : 93024.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)

Top method improvements (percentages):
         -91 (-3.66 % of base) : 90436.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -13 (-2.52 % of base) : 93851.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
         -10 (-1.77 % of base) : 39649.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
         -36 (-1.70 % of base) : 90939.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
         -36 (-1.70 % of base) : 89379.dasm - LinqBenchmarks:Where01LinqQueryX():ubyte:this (Tier1-OSR)
         -36 (-1.65 % of base) : 103555.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -36 (-1.64 % of base) : 46267.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
         -28 (-1.60 % of base) : 86629.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
         -25 (-1.43 % of base) : 85599.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
         -29 (-1.28 % of base) : 92216.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
          -1 (-1.04 % of base) : 97726.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
          -8 (-0.78 % of base) : 10965.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 59401.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 72881.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.78 % of base) : 101981.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -9 (-0.77 % of base) : 67426.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -9 (-0.72 % of base) : 72380.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -9 (-0.72 % of base) : 87859.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
          -3 (-0.48 % of base) : 38120.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
          -3 (-0.48 % of base) : 6243.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)


benchmarks.run_tiered.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 19449443 (overridden on cmd)
Total bytes of diff: 19449308 (overridden on cmd)
Total bytes of delta: -135 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 36428.dasm (0.05 % of base)
           3 : 24146.dasm (0.21 % of base)
           3 : 41330.dasm (0.21 % of base)
           3 : 49493.dasm (0.46 % of base)
           2 : 20177.dasm (0.07 % of base)
           2 : 82041.dasm (0.07 % of base)
           2 : 21007.dasm (0.69 % of base)
           2 : 30033.dasm (0.72 % of base)
           2 : 30037.dasm (1.61 % of base)
           2 : 30667.dasm (0.87 % of base)
           2 : 56839.dasm (0.24 % of base)
           2 : 58455.dasm (0.87 % of base)
           2 : 67475.dasm (0.24 % of base)

Top file improvements (bytes):
         -91 : 73982.dasm (-3.66 % of base)
         -15 : 77068.dasm (-0.82 % of base)
         -15 : 73163.dasm (-0.82 % of base)
          -8 : 18720.dasm (-0.54 % of base)
          -8 : 36717.dasm (-0.54 % of base)
          -7 : 19314.dasm (-0.44 % of base)
          -6 : 3113.dasm (-0.65 % of base)
          -6 : 35947.dasm (-0.65 % of base)
          -2 : 17216.dasm (-0.36 % of base)
          -2 : 73302.dasm (-0.36 % of base)
          -2 : 73493.dasm (-0.29 % of base)
          -2 : 73596.dasm (-0.29 % of base)
          -1 : 20170.dasm (-0.10 % of base)
          -1 : 82034.dasm (-0.10 % of base)

27 total files with Code Size differences (14 improved, 13 regressed), 2 unchanged.

Top method regressions (bytes):
           4 (0.05 % of base) : 36428.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
           3 (0.46 % of base) : 49493.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:ConfigureProperties():this (Tier1)
           3 (0.21 % of base) : 24146.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           3 (0.21 % of base) : 41330.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           2 (0.69 % of base) : 21007.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.87 % of base) : 30667.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.87 % of base) : 58455.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.24 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           2 (0.24 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           2 (1.61 % of base) : 30037.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
           2 (0.72 % of base) : 30033.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (Tier1)
           2 (0.07 % of base) : 20177.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
           2 (0.07 % of base) : 82041.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)

Top method improvements (bytes):
         -91 (-3.66 % of base) : 73982.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -15 (-0.82 % of base) : 77068.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
         -15 (-0.82 % of base) : 73163.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -8 (-0.54 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -8 (-0.54 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -7 (-0.44 % of base) : 19314.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
          -6 (-0.65 % of base) : 3113.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -6 (-0.65 % of base) : 35947.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -2 (-0.36 % of base) : 17216.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -2 (-0.36 % of base) : 73302.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -2 (-0.29 % of base) : 73493.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -2 (-0.29 % of base) : 73596.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -1 (-0.10 % of base) : 20170.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -1 (-0.10 % of base) : 82034.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
           2 (1.61 % of base) : 30037.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
           2 (0.87 % of base) : 30667.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.87 % of base) : 58455.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           2 (0.72 % of base) : 30033.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (Tier1)
           2 (0.69 % of base) : 21007.dasm - (dynamicClass):WriteArrayOfintToJson(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
           3 (0.46 % of base) : 49493.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:ConfigureProperties():this (Tier1)
           2 (0.24 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           2 (0.24 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
           3 (0.21 % of base) : 41330.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           3 (0.21 % of base) : 24146.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           2 (0.07 % of base) : 20177.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
           2 (0.07 % of base) : 82041.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
           4 (0.05 % of base) : 36428.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)

Top method improvements (percentages):
         -91 (-3.66 % of base) : 73982.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -15 (-0.82 % of base) : 73163.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
         -15 (-0.82 % of base) : 77068.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
          -6 (-0.65 % of base) : 3113.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -6 (-0.65 % of base) : 35947.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
          -8 (-0.54 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -8 (-0.54 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          -7 (-0.44 % of base) : 19314.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
          -2 (-0.36 % of base) : 17216.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -2 (-0.36 % of base) : 73302.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
          -2 (-0.29 % of base) : 73493.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -2 (-0.29 % of base) : 73596.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
          -1 (-0.10 % of base) : 20170.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -1 (-0.10 % of base) : 82034.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

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


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 296149050 (overridden on cmd)
Total bytes of diff: 296148733 (overridden on cmd)
Total bytes of delta: -317 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          44 : 216043.dasm (1.03 % of base)
          22 : 248480.dasm (0.89 % of base)
           9 : 311246.dasm (1.40 % of base)
           7 : 190932.dasm (0.71 % of base)
           7 : 241941.dasm (0.71 % of base)
           6 : 442550.dasm (0.50 % of base)
           6 : 310171.dasm (0.36 % of base)
           5 : 237889.dasm (2.27 % of base)
           5 : 317771.dasm (0.16 % of base)
           5 : 237890.dasm (2.27 % of base)
           4 : 315437.dasm (0.37 % of base)
           4 : 188224.dasm (0.65 % of base)
           4 : 238947.dasm (0.65 % of base)
           4 : 312700.dasm (0.37 % of base)
           3 : 193039.dasm (0.73 % of base)
           3 : 316348.dasm (0.34 % of base)
           3 : 292021.dasm (0.08 % of base)
           3 : 312813.dasm (0.08 % of base)
           2 : 190728.dasm (0.90 % of base)
           2 : 184998.dasm (0.53 % of base)

Top file improvements (bytes):
         -38 : 291322.dasm (-0.46 % of base)
         -38 : 312078.dasm (-0.47 % of base)
         -36 : 176538.dasm (-6.20 % of base)
         -29 : 245441.dasm (-16.76 % of base)
         -26 : 492124.dasm (-0.86 % of base)
         -24 : 315354.dasm (-0.80 % of base)
         -18 : 211978.dasm (-0.41 % of base)
         -16 : 314478.dasm (-0.16 % of base)
         -16 : 314932.dasm (-0.56 % of base)
         -16 : 317757.dasm (-0.66 % of base)
         -14 : 251549.dasm (-6.36 % of base)
         -13 : 315119.dasm (-0.29 % of base)
         -13 : 317763.dasm (-0.55 % of base)
         -10 : 252165.dasm (-0.71 % of base)
          -8 : 313685.dasm (-0.52 % of base)
          -8 : 313960.dasm (-0.74 % of base)
          -8 : 314534.dasm (-0.25 % of base)
          -8 : 292547.dasm (-0.20 % of base)
          -8 : 292581.dasm (-0.52 % of base)
          -8 : 292825.dasm (-0.74 % of base)

65 total files with Code Size differences (34 improved, 31 regressed), 3 unchanged.

Top method regressions (bytes):
          44 (1.03 % of base) : 216043.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
          22 (0.89 % of base) : 248480.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           9 (1.40 % of base) : 311246.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
           7 (0.71 % of base) : 190932.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           7 (0.71 % of base) : 241941.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           6 (0.36 % of base) : 310171.dasm - Profiler.Tests.GCTests:RunTest(System.String[]):int (FullOpts)
           6 (0.50 % of base) : 442550.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           5 (2.27 % of base) : 237890.dasm - GCUtil:FreePins() (FullOpts)
           5 (2.27 % of base) : 237889.dasm - GCUtil:FreePins2() (FullOpts)
           5 (0.16 % of base) : 317771.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<>c__DisplayClass2_1+<<TEST_MultipleConnectPortsSuspend>b__1>d:MoveNext():this (FullOpts)
           4 (0.37 % of base) : 315437.dasm - Internal.TypeSystem.ExplicitLayoutValidator:AddToFieldLayout(int,Internal.TypeSystem.TypeDesc):this (FullOpts)
           4 (0.37 % of base) : 312700.dasm - Internal.TypeSystem.ExplicitLayoutValidator:AddToFieldLayout(int,Internal.TypeSystem.TypeDesc):this (FullOpts)
           4 (0.65 % of base) : 188224.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (0.65 % of base) : 238947.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           3 (0.73 % of base) : 193039.dasm - BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)
           3 (0.08 % of base) : 292021.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.HeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
           3 (0.08 % of base) : 312813.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.HeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
           3 (0.34 % of base) : 316348.dasm - StackCommitTest.Utility:ValidateStack(System.String,ubyte,int):ubyte (FullOpts)
           2 (0.60 % of base) : 292830.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)
           2 (0.60 % of base) : 313964.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)

Top method improvements (bytes):
         -38 (-0.46 % of base) : 291322.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -38 (-0.47 % of base) : 312078.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -36 (-6.20 % of base) : 176538.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -29 (-16.76 % of base) : 245441.dasm - Program:M49() (FullOpts)
         -26 (-0.86 % of base) : 492124.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
         -24 (-0.80 % of base) : 315354.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -18 (-0.41 % of base) : 211978.dasm - GenClass`1[int]:DoTest_Inner[System.__Canon,System.__Canon,System.__Canon](int,GenClass`1[System.__Canon],GenClass`1[System.__Canon],GenClass`1[System.__Canon]) (FullOpts)
         -16 (-0.56 % of base) : 314932.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
         -16 (-0.16 % of base) : 314478.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
         -16 (-0.66 % of base) : 317757.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsNoSuspend>d__1:MoveNext():this (FullOpts)
         -14 (-6.36 % of base) : 251549.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -13 (-0.29 % of base) : 315119.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
         -13 (-0.55 % of base) : 317763.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsSuspend>d__2:MoveNext():this (FullOpts)
         -10 (-0.71 % of base) : 252165.dasm - test86865.test86865:TestEntryPoint():int (FullOpts)
          -8 (-0.20 % of base) : 292547.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (FullOpts)
          -8 (-0.52 % of base) : 313685.dasm - ILCompiler.MetadataManager:GetCompiledMethods(Internal.TypeSystem.Ecma.EcmaModule,int):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysis.IMethodNode]:this (FullOpts)
          -8 (-0.52 % of base) : 292581.dasm - ILCompiler.MetadataManager:GetCompiledMethods(Internal.TypeSystem.Ecma.EcmaModule,int):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysis.IMethodNode]:this (FullOpts)
          -8 (-0.74 % of base) : 313960.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
          -8 (-0.74 % of base) : 292825.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
          -8 (-0.73 % of base) : 315260.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)

Top method regressions (percentages):
           5 (2.27 % of base) : 237890.dasm - GCUtil:FreePins() (FullOpts)
           5 (2.27 % of base) : 237889.dasm - GCUtil:FreePins2() (FullOpts)
           9 (1.40 % of base) : 311246.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
          44 (1.03 % of base) : 216043.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
           2 (0.90 % of base) : 190728.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           2 (0.90 % of base) : 241738.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
          22 (0.89 % of base) : 248480.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           2 (0.78 % of base) : 190943.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           2 (0.78 % of base) : 241952.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           3 (0.73 % of base) : 193039.dasm - BenchmarksGame.KNucleotide:WriteFrequencies(int,int[],ubyte):ubyte:this (FullOpts)
           7 (0.71 % of base) : 190932.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           7 (0.71 % of base) : 241941.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           4 (0.65 % of base) : 188224.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (0.65 % of base) : 238947.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           2 (0.60 % of base) : 292830.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)
           2 (0.60 % of base) : 313964.dasm - ILCompiler.PEWriter.SectionBuilder:FlushRelocationBlock(System.Reflection.Metadata.BlobBuilder,int,System.Collections.Generic.List`1[ushort]) (FullOpts)
           2 (0.54 % of base) : 248375.dasm - System.Xml.Xsl.Xslt.MatcherBuilder:MatchPatterns(System.Xml.Xsl.Qil.QilIterator,System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Pattern]):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           2 (0.53 % of base) : 184998.dasm - Program:TestEntryPoint():int (FullOpts)
           6 (0.50 % of base) : 442550.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           2 (0.41 % of base) : 291695.dasm - Internal.TypeSystem.Ecma.MutableModule+Cache:ResetEmitter():this (FullOpts)

Top method improvements (percentages):
         -29 (-16.76 % of base) : 245441.dasm - Program:M49() (FullOpts)
         -14 (-6.36 % of base) : 251549.dasm - Test.BB:TestEntryPoint() (FullOpts)
         -36 (-6.20 % of base) : 176538.dasm - CloningForIEnumerable:Sum(System.Collections.Generic.IEnumerable`1[int]):int (Tier1)
         -26 (-0.86 % of base) : 492124.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
          -5 (-0.83 % of base) : 248819.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.83 % of base) : 310814.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.83 % of base) : 292963.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -7 (-0.82 % of base) : 292835.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
          -7 (-0.82 % of base) : 313969.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
         -24 (-0.80 % of base) : 315354.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
          -5 (-0.78 % of base) : 311013.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -5 (-0.78 % of base) : 310058.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-0.74 % of base) : 313960.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
          -8 (-0.74 % of base) : 292825.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
          -8 (-0.73 % of base) : 315260.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
         -10 (-0.71 % of base) : 252165.dasm - test86865.test86865:TestEntryPoint():int (FullOpts)
         -16 (-0.66 % of base) : 317757.dasm - Tracing.Tests.DiagnosticPortValidation.DiagnosticPortValidation+<TEST_MultipleConnectPortsNoSuspend>d__1:MoveNext():this (FullOpts)
          -6 (-0.65 % of base) : 248759.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.65 % of base) : 292904.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.65 % of base) : 310638.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)


libraries.crossgen2.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44929099 (overridden on cmd)
Total bytes of diff: 44928984 (overridden on cmd)
Total bytes of delta: -115 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          29 : 205361.dasm (0.26 % of base)
           8 : 31528.dasm (0.13 % of base)
           7 : 32468.dasm (0.87 % of base)
           6 : 39024.dasm (0.35 % of base)
           4 : 30021.dasm (0.18 % of base)
           4 : 25826.dasm (0.21 % of base)
           3 : 32552.dasm (0.44 % of base)
           2 : 217486.dasm (0.01 % of base)
           2 : 25832.dasm (0.41 % of base)
           2 : 15690.dasm (0.14 % of base)
           2 : 26663.dasm (0.39 % of base)
           2 : 29503.dasm (0.17 % of base)
           2 : 29885.dasm (0.36 % of base)
           2 : 31522.dasm (0.36 % of base)
           2 : 32012.dasm (0.25 % of base)
           2 : 32109.dasm (1.96 % of base)

Top file improvements (bytes):
         -71 : 26601.dasm (-3.01 % of base)
         -10 : 31916.dasm (-2.87 % of base)
          -9 : 258765.dasm (-0.18 % of base)
          -9 : 258833.dasm (-0.19 % of base)
          -8 : 29804.dasm (-1.54 % of base)
          -7 : 267341.dasm (-1.25 % of base)
          -7 : 267346.dasm (-1.06 % of base)
          -7 : 32551.dasm (-2.27 % of base)
          -7 : 21402.dasm (-1.38 % of base)
          -6 : 26664.dasm (-0.74 % of base)
          -6 : 31393.dasm (-1.30 % of base)
          -6 : 153227.dasm (-0.38 % of base)
          -6 : 234366.dasm (-0.64 % of base)
          -6 : 31325.dasm (-1.04 % of base)
          -5 : 183764.dasm (-0.28 % of base)
          -5 : 240145.dasm (-0.63 % of base)
          -5 : 26662.dasm (-0.82 % of base)
          -5 : 175910.dasm (-0.28 % of base)
          -4 : 203024.dasm (-0.52 % of base)
          -2 : 19789.dasm (-0.29 % of base)

38 total files with Code Size differences (22 improved, 16 regressed), 0 unchanged.

Top method regressions (bytes):
          29 (0.26 % of base) : 205361.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
           8 (0.13 % of base) : 31528.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           7 (0.87 % of base) : 32468.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           6 (0.35 % of base) : 39024.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           4 (0.18 % of base) : 30021.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
           4 (0.21 % of base) : 25826.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           3 (0.44 % of base) : 32552.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
           2 (0.39 % of base) : 26663.dasm - System.Diagnostics.Tracing.EventListener:RemoveReferencesToListenerInEventSources(System.Diagnostics.Tracing.EventListener) (FullOpts)
           2 (0.36 % of base) : 31522.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
           2 (1.96 % of base) : 32109.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           2 (0.36 % of base) : 29885.dasm - System.Runtime.InteropServices.PosixSignalRegistration:HandlerRoutine(int):int (FullOpts)
           2 (0.41 % of base) : 25832.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
           2 (0.14 % of base) : 15690.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
           2 (0.25 % of base) : 32012.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           2 (0.17 % of base) : 29503.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           2 (0.01 % of base) : 217486.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)

Top method improvements (bytes):
         -71 (-3.01 % of base) : 26601.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -10 (-2.87 % of base) : 31916.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -9 (-0.18 % of base) : 258765.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          -9 (-0.19 % of base) : 258833.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -8 (-1.54 % of base) : 29804.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -7 (-2.27 % of base) : 32551.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
          -7 (-1.38 % of base) : 21402.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
          -7 (-1.25 % of base) : 267341.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -7 (-1.06 % of base) : 267346.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -6 (-1.04 % of base) : 31325.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-0.38 % of base) : 153227.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -6 (-0.64 % of base) : 234366.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -6 (-0.74 % of base) : 26664.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-1.30 % of base) : 31393.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -5 (-0.63 % of base) : 240145.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
          -5 (-0.28 % of base) : 183764.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -5 (-0.28 % of base) : 175910.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -5 (-0.82 % of base) : 26662.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -4 (-0.52 % of base) : 203024.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseAudio(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
          -2 (-0.29 % of base) : 19789.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)

Top method regressions (percentages):
           2 (1.96 % of base) : 32109.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
           7 (0.87 % of base) : 32468.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           3 (0.44 % of base) : 32552.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
           2 (0.41 % of base) : 25832.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
           2 (0.39 % of base) : 26663.dasm - System.Diagnostics.Tracing.EventListener:RemoveReferencesToListenerInEventSources(System.Diagnostics.Tracing.EventListener) (FullOpts)
           2 (0.36 % of base) : 31522.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
           2 (0.36 % of base) : 29885.dasm - System.Runtime.InteropServices.PosixSignalRegistration:HandlerRoutine(int):int (FullOpts)
           6 (0.35 % of base) : 39024.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          29 (0.26 % of base) : 205361.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
           2 (0.25 % of base) : 32012.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           4 (0.21 % of base) : 25826.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
           4 (0.18 % of base) : 30021.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
           2 (0.17 % of base) : 29503.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           2 (0.14 % of base) : 15690.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
           8 (0.13 % of base) : 31528.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
           2 (0.01 % of base) : 217486.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)

Top method improvements (percentages):
         -71 (-3.01 % of base) : 26601.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -10 (-2.87 % of base) : 31916.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -7 (-2.27 % of base) : 32551.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
          -8 (-1.54 % of base) : 29804.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -7 (-1.38 % of base) : 21402.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
          -6 (-1.30 % of base) : 31393.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -7 (-1.25 % of base) : 267341.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -7 (-1.06 % of base) : 267346.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -6 (-1.04 % of base) : 31325.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -5 (-0.82 % of base) : 26662.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -6 (-0.74 % of base) : 26664.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
          -6 (-0.64 % of base) : 234366.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -5 (-0.63 % of base) : 240145.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
          -4 (-0.52 % of base) : 203024.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseAudio(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
          -6 (-0.38 % of base) : 153227.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
          -2 (-0.29 % of base) : 19789.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
          -5 (-0.28 % of base) : 183764.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -5 (-0.28 % of base) : 175910.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
          -9 (-0.19 % of base) : 258833.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
          -9 (-0.18 % of base) : 258765.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)

38 total methods with Code Size differences (22 improved, 16 regressed).


libraries.pmi.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 67667009 (overridden on cmd)
Total bytes of diff: 67666159 (overridden on cmd)
Total bytes of delta: -850 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 260685.dasm (3.52 % of base)
          22 : 250745.dasm (0.88 % of base)
          12 : 319618.dasm (1.22 % of base)
          11 : 57527.dasm (0.50 % of base)
          10 : 283391.dasm (1.46 % of base)
           9 : 288403.dasm (0.38 % of base)
           7 : 255692.dasm (0.71 % of base)
           7 : 252867.dasm (0.11 % of base)
           6 : 183079.dasm (0.84 % of base)
           6 : 209577.dasm (0.27 % of base)
           5 : 251747.dasm (0.16 % of base)
           5 : 284325.dasm (0.08 % of base)
           5 : 242999.dasm (0.46 % of base)
           5 : 288409.dasm (0.15 % of base)
           4 : 308439.dasm (1.06 % of base)
           4 : 326096.dasm (1.36 % of base)
           4 : 105124.dasm (0.04 % of base)
           4 : 168524.dasm (0.63 % of base)
           4 : 203163.dasm (0.63 % of base)
           4 : 278104.dasm (0.40 % of base)

Top file improvements (bytes):
         -43 : 340011.dasm (-0.55 % of base)
         -38 : 339503.dasm (-0.46 % of base)
         -27 : 57547.dasm (-6.22 % of base)
         -26 : 138940.dasm (-1.16 % of base)
         -26 : 336228.dasm (-1.10 % of base)
         -26 : 336226.dasm (-1.02 % of base)
         -25 : 273504.dasm (-0.73 % of base)
         -23 : 342565.dasm (-0.61 % of base)
         -21 : 196871.dasm (-1.23 % of base)
         -21 : 288397.dasm (-0.69 % of base)
         -20 : 337924.dasm (-3.85 % of base)
         -20 : 192324.dasm (-0.73 % of base)
         -19 : 222825.dasm (-0.50 % of base)
         -19 : 337926.dasm (-3.53 % of base)
         -17 : 330710.dasm (-0.65 % of base)
         -16 : 222914.dasm (-0.71 % of base)
         -16 : 278309.dasm (-1.95 % of base)
         -16 : 300818.dasm (-0.94 % of base)
         -15 : 223093.dasm (-1.39 % of base)
         -14 : 191646.dasm (-1.56 % of base)

71 total files with Code Size differences (36 improved, 35 regressed), 7 unchanged.

Top method regressions (bytes):
          24 (3.52 % of base) : 260685.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          22 (0.88 % of base) : 250745.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
          12 (1.22 % of base) : 319618.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
          11 (0.50 % of base) : 57527.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          10 (1.46 % of base) : 283391.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
           9 (0.38 % of base) : 288403.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
           7 (0.71 % of base) : 255692.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           7 (0.11 % of base) : 252867.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
           6 (0.27 % of base) : 209577.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:FinalizeCustomAttributeTableRows():this (FullOpts)
           6 (0.84 % of base) : 183079.dasm - Newtonsoft.Json.JsonPosition:BuildPath(System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition],System.Nullable`1[Newtonsoft.Json.JsonPosition]):System.String (FullOpts)
           5 (0.08 % of base) : 284325.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.DebugInfo,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
           5 (0.15 % of base) : 288409.dasm - R2RTest.BuildFolderSet:Compile():ubyte:this (FullOpts)
           5 (0.16 % of base) : 251747.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:GenerateLiteralMembersElementInternal(System.Xml.Serialization.MemberMapping[],ubyte,System.Object[]):ubyte:this (FullOpts)
           5 (0.46 % of base) : 242999.dasm - System.Xml.XmlWellFormedWriter:GeneratePrefix():System.String:this (FullOpts)
           4 (0.40 % of base) : 278104.dasm - ILCompiler.Reflection.ReadyToRun.x86.GcTransitionCall:ToString():System.String:this (FullOpts)
           4 (0.63 % of base) : 168524.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (0.63 % of base) : 203163.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (1.30 % of base) : 36934.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
           4 (1.30 % of base) : 97925.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
           4 (0.04 % of base) : 105124.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser:GetManifestForRegisteredProvider(System.Guid):System.String (FullOpts)

Top method improvements (bytes):
         -43 (-0.55 % of base) : 340011.dasm - TestRunner:DoWorkStress():int:this (FullOpts)
         -38 (-0.46 % of base) : 339503.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
         -27 (-6.22 % of base) : 57547.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -26 (-1.16 % of base) : 138940.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo]):System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo] (FullOpts)
         -26 (-1.02 % of base) : 336226.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts)
         -26 (-1.10 % of base) : 336228.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
         -25 (-0.73 % of base) : 273504.dasm - ILCompiler.IBC.IBCProfileParser:ParseIBCDataFromModule(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ProfileData:this (FullOpts)
         -23 (-0.61 % of base) : 342565.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -21 (-1.23 % of base) : 196871.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
         -21 (-0.69 % of base) : 288397.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
         -20 (-0.73 % of base) : 192324.dasm - Microsoft.Build.BackEnd.PropertyParser:GetTableWithEscaping(Microsoft.Build.BackEnd.TaskLoggingHelper,System.String,System.String,System.String[],byref):ubyte (FullOpts)
         -20 (-3.85 % of base) : 337924.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ReserveOneMessage():ubyte:this (FullOpts)
         -19 (-0.50 % of base) : 222825.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:GetGroupsMemberOf(System.DirectoryServices.AccountManagement.Principal):System.DirectoryServices.AccountManagement.ResultSet:this (FullOpts)
         -19 (-3.53 % of base) : 337926.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -17 (-0.65 % of base) : 330710.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
         -16 (-1.95 % of base) : 278309.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -16 (-0.94 % of base) : 300818.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -16 (-0.71 % of base) : 222914.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
         -15 (-1.39 % of base) : 223093.dasm - System.DirectoryServices.AccountManagement.SAMStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
         -14 (-1.56 % of base) : 191646.dasm - Microsoft.Build.Execution.BuildManager:OnThreadException(System.Exception):this (FullOpts)

Top method regressions (percentages):
          24 (3.52 % of base) : 260685.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
           2 (1.60 % of base) : 308427.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
          10 (1.46 % of base) : 283391.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
           2 (1.42 % of base) : 317966.dasm - System.Net.HttpListenerResponse:FreePinnedHeaders(System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]) (FullOpts)
           4 (1.36 % of base) : 326096.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
           2 (1.33 % of base) : 255688.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncMapTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
           4 (1.30 % of base) : 36934.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
           4 (1.30 % of base) : 97925.dasm - Microsoft.Diagnostics.Tracing.ETWKernelControl:SaveExtensions(System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.ETWKernelControl+ExtensionItem],ulong,int):int (FullOpts)
          12 (1.22 % of base) : 319618.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
           2 (1.19 % of base) : 194699.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
           4 (1.06 % of base) : 308439.dasm - System.IO.Compression.Zip64ExtraField:RemoveZip64Blocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]) (FullOpts)
           3 (1.00 % of base) : 275476.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder+EmbeddingStateList:Collect(Internal.TypeSystem.Ecma.EcmaGenericParameter,int):this (FullOpts)
           2 (0.90 % of base) : 166115.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           2 (0.90 % of base) : 200867.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
          22 (0.88 % of base) : 250745.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
           2 (0.84 % of base) : 231588.dasm - System.Net.Http.Http3RequestStream:CopyTrailersToResponseMessage(System.Net.Http.HttpResponseMessage):this (FullOpts)
           6 (0.84 % of base) : 183079.dasm - Newtonsoft.Json.JsonPosition:BuildPath(System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition],System.Nullable`1[Newtonsoft.Json.JsonPosition]):System.String (FullOpts)
           2 (0.84 % of base) : 255687.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncLogTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
           3 (0.83 % of base) : 326097.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
           2 (0.83 % of base) : 326069.dasm - System.Collections.ObjectModel.KeyedCollection`2[ubyte,System.Nullable`1[int]]:CreateDictionary():this (FullOpts)

Top method improvements (percentages):
         -27 (-6.22 % of base) : 57547.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MostSpecificProcedure(System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],byref,System.Object[],System.String[]):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
         -20 (-3.85 % of base) : 337924.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ReserveOneMessage():ubyte:this (FullOpts)
          -8 (-3.62 % of base) : 338033.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         -19 (-3.53 % of base) : 337926.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -10 (-2.49 % of base) : 263984.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:RemoveLexicon(System.Uri):this (FullOpts)
          -6 (-2.11 % of base) : 343321.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
          -6 (-2.03 % of base) : 195645.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
         -16 (-1.95 % of base) : 278309.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
         -10 (-1.84 % of base) : 332600.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
          -9 (-1.80 % of base) : 186875.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
          -5 (-1.72 % of base) : 262956.dasm - System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
          -8 (-1.57 % of base) : 232544.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -14 (-1.56 % of base) : 191646.dasm - Microsoft.Build.Execution.BuildManager:OnThreadException(System.Exception):this (FullOpts)
         -10 (-1.45 % of base) : 299265.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:GetGenericName(System.String,int[],int):System.String (FullOpts)
          -5 (-1.42 % of base) : 193876.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
          -5 (-1.40 % of base) : 182581.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -15 (-1.39 % of base) : 223093.dasm - System.DirectoryServices.AccountManagement.SAMStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
         -10 (-1.36 % of base) : 262332.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
          -3 (-1.35 % of base) : 280223.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
         -10 (-1.30 % of base) : 162422.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ValidateBindArgument(System.Dynamic.DynamicMetaObject[],System.String) (FullOpts)


libraries_tests.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 42430255 (overridden on cmd)
Total bytes of diff: 42430230 (overridden on cmd)
Total bytes of delta: -25 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          25 : 35034.dasm (2.01 % of base)
          24 : 99224.dasm (3.52 % of base)
          21 : 114351.dasm (1.71 % of base)
           7 : 23644.dasm (1.05 % of base)
           6 : 41091.dasm (0.50 % of base)
           5 : 108329.dasm (0.61 % of base)
           3 : 75942.dasm (0.25 % of base)
           3 : 109369.dasm (0.14 % of base)
           2 : 75833.dasm (0.26 % of base)
           2 : 75912.dasm (0.47 % of base)
           2 : 76236.dasm (0.39 % of base)
           2 : 76290.dasm (0.36 % of base)
           2 : 76328.dasm (0.38 % of base)
           2 : 76456.dasm (0.26 % of base)
           2 : 76516.dasm (0.27 % of base)
           2 : 76738.dasm (0.39 % of base)
           2 : 76740.dasm (0.39 % of base)
           2 : 76762.dasm (0.60 % of base)
           2 : 76767.dasm (0.39 % of base)
           2 : 76872.dasm (0.31 % of base)

Top file improvements (bytes):
         -21 : 76734.dasm (-1.26 % of base)
         -20 : 76736.dasm (-1.63 % of base)
         -16 : 76733.dasm (-1.02 % of base)
         -16 : 76742.dasm (-1.10 % of base)
         -16 : 76775.dasm (-1.10 % of base)
         -16 : 22997.dasm (-1.72 % of base)
         -16 : 95823.dasm (-1.70 % of base)
         -10 : 25106.dasm (-1.75 % of base)
          -7 : 75981.dasm (-0.15 % of base)
          -6 : 57688.dasm (-0.16 % of base)
          -6 : 8067.dasm (-0.46 % of base)
          -6 : 1143.dasm (-0.47 % of base)
          -6 : 58415.dasm (-0.95 % of base)
          -6 : 62305.dasm (-0.15 % of base)
          -3 : 102033.dasm (-0.12 % of base)
          -3 : 1128.dasm (-0.23 % of base)
          -3 : 4452.dasm (-0.23 % of base)
          -2 : 108335.dasm (-0.14 % of base)

49 total files with Code Size differences (18 improved, 31 regressed), 1 unchanged.

Top method regressions (bytes):
          25 (2.01 % of base) : 35034.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          24 (3.52 % of base) : 99224.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)
          21 (1.71 % of base) : 114351.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           7 (1.05 % of base) : 23644.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (Tier0-FullOpts)
           6 (0.50 % of base) : 41091.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           5 (0.61 % of base) : 108329.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunGetIndexOfFirstCharacterToEncodeUtf8_BmpExtendedAllValidChars(ushort):this (Tier0-FullOpts)
           3 (0.25 % of base) : 75942.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (Tier1-OSR)
           3 (0.14 % of base) : 109369.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:<CreateBDDFromSetString>g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (Tier0-FullOpts)
           2 (0.40 % of base) : 76386.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeClassLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.22 % of base) : 76771.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDocumentTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEventMapTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.31 % of base) : 76872.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEventTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.47 % of base) : 75912.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.46 % of base) : 76247.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldRvaTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (Tier1-OSR)
           2 (0.39 % of base) : 76767.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeGenericParamConstraintTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.27 % of base) : 76516.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeGenericParamTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76236.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeImportScopeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76561.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeInterfaceImplTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.38 % of base) : 76328.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalConstantTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.16 % of base) : 76182.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalScopeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)

Top method improvements (bytes):
         -21 (-1.26 % of base) : 76734.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeCustomAttributeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -20 (-1.63 % of base) : 76736.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldMarshalTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.72 % of base) : 22997.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.70 % of base) : 95823.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.02 % of base) : 76733.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.10 % of base) : 76775.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.10 % of base) : 76742.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -10 (-1.75 % of base) : 25106.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
          -7 (-0.15 % of base) : 75981.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)
          -6 (-0.16 % of base) : 57688.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
          -6 (-0.15 % of base) : 62305.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
          -6 (-0.46 % of base) : 8067.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -6 (-0.47 % of base) : 1143.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -6 (-0.95 % of base) : 58415.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Instrumented Tier1)
          -3 (-0.23 % of base) : 1128.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -3 (-0.23 % of base) : 4452.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -3 (-0.12 % of base) : 102033.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int):this (Tier0-FullOpts)
          -2 (-0.14 % of base) : 108335.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunGetIndexOfFirstCharacterToEncodeUtf8_BmpExtendedSomeCharsNeedEncoding(ushort):this (Tier0-FullOpts)

Top method regressions (percentages):
          24 (3.52 % of base) : 99224.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (Tier0-FullOpts)
          25 (2.01 % of base) : 35034.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          21 (1.71 % of base) : 114351.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           7 (1.05 % of base) : 23644.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (Tier0-FullOpts)
           5 (0.61 % of base) : 108329.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunGetIndexOfFirstCharacterToEncodeUtf8_BmpExtendedAllValidChars(ushort):this (Tier0-FullOpts)
           2 (0.60 % of base) : 76762.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           6 (0.50 % of base) : 41091.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
           2 (0.47 % of base) : 75912.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.46 % of base) : 76247.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldRvaTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (Tier1-OSR)
           2 (0.40 % of base) : 76386.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeClassLayoutTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEventMapTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76767.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeGenericParamConstraintTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76236.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeImportScopeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76561.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeInterfaceImplTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76758.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76746.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeNestedClassTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76740.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializePropertyMapTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.39 % of base) : 76848.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStateMachineMethodTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.38 % of base) : 76328.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalConstantTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
           2 (0.36 % of base) : 76290.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalVariableTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)

Top method improvements (percentages):
         -10 (-1.75 % of base) : 25106.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -16 (-1.72 % of base) : 22997.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-1.70 % of base) : 95823.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-1.63 % of base) : 76736.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeFieldMarshalTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -21 (-1.26 % of base) : 76734.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeCustomAttributeTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.10 % of base) : 76775.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.10 % of base) : 76742.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -16 (-1.02 % of base) : 76733.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
          -6 (-0.95 % of base) : 58415.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Instrumented Tier1)
          -6 (-0.47 % of base) : 1143.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -6 (-0.46 % of base) : 8067.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
          -3 (-0.23 % of base) : 1128.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -3 (-0.23 % of base) : 4452.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
          -6 (-0.16 % of base) : 57688.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
          -6 (-0.15 % of base) : 62305.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
          -7 (-0.15 % of base) : 75981.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Strings():this (Tier1-OSR)
          -2 (-0.14 % of base) : 108335.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunGetIndexOfFirstCharacterToEncodeUtf8_BmpExtendedSomeCharsNeedEncoding(ushort):this (Tier0-FullOpts)
          -3 (-0.12 % of base) : 102033.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int):this (Tier0-FullOpts)


librariestestsnotieredcompilation.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 142641215 (overridden on cmd)
Total bytes of diff: 142640344 (overridden on cmd)
Total bytes of delta: -871 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          40 : 236139.dasm (3.38 % of base)
          24 : 249268.dasm (3.52 % of base)
          16 : 265206.dasm (1.16 % of base)
          15 : 69705.dasm (1.23 % of base)
          15 : 235927.dasm (0.89 % of base)
          14 : 238860.dasm (0.89 % of base)
          14 : 240597.dasm (0.89 % of base)
          12 : 244551.dasm (1.02 % of base)
          12 : 244439.dasm (0.96 % of base)
          12 : 244442.dasm (1.03 % of base)
          12 : 244484.dasm (0.93 % of base)
          12 : 244501.dasm (1.04 % of base)
          11 : 70056.dasm (0.55 % of base)
          11 : 237714.dasm (0.75 % of base)
          10 : 69661.dasm (0.54 % of base)
          10 : 69664.dasm (0.53 % of base)
          10 : 31137.dasm (0.89 % of base)
          10 : 73373.dasm (1.52 % of base)
           7 : 192504.dasm (0.11 % of base)
           7 : 58836.dasm (0.37 % of base)

Top file improvements (bytes):
         -34 : 148292.dasm (-1.36 % of base)
         -24 : 114861.dasm (-0.60 % of base)
         -23 : 277132.dasm (-4.00 % of base)
         -23 : 299625.dasm (-4.00 % of base)
         -23 : 18434.dasm (-0.62 % of base)
         -23 : 805.dasm (-0.62 % of base)
         -21 : 339283.dasm (-0.72 % of base)
         -21 : 224541.dasm (-0.41 % of base)
         -20 : 333824.dasm (-3.85 % of base)
         -19 : 334287.dasm (-3.53 % of base)
         -19 : 331948.dasm (-0.77 % of base)
         -18 : 180686.dasm (-0.96 % of base)
         -18 : 22072.dasm (-0.96 % of base)
         -17 : 224414.dasm (-0.65 % of base)
         -16 : 102538.dasm (-0.96 % of base)
         -15 : 144836.dasm (-0.64 % of base)
         -15 : 184379.dasm (-0.29 % of base)
         -14 : 248870.dasm (-0.68 % of base)
         -14 : 23435.dasm (-1.08 % of base)
         -14 : 65666.dasm (-0.31 % of base)

72 total files with Code Size differences (39 improved, 33 regressed), 12 unchanged.

Top method regressions (bytes):
          40 (3.38 % of base) : 236139.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
          24 (3.52 % of base) : 249268.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          16 (1.16 % of base) : 265206.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
          15 (1.23 % of base) : 69705.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:CopyDirectory_SourceDirectoryName_DestinationDirectoryName():this (FullOpts)
          15 (0.89 % of base) : 235927.dasm - System.Tests.DecimalTests+BigIntegerDiv:Test() (FullOpts)
          14 (0.89 % of base) : 240597.dasm - System.Tests.DecimalTests+BigIntegerAdd:Test() (FullOpts)
          14 (0.89 % of base) : 238860.dasm - System.Tests.DecimalTests+BigIntegerMul:Test() (FullOpts)
          12 (1.03 % of base) : 244442.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
          12 (1.04 % of base) : 244501.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
          12 (0.93 % of base) : 244484.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
          12 (1.02 % of base) : 244551.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
          12 (0.96 % of base) : 244439.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
          11 (0.55 % of base) : 70056.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          11 (0.75 % of base) : 237714.dasm - System.Tests.DecimalTests+BigIntegerMod:Test() (FullOpts)
          10 (0.89 % of base) : 31137.dasm - Microsoft.Extensions.Caching.Memory.CapacityTests:NoCompactionWhenNoMaximumEntriesCountSpecified():this (FullOpts)
          10 (0.54 % of base) : 69661.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:GetDirectories_Directory():this (FullOpts)
          10 (0.53 % of base) : 69664.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:GetDirectories_Directory_SearchOption_Wildcards():this (FullOpts)
          10 (1.52 % of base) : 73373.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
           7 (0.37 % of base) : 58836.dasm - Microsoft.Extensions.Logging.Generators.Tests.LoggerMessageGeneratedCodeTests:TestCollection(int,Microsoft.Extensions.Logging.Generators.Tests.MockLogger) (FullOpts)
           7 (0.11 % of base) : 192504.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)

Top method improvements (bytes):
         -34 (-1.36 % of base) : 148292.dasm - System.IO.Tests.RandomAccess_NoBuffering+<ReadAsyncUsingMultipleBuffers>d__3:MoveNext():this (FullOpts)
         -24 (-0.60 % of base) : 114861.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<TestActivityCreationProperties>b__9_0():this (FullOpts)
         -23 (-4.00 % of base) : 277132.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -23 (-4.00 % of base) : 299625.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -23 (-0.62 % of base) : 18434.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -23 (-0.62 % of base) : 805.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
         -21 (-0.41 % of base) : 224541.dasm - System.Numerics.Tests.IsEvenTest:RunIsEvenTests() (FullOpts)
         -21 (-0.72 % of base) : 339283.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         -20 (-3.85 % of base) : 333824.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)
         -19 (-0.77 % of base) : 331948.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
         -19 (-3.53 % of base) : 334287.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
         -18 (-0.96 % of base) : 180686.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -18 (-0.96 % of base) : 22072.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -17 (-0.65 % of base) : 224414.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
         -16 (-0.96 % of base) : 102538.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
         -15 (-0.64 % of base) : 144836.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
         -15 (-0.29 % of base) : 184379.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<Duplex>d__13:MoveNext():this (FullOpts)
         -14 (-0.31 % of base) : 65666.dasm - Microsoft.Extensions.Options.Generators.Parser:GetValidatorTypes(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,Microsoft.CodeAnalysis.SemanticModel]]):System.Collections.Generic.IReadOnlyList`1[Microsoft.Extensions.Options.Generators.ValidatorType]:this (FullOpts)
         -14 (-1.08 % of base) : 23435.dasm - NuGet.Packaging.Signing.SignedPackageArchiveUtility:VerifySignedPackageIntegrity(System.IO.BinaryReader,System.Security.Cryptography.HashAlgorithm,ubyte[]):ubyte (FullOpts)
         -14 (-0.68 % of base) : 248870.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)

Top method regressions (percentages):
          24 (3.52 % of base) : 249268.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
          40 (3.38 % of base) : 236139.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
           2 (1.60 % of base) : 144913.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
           2 (1.60 % of base) : 150417.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
          10 (1.52 % of base) : 73373.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
           2 (1.42 % of base) : 175520.dasm - System.Net.HttpListenerResponse:FreePinnedHeaders(System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]) (FullOpts)
           2 (1.42 % of base) : 182053.dasm - System.Net.HttpListenerResponse:FreePinnedHeaders(System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]) (FullOpts)
          15 (1.23 % of base) : 69705.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:CopyDirectory_SourceDirectoryName_DestinationDirectoryName():this (FullOpts)
          16 (1.16 % of base) : 265206.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
           4 (1.14 % of base) : 144911.dasm - System.IO.Compression.Zip64ExtraField:RemoveZip64Blocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]) (FullOpts)
           4 (1.14 % of base) : 150415.dasm - System.IO.Compression.Zip64ExtraField:RemoveZip64Blocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField]) (FullOpts)
          12 (1.04 % of base) : 244501.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
          12 (1.03 % of base) : 244442.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
          12 (1.02 % of base) : 244551.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
           3 (0.96 % of base) : 15081.dasm - Microsoft.CodeAnalysis.Shared.Extensions.ListExtensions:AddRangeWhere[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation](System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],System.Func`2[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation,ubyte]) (FullOpts)
          12 (0.96 % of base) : 244439.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
           2 (0.95 % of base) : 48183.dasm - Moq.Mock:Verify(Moq.Mock,System.Linq.Expressions.LambdaExpression,Moq.Times,System.String) (FullOpts)
          12 (0.93 % of base) : 244484.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
           2 (0.90 % of base) : 64220.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           2 (0.90 % of base) : 58176.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)

Top method improvements (percentages):
         -23 (-4.00 % of base) : 277132.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -23 (-4.00 % of base) : 299625.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsRootTypeTest>d__8`1[ubyte]:MoveNext():this (FullOpts)
         -20 (-3.85 % of base) : 333824.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)
          -8 (-3.62 % of base) : 333216.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         -19 (-3.53 % of base) : 334287.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ConsumeOnePostponedMessage():ubyte:this (FullOpts)
          -9 (-3.27 % of base) : 164799.dasm - System.Linq.Tests.ConcatTests:VerifyEqualsWorker[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int]) (FullOpts)
          -6 (-2.18 % of base) : 145682.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
         -13 (-2.16 % of base) : 202378.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (FullOpts)
          -6 (-2.11 % of base) : 18155.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
          -6 (-2.11 % of base) : 489.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
         -10 (-1.84 % of base) : 247786.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
         -12 (-1.59 % of base) : 256225.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
          -8 (-1.58 % of base) : 254747.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountExceedingDefaultLimit_MemberData>d__18:MoveNext():ubyte:this (FullOpts)
          -8 (-1.57 % of base) : 254815.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
          -8 (-1.57 % of base) : 21780.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.57 % of base) : 170727.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.47 % of base) : 254646.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
         -13 (-1.41 % of base) : 14691.dasm - Microsoft.CodeAnalysis.DocumentationCommentId+Parser:ParseTypeSymbol(System.String,byref,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.ISymbol]) (FullOpts)
          -5 (-1.40 % of base) : 47569.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
         -34 (-1.36 % of base) : 148292.dasm - System.IO.Tests.RandomAccess_NoBuffering+<ReadAsyncUsingMultipleBuffers>d__3:MoveNext():this (FullOpts)


realworld.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14769832 (overridden on cmd)
Total bytes of diff: 14769599 (overridden on cmd)
Total bytes of delta: -233 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 38272.dasm (7.50 % of base)
          11 : 15981.dasm (1.38 % of base)
           7 : 34122.dasm (0.71 % of base)
           7 : 36432.dasm (0.43 % of base)
           6 : 18782.dasm (0.40 % of base)
           6 : 38303.dasm (0.52 % of base)
           5 : 34563.dasm (0.14 % of base)
           4 : 17696.dasm (0.17 % of base)
           4 : 27793.dasm (0.75 % of base)
           4 : 37146.dasm (0.41 % of base)
           4 : 13213.dasm (0.18 % of base)
           4 : 27811.dasm (0.36 % of base)
           4 : 36073.dasm (0.53 % of base)
           4 : 36664.dasm (1.93 % of base)
           4 : 37392.dasm (0.57 % of base)
           4 : 38240.dasm (0.11 % of base)
           4 : 22989.dasm (0.70 % of base)
           4 : 27812.dasm (0.29 % of base)
           4 : 36854.dasm (0.13 % of base)
           4 : 38301.dasm (0.35 % of base)

Top file improvements (bytes):
         -92 : 1968.dasm (-3.56 % of base)
         -71 : 36154.dasm (-2.76 % of base)
         -38 : 17244.dasm (-0.91 % of base)
         -37 : 38054.dasm (-2.98 % of base)
         -25 : 37920.dasm (-3.69 % of base)
         -18 : 19547.dasm (-3.75 % of base)
         -17 : 37462.dasm (-0.58 % of base)
         -16 : 37407.dasm (-1.74 % of base)
         -16 : 38730.dasm (-1.14 % of base)
         -15 : 19073.dasm (-0.81 % of base)
         -12 : 19374.dasm (-3.76 % of base)
         -12 : 38046.dasm (-3.22 % of base)
         -10 : 38331.dasm (-1.97 % of base)
         -10 : 36754.dasm (-0.99 % of base)
          -8 : 20617.dasm (-0.45 % of base)
          -8 : 38647.dasm (-1.08 % of base)
          -8 : 559.dasm (-0.54 % of base)
          -8 : 37475.dasm (-0.44 % of base)
          -8 : 2162.dasm (-0.54 % of base)
          -7 : 35112.dasm (-1.23 % of base)

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

Top method regressions (bytes):
          12 (7.50 % of base) : 38272.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
          11 (1.38 % of base) : 15981.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           7 (0.43 % of base) : 36432.dasm - System.Management.Automation.Language.VariableAnalysis:FinishAnalysis(ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
           7 (0.71 % of base) : 34122.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
           6 (0.52 % of base) : 38303.dasm - System.Management.Automation.PSModuleInfo:get_ExportedAliases():System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.AliasInfo]:this (FullOpts)
           6 (0.40 % of base) : 18782.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
           5 (0.14 % of base) : 34563.dasm - System.Management.Automation.Runspaces.PSSnapInHelpers:AnalyzePSSnapInAssembly(System.Reflection.Assembly,System.String,System.Management.Automation.PSSnapInInfo,System.Management.Automation.PSModuleInfo,byref,byref,byref,byref) (FullOpts)
           4 (0.18 % of base) : 13213.dasm - FSharp.Compiler.CheckComputationExpressions:trans@1589-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.AccessibilityLogic+AccessorDomain,System.String,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`8[System.String,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[System.String],FSharp.Compiler.Infos+MethInfo]]]],System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`8[System.String,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[System.String],FSharp.Compiler.Infos+MethInfo]]]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],FSharp.Compiler.CheckExpressions+TcEnv,Internal.Utilities.Library.LazyWithContext`2[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+TcEnv],FSharp.Compiler.Text.Range],ubyte,FSharp.Compiler.CheckComputationExpressions+CompExprTranslationPass,FSharp.Compiler.CheckComputationExpressions+CustomOperationsMode,Internal.Utilities.Library.LazyWithContext`2[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+TcEnv],FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Syntax.SynExpr]):FSharp.Compiler.Syntax.SynExpr (FullOpts)
           4 (0.70 % of base) : 22989.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
           4 (0.36 % of base) : 27811.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullAttributeValues(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[System.String]:this (FullOpts)
           4 (0.29 % of base) : 27812.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullWhenAttributeValues(System.Reflection.Metadata.EntityHandle):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[System.String]]:this (FullOpts)
           4 (0.75 % of base) : 27793.dasm - Microsoft.CodeAnalysis.PEModule:GetStringValuesOfNotNullIfNotNullAttribute(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableHashSet`1[System.String]:this (FullOpts)
           4 (0.11 % of base) : 38240.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadBinaryModule(System.Management.Automation.PSModuleInfo,System.String,System.String,System.Reflection.Assembly,System.String,System.Management.Automation.SessionState,Microsoft.PowerShell.Commands.ModuleCmdletBase+ImportModuleOptions,int,System.String,byref,System.String,ubyte):System.Management.Automation.PSModuleInfo:this (FullOpts)
           4 (0.13 % of base) : 36854.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
           4 (0.57 % of base) : 37392.dasm - System.Management.Automation.CommandSearcher:MoveNext():ubyte:this (FullOpts)
           4 (1.93 % of base) : 36664.dasm - System.Management.Automation.Interpreter.InstructionList:BuildRuntimeLabels():System.Management.Automation.Interpreter.RuntimeLabel[]:this (FullOpts)
           4 (0.41 % of base) : 37146.dasm - System.Management.Automation.PSLocalEventManager:ProcessNewEventImplementation(System.Management.Automation.PSEventArgs,ubyte):this (FullOpts)
           4 (0.35 % of base) : 38301.dasm - System.Management.Automation.PSModuleInfo:get_ExportedFunctions():System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo]:this (FullOpts)
           4 (0.53 % of base) : 36073.dasm - System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)
           4 (0.17 % of base) : 17696.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)

Top method improvements (bytes):
         -92 (-3.56 % of base) : 1968.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -71 (-2.76 % of base) : 36154.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -38 (-0.91 % of base) : 17244.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
         -37 (-2.98 % of base) : 38054.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)
         -25 (-3.69 % of base) : 37920.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -18 (-3.75 % of base) : 19547.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -17 (-0.58 % of base) : 37462.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
         -16 (-1.14 % of base) : 38730.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
         -16 (-1.74 % of base) : 37407.dasm - System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56:MoveNext():ubyte:this (FullOpts)
         -15 (-0.81 % of base) : 19073.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         -12 (-3.22 % of base) : 38046.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -12 (-3.76 % of base) : 19374.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -10 (-1.97 % of base) : 38331.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
         -10 (-0.99 % of base) : 36754.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
          -8 (-0.45 % of base) : 20617.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
          -8 (-1.08 % of base) : 38647.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
          -8 (-0.44 % of base) : 37475.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
          -8 (-0.54 % of base) : 559.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.54 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -7 (-1.23 % of base) : 35112.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)

Top method regressions (percentages):
          12 (7.50 % of base) : 38272.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
           2 (2.25 % of base) : 35005.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
           2 (1.94 % of base) : 38226.dasm - System.Management.Automation.ModuleIntrinsics:PatternContainsWildcard(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]):ubyte (FullOpts)
           4 (1.93 % of base) : 36664.dasm - System.Management.Automation.Interpreter.InstructionList:BuildRuntimeLabels():System.Management.Automation.Interpreter.RuntimeLabel[]:this (FullOpts)
           2 (1.92 % of base) : 17020.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
           2 (1.82 % of base) : 38711.dasm - System.Management.Automation.CmdletParameterBinderController:AtLeastOneUnboundValidParameterSetTakesPipelineInput(uint):ubyte:this (FullOpts)
          11 (1.38 % of base) : 15981.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
           2 (1.36 % of base) : 35150.dasm - System.Management.Automation.SessionStateInternal:ProviderExists(System.Management.Automation.ProviderInfo):System.Management.Automation.ProviderInfo:this (FullOpts)
           2 (1.17 % of base) : 36434.dasm - System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
           3 (1.02 % of base) : 18747.dasm - System.Diagnostics.Metrics.Meter:GetCachedInstrument(System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument],System.Type,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Instrument (FullOpts)
           2 (1.02 % of base) : 38042.dasm - System.Management.Automation.Internal.PipelineProcessor:SetupParameterVariables():this (FullOpts)
           2 (0.94 % of base) : 20751.dasm - Roslyn.Utilities.CompilerOptionParseUtilities:ParseFeatures(System.Collections.Generic.IDictionary`2[System.String,System.String],System.Collections.Generic.List`1[System.String]) (FullOpts)
           2 (0.91 % of base) : 37154.dasm - System.Management.Automation.Runspaces.LocalRunspace:<DoCloseHelper>b__54_0():System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]:this (FullOpts)
           2 (0.90 % of base) : 33908.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
           2 (0.90 % of base) : 38280.dasm - System.Management.Automation.PSModuleInfo:get_CompiledExports():System.Collections.Generic.List`1[System.Management.Automation.CmdletInfo]:this (FullOpts)
           3 (0.85 % of base) : 35208.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadCustomControlFromObjectModel(System.Management.Automation.CustomControl,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.ComplexControlBody:this (FullOpts)
           2 (0.79 % of base) : 35158.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadHeadersSectionFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.TableControlBody,System.Collections.Generic.List`1[System.Management.Automation.TableControlColumnHeader]) (FullOpts)
           2 (0.78 % of base) : 34139.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           2 (0.78 % of base) : 34148.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
           4 (0.75 % of base) : 27793.dasm - Microsoft.CodeAnalysis.PEModule:GetStringValuesOfNotNullIfNotNullAttribute(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableHashSet`1[System.String]:this (FullOpts)

Top method improvements (percentages):
         -12 (-3.76 % of base) : 19374.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
         -18 (-3.75 % of base) : 19547.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
         -25 (-3.69 % of base) : 37920.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
         -92 (-3.56 % of base) : 1968.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -12 (-3.22 % of base) : 38046.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
         -37 (-2.98 % of base) : 38054.dasm - System.Management.Automation.CommandProcessor:ProcessRecord():this (FullOpts)
         -71 (-2.76 % of base) : 36154.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -10 (-1.97 % of base) : 38331.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
         -16 (-1.74 % of base) : 37407.dasm - System.Management.Automation.CommandDiscovery+<GetCmdletInfo>d__56:MoveNext():ubyte:this (FullOpts)
          -6 (-1.43 % of base) : 5606.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -6 (-1.26 % of base) : 17857.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -7 (-1.23 % of base) : 35112.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
          -4 (-1.22 % of base) : 35254.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
         -16 (-1.14 % of base) : 38730.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
          -8 (-1.08 % of base) : 38647.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
          -5 (-1.03 % of base) : 35124.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
         -10 (-0.99 % of base) : 36754.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
         -38 (-0.91 % of base) : 17244.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          -5 (-0.86 % of base) : 37153.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
          -5 (-0.84 % of base) : 14951.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)


smoke_tests.nativeaot.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 5085273 (overridden on cmd)
Total bytes of diff: 5085183 (overridden on cmd)
Total bytes of delta: -90 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 12747.dasm (2.84 % of base)
           4 : 11355.dasm (1.72 % of base)
           3 : 12854.dasm (0.16 % of base)
           3 : 7338.dasm (0.16 % of base)
           2 : 2415.dasm (0.56 % of base)
           2 : 2575.dasm (1.02 % of base)
           2 : 2637.dasm (0.44 % of base)
           2 : 32223.dasm (0.70 % of base)
           2 : 7900.dasm (0.23 % of base)
           2 : 8136.dasm (0.19 % of base)
           2 : 13785.dasm (0.19 % of base)
           2 : 12742.dasm (0.84 % of base)
           2 : 13415.dasm (0.26 % of base)

Top file improvements (bytes):
         -10 : 17683.dasm (-3.21 % of base)
         -10 : 20308.dasm (-3.21 % of base)
         -10 : 22966.dasm (-3.21 % of base)
         -10 : 2594.dasm (-3.21 % of base)
         -10 : 8421.dasm (-3.13 % of base)
          -8 : 16145.dasm (-0.57 % of base)
          -8 : 18789.dasm (-0.57 % of base)
          -8 : 21355.dasm (-0.57 % of base)
          -8 : 32422.dasm (-1.64 % of base)
          -6 : 19885.dasm (-1.36 % of base)
          -6 : 2142.dasm (-1.36 % of base)
          -6 : 22525.dasm (-1.36 % of base)
          -6 : 6773.dasm (-1.36 % of base)
          -6 : 17243.dasm (-1.36 % of base)
          -4 : 12089.dasm (-1.09 % of base)
          -4 : 6592.dasm (-1.09 % of base)
          -1 : 4026.dasm (-0.07 % of base)
          -1 : 996.dasm (-0.07 % of base)

31 total files with Code Size differences (18 improved, 13 regressed), 3 unchanged.

Top method regressions (bytes):
           4 (2.84 % of base) : 12747.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
           4 (1.72 % of base) : 11355.dasm - System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)
           3 (0.16 % of base) : 12854.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
           3 (0.16 % of base) : 7338.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
           2 (0.84 % of base) : 12742.dasm - System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
           2 (1.02 % of base) : 2575.dasm - System.Runtime.InteropServices.ComWrappers:DetachNonPromotedObjects() (FullOpts)
           2 (0.56 % of base) : 2415.dasm - System.Runtime.InteropServices.ComWrappers:ReleaseExternalObjectsFromCurrentThread() (FullOpts)
           2 (0.44 % of base) : 2637.dasm - System.Runtime.InteropServices.ComWrappers:WalkExternalTrackerObjects() (FullOpts)
           2 (0.23 % of base) : 7900.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           2 (0.26 % of base) : 13415.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           2 (0.19 % of base) : 8136.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           2 (0.19 % of base) : 13785.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           2 (0.70 % of base) : 32223.dasm - ThreadTest:ExpectPassed(System.String,int) (FullOpts)

Top method improvements (bytes):
         -10 (-3.21 % of base) : 17683.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 20308.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 22966.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 2594.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.13 % of base) : 8421.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-0.57 % of base) : 16145.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.57 % of base) : 18789.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.57 % of base) : 21355.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-1.64 % of base) : 32422.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -6 (-1.36 % of base) : 19885.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 2142.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 22525.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 6773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 17243.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-1.09 % of base) : 12089.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -4 (-1.09 % of base) : 6592.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -1 (-0.07 % of base) : 4026.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -1 (-0.07 % of base) : 996.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method regressions (percentages):
           4 (2.84 % of base) : 12747.dasm - System.Linq.Expressions.Interpreter.BranchLabel:Mark(System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)
           4 (1.72 % of base) : 11355.dasm - System.Linq.Expressions.Interpreter.InstructionList:BuildRuntimeLabels():System.Linq.Expressions.Interpreter.RuntimeLabel[]:this (FullOpts)
           2 (1.02 % of base) : 2575.dasm - System.Runtime.InteropServices.ComWrappers:DetachNonPromotedObjects() (FullOpts)
           2 (0.84 % of base) : 12742.dasm - System.Linq.Expressions.Interpreter.LabelInfo:Define(System.Linq.Expressions.Interpreter.LabelScopeInfo):this (FullOpts)
           2 (0.70 % of base) : 32223.dasm - ThreadTest:ExpectPassed(System.String,int) (FullOpts)
           2 (0.56 % of base) : 2415.dasm - System.Runtime.InteropServices.ComWrappers:ReleaseExternalObjectsFromCurrentThread() (FullOpts)
           2 (0.44 % of base) : 2637.dasm - System.Runtime.InteropServices.ComWrappers:WalkExternalTrackerObjects() (FullOpts)
           2 (0.26 % of base) : 13415.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           2 (0.23 % of base) : 7900.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
           2 (0.19 % of base) : 8136.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           2 (0.19 % of base) : 13785.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           3 (0.16 % of base) : 12854.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)
           3 (0.16 % of base) : 7338.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:FindMatchingInterfaceSlot(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,Internal.NativeFormat.NativeReader,byref,byref,Internal.TypeSystem.InstantiatedMethod,Internal.TypeSystem.DefType,ubyte,ubyte):Internal.TypeSystem.InstantiatedMethod (FullOpts)

Top method improvements (percentages):
         -10 (-3.21 % of base) : 17683.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 20308.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 22966.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.21 % of base) : 2594.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
         -10 (-3.13 % of base) : 8421.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) (FullOpts)
          -8 (-1.64 % of base) : 32422.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
          -6 (-1.36 % of base) : 19885.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 2142.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 22525.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 6773.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -6 (-1.36 % of base) : 17243.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          -4 (-1.09 % of base) : 12089.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -4 (-1.09 % of base) : 6592.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
          -8 (-0.57 % of base) : 16145.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.57 % of base) : 18789.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -8 (-0.57 % of base) : 21355.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -1 (-0.07 % of base) : 4026.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -1 (-0.07 % of base) : 996.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

31 total methods with Code Size differences (18 improved, 13 regressed).