Assembly Diffs

linux arm64

Diffs are based on 134,774 contexts (18,569 MinOpts, 116,205 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 111,892 (44.67%)

Overall (-65,128 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 254,108 -6,996
benchmarks.run_pgo.linux.arm64.checked.mch 1,175,000 -4,220
benchmarks.run_tiered.linux.arm64.checked.mch 1,217,436 -10,432
coreclr_tests.run.linux.arm64.checked.mch 85,076 -872
libraries.crossgen2.linux.arm64.checked.mch 9,628,520 -24
libraries.pmi.linux.arm64.checked.mch 479,152 -11,220
libraries_tests.run.linux.arm64.Release.mch 705,512 -3,148
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 96,188 -4,340
realworld.run.linux.arm64.checked.mch 418,800 -12,572
smoke_tests.nativeaot.linux.arm64.checked.mch 810,696 -11,304

MinOpts (-15,224 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 842,584 -4,120
benchmarks.run_tiered.linux.arm64.checked.mch 1,078,572 -8,036
libraries_tests.run.linux.arm64.Release.mch 520,532 -3,068

FullOpts (-49,904 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 244,632 -6,996
benchmarks.run_pgo.linux.arm64.checked.mch 332,416 -100
benchmarks.run_tiered.linux.arm64.checked.mch 138,864 -2,396
coreclr_tests.run.linux.arm64.checked.mch 85,076 -872
libraries.crossgen2.linux.arm64.checked.mch 9,627,248 -24
libraries.pmi.linux.arm64.checked.mch 479,152 -11,220
libraries_tests.run.linux.arm64.Release.mch 184,980 -80
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 96,188 -4,340
realworld.run.linux.arm64.checked.mch 411,572 -12,572
smoke_tests.nativeaot.linux.arm64.checked.mch 810,508 -11,304

Example diffs

benchmarks.run.linux.arm64.checked.mch

-44 (-73.33%) : 1508.dasm - Interop+Ssl:.cctor() (FullOpts)

@@ -16,27 +16,12 @@ G_M51578_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M51578_IG04 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M51578_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M51578_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #16 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M51578_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 9.00, instruction count 15, allocated bytes for code 60 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
+; Total bytes of code 16, prolog size 8, PerfScore 3.50, instruction count 4, allocated bytes for code 16 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +32,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 4 (0x00004) Actual length = 16 (0x000010)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 1010.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b_10():Perfolizer.Horology.IClock:this (FullOpts)

@@ -16,35 +16,19 @@ G_M52807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M52807_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M52807_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M52807_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52807_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M52807_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #70 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M52807_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 4019.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:get_Empty():System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)

@@ -16,35 +16,19 @@ G_M4114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M4114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M4114_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M4114_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M4114_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M4114_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M4114_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #102 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M4114_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=a12cefed) for method System.Text.RegularExpressions.Symbolic.CharSetSolver:get_Empty():System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=a12cefed) for method System.Text.RegularExpressions.Symbolic.CharSetSolver:get_Empty():System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-3.20%) : 3793.dasm - System.DateTimeParse:DTFITrace(System.Globalization.DateTimeFormatInfo) (FullOpts)

@@ -15,8 +15,8 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp6 [V07,T21] ( 2, 2 ) int -> x0 "Inlining Arg" -; V08 tmp7 [V08,T06] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V07 tmp6 [V07,T20] ( 2, 2 ) int -> x0 "Inlining Arg" +; V08 tmp7 [V08,T05] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V11 tmp10 [V11,T02] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> @@ -24,8 +24,8 @@ ;* V13 tmp12 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp15 [V16,T22] ( 2, 2 ) int -> x0 "Inlining Arg" -; V17 tmp16 [V17,T07] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V16 tmp15 [V16,T21] ( 2, 2 ) int -> x0 "Inlining Arg" +; V17 tmp16 [V17,T06] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V20 tmp19 [V20,T03] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> @@ -33,8 +33,8 @@ ;* V22 tmp21 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp22 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp23 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp24 [V25,T23] ( 2, 2 ) int -> x0 "Inlining Arg" -; V26 tmp25 [V26,T08] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V25 tmp24 [V25,T22] ( 2, 2 ) int -> x0 "Inlining Arg" +; V26 tmp25 [V26,T07] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V27 tmp26 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp27 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V29 tmp28 [V29,T04] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> @@ -42,87 +42,77 @@ ;* V31 tmp30 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V32 tmp31 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp32 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp33 [V34,T24] ( 2, 2 ) int -> x0 "Inlining Arg" -; V35 tmp34 [V35,T09] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x0 "Inlining Arg" +; V35 tmp34 [V35,T08] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V36 tmp35 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp36 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp37 [V38 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V40 tmp39 [V40,T26] ( 3, 1.50) byref -> registers "field V04._reference (fldOffset=0x0)" P-INDEP -; V41 tmp40 [V41,T30] ( 3, 1.50) int -> registers "field V04._length (fldOffset=0x8)" P-INDEP -; V42 tmp41 [V42,T34] ( 2, 1 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T38] ( 2, 1 ) int -> x0 "field V05._length (fldOffset=0x8)" P-INDEP
+; V40 tmp39 [V40,T24] ( 3, 1.50) byref -> registers "field V04._reference (fldOffset=0x0)" P-INDEP +; V41 tmp40 [V41,T28] ( 3, 1.50) int -> registers "field V04._length (fldOffset=0x8)" P-INDEP +; V42 tmp41 [V42,T32] ( 2, 1 ) byref -> x1 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +; V43 tmp42 [V43,T36] ( 2, 1 ) int -> x0 "field V05._length (fldOffset=0x8)" P-INDEP
;* V44 tmp43 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V48 tmp47 [V48,T27] ( 3, 1.50) byref -> registers "field V13._reference (fldOffset=0x0)" P-INDEP -; V49 tmp48 [V49,T31] ( 3, 1.50) int -> registers "field V13._length (fldOffset=0x8)" P-INDEP -; V50 tmp49 [V50,T35] ( 2, 1 ) byref -> x1 single-def "field V14._reference (fldOffset=0x0)" P-INDEP -; V51 tmp50 [V51,T39] ( 2, 1 ) int -> x0 "field V14._length (fldOffset=0x8)" P-INDEP
+; V48 tmp47 [V48,T25] ( 3, 1.50) byref -> registers "field V13._reference (fldOffset=0x0)" P-INDEP +; V49 tmp48 [V49,T29] ( 3, 1.50) int -> registers "field V13._length (fldOffset=0x8)" P-INDEP +; V50 tmp49 [V50,T33] ( 2, 1 ) byref -> x1 single-def "field V14._reference (fldOffset=0x0)" P-INDEP +; V51 tmp50 [V51,T37] ( 2, 1 ) int -> x0 "field V14._length (fldOffset=0x8)" P-INDEP
;* V52 tmp51 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp52 [V53 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ;* V54 tmp53 [V54 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp54 [V55 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V56 tmp55 [V56,T28] ( 3, 1.50) byref -> registers "field V22._reference (fldOffset=0x0)" P-INDEP -; V57 tmp56 [V57,T32] ( 3, 1.50) int -> registers "field V22._length (fldOffset=0x8)" P-INDEP -; V58 tmp57 [V58,T36] ( 2, 1 ) byref -> x1 single-def "field V23._reference (fldOffset=0x0)" P-INDEP -; V59 tmp58 [V59,T40] ( 2, 1 ) int -> x0 "field V23._length (fldOffset=0x8)" P-INDEP
+; V56 tmp55 [V56,T26] ( 3, 1.50) byref -> registers "field V22._reference (fldOffset=0x0)" P-INDEP +; V57 tmp56 [V57,T30] ( 3, 1.50) int -> registers "field V22._length (fldOffset=0x8)" P-INDEP +; V58 tmp57 [V58,T34] ( 2, 1 ) byref -> x1 single-def "field V23._reference (fldOffset=0x0)" P-INDEP +; V59 tmp58 [V59,T38] ( 2, 1 ) int -> x0 "field V23._length (fldOffset=0x8)" P-INDEP
;* V60 tmp59 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V61 tmp60 [V61 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ;* V62 tmp61 [V62 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp62 [V63 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V64 tmp63 [V64,T29] ( 3, 1.50) byref -> registers "field V31._reference (fldOffset=0x0)" P-INDEP -; V65 tmp64 [V65,T33] ( 3, 1.50) int -> registers "field V31._length (fldOffset=0x8)" P-INDEP -; V66 tmp65 [V66,T37] ( 2, 1 ) byref -> x1 single-def "field V32._reference (fldOffset=0x0)" P-INDEP -; V67 tmp66 [V67,T41] ( 2, 1 ) int -> x0 "field V32._length (fldOffset=0x8)" P-INDEP
+; V64 tmp63 [V64,T27] ( 3, 1.50) byref -> registers "field V31._reference (fldOffset=0x0)" P-INDEP +; V65 tmp64 [V65,T31] ( 3, 1.50) int -> registers "field V31._length (fldOffset=0x8)" P-INDEP +; V66 tmp65 [V66,T35] ( 2, 1 ) byref -> x1 single-def "field V32._reference (fldOffset=0x0)" P-INDEP +; V67 tmp66 [V67,T39] ( 2, 1 ) int -> x0 "field V32._length (fldOffset=0x8)" P-INDEP
;* V68 tmp67 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp68 [V69 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-; V70 tmp69 [V70,T10] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V71 tmp70 [V71,T11] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V72 tmp71 [V72,T12] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V73 tmp72 [V73,T13] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V74 tmp73 [V74,T14] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V75 tmp74 [V75,T15] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V76 tmp75 [V76,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V77 tmp76 [V77,T17] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V78 tmp77 [V78,T18] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V79 tmp78 [V79,T19] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V80 tmp79 [V80,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect" -; V81 cse0 [V81,T05] ( 3, 3 ) long -> x20 "CSE - aggressive" -; V82 rat0 [V82,T25] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V70 tmp69 [V70,T09] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V71 tmp70 [V71,T10] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V72 tmp71 [V72,T11] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V73 tmp72 [V73,T12] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V74 tmp73 [V74,T13] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V75 tmp74 [V75,T14] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V76 tmp75 [V76,T15] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V77 tmp76 [V77,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V78 tmp77 [V78,T17] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V79 tmp78 [V79,T18] ( 2, 2 ) ref -> x1 single-def "argument with side effect" +; V80 tmp79 [V80,T19] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M24620_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=16 bbWeight=1 PerfScore 3.00 G_M24620_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - mov x0, x20 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M24620_IG15 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M24620_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldrb w0, [x20, #0xD1FFAB1E] - cbnz w0, G_M24620_IG05 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M24620_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldrb w0, [x0] + cbnz w0, G_M24620_IG04 + ;; size=20 bbWeight=1 PerfScore 5.50 +G_M24620_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldp x19, x20, [sp, #0x10]
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M24620_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M24620_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -132,14 +122,14 @@ G_M24620_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ldr x1, [x1] ldr wzr, [x0] blr x1
- cbnz x0, G_M24620_IG06
+ cbnz x0, G_M24620_IG05
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG07
+ b G_M24620_IG06
;; size=44 bbWeight=0.50 PerfScore 6.00
-G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x1, x0, #12 @@ -152,7 +142,7 @@ G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 mov w1, w2 ; byrRegs -[x1] ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -178,14 +168,14 @@ G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG08
+ cbnz x0, G_M24620_IG07
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG09
+ b G_M24620_IG08
;; size=96 bbWeight=0.50 PerfScore 11.00
-G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x1, x0, #12 @@ -198,7 +188,7 @@ G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 mov w1, w2 ; byrRegs -[x1] ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -224,14 +214,14 @@ G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG10
+ cbnz x0, G_M24620_IG09
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG11
+ b G_M24620_IG10
;; size=96 bbWeight=0.50 PerfScore 11.00
-G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x1, x0, #12 @@ -244,7 +234,7 @@ G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 mov w1, w2 ; byrRegs -[x1] ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M24620_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -270,14 +260,14 @@ G_M24620_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG12
+ cbnz x0, G_M24620_IG11
mov x0, xzr ...

-44 (-2.60%) : 2499.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)

@@ -113,7 +113,7 @@ G_M48248_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 add x20, x0, #24 ; byrRegs +[x20] ldapr w1, [x20]
- tbnz w1, #30, G_M48248_IG41
+ tbnz w1, #30, G_M48248_IG40
ldr x1, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x1] cbz x1, G_M48248_IG03 @@ -123,15 +123,15 @@ G_M48248_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 ; byrRegs +[x1] ldapr w1, [x1] ; byrRegs -[x1]
- cbnz w1, G_M48248_IG44
+ cbnz w1, G_M48248_IG43
;; size=36 bbWeight=1 PerfScore 14.00 G_M48248_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0] cmn w19, #1
- blt G_M48248_IG42
+ blt G_M48248_IG41
ldapr w1, [x20] tst w1, #0xD1FFAB1E
- bne G_M48248_IG14
+ bne G_M48248_IG13
cbnz w19, G_M48248_IG05 mov w0, wzr ;; size=28 bbWeight=1 PerfScore 7.50 @@ -174,7 +174,7 @@ G_M48248_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; gcr arg pop 0 ldapr w0, [x20] tst w0, #0xD1FFAB1E
- bne G_M48248_IG14
+ bne G_M48248_IG13
ldr w0, [fp, #0x48] // [V64 tmp51] cmp w0, #100 blt G_M48248_IG09 @@ -200,7 +200,7 @@ G_M48248_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; byrRegs +[x0] ldapr w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M48248_IG44
+ cbnz w0, G_M48248_IG43
;; size=68 bbWeight=4 PerfScore 86.00 G_M48248_IG09: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz ldr w0, [fp, #0x48] // [V64 tmp51] @@ -219,7 +219,7 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x0 @@ -227,7 +227,7 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b mov x0, x24 ; gcrRegs -[x0] ; byrRegs +[x0]
- cbz x0, G_M48248_IG43
+ cbz x0, G_M48248_IG42
mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0] @@ -236,40 +236,33 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ;; size=52 bbWeight=1 PerfScore 12.50 G_M48248_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1100000 {x20 x24}, byref, isz ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M48248_IG45 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M48248_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1100000 {x20 x24}, 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]
- cbz x1, G_M48248_IG46
+ cbz x1, G_M48248_IG44
ldr x2, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x2]
- cbnz x2, G_M48248_IG16
+ cbnz x2, G_M48248_IG15
mov x25, xzr ; gcrRegs +[x25] mov x26, xzr ;; size=36 bbWeight=1 PerfScore 9.50
-G_M48248_IG13: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref
+G_M48248_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref
; gcrRegs -[x1-x2] str x25, [fp, #0x18] // [V65 tmp52] ; GC ptr vars +{V65} str x26, [fp, #0x30] // [V66 tmp53]
- b G_M48248_IG17
+ b G_M48248_IG16
;; size=12 bbWeight=1 PerfScore 3.00
-G_M48248_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48248_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x25] ; byrRegs -[x20 x24] ; GC ptr vars -{V00 V65} mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M48248_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M48248_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x90] ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -277,7 +270,7 @@ G_M48248_IG15: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0006 {x1 x2}, byrefRegs=1100000 {x20 x24}, gcvars, byref
+G_M48248_IG15: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0006 {x1 x2}, byrefRegs=1100000 {x20 x24}, gcvars, byref
; gcrRegs +[x1-x2] ; byrRegs +[x20 x24] ; GC ptr vars +{V00} @@ -296,9 +289,9 @@ G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 mov x25, x0 ; gcrRegs +[x25] mov x26, x1
- b G_M48248_IG13
+ b G_M48248_IG12
;; size=48 bbWeight=1 PerfScore 11.00
-G_M48248_IG17: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref
+G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars +{V65} ldapr x1, [x24] @@ -307,10 +300,10 @@ G_M48248_IG17: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs ; GC ptr vars +{V09} str wzr, [fp, #0x40] // [V10 loc7] ;; size=12 bbWeight=1 PerfScore 5.00
-G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG17: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; gcrRegs -[x1] ldrb w2, [fp, #0x40] // [V10 loc7]
- cbnz w2, G_M48248_IG22
+ cbnz w2, G_M48248_IG21
add x1, fp, #64 // [V10 loc7] ldr x0, [fp, #0x20] // [V09 loc6] ; gcrRegs +[x0] @@ -318,7 +311,7 @@ G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcref ; gcrRegs -[x0] ; gcr arg pop 0 ldrb w0, [fp, #0x40] // [V10 loc7]
- cbnz w0, G_M48248_IG19
+ cbnz w0, G_M48248_IG18
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -332,17 +325,17 @@ G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcref ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 17.00
-G_M48248_IG19: ; bbWeight=8, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M48248_IG18: ; bbWeight=8, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
ldapr w0, [x20] tst w0, #0xD1FFAB1E
- beq G_M48248_IG23
+ beq G_M48248_IG22
;; size=12 bbWeight=8 PerfScore 36.00
-G_M48248_IG20: ; bbWeight=1, gcVars=0000000001000100 {V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, gcvars, byref
+G_M48248_IG19: ; bbWeight=1, gcVars=0000000001000100 {V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x20 x24] ; GC ptr vars -{V00}
- b G_M48248_IG33
+ b G_M48248_IG32
;; size=4 bbWeight=1 PerfScore 1.00
-G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M48248_IG20: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
add x0, fp, #80 // [V02 arg2] movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this movk x1, #0xD1FFAB1E LSL #16 @@ -352,7 +345,7 @@ G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M48248_IG22: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -361,22 +354,22 @@ G_M48248_IG22: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M48248_IG23: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG22: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; byrRegs +[x20 x24] ; GC ptr vars +{V00} ldr x0, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x0]
- cbz x0, G_M48248_IG24
+ cbz x0, G_M48248_IG23
ldr x0, [fp, #0x50] // [V63 tmp50] add x0, x0, #32 ; gcrRegs -[x0] ; byrRegs +[x0] ldapr w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M48248_IG21
+ cbnz w0, G_M48248_IG20
;; size=24 bbWeight=4 PerfScore 38.00
-G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz - cbz w22, G_M48248_IG25
+G_M48248_IG23: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz + cbz w22, G_M48248_IG24
mov w0, w21 mov w1, w19 movz x2, #0xD1FFAB1E // code for System.Threading.TimeoutHelper:UpdateTimeOut(uint,int):int @@ -387,9 +380,9 @@ G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 { ; gcr arg pop 0 sxtw w23, w0 cmp w23, #0
- ble G_M48248_IG30
+ ble G_M48248_IG29
;; size=44 bbWeight=4 PerfScore 38.00
-G_M48248_IG25: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
ldapr w1, [x20] and w1, w1, #0xD1FFAB1E add w1, w1, #1 @@ -404,9 +397,9 @@ G_M48248_IG25: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 { ; gcr arg pop 0 ldapr w1, [x20] tst w1, #0xD1FFAB1E
- beq G_M48248_IG27
+ beq G_M48248_IG26
;; size=48 bbWeight=4 PerfScore 64.00
-G_M48248_IG26: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x20}, byref
+G_M48248_IG25: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x20}, byref
; byrRegs -[x24] ldapr w1, [x20] and w1, w1, #0xD1FFAB1E @@ -424,9 +417,9 @@ G_M48248_IG26: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x ; gcr arg pop 0 mov w0, #1 str w0, [fp, #0x3C] // [V11 loc8]
- b G_M48248_IG34
+ b G_M48248_IG33
;; size=48 bbWeight=1 PerfScore 14.00
-G_M48248_IG27: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG26: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; byrRegs +[x20 x24] ; GC ptr vars +{V00} ldapr x0, [x24] ...

-40 (-1.93%) : 1965.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:PublicKeyMatches(System.String,ubyte[],ubyte[],byref):ubyte (FullOpts)

@@ -25,7 +25,7 @@ ;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ; V16 tmp9 [V16,T43] ( 3, 1.50) int -> x1
-; V17 tmp10 [V17,T17] ( 6, 3.50) byref -> x24 "Inline stloc first use temp"
+; V17 tmp10 [V17,T16] ( 6, 3.50) byref -> x24 "Inline stloc first use temp"
; V18 tmp11 [V18,T08] ( 7, 5 ) int -> x25 "Inline stloc first use temp" ; V19 tmp12 [V19,T05] ( 4, 6 ) byref -> x23 single-def "Inlining Arg" ; V20 tmp13 [V20,T06] ( 9, 5.50) ref -> x26 class-hnd single-def "Inline stloc first use temp" <System.Object> @@ -86,9 +86,9 @@ ;* V75 tmp68 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ; V76 tmp69 [V76,T26] ( 2, 2 ) int -> x1 "spilling unroll qmark" ;* V77 tmp70 [V77 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V78 tmp71 [V78,T13] ( 4, 4 ) byref -> x1 single-def "Inlining Arg" -; V79 tmp72 [V79,T18] ( 6, 3 ) byref -> x21 "Inline stloc first use temp" -; V80 tmp73 [V80,T15] ( 7, 3.50) int -> x24 "Inline stloc first use temp"
+; V78 tmp71 [V78,T12] ( 4, 4 ) byref -> x1 single-def "Inlining Arg" +; V79 tmp72 [V79,T17] ( 6, 3 ) byref -> x21 "Inline stloc first use temp" +; V80 tmp73 [V80,T14] ( 7, 3.50) int -> x24 "Inline stloc first use temp"
;* V81 tmp74 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V82 tmp75 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V83 tmp76 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -114,9 +114,9 @@ ;* V103 tmp96 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V104 tmp97 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V105 tmp98 [V105 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V106 tmp99 [V106,T14] ( 4, 4 ) byref -> x1 single-def "Inlining Arg" -; V107 tmp100 [V107,T19] ( 6, 3 ) byref -> x21 "Inline stloc first use temp" -; V108 tmp101 [V108,T16] ( 7, 3.50) int -> x24 "Inline stloc first use temp"
+; V106 tmp99 [V106,T13] ( 4, 4 ) byref -> x1 single-def "Inlining Arg" +; V107 tmp100 [V107,T18] ( 6, 3 ) byref -> x21 "Inline stloc first use temp" +; V108 tmp101 [V108,T15] ( 7, 3.50) int -> x24 "Inline stloc first use temp"
;* V109 tmp102 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V110 tmp103 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V111 tmp104 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -229,7 +229,7 @@ ;* V218 tmp211 [V218 ] ( 0, 0 ) byref -> zero-ref "field V131._reference (fldOffset=0x0)" P-INDEP ;* V219 tmp212 [V219 ] ( 0, 0 ) int -> zero-ref "field V131._length (fldOffset=0x8)" P-INDEP ; V220 tmp213 [V220 ] ( 2, 2 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Nullable`1[System.ReadOnlyMemory`1[ubyte]]>
-; V221 cse0 [V221,T12] ( 9, 4.50) ref -> x1 multi-def "CSE - aggressive"
+; V221 cse0 [V221,T19] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
; V222 cse1 [V222,T21] ( 6, 3 ) int -> x19 multi-def "CSE - moderate" ; V223 cse2 [V223,T07] ( 11, 5 ) int -> x23 multi-def "CSE - aggressive" ; V224 cse3 [V224,T22] ( 5, 2.50) ref -> x22 "CSE - moderate" @@ -267,7 +267,7 @@ G_M40399_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=20 mov w25, wzr ldr x26, [x23] ; gcrRegs +[x26]
- cbz x26, G_M40399_IG08
+ cbz x26, G_M40399_IG07
;; size=20 bbWeight=1 PerfScore 5.50 G_M40399_IG03: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=A00000 {x21 x23}, byref, isz ; byrRegs -[x24] @@ -280,7 +280,7 @@ G_M40399_IG03: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byre movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] cbnz x0, G_M40399_IG04 movz x1, #0xD1FFAB1E @@ -298,32 +298,18 @@ G_M40399_IG04: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byre add x24, x26, #16 ; byrRegs +[x24] ldr w25, [x26, #0x08]
- b G_M40399_IG07
+ b G_M40399_IG06
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M40399_IG05: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=A00000 {x21 x23}, byref, isz
+G_M40399_IG05: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=A00000 {x21 x23}, byref
; byrRegs -[x24] mov x1, x26 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M40399_IG06 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, 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] - ;; size=60 bbWeight=0.50 PerfScore 5.75 -G_M40399_IG06: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=A00000 {x21 x23}, byref
mov x0, x26
- ; gcrRegs +[x0]
ldr x1, [x26] ldr x1, [x1, #0x48] ldr x1, [x1, #0x28] @@ -333,8 +319,8 @@ G_M40399_IG06: ; bbWeight=0.50, gcrefRegs=4580000 {x19 x20 x22 x26}, byre mov x24, x0 ; byrRegs +[x24] mov w25, w1
- ;; size=28 bbWeight=0.50 PerfScore 5.75 -G_M40399_IG07: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 7.25 +G_M40399_IG06: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz
; byrRegs -[x0] ldp w0, w1, [x23, #0x08] and w0, w0, #0xD1FFAB1E @@ -342,15 +328,15 @@ G_M40399_IG07: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs add x2, x0, w1, UXTW mov w3, w25 cmp x2, x3
- bhi G_M40399_IG53
+ bhi G_M40399_IG52
add x24, x24, x0 sxtw w25, w1 ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M40399_IG08: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref, isz
+G_M40399_IG07: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref, isz
; byrRegs -[x23]
- tbz w25, #31, G_M40399_IG10
+ tbz w25, #31, G_M40399_IG09
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40399_IG09: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref
+G_M40399_IG08: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -363,29 +349,29 @@ G_M40399_IG09: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M40399_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref, isz - cbnz x22, G_M40399_IG12
+G_M40399_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref, isz + cbnz x22, G_M40399_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40399_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=1200000 {x21 x24}, byref
+G_M40399_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=1200000 {x21 x24}, byref
; gcrRegs -[x22] mov x1, xzr ; byrRegs +[x1] mov w2, wzr
- b G_M40399_IG13
+ b G_M40399_IG12
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M40399_IG12: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref
+G_M40399_IG11: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1200000 {x21 x24}, byref
; gcrRegs +[x22] ; byrRegs -[x1] add x1, x22, #16 ; byrRegs +[x1] ldr w2, [x22, #0x08] ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M40399_IG13: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=1200002 {x1 x21 x24}, byref, isz
+G_M40399_IG12: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=1200002 {x1 x21 x24}, byref, isz
; gcrRegs -[x22] cmp w25, w2
- bne G_M40399_IG39
+ bne G_M40399_IG38
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40399_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=1200002 {x1 x21 x24}, byref, isz
+G_M40399_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=1200002 {x1 x21 x24}, byref, isz
mov w2, w2 mov x0, x24 ; byrRegs +[x0] @@ -395,16 +381,16 @@ G_M40399_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=120 ldr x3, [x3] blr x3 ; byrRegs -[x0-x1 x24]
- cbz w0, G_M40399_IG39
+ cbz w0, G_M40399_IG38
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32 cmp x19, x22
- beq G_M40399_IG20 - cbz x19, G_M40399_IG15
+ beq G_M40399_IG19 + cbz x19, G_M40399_IG14
ldr w23, [x19, #0x08] cmp w23, #20
- bne G_M40399_IG15
+ bne G_M40399_IG14
add x0, x19, #12 ; byrRegs +[x0] lsl w2, w23, #1 @@ -418,18 +404,18 @@ G_M40399_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=120 blr x3 ; gcrRegs +[x22] ; byrRegs -[x0-x1]
- cbnz w0, G_M40399_IG20
+ cbnz w0, G_M40399_IG19
;; size=108 bbWeight=0.50 PerfScore 12.50
-G_M40399_IG15: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
+G_M40399_IG14: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x19, x0
- beq G_M40399_IG20 - cbz x19, G_M40399_IG16
+ beq G_M40399_IG19 + cbz x19, G_M40399_IG15
ldr w23, [x19, #0x08] cmp w23, #21
- bne G_M40399_IG16
+ bne G_M40399_IG15
add x0, x19, #12 ; byrRegs +[x0] lsl w2, w23, #1 @@ -443,19 +429,19 @@ G_M40399_IG15: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs ldr x3, [x3] blr x3 ; byrRegs -[x0]
- cbnz w0, G_M40399_IG20
+ cbnz w0, G_M40399_IG19
;; size=84 bbWeight=0.50 PerfScore 9.25
-G_M40399_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+G_M40399_IG15: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x22] movz x24, #0xD1FFAB1E movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 cmp x19, x24
- beq G_M40399_IG26 - cbz x19, G_M40399_IG17
+ beq G_M40399_IG25 + cbz x19, G_M40399_IG16
ldr w23, [x19, #0x08] cmp w23, #17
- bne G_M40399_IG17
+ bne G_M40399_IG16
mov w0, #1 movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) movk x1, #0xD1FFAB1E LSL #16 @@ -481,17 +467,17 @@ G_M40399_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=200 ldr x3, [x3] blr x3 ; byrRegs -[x0-x1]
- cbnz w0, G_M40399_IG26
+ cbnz w0, G_M40399_IG25
;; size=124 bbWeight=0.50 PerfScore 14.75
-G_M40399_IG17: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=200000 {x21}, byref, isz - cbz x19, G_M40399_IG38
+G_M40399_IG16: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=200000 {x21}, byref, isz + cbz x19, G_M40399_IG37
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40399_IG18: ; bbWeight=0.25, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=200000 {x21}, byref, isz
...

benchmarks.run_pgo.linux.arm64.checked.mch

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 69.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M9075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M9075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M9075_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 649.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)

@@ -14,23 +14,18 @@ G_M31785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M31785_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M31785_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.70%) : 11717.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)

@@ -19,8 +19,7 @@ G_M22193_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #43 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -54,13 +53,13 @@ G_M22193_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=128 bbWeight=1 PerfScore 36.00
+ ;; size=124 bbWeight=1 PerfScore 35.50
G_M22193_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 8, PerfScore 40.50, instruction count 37, allocated bytes for code 148 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)
+; Total bytes of code 144, prolog size 8, PerfScore 40.00, instruction count 36, allocated bytes for code 144 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)
; ============================================================ Unwind Info: @@ -71,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.27%) : 11595.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)

@@ -273,11 +273,6 @@ G_M15958_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M15958_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #37 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -301,7 +296,7 @@ G_M15958_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x0 ; gcrRegs -[x19] brk_unix #0
- ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M15958_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // code for System.IO.Compression.DeflateStream:ThrowGenericInvalidData() movk x0, #0xD1FFAB1E LSL #16 @@ -408,7 +403,7 @@ G_M15958_IG28: ; bbWeight=0, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=2 b G_M15958_IG14 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 880, prolog size 36, PerfScore 55.62, instruction count 220, allocated bytes for code 880 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
+; Total bytes of code 860, prolog size 36, PerfScore 55.62, instruction count 215, allocated bytes for code 860 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
; ============================================================ Unwind Info: @@ -419,7 +414,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 220 (0x000dc) Actual length = 880 (0x000370)
+ Function Length : 215 (0x000d7) Actual length = 860 (0x00035c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.46%) : 14015.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)

@@ -546,15 +546,14 @@ G_M12113_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x0] str x1, [fp, #0xC0] b G_M12113_IG13
- ;; size=232 bbWeight=1 PerfScore 74.50
+ ;; size=228 bbWeight=1 PerfScore 74.00
G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xD0] // [V06 tmp1] ; gcrRegs +[x0] @@ -563,14 +562,13 @@ G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x0] str x1, [fp, #0xC0]
- ;; size=48 bbWeight=1 PerfScore 11.50
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M12113_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xC8] // [V07 tmp2] ; gcrRegs +[x0] @@ -590,7 +588,7 @@ G_M12113_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 1756, prolog size 36, PerfScore 629.00, instruction count 439, allocated bytes for code 1756 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
+; Total bytes of code 1748, prolog size 36, PerfScore 628.00, instruction count 437, allocated bytes for code 1748 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
; ============================================================ Unwind Info: @@ -601,7 +599,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 439 (0x001b7) Actual length = 1756 (0x0006dc)
+ Function Length : 437 (0x001b5) Actual length = 1748 (0x0006d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm64.checked.mch

-44 (-57.89%) : 438.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)

@@ -9,53 +9,37 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V01 cse0 [V01,T00] ( 2, 2 ) long -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M9787_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M9787_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M9787_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldrb w0, [x19, #0xD1FFAB1E] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M9787_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldrb w0, [x0, #0xD1FFAB1E] + ;; size=16 bbWeight=1 PerfScore 4.50 +G_M9787_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M9787_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M9787_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.00, instruction count 19, allocated bytes for code 76 (MethodHash=70bdd9c4) for method System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=70bdd9c4) for method System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
; ============================================================ 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 : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,10 +47,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-57.89%) : 439.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)

@@ -8,53 +8,37 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V01 cse0 [V01,T00] ( 2, 2 ) long -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M4853_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M4853_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldrb w0, [x19, #0xD1FFAB1E] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M4853_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldrb w0, [x0, #0xD1FFAB1E] + ;; size=16 bbWeight=1 PerfScore 4.50 +G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M4853_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M4853_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.00, instruction count 19, allocated bytes for code 76 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
; ============================================================ 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 : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -62,10 +46,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.60%) : 11906.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)

@@ -32,8 +32,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #70 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
add x0, fp, #64 // [V00 arg0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -107,7 +106,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x3] cbz w0, G_M1602_IG06 mov w0, #1
- ;; size=280 bbWeight=1 PerfScore 73.50
+ ;; size=276 bbWeight=1 PerfScore 73.00
G_M1602_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -224,7 +223,7 @@ G_M1602_IG09: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 668, prolog size 16, PerfScore 181.50, instruction count 167, allocated bytes for code 668 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
+; Total bytes of code 664, prolog size 16, PerfScore 181.00, instruction count 166, allocated bytes for code 664 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -235,7 +234,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.46%) : 14191.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)

@@ -546,15 +546,14 @@ G_M12113_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x0] str x1, [fp, #0xC0] b G_M12113_IG13
- ;; size=232 bbWeight=1 PerfScore 74.50
+ ;; size=228 bbWeight=1 PerfScore 74.00
G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xD0] // [V06 tmp1] ; gcrRegs +[x0] @@ -563,14 +562,13 @@ G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x0] str x1, [fp, #0xC0]
- ;; size=48 bbWeight=1 PerfScore 11.50
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M12113_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xC8] // [V07 tmp2] ; gcrRegs +[x0] @@ -590,7 +588,7 @@ G_M12113_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 1756, prolog size 36, PerfScore 629.00, instruction count 439, allocated bytes for code 1756 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
+; Total bytes of code 1748, prolog size 36, PerfScore 628.00, instruction count 437, allocated bytes for code 1748 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
; ============================================================ Unwind Info: @@ -601,7 +599,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 439 (0x001b7) Actual length = 1756 (0x0006dc)
+ Function Length : 437 (0x001b5) Actual length = 1748 (0x0006d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 12249.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object>
; V01 arg1 [V01,T01] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Threading.Thread>
-; V02 loc0 [V02,T02] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T02] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -33,10 +33,10 @@ G_M60059_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M60059_IG05
+ cbz x19, G_M60059_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M60059_IG03: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -52,15 +52,14 @@ G_M60059_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0-x1 x20] +[x19] - mov x1, x19 - ; gcrRegs +[x1]
+G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0-x1 x20] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[x0]
; gcr arg pop 0 cbnz x0, G_M60059_IG06 movz x1, #0xD1FFAB1E @@ -75,9 +74,8 @@ G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=60 bbWeight=0.50 PerfScore 5.75
-G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19 - ; gcrRegs +[x0]
+G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov x0, xzr
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32

coreclr_tests.run.linux.arm64.checked.mch

-44 (-68.75%) : 341.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)

@@ -18,30 +18,15 @@ G_M17591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M17591_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M17591_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17591_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M17591_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M17591_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #15 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M17591_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 9.50, instruction count 16, allocated bytes for code 64 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
+; Total bytes of code 20, prolog size 8, PerfScore 4.00, instruction count 5, allocated bytes for code 20 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -52,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 5 (0x00005) Actual length = 20 (0x000014)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-52.38%) : 722.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)

@@ -8,56 +8,39 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T02] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V02 cse1 [V02,T00] ( 4, 4 ) long -> x19 "CSE - aggressive" -; V03 rat0 [V03,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V01 cse0 [V01,T00] ( 3, 3 ) long -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M63990_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M63990_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr w0, [x19, #0x44] - add w0, w0, #1 - str w0, [x19, #0x44] - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M63990_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr w1, [x0, #0x44] + add w1, w1, #1 + str w1, [x0, #0x44] + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M63990_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #14 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M63990_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 84, prolog size 12, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
+; Total bytes of code 40, prolog size 8, PerfScore 9.50, instruction count 10, allocated bytes for code 40 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (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 : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -65,10 +48,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-42.31%) : 8.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -13,54 +13,37 @@ ; ; Lcl frame size = 0
-G_M16369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M16369_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M16369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M16369_IG07 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldapr x0, [x0] ; gcrRegs +[x0]
- cbnz x0, G_M16369_IG06
+ cbnz x0, G_M16369_IG05
;; size=20 bbWeight=1 PerfScore 5.50
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M16369_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16369_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x0 ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M16369_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16369_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M16369_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #13 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M16369_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 104, prolog size 8, PerfScore 16.75, instruction count 26, allocated bytes for code 104 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 11.25, instruction count 15, allocated bytes for code 60 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================ Unwind Info: @@ -71,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-11.49%) : 25.dasm - System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)

@@ -10,26 +10,24 @@ ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.Win32.SafeHandles.SafeFileHandle> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V02 loc0 [V02,T06] ( 4, 1.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.IO.TextWriter> -; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V02 loc0 [V02,T04] ( 4, 1.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.IO.TextWriter> +; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 4 ) ubyte -> x0 "Inlining Arg" ; V06 tmp2 [V06,T01] ( 2, 2 ) byref -> x20 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V07 tmp3 [V07,T03] ( 2, 2 ) int -> x21 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V08 PSPSym [V08,T08] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V09 cse0 [V09,T04] ( 3, 3 ) long -> x22 "CSE - aggressive" -; V10 cse1 [V10,T07] ( 3, 1.50) ref -> x1 "CSE - moderate" -; V11 rat0 [V11,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V09 cse0 [V09,T05] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M3451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x28] + str x21, [sp, #0x38]
mov fp, sp
- add x3, sp, #80 - str x3, [fp, #0x28] // [V08 PSPSym]
+ add x3, sp, #64 + str x3, [fp, #0x20] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 @@ -37,22 +35,13 @@ G_M3451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w21, w2 ;; size=36 bbWeight=1 PerfScore 6.50 G_M3451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- movz x22, #0xD1FFAB1E - movk x22, #0xD1FFAB1E LSL #16 - movk x22, #0xD1FFAB1E LSL #32 - mov x0, x22 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M3451_IG14 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M3451_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - add x0, x22, #134
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
ldaprb w0, [x0]
- cbnz w0, G_M3451_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M3451_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ cbnz w0, G_M3451_IG04 + ;; size=20 bbWeight=1 PerfScore 5.50 +G_M3451_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -60,7 +49,7 @@ G_M3451_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x blr x0 ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M3451_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M3451_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x0, #0xD1FFAB1E // code for System.Console:get_Out():System.IO.TextWriter movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -68,15 +57,15 @@ G_M3451_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} blr x0 ; gcrRegs +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V02 loc0]
+ str x0, [fp, #0x10] // [V02 loc0]
; GC ptr vars +{V02}
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=28 bbWeight=1 PerfScore 7.50
-G_M3451_IG06: ; bbWeight=1, gcVars=0000000000000040 {V02}, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, gcvars, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1] - cbz w1, G_M3451_IG08
+G_M3451_IG05: ; bbWeight=1, gcVars=0000000000000010 {V02}, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, gcvars, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1] + cbz w1, G_M3451_IG07
;; size=8 bbWeight=1 PerfScore 3.00
-G_M3451_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3451_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] ; byrRegs -[x20] movz x1, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() @@ -87,17 +76,17 @@ G_M3451_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M3451_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
+G_M3451_IG07: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs +[x0 x19] ; byrRegs +[x20]
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x20] // [V03 loc1] - cbnz w0, G_M3451_IG10
+ ldrb w0, [fp, #0x18] // [V03 loc1] + cbnz w0, G_M3451_IG09
;; size=16 bbWeight=1 PerfScore 4.50
-G_M3451_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M3451_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -111,7 +100,7 @@ G_M3451_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M3451_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M3451_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov x1, x20 ; byrRegs +[x1] mov w2, w21 @@ -127,60 +116,50 @@ G_M3451_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} ; byrRegs -[x1 x20] ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 7.50
-G_M3451_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M3451_IG13
+G_M3451_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M3451_IG12
;; size=8 bbWeight=1 PerfScore 3.00
-G_M3451_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M3451_IG11: ; 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_M3451_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
+G_M3451_IG12: ; 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 4.00 -G_M3451_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref - ; gcrRegs +[x19] - ; byrRegs +[x20] - mov w1, #22 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M3451_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M3451_IG15: ; bbWeight=0, gcVars=0000000000000040 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; gcrRegs -[x19] - ; byrRegs -[x20] - ; GC ptr vars +{V02 V06} - stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - add x3, fp, #80 - str x3, [sp, #0x18]
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M3451_IG13: ; bbWeight=0, gcVars=0000000000000010 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02} + 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_M3451_IG16: ; bbWeight=0, gcVars=0000000000000040 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldrb w0, [fp, #0x20] // [V03 loc1] - cbz w0, G_M3451_IG17 - ldr x0, [fp, #0x18] // [V02 loc0]
+G_M3451_IG14: ; bbWeight=0, gcVars=0000000000000010 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldrb w0, [fp, #0x18] // [V03 loc1] + cbz w0, G_M3451_IG15 + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- ; GC ptr vars -{V02 V06}
+ ; GC ptr vars -{V02}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M3451_IG17: ; 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
+G_M3451_IG15: ; 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 348, prolog size 36, PerfScore 56.00, instruction count 87, allocated bytes for code 348 (MethodHash=3cc3f284) for method System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)
+; Total bytes of code 308, prolog size 36, PerfScore 50.50, instruction count 77, allocated bytes for code 308 (MethodHash=3cc3f284) for method System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -191,7 +170,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -199,10 +178,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48] - 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56] + C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end @@ -218,14 +196,13 @@ Unwind Info: --- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ 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]
...

-36 (-7.76%) : 737.dasm - Program:TestEntryPoint():int (FullOpts)

@@ -12,43 +12,41 @@ ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 loc2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Program> ;* V03 loc3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> -; V05 loc5 [V05 ] ( 4, 4 ) struct (16) [fp+0x48] do-not-enreg[SBR] multireg-ret must-init <System.Decimal> -; V06 loc6 [V06 ] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret must-init <System.Decimal>
+; V04 loc4 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def <<unknown class>> +; V05 loc5 [V05 ] ( 4, 4 ) struct (16) [fp+0x48] do-not-enreg[SBR] multireg-ret <System.Decimal> +; V06 loc6 [V06 ] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret <System.Decimal>
;* V07 loc7 [V07 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Program> -; V10 tmp2 [V10,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V11 tmp3 [V11,T12] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V12 tmp4 [V12,T00] ( 8, 12.75) ref -> x19 class-hnd "spilling QMark2" <<unknown class>> -;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> -;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> -; V15 tmp7 [V15 ] ( 10, 10.00) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V16 tmp8 [V16 ] ( 8, 12.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V17 tmp9 [V17,T13] ( 5, 1.00) int -> x0 "Inline return value spill temp" -; V18 tmp10 [V18,T04] ( 2, 4 ) long -> x0 "impAppendStmt" -; V19 tmp11 [V19,T05] ( 2, 2.00) long -> x0 "impAppendStmt" -; V20 tmp12 [V20,T14] ( 3, 1.00) int -> x19 single-def "Inline stloc first use temp" -; V21 tmp13 [V21,T15] ( 2, 0.00) long -> x0 "impAppendStmt" -; V22 tmp14 [V22,T06] ( 2, 2 ) int -> [fp+0x48] do-not-enreg[] "field V05._flags (fldOffset=0x0)" P-DEP -; V23 tmp15 [V23,T07] ( 2, 2 ) int -> [fp+0x4C] do-not-enreg[] "field V05._hi32 (fldOffset=0x4)" P-DEP -; V24 tmp16 [V24,T08] ( 2, 2 ) long -> [fp+0x50] do-not-enreg[] "field V05._lo64 (fldOffset=0x8)" P-DEP -; V25 tmp17 [V25,T09] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[] "field V06._flags (fldOffset=0x0)" P-DEP -; V26 tmp18 [V26,T10] ( 2, 2 ) int -> [fp+0x3C] do-not-enreg[] "field V06._hi32 (fldOffset=0x4)" P-DEP -; V27 tmp19 [V27,T11] ( 2, 2 ) long -> [fp+0x40] do-not-enreg[] "field V06._lo64 (fldOffset=0x8)" P-DEP -;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "field V13._flags (fldOffset=0x0)" P-DEP -;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._hi32 (fldOffset=0x4)" P-DEP -;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "field V13._lo64 (fldOffset=0x8)" P-DEP -;* V31 tmp23 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._flags (fldOffset=0x0)" P-DEP -;* V32 tmp24 [V32 ] ( 0, 0 ) int -> zero-ref "field V14._hi32 (fldOffset=0x4)" P-DEP -;* V33 tmp25 [V33 ] ( 0, 0 ) long -> zero-ref "field V14._lo64 (fldOffset=0x8)" P-DEP -; V34 tmp26 [V34 ] ( 4, 2.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V15._flags (fldOffset=0x0)" P-DEP -; V35 tmp27 [V35 ] ( 4, 2.50) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V15._hi32 (fldOffset=0x4)" P-DEP -; V36 tmp28 [V36 ] ( 4, 2.50) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V15._lo64 (fldOffset=0x8)" P-DEP -; V37 tmp29 [V37 ] ( 4, 2.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V16._flags (fldOffset=0x0)" P-DEP -; V38 tmp30 [V38 ] ( 3, 3.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V16._hi32 (fldOffset=0x4)" P-DEP -; V39 tmp31 [V39 ] ( 3, 3.00) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V16._lo64 (fldOffset=0x8)" P-DEP -; V40 tmp32 [V40,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V09 tmp1 [V09,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Program> +;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> +;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> +; V12 tmp4 [V12 ] ( 10, 10.00) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V13 tmp5 [V13 ] ( 8, 12.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V14 tmp6 [V14,T12] ( 5, 1.00) int -> x0 "Inline return value spill temp" +; V15 tmp7 [V15,T04] ( 2, 4 ) long -> x0 "impAppendStmt" +; V16 tmp8 [V16,T05] ( 2, 2.00) long -> x0 "impAppendStmt" +; V17 tmp9 [V17,T13] ( 3, 1.00) int -> x19 single-def "Inline stloc first use temp" +; V18 tmp10 [V18,T14] ( 2, 0.00) long -> x0 "impAppendStmt" +; V19 tmp11 [V19,T06] ( 2, 2 ) int -> [fp+0x48] do-not-enreg[] "field V05._flags (fldOffset=0x0)" P-DEP +; V20 tmp12 [V20,T07] ( 2, 2 ) int -> [fp+0x4C] do-not-enreg[] "field V05._hi32 (fldOffset=0x4)" P-DEP +; V21 tmp13 [V21,T08] ( 2, 2 ) long -> [fp+0x50] do-not-enreg[] "field V05._lo64 (fldOffset=0x8)" P-DEP +; V22 tmp14 [V22,T09] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[] "field V06._flags (fldOffset=0x0)" P-DEP +; V23 tmp15 [V23,T10] ( 2, 2 ) int -> [fp+0x3C] do-not-enreg[] "field V06._hi32 (fldOffset=0x4)" P-DEP +; V24 tmp16 [V24,T11] ( 2, 2 ) long -> [fp+0x40] do-not-enreg[] "field V06._lo64 (fldOffset=0x8)" P-DEP +;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._flags (fldOffset=0x0)" P-DEP +;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._hi32 (fldOffset=0x4)" P-DEP +;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "field V10._lo64 (fldOffset=0x8)" P-DEP +;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "field V11._flags (fldOffset=0x0)" P-DEP +;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "field V11._hi32 (fldOffset=0x4)" P-DEP +;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "field V11._lo64 (fldOffset=0x8)" P-DEP +; V31 tmp23 [V31 ] ( 4, 2.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._flags (fldOffset=0x0)" P-DEP +; V32 tmp24 [V32 ] ( 4, 2.50) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V12._hi32 (fldOffset=0x4)" P-DEP +; V33 tmp25 [V33 ] ( 4, 2.50) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._lo64 (fldOffset=0x8)" P-DEP +; V34 tmp26 [V34 ] ( 4, 2.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V13._flags (fldOffset=0x0)" P-DEP +; V35 tmp27 [V35 ] ( 3, 3.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V13._hi32 (fldOffset=0x4)" P-DEP +; V36 tmp28 [V36 ] ( 3, 3.00) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V13._lo64 (fldOffset=0x8)" P-DEP +; V37 tmp29 [V37,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V38 tmp30 [V38,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 72 @@ -56,14 +54,12 @@ G_M13170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x60]! str x19, [sp, #0x58] mov fp, sp
- stp xzr, xzr, [fp, #0x48] // [V05 loc5], [V05 loc5+0x08] - stp xzr, xzr, [fp, #0x38] // [V06 loc6], [V06 loc6+0x08] - ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M13170_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -100,15 +96,16 @@ G_M13170_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x2 x19] mov x1, x0 ; gcrRegs +[x1]
- mov x19, x1
+ movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION + ; gcrRegs -[x1] +[x0] + mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M13170_IG10 - ;; size=140 bbWeight=1 PerfScore 30.00 -G_M13170_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0-x1]
mov w1, #3 ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
ldr x2, [x19, #0x18] blr x2 ; gcrRegs -[x0] @@ -120,104 +117,85 @@ G_M13170_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x2 ; gcrRegs -[x0 x19] stp x0, x1, [fp, #0x38] // [V06 loc6], [V06 loc6+0x08]
- ldr w0, [fp, #0x48] // [V22 tmp14] - str w0, [fp, #0x28] // [V34 tmp26] - ldr w0, [fp, #0x4C] // [V23 tmp15] - str w0, [fp, #0x2C] // [V35 tmp27] - ldr x0, [fp, #0x50] // [V24 tmp16] - str x0, [fp, #0x30] // [V36 tmp28] - ldr w0, [fp, #0x38] // [V25 tmp17] - str w0, [fp, #0x18] // [V37 tmp29] - ldr w0, [fp, #0x3C] // [V26 tmp18] - str w0, [fp, #0x1C] // [V38 tmp30] - ldr x0, [fp, #0x40] // [V27 tmp19] - str x0, [fp, #0x20] // [V39 tmp31] - ldr x0, [fp, #0x20] // [V39 tmp31] - ldr w1, [fp, #0x1C] // [V38 tmp30]
+ ldr w0, [fp, #0x48] // [V19 tmp11] + str w0, [fp, #0x28] // [V31 tmp23] + ldr w0, [fp, #0x4C] // [V20 tmp12] + str w0, [fp, #0x2C] // [V32 tmp24] + ldr x0, [fp, #0x50] // [V21 tmp13] + str x0, [fp, #0x30] // [V33 tmp25] + ldr w0, [fp, #0x38] // [V22 tmp14] + str w0, [fp, #0x18] // [V34 tmp26] + ldr w0, [fp, #0x3C] // [V23 tmp15] + str w0, [fp, #0x1C] // [V35 tmp27] + ldr x0, [fp, #0x40] // [V24 tmp16] + str x0, [fp, #0x20] // [V36 tmp28] + ldr x0, [fp, #0x20] // [V36 tmp28] + ldr w1, [fp, #0x1C] // [V35 tmp27]
orr x0, x0, x1
- cbz x0, G_M13170_IG08 - ;; size=104 bbWeight=1 PerfScore 40.50 -G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V36 tmp28] - ldr w1, [fp, #0x2C] // [V35 tmp27]
+ cbz x0, G_M13170_IG07 + ;; size=256 bbWeight=1 PerfScore 72.00 +G_M13170_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr x0, [fp, #0x30] // [V33 tmp25] + ldr w1, [fp, #0x2C] // [V32 tmp24]
orr x0, x0, x1
- cbz x0, G_M13170_IG14 - ldr w0, [fp, #0x28] // [V34 tmp26]
+ cbz x0, G_M13170_IG11 + ldr w0, [fp, #0x28] // [V31 tmp23]
asr w0, w0, #31
- ldr w1, [fp, #0x18] // [V37 tmp29]
+ ldr w1, [fp, #0x18] // [V34 tmp26]
sub w19, w0, w1, ASR #31
- cbnz w19, G_M13170_IG15 - add x0, fp, #40 // [V15 tmp7] - add x1, fp, #24 // [V16 tmp8]
+ cbnz w19, G_M13170_IG12 + add x0, fp, #40 // [V12 tmp4] + add x1, fp, #24 // [V13 tmp5]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ;; size=64 bbWeight=0.50 PerfScore 9.50
-G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M13170_IG12
+G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M13170_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #100 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13170_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x58] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M13170_IG08: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x0, [fp, #0x30] // [V36 tmp28] - ldr w1, [fp, #0x2C] // [V35 tmp27]
+G_M13170_IG07: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x0, [fp, #0x30] // [V33 tmp25] + ldr w1, [fp, #0x2C] // [V32 tmp24]
orr x0, x0, x1
- cbz x0, G_M13170_IG06
+ cbz x0, G_M13170_IG05
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M13170_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr w0, [fp, #0x28] // [V34 tmp26]
+G_M13170_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr w0, [fp, #0x28] // [V31 tmp23]
asr w0, w0, #31 orr w0, w0, #1
- b G_M13170_IG05
+ b G_M13170_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-G_M13170_IG10: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x1 x19] - ldr x0, [x19] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M13170_IG03 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M13170_IG11: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x0, x2 - bl CORINFO_HELP_CHKCASTANY - ; gcrRegs -[x1] +[x0] - mov x19, x0 - ; gcrRegs +[x19] - b G_M13170_IG03 - ;; size=16 bbWeight=0.12 PerfScore 0.38 -G_M13170_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19]
+G_M13170_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13170_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x58] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M13170_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ldr w0, [fp, #0x18] // [V37 tmp29]
+G_M13170_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ldr w0, [fp, #0x18] // [V34 tmp26]
asr w0, w0, #31 orr w0, w0, #1 ...

-40 (-6.85%) : 390.dasm - Microsoft.Win32.SafeHandles.SafePipeHandle:CreatePipeSocket(ubyte):System.Net.Sockets.Socket:this (FullOpts)

@@ -8,30 +8,30 @@ ; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 11, 6 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.Win32.SafeHandles.SafePipeHandle>
+; V00 this [V00,T01] ( 11, 6 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Win32.SafeHandles.SafePipeHandle>
; V01 arg1 [V01,T02] ( 4, 3 ) ubyte -> x19 single-def ; V02 loc0 [V02,T03] ( 6, 4.50) ref -> x20 class-hnd <System.Net.Sockets.Socket>
-; V03 loc1 [V03 ] ( 4, 1.50) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V03 loc1 [V03 ] ( 4, 1.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 12, 12 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SafeSocketHandle> -; V06 tmp2 [V06,T06] ( 2, 2 ) long -> x21 "finalizable newobj spill"
+; V05 tmp1 [V05,T00] ( 12, 12 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SafeSocketHandle> +; V06 tmp2 [V06,T06] ( 2, 2 ) long -> x20 "finalizable newobj spill"
; V07 tmp3 [V07,T04] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket> ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V11 tmp7 [V11,T05] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V12 PSPSym [V12,T07] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V12 PSPSym [V12,T07] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M45382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x28] + str x21, [sp, #0x38]
mov fp, sp
- add x2, sp, #80 - str x2, [fp, #0x28] // [V12 PSPSym] - str x0, [fp, #0x18] // [V00 this]
+ add x2, sp, #64 + str x2, [fp, #0x20] // [V12 PSPSym] + str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00} mov w19, w1 ;; size=32 bbWeight=1 PerfScore 6.50 @@ -43,14 +43,14 @@ G_M45382_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; byrRegs +[x1] ldapr w1, [x1] ; byrRegs -[x1]
- cbnz w1, G_M45382_IG08
+ cbnz w1, G_M45382_IG06
;; size=16 bbWeight=1 PerfScore 5.00 G_M45382_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- str wzr, [fp, #0x20] // [V03 loc1]
+ str wzr, [fp, #0x18] // [V03 loc1]
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M45382_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- add x1, fp, #32 // [V03 loc1]
+ add x1, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -58,61 +58,46 @@ G_M45382_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0]
- ldr x21, [x0, #0x10]
+ ldr x20, [x0, #0x10]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWFAST
+ bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0] ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x21, x0 + ; gcrRegs +[x21]
movn w0, #0 ; gcrRegs -[x0]
- stp w0, w0, [x22, #0x2C] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbnz w0, #0, G_M45382_IG06 - ;; size=80 bbWeight=0.50 PerfScore 10.50 -G_M45382_IG05: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #107 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M45382_IG06: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ stp w0, w0, [x21, #0x2C]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- strb w0, [x22, #0x3B]
+ strb w0, [x21, #0x3B]
mov w0, #1
- strb w0, [x22, #0x3C]
+ strb w0, [x21, #0x3C]
movn x0, #0
- str x0, [x22, #0x10] - add x0, x22, #24
+ str x0, [x21, #0x10] + add x0, x21, #24
; byrRegs +[x0] mov w1, #4 stlr w1, [x0] mov w0, #1 ; byrRegs -[x0]
- strb w0, [x22, #0x1C] - add x0, x22, #29
+ strb w0, [x21, #0x1C] + add x0, x21, #29
; byrRegs +[x0] mov w1, #1 stlrb w1, [x0]
- strb w19, [x22, #0x34] - mov x0, x22
+ strb w19, [x21, #0x34] + mov x0, x21
; gcrRegs +[x0] ; byrRegs -[x0]
- mov x1, x21
+ mov x1, x20
movz x2, #0xD1FFAB1E // code for System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -123,18 +108,18 @@ G_M45382_IG06: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWFAST
+ bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0] ; gcr arg pop 0 mov x20, x0 ; gcrRegs +[x20]
- mov x0, x22
+ mov x0, x21
movz x1, #0xD1FFAB1E // code for System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x22]
+ ; gcrRegs -[x21]
; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1] @@ -148,7 +133,7 @@ G_M45382_IG06: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcrRegs -[x0-x1] ; gcr arg pop 0 uxtb w2, w19
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] mov x1, x20 ; gcrRegs +[x1] @@ -161,13 +146,13 @@ G_M45382_IG06: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcr arg pop 0 mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x1, x0, #48 ; byrRegs +[x1] ldapr w1, [x1] ; byrRegs -[x1] cmp w1, #1
- bne G_M45382_IG07
+ bne G_M45382_IG05
add x1, x0, #32 ; byrRegs +[x1] stlr xzr, [x1] @@ -183,12 +168,12 @@ G_M45382_IG06: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcr arg pop 0 mov x20, xzr ; gcrRegs +[x20]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0]
- ;; size=276 bbWeight=0.50 PerfScore 33.25 -G_M45382_IG07: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz - ldrb w1, [fp, #0x20] // [V03 loc1] - cbz w1, G_M45382_IG08
+ ;; size=336 bbWeight=0.50 PerfScore 41.00 +G_M45382_IG05: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz + ldrb w1, [fp, #0x18] // [V03 loc1] + cbz w1, G_M45382_IG06
mov w1, wzr movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -197,20 +182,20 @@ G_M45382_IG07: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M45382_IG08: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz - cbz x20, G_M45382_IG10
+G_M45382_IG06: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M45382_IG08
mov x0, x20 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M45382_IG09: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50
+G_M45382_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M45382_IG10: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M45382_IG08: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20] movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) movk x1, #0xD1FFAB1E LSL #16 @@ -222,18 +207,18 @@ G_M45382_IG10: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M45382_IG11: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M45382_IG09: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - add x3, fp, #80 - str x3, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #64 + str x3, [sp, #0x10]
...

libraries.crossgen2.linux.arm64.checked.mch

-12 (-5.88%) : 140.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,8 +15,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> x0 "CSE - aggressive" -; V07 cse1 [V07,T02] ( 5, 3.50) int -> x1 "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> x11 "CSE - aggressive" +; V07 cse1 [V07,T02] ( 5, 3.50) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,25 +34,24 @@ G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; byrRegs +[x0] ldrh w11, [x0]
- uxth w1, w20 - cmp w11, w1
+ uxth w0, w20 + ; byrRegs -[x0] + cmp w11, w0
beq G_M44169_IG04 ;; size=32 bbWeight=1 PerfScore 10.00
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - cmp w1, #47
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp w0, #47
bne G_M44169_IG07 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w11, [x0] - uxth w2, w19 - cmp w11, w2
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + uxth w1, w19 + cmp w11, w1
beq G_M44169_IG05
- uxth w11, w19 - cmp w11, #47
+ uxth w1, w19 + cmp w1, #47
bne G_M44169_IG07
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -60,13 +59,9 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; byrRegs +[x0] - ldrh w0, [x0] - ; byrRegs -[x0] - cmp w0, #47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp w11, #47
beq G_M44169_IG09
- mov w0, w1
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -79,15 +74,15 @@ G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 cmp w20, w0 cset x0, eq
- ;; size=64 bbWeight=0.50 PerfScore 8.50
+ ;; size=56 bbWeight=0.50 PerfScore 6.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50 G_M44169_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- uxth w0, w19 - cmp w1, w0
+ uxth w1, w19 + cmp w0, w1
cset x0, eq ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -96,7 +91,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 12, PerfScore 31.75, instruction count 51, allocated bytes for code 204 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 28.50, instruction count 48, allocated bytes for code 192 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-4.00%) : 144.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T00] ( 4, 3 ) ref -> x19 class-hnd single-def <System.String> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 2 ) int -> x1 "argument with side effect"
-; V03 cse0 [V03,T01] ( 3, 2.50) byref -> x0 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,17 +34,16 @@ G_M64282_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cmp w1, #47 beq G_M64282_IG05 ;; size=28 bbWeight=1 PerfScore 9.50
-G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref - ldrh w1, [x0]
+G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x0]
mov x0, x19 ; gcrRegs +[x0]
- ; byrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] mov w2, #47 ldr wzr, [x0] ldr x3, [x11]
- ;; size=28 bbWeight=0.50 PerfScore 5.50
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M64282_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -62,7 +61,7 @@ G_M64282_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 100, prolog size 16, PerfScore 22.25, instruction count 25, allocated bytes for code 100 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 20.75, instruction count 24, allocated bytes for code 96 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.50%) : 3099.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> x2 "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> x0 "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> x2 "CSE - moderate"
; ; Lcl frame size = 8 @@ -53,7 +53,6 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldrh w2, [x0] cmp w2, #47 bne G_M45118_IG04
- ldrh w2, [x0]
mov x0, x19 ; gcrRegs +[x0] ; byrRegs -[x0] @@ -73,7 +72,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x1 x20] mov x21, x0 ; gcrRegs +[x21]
- ;; size=84 bbWeight=0.50 PerfScore 13.75
+ ;; size=80 bbWeight=0.50 PerfScore 12.25
G_M45118_IG04: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x21 @@ -86,7 +85,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 31.25, instruction count 40, allocated bytes for code 160 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 156, prolog size 16, PerfScore 29.75, instruction count 39, allocated bytes for code 156 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.61%) : 164390.dasm - Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)

@@ -14,20 +14,20 @@ ; V03 loc1 [V03,T00] ( 5, 17 ) int -> x21 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 16 ) int -> x2 "argument with side effect"
-; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> x26 "argument with side effect" -; V07 cse0 [V07,T07] ( 2, 4.50) long -> x23 hoist "CSE - aggressive" -; V08 cse1 [V08,T08] ( 2, 4.50) long -> x24 hoist "CSE - aggressive"
+; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> x1 "argument with side effect" +; V07 cse0 [V07,T07] ( 2, 4.50) byref -> x24 hoist "CSE - aggressive" +; V08 cse1 [V08,T08] ( 2, 4.50) long -> x23 hoist "CSE - aggressive"
; V09 cse2 [V09,T09] ( 2, 4.50) long -> x25 hoist "CSE - aggressive" ; V10 cse3 [V10,T05] ( 3, 6 ) long -> x22 "CSE - aggressive" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M38544_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30] - stp x25, x26, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp mov x19, x1 ; gcrRegs +[x19] @@ -55,36 +55,33 @@ G_M38544_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, G_M38544_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref adrp x23, [HIGH RELOC #0xD1FFAB1E] add x23, x23, [LOW RELOC #0xD1FFAB1E]
- adrp x24, [HIGH RELOC #0xD1FFAB1E] - add x24, x24, [LOW RELOC #0xD1FFAB1E]
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x11] + blr x0 + ; byrRegs +[x0] + mov x24, x0 + ; byrRegs +[x24]
adrp x25, [HIGH RELOC #0xD1FFAB1E] add x25, x25, [LOW RELOC #0xD1FFAB1E]
- ;; size=24 bbWeight=0.50 PerfScore 1.50 -G_M38544_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 3.75 +G_M38544_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=1000000 {x24}, byref, isz + ; byrRegs -[x0]
mov x0, x20 ; gcrRegs +[x0] mov w1, w21 mov x11, x23 ldr x2, [x11] blr x2
- mov x26, x0 - ; gcrRegs +[x26] - mov x11, x24 - ldr x0, [x11] - ; gcrRegs -[x0] - blr x0 - ; byrRegs +[x0] - ldr w2, [x0, #0xD1FFAB1E] - mov x1, x26
+ mov x1, x0
; gcrRegs +[x1]
+ ldr w2, [x24, #0xD1FFAB1E]
mov x0, x19
- ; gcrRegs +[x0] - ; byrRegs -[x0]
mov x11, x25 ldr wzr, [x0] ldr x3, [x11] blr x3
- ; gcrRegs -[x0-x1 x26]
+ ; gcrRegs -[x0-x1]
cbnz w0, G_M38544_IG07 add w21, w21, #1 mov x0, x20 @@ -95,43 +92,44 @@ G_M38544_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] cmp w0, w21 bgt G_M38544_IG04
- ;; size=96 bbWeight=4 PerfScore 120.00
+ ;; size=80 bbWeight=4 PerfScore 100.00
G_M38544_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20]
+ ; byrRegs -[x24]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M38544_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
G_M38544_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M38544_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 248, prolog size 24, PerfScore 145.50, instruction count 62, allocated bytes for code 248 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
+; Total bytes of code 244, prolog size 24, PerfScore 128.75, instruction count 61, allocated bytes for code 244 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -142,10 +140,13 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! E4 end
+ E4 end + E4 end + E4 end

+0 (0.00%) : 41295.dasm - .$Array:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> x19 "value for stsfld with typeinit"
; ; Lcl frame size = 8 @@ -23,13 +22,15 @@ G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] blr x0
- sxtw w19, w0
+ ; byrRegs +[x0] + mov x19, x0 + ; byrRegs +[x19]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11]
+ ; byrRegs -[x0]
blr x0
- ; byrRegs +[x0] - str w19, [x0, #0xD1FFAB1E]
+ str w0, [x19, #0xD1FFAB1E]
;; size=40 bbWeight=1 PerfScore 11.50 G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18]

libraries.pmi.linux.arm64.checked.mch

-48 (-60.00%) : 5705.dasm - System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (FullOpts)

@@ -8,54 +8,36 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M36305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M36305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M36305_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M36305_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, x19, #0xD1FFAB1E
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M36305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
ldapr x0, [x0]
- ;; size=8 bbWeight=1 PerfScore 3.50 -G_M36305_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=1 PerfScore 4.50 +G_M36305_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M36305_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M36305_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 12, PerfScore 17.50, instruction count 20, allocated bytes for code 80 (MethodHash=caf5722e) for method System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=caf5722e) for method System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (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 : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,10 +45,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-48 (-60.00%) : 5707.dasm - System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (FullOpts)

@@ -8,54 +8,36 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M12133_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M12133_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M12133_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M12133_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, x19, #0xD1FFAB1E
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M12133_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
ldapr x0, [x0]
- ;; size=8 bbWeight=1 PerfScore 3.50 -G_M12133_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=1 PerfScore 4.50 +G_M12133_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M12133_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M12133_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 12, PerfScore 17.50, instruction count 20, allocated bytes for code 80 (MethodHash=993ad09a) for method System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=993ad09a) for method System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (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 : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,10 +45,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-57.89%) : 4580.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)

@@ -8,53 +8,36 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24154_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M24154_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M24154_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M24154_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [x19, #0xD1FFAB1E] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M24154_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M24154_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ;; size=16 bbWeight=1 PerfScore 4.50 +G_M24154_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M24154_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M24154_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.00, instruction count 19, allocated bytes for code 76 (MethodHash=3796a1a5) for method System.Threading.Lock:get_ContentionCount():long (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=3796a1a5) for method System.Threading.Lock:get_ContentionCount():long (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 : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -62,10 +45,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-32 (-4.44%) : 4987.dasm - System.Threading.Tasks.TaskFactory1[ubyte]:FromAsyncCoreLogic(System.IAsyncResult,System.Func2[System.IAsyncResult,ubyte],System.Action1[System.IAsyncResult],System.Threading.Tasks.Task1[ubyte],ubyte) (FullOpts)

@@ -19,18 +19,16 @@ ;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.OperationCanceledException> ;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T02] ( 7, 14 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V11 tmp1 [V11,T02] ( 7, 14 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
-; V13 tmp3 [V13,T15] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V14 tmp4 [V14,T16] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OperationCanceledException>
+; V13 tmp3 [V13,T13] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V14 tmp4 [V14,T14] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OperationCanceledException>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V16 tmp6 [V16,T08] ( 2, 4 ) int -> x21 "Inlining Arg" -;* V17 tmp7 [V17,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V16 tmp6 [V16,T08] ( 2, 4 ) int -> x20 "Inlining Arg" +;* V17 tmp7 [V17,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "field V12._source (fldOffset=0x0)" P-INDEP
-; V19 PSPSym [V19,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V20 cse0 [V20,T10] ( 3, 3 ) ref -> x20 "CSE - aggressive" -; V21 cse1 [V21,T11] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V22 rat0 [V22,T12] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V19 PSPSym [V19,T12] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V20 cse0 [V20,T10] ( 3, 3 ) ref -> x19 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -182,7 +180,7 @@ G_M28562_IG17: ; bbWeight=1, gcVars=0000000000000241 {V03 V05 V06}, gcref blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- b G_M28562_IG25
+ b G_M28562_IG23
;; size=52 bbWeight=1 PerfScore 21.50 G_M28562_IG18: ; bbWeight=1, gcVars=0000000000000201 {V03 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V00 V03 V05} @@ -200,33 +198,17 @@ G_M28562_IG18: ; bbWeight=1, gcVars=0000000000000201 {V03 V05}, gcrefRegs blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M28562_IG25
+ b G_M28562_IG23
;; size=40 bbWeight=1 PerfScore 15.50 G_M28562_IG19: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V00 V03}
- movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbnz w1, #0, G_M28562_IG21 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M28562_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M28562_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x20, [x0] - ; gcrRegs +[x20] - ldrb w0, [x20, #0x9D] - cbz w0, G_M28562_IG22
+ ldr x19, [x0] + ; gcrRegs +[x19] + ldrb w0, [x19, #0x9D] + cbz w0, G_M28562_IG20
ldr x0, [fp, #0x20] // [V03 arg3] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:get_Id():int:this @@ -237,13 +219,13 @@ G_M28562_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w21, w0 - ldrb w1, [x20, #0x9D] - cbz w1, G_M28562_IG22 - ldrb w1, [x20, #0x9D] - ldr x3, [x20, #0x80] - ldr w2, [x20, #0x98] - mov x0, x20
+ sxtw w20, w0 + ldrb w1, [x19, #0x9D] + cbz w1, G_M28562_IG20 + ldrb w1, [x19, #0x9D] + ldr x3, [x19, #0x80] + ldr w2, [x19, #0x98] + mov x0, x19
; gcrRegs +[x0] mov w4, #4 mov x5, #8 @@ -255,10 +237,10 @@ G_M28562_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x7 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M28562_IG22 - mov x0, x20
+ cbz w0, G_M28562_IG20 + mov x0, x19
; gcrRegs +[x0]
- mov w2, w21
+ mov w2, w20
mov w1, #15 mov w3, #1 movz x4, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this @@ -266,12 +248,15 @@ G_M28562_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0 ;; size=152 bbWeight=1 PerfScore 48.50
-G_M28562_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldrb w0, [x19, #0xD1FFAB1E] - cbz w0, G_M28562_IG23
+G_M28562_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldrb w0, [x0] + cbz w0, G_M28562_IG21
ldr x0, [fp, #0x20] // [V03 arg3] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -281,11 +266,11 @@ G_M28562_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=32 bbWeight=1 PerfScore 11.50 -G_M28562_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=1 PerfScore 13.00 +G_M28562_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w4, [fp, #0x2C] // [V04 arg4] tst w4, #255
- beq G_M28562_IG24
+ beq G_M28562_IG22
ldr x0, [fp, #0x20] // [V03 arg3] ; gcrRegs +[x0] ldr w1, [fp, #0x28] // [V07 loc2] @@ -298,9 +283,9 @@ G_M28562_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M28562_IG25
+ b G_M28562_IG23
;; size=48 bbWeight=1 PerfScore 17.00
-G_M28562_IG24: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M28562_IG22: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V03} ldr x0, [fp, #0x20] // [V03 arg3] ; gcrRegs +[x0] @@ -315,14 +300,14 @@ G_M28562_IG24: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=1 PerfScore 12.50
-G_M28562_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M28562_IG23: ; bbWeight=1, 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=1 PerfScore 9.00
-; Total bytes of code 720, prolog size 44, PerfScore 195.50, instruction count 180, allocated bytes for code 720 (MethodHash=b90a906d) for method System.Threading.Tasks.TaskFactory`1[ubyte]:FromAsyncCoreLogic(System.IAsyncResult,System.Func`2[System.IAsyncResult,ubyte],System.Action`1[System.IAsyncResult],System.Threading.Tasks.Task`1[ubyte],ubyte) (FullOpts)
+; Total bytes of code 688, prolog size 44, PerfScore 189.50, instruction count 172, allocated bytes for code 688 (MethodHash=b90a906d) for method System.Threading.Tasks.TaskFactory`1[ubyte]:FromAsyncCoreLogic(System.IAsyncResult,System.Func`2[System.IAsyncResult,ubyte],System.Action`1[System.IAsyncResult],System.Threading.Tasks.Task`1[ubyte],ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -393,7 +378,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 101 (0x00065) Actual length = 404 (0x000194)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-12 (-2.80%) : 5400.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b_40(System.Object):this (FullOpts)

@@ -8,22 +8,21 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]>
-; V01 arg1 [V01,T00] ( 6, 5.50) ref -> x1 class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd exact EH-live <<unknown class>> -; V03 loc1 [V03,T02] ( 4, 4 ) ref -> x19 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T00] ( 6, 6 ) ref -> x19 class-hnd single-def <System.Object> +; V02 loc0 [V02,T01] ( 8, 4 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>> +; V03 loc1 [V03,T02] ( 4, 4 ) ref -> x20 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T05] ( 2, 1 ) int -> [fp+0x24] do-not-enreg[Z] EH-live ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V06 loc4 [V06,T07] ( 4, 0 ) ref -> x19 class-hnd single-def <<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 "spilling QMark2" <<unknown class>> -; V09 tmp2 [V09,T08] ( 3, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V10 tmp3 [V10 ] ( 2, 0 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> -;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken> -; V12 tmp5 [V12 ] ( 2, 0 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._source (fldOffset=0x0)" P-DEP -; V13 tmp6 [V13,T09] ( 2, 0 ) ref -> x1 "field V11._source (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 4 ) int -> x1 "argument with side effect" -; V15 PSPSym [V15,T06] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V16 cse0 [V16,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
+; V08 tmp1 [V08,T08] ( 3, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V09 tmp2 [V09 ] ( 2, 0 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> +;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken> +; V11 tmp4 [V11 ] ( 2, 0 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._source (fldOffset=0x0)" P-DEP +; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> x1 "field V10._source (fldOffset=0x0)" P-INDEP +; V13 tmp6 [V13,T03] ( 2, 4 ) int -> x1 "argument with side effect" +; V14 PSPSym [V14,T06] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V15 cse0 [V15,T04] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 32 @@ -31,82 +30,71 @@ G_M26575_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x30] mov fp, sp
- str xzr, [fp, #0x18] // [V10 tmp3]
+ str xzr, [fp, #0x18] // [V09 tmp2]
add x2, sp, #64
- str x2, [fp, #0x28] // [V15 PSPSym] - ;; size=24 bbWeight=1 PerfScore 5.00 -G_M26575_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x1] - str x1, [fp, #0x10] // [V02 loc0] - ; GC ptr vars +{V02} - cbz x1, G_M26575_IG05 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M26575_IG03: ; bbWeight=0.50, gcVars=0000000000000002 {V02}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x0, [x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - bne G_M26575_IG05 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M26575_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x10] // [V02 loc0] - ; gcrRegs +[x0] - ldr x19, [x0, #0x40]
+ str x2, [fp, #0x28] // [V14 PSPSym] + mov x19, x1
; gcrRegs +[x19]
- cbnz x19, G_M26575_IG07 - ;; size=12 bbWeight=1 PerfScore 6.00 -G_M26575_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19]
+ ;; size=28 bbWeight=1 PerfScore 5.50 +G_M26575_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + str x0, [fp, #0x10] // [V02 loc0] + ; GC ptr vars +{V02} + cbz x19, G_M26575_IG03 + ldr x20, [x19, #0x40] + ; gcrRegs +[x20] + cbnz x20, G_M26575_IG05 + ;; size=36 bbWeight=1 PerfScore 9.00 +G_M26575_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x20]
; GC ptr vars -{V02}
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method>
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M26575_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M26575_IG04: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x40 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M26575_IG07: ; bbWeight=1, gcVars=0000000000000002 {V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19]
+G_M26575_IG05: ; bbWeight=1, gcVars=0000000000000002 {V02}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0 x20]
; GC ptr vars +{V01 V02}
- ldr x1, [fp, #0x10] // [V02 loc0] - ; gcrRegs +[x1] - str xzr, [x1, #0x40] - ldr x1, [fp, #0x10] // [V02 loc0] - ldrsh w1, [x1, #0x48] - ; gcrRegs -[x1] - mov x0, x19 - ; gcrRegs +[x0] - movz x20, #0xD1FFAB1E // code for <unknown method> - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - mov x11, x20
+ str xzr, [x0, #0x40] + ldrsh w1, [x0, #0x48] + mov x0, x20 + movz x19, #0xD1FFAB1E // code for <unknown method> + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + mov x11, x19
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0 str w0, [fp, #0x24] // [V04 loc2]
- ;; size=48 bbWeight=1 PerfScore 15.50 -G_M26575_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr x1, [fp, #0x10] // [V02 loc0] - ; gcrRegs +[x1] - ldrsh w1, [x1, #0x48] - ; gcrRegs -[x1] - mov x0, x19
+ ;; size=40 bbWeight=1 PerfScore 11.50 +G_M26575_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
- add x11, x20, #8
+ ldrsh w1, [x0, #0x48] + mov x0, x20 + add x11, x19, #8
ldr x2, [x11] blr x2
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x20]
; gcr arg pop 0 sxtw w1, w0 ldr x0, [fp, #0x10] // [V02 loc0] @@ -119,36 +107,36 @@ G_M26575_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 18.00
-G_M26575_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M26575_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; GC ptr vars -{V01 V02} ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x40 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M26575_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26575_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #64 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M26575_IG11: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26575_IG09: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V02} mov x1, x0 ; gcrRegs +[x1] ldr w0, [fp, #0x24] // [V04 loc2] ; gcrRegs -[x0] cmp w0, #3
- bne G_M26575_IG13
+ bne G_M26575_IG11
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M26575_IG12
+ cbz x19, G_M26575_IG10
mov x0, x19 movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -169,11 +157,11 @@ G_M26575_IG11: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 blr x3 ; gcrRegs -[x0-x2 x19] ; gcr arg pop 0
- b G_M26575_IG14
+ b G_M26575_IG12
;; size=100 bbWeight=0 PerfScore 0.00
-G_M26575_IG12: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26575_IG10: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V01 V02}
- add x0, fp, #24 // [V10 tmp3]
+ add x0, fp, #24 // [V09 tmp2]
mov w1, #1 movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -181,7 +169,7 @@ G_M26575_IG12: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldp x0, x1, [fp, #0x10] // [V02 loc0], [V12 tmp5]
+ ldp x0, x1, [fp, #0x10] // [V02 loc0], [V11 tmp4]
; gcrRegs +[x0-x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -191,9 +179,9 @@ G_M26575_IG12: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M26575_IG14
+ b G_M26575_IG12
;; size=56 bbWeight=0 PerfScore 0.00
-G_M26575_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M26575_IG11: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1] ; GC ptr vars +{V01 V02} ldr x0, [fp, #0x10] // [V02 loc0] @@ -207,16 +195,16 @@ G_M26575_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M26575_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adr x0, [G_M26575_IG09]
+G_M26575_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + adr x0, [G_M26575_IG07]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M26575_IG15: ; bbWeight=0, funclet epilog, nogc, extend
+G_M26575_IG13: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ...

+0 (0.00%) : 10096.dasm - System.Reflection.CustomAttributeTypedArgument:CanonicalizeValue(System.Object):System.Object (FullOpts)

@@ -7,8 +7,8 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Object> -; V01 loc0 [V01,T01] ( 3, 2.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object> +; V01 loc0 [V01,T01] ( 2, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -26,15 +26,14 @@ G_M50446_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M50446_IG05
+ cbnz x19, G_M50446_IG05
;; size=24 bbWeight=1 PerfScore 4.00
-G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x19 - ; gcrRegs +[x0]
+G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25 G_M50446_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] @@ -42,7 +41,7 @@ G_M50446_IG04: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M50446_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x19]
+ ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32

libraries_tests.run.linux.arm64.Release.mch

-40 (-43.48%) : 4301.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)

@@ -5,16 +5,15 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 17
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 17
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> x0 class-hnd single-def <System.Reflection.Assembly> -; V01 loc0 [V01,T01] ( 2, 2 ) ref -> x0 class-hnd exact <System.Reflection.RuntimeAssembly> -; V02 loc1 [V02,T02] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x0 class-hnd single-def <System.Reflection.Assembly> +; V01 loc0 [V01,T01] ( 2, 2 ) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimeAssembly> +;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
;# 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 "spilling QMark2" <System.Reflection.RuntimeAssembly> -;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -24,58 +23,41 @@ G_M8626_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} ;; size=8 bbWeight=1 PerfScore 1.50 G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- cbz x0, G_M8626_IG05 - ldr x1, [x0] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M8626_IG04 - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M8626_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x0, G_M8626_IG04
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M8626_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 4.00 +G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M8626_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M8626_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0] - ldr x0, [x0, #0x08] - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 10.50, instruction count 23, allocated bytes for code 92 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 52, prolog size 8, PerfScore 7.50, instruction count 13, allocated bytes for code 52 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -83,9 +65,6 @@ Unwind Info: ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

-20 (-38.46%) : 3221.dasm - SharedTypes.ComInterfaces.MarshallingFails.IStringArrayMarshallingFailsImpl:get_StartingStrings():System.String

@@ -14,23 +14,18 @@ G_M3850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M3850_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #229 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M3850_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=aaaef0f5) for method SharedTypes.ComInterfaces.MarshallingFails.IStringArrayMarshallingFailsImpl:get_StartingStrings():System.String[] (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=aaaef0f5) for method SharedTypes.ComInterfaces.MarshallingFails.IStringArrayMarshallingFailsImpl:get_StartingStrings():System.String[] (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 4661.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M41143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M41143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #1 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M41143_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=c8a55f48) for method System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=c8a55f48) for method System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.20%) : 93.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

@@ -74,19 +74,14 @@ G_M3749_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} str x0, [fp, #0x38] // [V16 tmp2] ldr x0, [fp, #0x40] // [V15 tmp1] cbnz x0, G_M3749_IG05
- movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #6 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] str x0, [fp, #0x38] // [V16 tmp2]
- ;; size=100 bbWeight=1 PerfScore 27.50
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ldr x0, [fp, #0x38] // [V16 tmp2] @@ -252,7 +247,7 @@ G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] str x0, [fp, #0x18] // [V20 tmp6] ldr x0, [fp, #0x58] // [V11 loc9] @@ -303,7 +298,7 @@ G_M3749_IG06: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 908, prolog size 44, PerfScore 269.00, instruction count 227, allocated bytes for code 908 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 888, prolog size 44, PerfScore 266.00, instruction count 222, allocated bytes for code 888 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================ Unwind Info: @@ -314,7 +309,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 908 (0x00038c)
+ Function Length : 222 (0x000de) Actual length = 888 (0x000378)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.04%) : 8504.dasm - Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:ObjWith_TypeConverter():this (Tier0)

@@ -62,7 +62,7 @@ G_M30063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_UNBOX
; gcrRegs +[x0] str x0, [fp, #0x10] // [V07 tmp4] ldr x1, [fp, #0x10] // [V07 tmp4] @@ -101,8 +101,7 @@ G_M30063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #71 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -128,13 +127,13 @@ G_M30063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] blr x0
- ;; size=352 bbWeight=1 PerfScore 97.50
+ ;; size=348 bbWeight=1 PerfScore 97.00
G_M30063_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 384, prolog size 20, PerfScore 105.00, instruction count 96, allocated bytes for code 384 (MethodHash=68028a90) for method Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:ObjWith_TypeConverter():this (Tier0)
+; Total bytes of code 380, prolog size 20, PerfScore 104.50, instruction count 95, allocated bytes for code 380 (MethodHash=68028a90) for method Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:ObjWith_TypeConverter():this (Tier0)
; ============================================================ Unwind Info: @@ -145,7 +144,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 96 (0x00060) Actual length = 384 (0x000180)
+ 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)

+16 (+10.00%) : 1132.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" @@ -24,10 +24,14 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x2, [fp, #0x28] // [V02 arg2] ;; size=28 bbWeight=1 PerfScore 6.50 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [fp, #0x28] // [V02 arg2] - cbnz w0, G_M26730_IG04 - ldr x0, [fp, #0x38] // [V00 this]
+ add x1, fp, #40 // [V02 arg2] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0]
+ cbnz x0, G_M26730_IG04 + ldr x0, [fp, #0x38] // [V00 this]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x30] // [V01 arg1] ; gcrRegs +[x1] @@ -38,7 +42,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr wzr, [x0] blr x2 ; gcrRegs -[x0-x1]
- ;; size=44 bbWeight=1 PerfScore 18.50
+ ;; size=60 bbWeight=1 PerfScore 19.50
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -53,7 +57,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX_NULLABLE
+ bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0] str x0, [fp, #0x20] // [V04 tmp1] ldr x2, [fp, #0x20] // [V04 tmp1] @@ -74,7 +78,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 160, prolog size 16, PerfScore 53.50, instruction count 40, allocated bytes for code 160 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 176, prolog size 16, PerfScore 54.50, instruction count 44, allocated bytes for code 176 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info: @@ -85,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-44 (-68.75%) : 733.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)

@@ -13,11 +13,10 @@ ;* V02 tmp2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String> ;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V05 tmp5 [V05,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V05 tmp5 [V05,T01] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V06 tmp6 [V06 ] ( 0, 0 ) ref -> zero-ref "field V01.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V07 tmp7 [V07,T03] ( 0, 0 ) ref -> zero-ref single-def "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP -; V08 cse0 [V08,T00] ( 2, 2 ) long -> x0 "CSE - aggressive" -; V09 rat0 [V09,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V07 tmp7 [V07,T02] ( 0, 0 ) ref -> zero-ref single-def "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP +;* V08 cse0 [V08,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,30 +24,15 @@ G_M59074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - 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 - ldr w1, [x1] - tbz w1, #0, G_M59074_IG05 - ;; size=32 bbWeight=1 PerfScore 7.00 -G_M59074_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=1 PerfScore 0.50
-G_M59074_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59074_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M59074_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #6 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M59074_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 64 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
+; Total bytes of code 20, prolog size 8, PerfScore 4.00, instruction count 5, allocated bytes for code 20 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 5 (0x00005) Actual length = 20 (0x000014)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 534.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M52532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M52532_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M52532_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M52532_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52532_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M52532_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #56 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M52532_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 770.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M31334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M31334_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M31334_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M31334_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M31334_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M31334_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #55 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M31334_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.27%) : 1002.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon

@@ -16,7 +16,7 @@ ; V05 loc0 [V05 ] ( 3, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T13] ( 3, 5 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T52] ( 3, 1.50) ref -> x24 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> x21 class-hnd <System.__Canon> @@ -31,7 +31,7 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> x25 class-hnd "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x22 "spilling helperCall"
+; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x24 "spilling helperCall"
; V24 tmp12 [V24,T41] ( 3, 2 ) long -> x25 "spilling helperCall" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -72,7 +72,7 @@ ; V61 rat13 [V61,T24] ( 3, 2.80) long -> x0 "spilling expr" ; V62 rat14 [V62,T34] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V63 rat15 [V63,T25] ( 3, 2.80) long -> x0 "spilling expr"
-; V64 rat16 [V64,T35] ( 3, 2.24) long -> x22 "fgMakeTemp is creating a new local variable"
+; V64 rat16 [V64,T35] ( 3, 2.24) long -> x24 "fgMakeTemp is creating a new local variable"
; V65 rat17 [V65,T26] ( 3, 2.80) long -> x0 "spilling expr" ; V66 rat18 [V66,T36] ( 3, 2.24) long -> x25 "fgMakeTemp is creating a new local variable" ; V67 rat19 [V67,T47] ( 3, 2 ) long -> x0 "runtime lookup" @@ -83,9 +83,9 @@ ; V72 rat24 [V72,T38] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V73 rat25 [V73,T29] ( 3, 2.80) long -> x0 "spilling expr" ; V74 rat26 [V74,T39] ( 3, 2.24) long -> x11 "fgMakeTemp is creating a new local variable"
-; V75 rat27 [V75,T56] ( 3, 1 ) long -> x23 "runtime lookup" -; V76 rat28 [V76,T54] ( 3, 1.40) long -> x0 "spilling expr" -; V77 rat29 [V77,T55] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
+; V75 rat27 [V75,T55] ( 3, 1 ) long -> x23 "runtime lookup" +; V76 rat28 [V76,T53] ( 3, 1.40) long -> x0 "spilling expr" +; V77 rat29 [V77,T54] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -124,7 +124,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M36297_IG05: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz @@ -161,11 +161,11 @@ G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=800000 {x23}, byrefRegs=0000 {} movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x21, x0 @@ -210,13 +210,13 @@ G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x24, x0 @@ -241,7 +241,7 @@ G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x22, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -263,7 +263,7 @@ G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -326,73 +326,71 @@ G_M36297_IG29: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24] - cbz x24, G_M36297_IG44
+ mov x22, x0 + ; gcrRegs +[x22]
ldr x0, [x21, #0x38] ; gcrRegs -[x0] ldr x1, [x0, #0x18] cmp x1, #80 ble G_M36297_IG33
- ;; size=32 bbWeight=0.50 PerfScore 5.25 -G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - ldr x22, [x0, #0x50] - cbz x22, G_M36297_IG33
+ ;; size=28 bbWeight=0.50 PerfScore 4.75 +G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + ldr x24, [x0, #0x50] + cbz x24, G_M36297_IG33
;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG34 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov x22, x0
+ mov x24, x0
;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21, #0x38] ldr x1, [x0, #0x18] cmp x1, #88 ble G_M36297_IG37 ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x25, [x0, #0x58] cbz x25, G_M36297_IG37 ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG38 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - mov x0, x22 - mov x1, x24
+G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + mov x0, x24 + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x24]
+ ; gcrRegs -[x1 x22]
; byrRegs +[x0] ; gcr arg pop 0 mov w2, w1 @@ -428,7 +426,7 @@ G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=400000 {x22}, byref @@ -477,11 +475,11 @@ G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x24, x0 @@ -513,7 +511,7 @@ G_M36297_IG51: ; bbWeight=0.18, gcrefRegs=1580000 {x19 x20 x22 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x11, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -556,7 +554,7 @@ G_M36297_IG57: ; bbWeight=0.09, gcrefRegs=1180000 {x19 x20 x24}, byrefReg movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x23, x0 ;; size=24 bbWeight=0.09 PerfScore 0.32 @@ -709,7 +707,7 @@ G_M36297_IG68: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1460, prolog size 52, PerfScore 319.10, instruction count 365, allocated bytes for code 1460 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 1456, prolog size 52, PerfScore 318.60, instruction count 364, allocated bytes for code 1456 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -720,7 +718,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
+ Function Length : 343 (0x00157) Actual length = 1372 (0x00055c)
---- Epilog scopes ---- ...

+0 (0.00%) : 514.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M47281_IG05
+ cbnz x19, G_M47281_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -61,7 +60,7 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

+0 (0.00%) : 604.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M51894_IG05
+ cbnz x19, G_M51894_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -61,7 +60,7 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

realworld.run.linux.arm64.checked.mch

-44 (-57.89%) : 2917.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M59575_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59575_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M59575_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M59575_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59575_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M59575_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59575_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M59575_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M59575_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=75061748) for method FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=75061748) for method FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 3017.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)

@@ -15,35 +15,19 @@ G_M34240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M34240_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M34240_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M34240_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M34240_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 3073.dasm - FSComp.SR:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M13645_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M13645_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M13645_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M13645_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13645_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M13645_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M13645_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M13645_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M13645_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=5d28cab2) for method FSComp.SR:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=5d28cab2) for method FSComp.SR:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.33%) : 5060.dasm - Microsoft.FSharp.Core.FSharpFunc2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[System.Canon,System.Canon],System.__Canon,int):int (FullOpts)

@@ -8,15 +8,15 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ; V03 arg2 [V03,T04] ( 4, 3 ) int -> x21 single-def
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V08 tmp2 [V08,T06] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" ; @@ -47,16 +47,16 @@ G_M27437_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=000 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=16 bbWeight=0.20 PerfScore 0.50 G_M27437_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M27437_IG08
+ cbz x19, G_M27437_IG08
;; size=12 bbWeight=1 PerfScore 2.50 G_M27437_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -74,23 +74,23 @@ G_M27437_IG07: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27437_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M27437_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] + mov x0, xzr
mov x1, x20 ; gcrRegs +[x1]
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x1 x19-x20]
+ ; gcrRegs -[x1 x20] +[x0]
; gcr arg pop 0 mov w1, w21 ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M27437_IG09: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -99,7 +99,7 @@ G_M27437_IG09: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 32, PerfScore 37.45, instruction count 43, allocated bytes for code 172 (MethodHash=abbe94d2) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
+; Total bytes of code 176, prolog size 32, PerfScore 37.70, instruction count 44, allocated bytes for code 176 (MethodHash=abbe94d2) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.78%) : 3555.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T01] ( 4, 3 ) int -> x20 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 2 ) int -> x21 single-def "field V01.idx (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -34,10 +34,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M49388_IG05
+ cbz x19, G_M49388_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -54,22 +54,22 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr
mov w1, w21
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x19]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov w1, w20 ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -78,7 +78,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 144, prolog size 28, PerfScore 29.25, instruction count 36, allocated bytes for code 144 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 29.50, instruction count 37, allocated bytes for code 148 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -89,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.90%) : 2553.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> x1 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -28,15 +28,18 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M19732_IG05 - ;; size=24 bbWeight=1 PerfScore 4.00 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- ldr x2, [x0]
+ cbz x19, G_M19732_IG05 + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + ldr x2, [x19]
ldr x2, [x2, #0x98] ldr x2, [x2, #0x10] ;; size=16 bbWeight=0.50 PerfScore 4.75 @@ -46,21 +49,21 @@ G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19]
+G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x19] + mov x0, xzr + mov x1, xzr + ldr x1, [x1]
ldr x1, [x1, #0x50] ldr x1, [x1, #0x30] blr x1
+ ; gcrRegs +[x0]
; gcr arg pop 0
- mov x1, x19 - ; gcrRegs +[x1]
+ mov x1, xzr
ldr x2, [x0] ldr x2, [x2, #0x98] ldr x2, [x2, #0x10]
- ;; size=36 bbWeight=0.50 PerfScore 10.00
+ ;; size=40 bbWeight=0.50 PerfScore 10.25
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -68,7 +71,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.75, instruction count 29, allocated bytes for code 116 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 26.50, instruction count 31, allocated bytes for code 124 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info: @@ -79,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)

smoke_tests.nativeaot.linux.arm64.checked.mch

-32 (-57.14%) : 3961.dasm - Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)

@@ -15,31 +15,19 @@ G_M53179_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M53179_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M53179_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M53179_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M53179_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x08] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M53179_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M53179_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M53179_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M53179_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=d9873044) for method Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=d9873044) for method Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)
; ============================================================ Cfi Info:

-32 (-57.14%) : 6193.dasm - System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)

@@ -15,31 +15,19 @@ G_M1571_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M1571_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M1571_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M1571_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M1571_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x08] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M1571_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M1571_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M1571_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M1571_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=108df9dc) for method System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=108df9dc) for method System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)
; ============================================================ Cfi Info:

-32 (-57.14%) : 9089.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (FullOpts)

@@ -15,31 +15,19 @@ G_M58834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M58834_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M58834_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M58834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x20] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M58834_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M58834_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M58834_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M58834_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (FullOpts)
; ============================================================ Cfi Info:

-20 (-2.81%) : 14442.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (FullOpts)

@@ -21,9 +21,9 @@ ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.LowLevelLifoSemaphoreBase+Counts> ;* V12 loc9 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.Threading.LowLevelLifoSemaphoreBase+Counts> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T22] ( 3, 2 ) int -> x21
+; V14 tmp1 [V14,T21] ( 3, 2 ) int -> x21
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V16 tmp3 [V16,T24] ( 2, 1 ) int -> x25
+; V16 tmp3 [V16,T23] ( 2, 1 ) int -> x25
;* V17 tmp4 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -56,7 +56,7 @@ ; V46 tmp33 [V46,T15] ( 2, 16 ) long -> x1 "Inlining Arg" ;* V47 tmp34 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.LowLevelLifoSemaphoreBase+Counts> ;* V48 tmp35 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.LowLevelLifoSemaphoreBase+Counts>
-; V49 tmp36 [V49,T23] ( 2, 2 ) int -> x0 "Single return block return value"
+; V49 tmp36 [V49,T22] ( 2, 2 ) int -> x0 "Single return block return value"
; V50 tmp37 [V50,T00] ( 30,185.50) long -> x22 "field V04._data (fldOffset=0x0)" P-INDEP ; V51 tmp38 [V51,T09] ( 6, 22.50) long -> x2 "field V07._data (fldOffset=0x0)" P-INDEP ;* V52 tmp39 [V52 ] ( 0, 0 ) long -> zero-ref "field V08._data (fldOffset=0x0)" P-INDEP @@ -81,11 +81,10 @@ ;* V71 tmp58 [V71 ] ( 0, 0 ) long -> zero-ref "field V48._data (fldOffset=0x0)" P-INDEP ; V72 cse0 [V72,T08] ( 4, 29 ) byref -> x23 hoist "CSE - aggressive" ; V73 cse1 [V73,T02] ( 24, 79.50) ref -> x1 multi-def "CSE - aggressive"
-; V74 rat0 [V74,T21] ( 3, 3 ) long -> x24 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0
-G_M25772_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M25772_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x10] stp x21, x22, [sp, #0x20] @@ -156,11 +155,11 @@ G_M25772_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 b G_M25772_IG16 ;; size=8 bbWeight=2 PerfScore 3.00 G_M25772_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
- lsr x2, x22, #48 - uxtb w2, w2 - mov w0, #255
+ lsr x0, x22, #48 + uxtb w0, w0 + mov w1, #255
cmp w21, #0
- ccmp w2, w0, z, gt
+ ccmp w0, w1, z, gt
bge G_M25772_IG14 mov x0, #0xD1FFAB1E add x2, x22, x0 @@ -199,7 +198,7 @@ G_M25772_IG17: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 b G_M25772_IG08 ;; size=8 bbWeight=4 PerfScore 6.00 G_M25772_IG18: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
- cbnz w22, G_M25772_IG42
+ cbnz w22, G_M25772_IG41
;; size=4 bbWeight=1 PerfScore 1.00 G_M25772_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz lsr x0, x2, #32 @@ -217,7 +216,7 @@ G_M25772_IG20: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, bl <unknown method> ; gcrRegs -[x0 x19] ; gcr arg pop 0
- b G_M25772_IG44
+ b G_M25772_IG43
;; size=16 bbWeight=0.50 PerfScore 1.50 G_M25772_IG21: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs +[x19] @@ -234,22 +233,20 @@ G_M25772_IG22: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M25772_IG23: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, gcvars, byref, isz
- adrp x24, [HIGH RELOC #0xD1FFAB1E] - add x24, x24, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x24, #-0x08] - cbnz x0, G_M25772_IG46 - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M25772_IG24: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz - ldr w0, [x24, #0x04]
+ bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[x0] + ; gcr arg pop 0 + ldr w0, [x0, #0x04] + ; byrRegs -[x0]
cmp w0, #1 cset x24, eq mov w0, #10 cmp w24, #0 csel w25, w0, wzr, ne cmp w25, w21
- bge G_M25772_IG32 - ;; size=32 bbWeight=0.50 PerfScore 3.50 -G_M25772_IG25: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+ bge G_M25772_IG31 + ;; size=36 bbWeight=0.50 PerfScore 4.00 +G_M25772_IG24: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
mov w0, w25 mov w2, w24 mov w1, #10 @@ -257,12 +254,12 @@ G_M25772_IG25: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcr arg pop 0 add w25, w25, #1 ldr x22, [x19, #0x98]
- cbz w22, G_M25772_IG31
+ cbz w22, G_M25772_IG30
;; size=28 bbWeight=4 PerfScore 28.00
-G_M25772_IG26: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz - cbnz w22, G_M25772_IG28
+G_M25772_IG25: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz + cbnz w22, G_M25772_IG27
;; size=4 bbWeight=16 PerfScore 16.00
-G_M25772_IG27: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG26: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -272,13 +269,13 @@ G_M25772_IG27: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=16 bbWeight=8 PerfScore 20.00
-G_M25772_IG28: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG27: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
sub x26, x22, #1 lsr x0, x26, #48 uxtb w0, w0
- cbnz w0, G_M25772_IG30
+ cbnz w0, G_M25772_IG29
;; size=16 bbWeight=16 PerfScore 48.00
-G_M25772_IG29: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG28: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -288,7 +285,7 @@ G_M25772_IG29: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=16 bbWeight=8 PerfScore 20.00
-G_M25772_IG30: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG29: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
mov x0, #0xD1FFAB1E add x26, x26, x0 mov x0, x23 @@ -296,24 +293,24 @@ G_M25772_IG30: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=800000 {x2 mov x1, x22 casal x1, x26, [x0] cmp x1, x22
- beq G_M25772_IG42
+ beq G_M25772_IG41
mov x22, x1
- cbnz w22, G_M25772_IG26
+ cbnz w22, G_M25772_IG25
;; size=36 bbWeight=16 PerfScore 128.00
-G_M25772_IG31: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG30: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] cmp w25, w21
- blt G_M25772_IG25
+ blt G_M25772_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M25772_IG32: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG31: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
ldr x22, [x19, #0x98] ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M25772_IG33: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG32: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
lsr x0, x22, #48 uxtb w0, w0
- cbnz w0, G_M25772_IG35
+ cbnz w0, G_M25772_IG34
;; size=12 bbWeight=4 PerfScore 10.00
-G_M25772_IG34: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG33: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -323,13 +320,13 @@ G_M25772_IG34: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=16 bbWeight=2 PerfScore 5.00
-G_M25772_IG35: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG34: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
mov x0, #0xD1FFAB1E add x21, x22, x0
- cbz w22, G_M25772_IG38
+ cbz w22, G_M25772_IG37
;; size=12 bbWeight=4 PerfScore 8.00
-G_M25772_IG36: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz - cbnz w21, G_M25772_IG37
+G_M25772_IG35: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz + cbnz w21, G_M25772_IG36
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -339,16 +336,16 @@ G_M25772_IG36: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=20 bbWeight=2 PerfScore 7.00
-G_M25772_IG37: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG36: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
sub x21, x21, #1
- b G_M25772_IG40
+ b G_M25772_IG39
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25772_IG38: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG37: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
lsr x0, x21, #32 uxth w0, w0 mov w1, #0xD1FFAB1E cmp w0, w1
- blt G_M25772_IG39
+ blt G_M25772_IG38
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -358,29 +355,29 @@ G_M25772_IG38: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=36 bbWeight=2 PerfScore 12.00
-G_M25772_IG39: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
+G_M25772_IG38: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref
mov x0, #0xD1FFAB1E add x21, x21, x0 ;; size=8 bbWeight=2 PerfScore 2.00
-G_M25772_IG40: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
+G_M25772_IG39: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=800000 {x23}, byref, isz
mov x0, x23 ; byrRegs +[x0] mov x1, x22 casal x1, x21, [x0] cmp x1, x22
- beq G_M25772_IG41
+ beq G_M25772_IG40
mov x22, x1
- b G_M25772_IG33
+ b G_M25772_IG32
;; size=28 bbWeight=4 PerfScore 28.00
-G_M25772_IG41: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25772_IG40: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0 x23] cbz w22, G_M25772_IG20 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25772_IG42: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25772_IG41: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M25772_IG43: ; bbWeight=0.50, epilog, nogc, extend
+G_M25772_IG42: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ...

-28 (-1.43%) : 49.dasm - System.Globalization.TimeSpanParse:ProcessTerminalHMS_D(byref,ubyte,byref):ubyte (FullOpts)

@@ -10,7 +10,7 @@ ; V00 arg0 [V00,T00] ( 58, 30.50) byref -> x19 single-def ; V01 arg1 [V01,T05] ( 3, 2.50) ubyte -> x1 single-def ; V02 arg2 [V02,T04] ( 5, 3.50) byref -> x20 single-def
-; V03 loc0 [V03,T22] ( 2, 1 ) ubyte -> x1
+; V03 loc0 [V03,T22] ( 2, 1 ) ubyte -> x0
; V04 loc1 [V04,T23] ( 2, 1 ) ubyte -> x21 ; V05 loc2 [V05,T03] ( 14, 7 ) ubyte -> x22 ; V06 loc3 [V06,T01] ( 37, 18.50) ubyte -> x23 @@ -82,11 +82,11 @@ G_M35317_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35317_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz ldr w0, [x19, #0x14] cmp w0, #4
- bne G_M35317_IG127
+ bne G_M35317_IG126
;; size=12 bbWeight=1 PerfScore 4.50 G_M35317_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz uxtb w21, w1
- tbnz w21, #2, G_M35317_IG127
+ tbnz w21, #2, G_M35317_IG126
ldr w0, [x19, #0x18] cmp w0, #3 beq G_M35317_IG04 @@ -100,67 +100,63 @@ G_M35317_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 ; gcrRegs -[x0-x1] ;; size=40 bbWeight=0.50 PerfScore 4.50 G_M35317_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- and w1, w21, #1
+ and w0, w21, #1
tst w21, #2 cset x21, ne mov w22, wzr mov w23, wzr mov w24, wzr
- mov w0, #2 - strb w0, [fp, #0xD1FFAB1E] // [V08 loc5]
+ mov w1, #2 + strb w1, [fp, #0xD1FFAB1E] // [V08 loc5]
str wzr, [fp, #0xD1FFAB1E] // [V08 loc5+0x04] str wzr, [fp, #0xD1FFAB1E] // [V08 loc5+0x08] stp xzr, xzr, [fp, #0xD1FFAB1E] str xzr, [fp, #0xD1FFAB1E] // [V09 loc6]
- cbz w1, G_M35317_IG69 - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1, #-0x08] - cbnz x1, G_M35317_IG130 - ;; size=68 bbWeight=0.50 PerfScore 7.25 -G_M35317_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x25, [x1]
+ cbz w0, G_M35317_IG68 + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0] + mov x25, x0 + ; byrRegs +[x25]
add x26, x25, #8 ; byrRegs +[x26]
- ;; size=16 bbWeight=0.50 PerfScore 2.25 -G_M35317_IG06: ; bbWeight=0.50, nogc, extend
+ ;; size=64 bbWeight=0.50 PerfScore 5.75 +G_M35317_IG05: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20]
+ ; byrRegs -[x0]
str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M35317_IG07: ; bbWeight=0.50, isz, extend
+G_M35317_IG06: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method>
- ; byrRegs -[x0] +[x25] - cbz w0, G_M35317_IG14
+ ; byrRegs -[x0] + cbz w0, G_M35317_IG13
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M35317_IG08: ; bbWeight=0.50, nogc, extend
+G_M35317_IG07: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x90] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG09: ; bbWeight=0.50, nogc, extend
+G_M35317_IG08: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG10: ; bbWeight=0.50, nogc, extend
+G_M35317_IG09: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG11: ; bbWeight=0.50, nogc, extend
+G_M35317_IG10: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x30] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG12: ; bbWeight=0.50, nogc, extend
+G_M35317_IG11: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x10] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG13: ; bbWeight=0.50, extend
+G_M35317_IG12: ; bbWeight=0.50, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -174,45 +170,45 @@ G_M35317_IG13: ; bbWeight=0.50, extend cset x1, eq uxtb w24, w1 ;; size=48 bbWeight=0.50 PerfScore 3.25
-G_M35317_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz - cbnz w23, G_M35317_IG25
+G_M35317_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz + cbnz w23, G_M35317_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35317_IG15: ; bbWeight=0.50, nogc, extend
+G_M35317_IG14: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20] str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M35317_IG16: ; bbWeight=0.50, isz, extend
+G_M35317_IG15: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method> ; byrRegs -[x0]
- cbz w0, G_M35317_IG25
+ cbz w0, G_M35317_IG24
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M35317_IG17: ; bbWeight=0.50, nogc, extend
+G_M35317_IG16: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x90] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG18: ; bbWeight=0.50, nogc, extend
+G_M35317_IG17: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG19: ; bbWeight=0.50, nogc, extend
+G_M35317_IG18: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG20: ; bbWeight=0.50, nogc, extend
+G_M35317_IG19: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x30] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG21: ; bbWeight=0.50, nogc, extend
+G_M35317_IG20: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x10] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG22: ; bbWeight=0.50, isz, extend
+G_M35317_IG21: ; bbWeight=0.50, isz, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -222,56 +218,56 @@ G_M35317_IG22: ; bbWeight=0.50, isz, extend mov w0, #1 bl <unknown method> sxtw w23, w0
- cbnz w24, G_M35317_IG23
+ cbnz w24, G_M35317_IG22
cmp w23, #0 cset x1, eq
- b G_M35317_IG24
+ b G_M35317_IG23
;; size=52 bbWeight=0.50 PerfScore 4.00
-G_M35317_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
+G_M35317_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
mov w1, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35317_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
+G_M35317_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
uxtb w24, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35317_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz - cbnz w23, G_M35317_IG36
+G_M35317_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz + cbnz w23, G_M35317_IG35
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35317_IG26: ; bbWeight=0.50, nogc, extend
+G_M35317_IG25: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20] str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M35317_IG27: ; bbWeight=0.50, isz, extend
+G_M35317_IG26: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method> ; byrRegs -[x0 x26]
- cbz w0, G_M35317_IG36
+ cbz w0, G_M35317_IG35
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M35317_IG28: ; bbWeight=0.50, nogc, extend
+G_M35317_IG27: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x90] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG29: ; bbWeight=0.50, nogc, extend
+G_M35317_IG28: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG30: ; bbWeight=0.50, nogc, extend
+G_M35317_IG29: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG31: ; bbWeight=0.50, nogc, extend
+G_M35317_IG30: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [fp, #0xD1FFAB1E] stp q16, q17, [fp, #0x30] ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M35317_IG32: ; bbWeight=0.50, nogc, extend
+G_M35317_IG31: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x10] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35317_IG33: ; bbWeight=0.50, isz, extend
+G_M35317_IG32: ; bbWeight=0.50, isz, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -281,56 +277,56 @@ G_M35317_IG33: ; bbWeight=0.50, isz, extend mov w0, #1 bl <unknown method> sxtw w23, w0
- cbnz w24, G_M35317_IG34
+ cbnz w24, G_M35317_IG33
cmp w23, #0 cset x1, eq
- b G_M35317_IG35
+ b G_M35317_IG34
...

-28 (-1.39%) : 42.dasm - System.Globalization.TimeSpanParse:ProcessTerminalHMSF_D(byref,ubyte,byref):ubyte (FullOpts)

@@ -10,7 +10,7 @@ ; V00 arg0 [V00,T00] ( 70, 36.50) byref -> x19 single-def ; V01 arg1 [V01,T05] ( 3, 2.50) ubyte -> x1 single-def ; V02 arg2 [V02,T04] ( 5, 3.50) byref -> x20 single-def
-; V03 loc0 [V03,T22] ( 2, 1 ) ubyte -> x1
+; V03 loc0 [V03,T22] ( 2, 1 ) ubyte -> x0
; V04 loc1 [V04,T23] ( 2, 1 ) ubyte -> x21 ; V05 loc2 [V05 ] ( 17, 8.50) long -> [fp+0x1E8] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc3 [V06,T03] ( 14, 7 ) ubyte -> x22 @@ -83,11 +83,11 @@ G_M1843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M1843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz ldr w0, [x19, #0x14] cmp w0, #5
- bne G_M1843_IG127
+ bne G_M1843_IG126
;; size=12 bbWeight=1 PerfScore 4.50 G_M1843_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz uxtb w21, w1
- tbnz w21, #2, G_M1843_IG127
+ tbnz w21, #2, G_M1843_IG126
ldr w0, [x19, #0x18] cmp w0, #4 beq G_M1843_IG04 @@ -101,68 +101,64 @@ G_M1843_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x ; gcrRegs -[x0-x1] ;; size=40 bbWeight=0.50 PerfScore 4.50 G_M1843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- and w1, w21, #1
+ and w0, w21, #1
tst w21, #2 cset x21, ne str xzr, [fp, #0xD1FFAB1E] // [V05 loc2] mov w22, wzr mov w23, wzr mov w24, wzr
- mov w0, #2 - strb w0, [fp, #0xD1FFAB1E] // [V09 loc6]
+ mov w1, #2 + strb w1, [fp, #0xD1FFAB1E] // [V09 loc6]
str wzr, [fp, #0xD1FFAB1E] // [V09 loc6+0x04] str wzr, [fp, #0xD1FFAB1E] // [V09 loc6+0x08] stp xzr, xzr, [fp, #0xD1FFAB1E]
- cbz w1, G_M1843_IG69 - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1, #-0x08] - cbnz x1, G_M1843_IG130 - ;; size=68 bbWeight=0.50 PerfScore 7.25 -G_M1843_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x25, [x1]
+ cbz w0, G_M1843_IG68 + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0] + mov x25, x0 + ; byrRegs +[x25]
add x26, x25, #8 ; byrRegs +[x26]
- ;; size=16 bbWeight=0.50 PerfScore 2.25 -G_M1843_IG06: ; bbWeight=0.50, nogc, extend
+ ;; size=64 bbWeight=0.50 PerfScore 5.75 +G_M1843_IG05: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20]
+ ; byrRegs -[x0]
str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M1843_IG07: ; bbWeight=0.50, isz, extend
+G_M1843_IG06: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method>
- ; byrRegs -[x0] +[x25] - cbz w0, G_M1843_IG14
+ ; byrRegs -[x0] + cbz w0, G_M1843_IG13
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M1843_IG08: ; bbWeight=0.50, nogc, extend
+G_M1843_IG07: ; bbWeight=0.50, nogc, extend
add x1, fp, #0xD1FFAB1E ldp q16, q17, [x1, #0x90] stp q16, q17, [fp, #0x90] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M1843_IG09: ; bbWeight=0.50, nogc, extend
+G_M1843_IG08: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG10: ; bbWeight=0.50, nogc, extend
+G_M1843_IG09: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG11: ; bbWeight=0.50, nogc, extend
+G_M1843_IG10: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x30] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG12: ; bbWeight=0.50, nogc, extend
+G_M1843_IG11: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xD0] stp q16, q17, [fp, #0x10] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG13: ; bbWeight=0.50, extend
+G_M1843_IG12: ; bbWeight=0.50, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -176,46 +172,46 @@ G_M1843_IG13: ; bbWeight=0.50, extend cset x1, eq uxtb w24, w1 ;; size=48 bbWeight=0.50 PerfScore 3.25
-G_M1843_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz - cbnz w23, G_M1843_IG25
+G_M1843_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz + cbnz w23, G_M1843_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M1843_IG15: ; bbWeight=0.50, nogc, extend
+G_M1843_IG14: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20] str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M1843_IG16: ; bbWeight=0.50, isz, extend
+G_M1843_IG15: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method> ; byrRegs -[x0]
- cbz w0, G_M1843_IG25
+ cbz w0, G_M1843_IG24
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M1843_IG17: ; bbWeight=0.50, nogc, extend
+G_M1843_IG16: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x90] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG18: ; bbWeight=0.50, nogc, extend
+G_M1843_IG17: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG19: ; bbWeight=0.50, nogc, extend
+G_M1843_IG18: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG20: ; bbWeight=0.50, nogc, extend
+G_M1843_IG19: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xD0] stp q16, q17, [fp, #0x30] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG21: ; bbWeight=0.50, nogc, extend
+G_M1843_IG20: ; bbWeight=0.50, nogc, extend
add x1, fp, #0xD1FFAB1E ldp q16, q17, [x1, #0x10] stp q16, q17, [fp, #0x10] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M1843_IG22: ; bbWeight=0.50, isz, extend
+G_M1843_IG21: ; bbWeight=0.50, isz, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -225,57 +221,57 @@ G_M1843_IG22: ; bbWeight=0.50, isz, extend mov w0, #1 bl <unknown method> sxtw w23, w0
- cbnz w24, G_M1843_IG23
+ cbnz w24, G_M1843_IG22
cmp w23, #0 cset x1, eq
- b G_M1843_IG24
+ b G_M1843_IG23
;; size=52 bbWeight=0.50 PerfScore 4.00
-G_M1843_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
+G_M1843_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
mov w1, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M1843_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
+G_M1843_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref
uxtb w24, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M1843_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz - cbnz w23, G_M1843_IG36
+G_M1843_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6180000 {x19 x20 x25 x26}, byref, isz + cbnz w23, G_M1843_IG35
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M1843_IG26: ; bbWeight=0.50, nogc, extend
+G_M1843_IG25: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x26] stp q16, q17, [fp, #0xB0] ldr x0, [x26, #0x20] str x0, [fp, #0xD0] ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M1843_IG27: ; bbWeight=0.50, isz, extend
+G_M1843_IG26: ; bbWeight=0.50, isz, extend
add x1, fp, #176 // [V40 tmp30] mov x0, x19 ; byrRegs +[x0] bl <unknown method> ; byrRegs -[x0 x26]
- cbz w0, G_M1843_IG36
+ cbz w0, G_M1843_IG35
mov w22, #1 ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M1843_IG28: ; bbWeight=0.50, nogc, extend
+G_M1843_IG27: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x70] stp q16, q17, [fp, #0x90] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG29: ; bbWeight=0.50, nogc, extend
+G_M1843_IG28: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0x90] stp q16, q17, [fp, #0x70] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG30: ; bbWeight=0.50, nogc, extend
+G_M1843_IG29: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xB0] stp q16, q17, [fp, #0x50] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG31: ; bbWeight=0.50, nogc, extend
+G_M1843_IG30: ; bbWeight=0.50, nogc, extend
add x1, fp, #0xD1FFAB1E ldp q16, q17, [x1, #0x30] stp q16, q17, [fp, #0x30] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M1843_IG32: ; bbWeight=0.50, nogc, extend
+G_M1843_IG31: ; bbWeight=0.50, nogc, extend
ldp q16, q17, [x19, #0xD0] stp q16, q17, [fp, #0x10] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M1843_IG33: ; bbWeight=0.50, isz, extend
+G_M1843_IG32: ; bbWeight=0.50, isz, extend
add x1, fp, #144 // [V41 tmp31] add x2, fp, #112 // [V42 tmp32] add x3, fp, #80 // [V43 tmp33] @@ -285,57 +281,57 @@ G_M1843_IG33: ; bbWeight=0.50, isz, extend mov w0, #1 bl <unknown method> sxtw w23, w0
- cbnz w24, G_M1843_IG34
+ cbnz w24, G_M1843_IG33
cmp w23, #0 ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 86 86 0 0 -6,996 +0
benchmarks.run_pgo.linux.arm64.checked.mch 127 127 0 0 -4,220 +0
benchmarks.run_tiered.linux.arm64.checked.mch 208 207 0 1 -10,432 +0
coreclr_tests.run.linux.arm64.checked.mch 16 16 0 0 -872 +0
libraries.crossgen2.linux.arm64.checked.mch 5 4 0 1 -24 +0
libraries.pmi.linux.arm64.checked.mch 199 198 0 1 -11,220 +0
libraries_tests.run.linux.arm64.Release.mch 107 106 1 0 -3,164 +16
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 75 73 0 2 -4,340 +0
realworld.run.linux.arm64.checked.mch 92 86 5 1 -12,596 +24
smoke_tests.nativeaot.linux.arm64.checked.mch 319 319 0 0 -11,304 +0
1,234 1,222 6 6 -65,168 +40

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 1,422 83 1,339 0 (0.00%) 2,217 (54.94%)
benchmarks.run_pgo.linux.arm64.checked.mch 8,414 6,782 1,632 0 (0.00%) 5,857 (39.93%)
benchmarks.run_tiered.linux.arm64.checked.mch 9,383 7,971 1,412 0 (0.00%) 5,719 (36.90%)
coreclr_tests.run.linux.arm64.checked.mch 341 3 338 0 (0.00%) 783 (51.51%)
libraries.crossgen2.linux.arm64.checked.mch 90,430 13 90,417 0 (0.00%) 78,078 (46.23%)
libraries.pmi.linux.arm64.checked.mch 7,149 0 7,149 0 (0.00%) 2,574 (25.44%)
libraries_tests.run.linux.arm64.Release.mch 4,253 3,651 602 0 (0.00%) 4,138 (47.09%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 833 0 833 0 (0.00%) 1,356 (52.46%)
realworld.run.linux.arm64.checked.mch 1,767 61 1,706 1 (0.02%) 3,162 (59.38%)
smoke_tests.nativeaot.linux.arm64.checked.mch 10,782 5 10,777 0 (0.00%) 8,008 (42.03%)
134,774 18,569 116,205 1 (0.00%) 111,892 (44.67%)

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: 254108 (overridden on cmd)
Total bytes of diff: 247112 (overridden on cmd)
Total bytes of delta: -6996 (-2.75 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -700 : 3264.dasm (-87.94 % of base)
        -544 : 743.dasm (-77.27 % of base)
        -512 : 1597.dasm (-63.05 % of base)
        -440 : 967.dasm (-24.02 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -244 : 1590.dasm (-39.87 % of base)
        -160 : 2987.dasm (-22.99 % of base)
        -140 : 761.dasm (-17.41 % of base)
        -120 : 2549.dasm (-60.00 % of base)
        -112 : 810.dasm (-25.45 % of base)
        -108 : 432.dasm (-33.75 % of base)
        -104 : 1915.dasm (-18.44 % of base)
         -96 : 1013.dasm (-26.97 % of base)
         -96 : 2817.dasm (-20.17 % of base)
         -88 : 2755.dasm (-17.19 % of base)
         -80 : 2474.dasm (-12.90 % of base)
         -76 : 2454.dasm (-21.84 % of base)
         -72 : 252.dasm (-10.53 % of base)
         -72 : 1344.dasm (-52.94 % of base)
         -68 : 978.dasm (-48.57 % of base)

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

Top method improvements (bytes):
        -700 (-87.94 % of base) : 3264.dasm - Newtonsoft.Json.Linq.JValue:GetValueType(System.Nullable`1[int],System.Object):int (FullOpts)
        -544 (-77.27 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -512 (-63.05 % of base) : 1597.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
        -440 (-24.02 % of base) : 967.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -244 (-39.87 % of base) : 1590.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -160 (-22.99 % of base) : 2987.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -140 (-17.41 % of base) : 761.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
        -120 (-60.00 % of base) : 2549.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
        -112 (-25.45 % of base) : 810.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -108 (-33.75 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -104 (-18.44 % of base) : 1915.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
         -96 (-26.97 % of base) : 1013.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
         -96 (-20.17 % of base) : 2817.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
         -88 (-17.19 % of base) : 2755.dasm - System.Net.Sockets.SocketAsyncEventArgs:AcceptCompletionCallback(long,System.Memory`1[ubyte],int):this (FullOpts)
         -80 (-12.90 % of base) : 2474.dasm - System.Net.Security.SslStreamCertificateContext:GetOcspResponseNoWaiting():ubyte[]:this (FullOpts)
         -76 (-21.84 % of base) : 2454.dasm - System.Net.Security.TlsFrameHelper:DecodeString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -72 (-52.94 % of base) : 1344.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -72 (-10.53 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -68 (-48.57 % of base) : 978.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (FullOpts)

Top method improvements (percentages):
        -700 (-87.94 % of base) : 3264.dasm - Newtonsoft.Json.Linq.JValue:GetValueType(System.Nullable`1[int],System.Object):int (FullOpts)
        -544 (-77.27 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-73.33 % of base) : 1508.dasm - Interop+Ssl:.cctor() (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -512 (-63.05 % of base) : 1597.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
         -56 (-60.87 % of base) : 3161.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
        -120 (-60.00 % of base) : 2549.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
         -44 (-57.89 % of base) : 1010.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
         -44 (-57.89 % of base) : 4019.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:get_Empty():System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts)
         -44 (-55.00 % of base) : 1036.dasm - Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
         -56 (-53.85 % of base) : 875.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitExecutor:.ctor(System.TimeSpan,ubyte):this (FullOpts)
         -72 (-52.94 % of base) : 1344.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -68 (-48.57 % of base) : 978.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (FullOpts)
         -60 (-48.39 % of base) : 2192.dasm - System.IO.Directory:EnumerateFiles(System.String):System.Collections.Generic.IEnumerable`1[System.String] (FullOpts)
         -60 (-46.88 % of base) : 924.dasm - Perfolizer.Horology.TimeInterval:ToString():System.String:this (FullOpts)
         -44 (-44.00 % of base) : 3581.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanOrEqualAnyBenchmark():ubyte:this (FullOpts)
         -44 (-44.00 % of base) : 2015.dasm - System.Security.Cryptography.ECDiffieHellmanOpenSsl:get_LegalKeySizes():System.Security.Cryptography.KeySizes[]:this (FullOpts)
         -44 (-44.00 % of base) : 1214.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -60 (-42.86 % of base) : 2674.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (FullOpts)
         -44 (-42.31 % of base) : 3624.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)


benchmarks.run_pgo.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1175000 (overridden on cmd)
Total bytes of diff: 1170780 (overridden on cmd)
Total bytes of delta: -4220 (-0.36 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -300 : 14827.dasm (-11.70 % of base)
        -216 : 7161.dasm (-21.95 % of base)
        -180 : 9145.dasm (-16.07 % of base)
        -116 : 9091.dasm (-8.10 % of base)
        -104 : 14922.dasm (-19.26 % of base)
         -88 : 3372.dasm (-40.74 % of base)
         -88 : 3371.dasm (-40.74 % of base)
         -80 : 15634.dasm (-35.71 % of base)
         -80 : 5232.dasm (-31.25 % of base)
         -80 : 8001.dasm (-54.05 % of base)
         -64 : 6499.dasm (-12.60 % of base)
         -60 : 21.dasm (-22.73 % of base)
         -56 : 11697.dasm (-43.75 % of base)
         -56 : 5062.dasm (-32.56 % of base)
         -48 : 10998.dasm (-36.36 % of base)
         -48 : 11053.dasm (-34.29 % of base)
         -48 : 14495.dasm (-36.36 % of base)
         -44 : 6524.dasm (-22.92 % of base)
         -40 : 10353.dasm (-4.83 % of base)
         -40 : 8842.dasm (-13.16 % of base)

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

Top method improvements (bytes):
        -300 (-11.70 % of base) : 14827.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -216 (-21.95 % of base) : 7161.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -180 (-16.07 % of base) : 9145.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -116 (-8.10 % of base) : 9091.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -104 (-19.26 % of base) : 14922.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (Tier0)
         -88 (-40.74 % of base) : 3372.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 3371.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -80 (-31.25 % of base) : 5232.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -80 (-35.71 % of base) : 15634.dasm - System.Net.SocketAddress:.cctor() (Tier0)
         -80 (-54.05 % of base) : 8001.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -64 (-12.60 % of base) : 6499.dasm - System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this (Tier0)
         -60 (-22.73 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -56 (-43.75 % of base) : 11697.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:DivisionOperatorBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (Tier0)
         -56 (-32.56 % of base) : 5062.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -48 (-34.29 % of base) : 11053.dasm - System.Numerics.Tests.Perf_Vector4:DotBenchmark():float:this (Tier0)
         -48 (-36.36 % of base) : 10998.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:EqualsAnyBenchmark():ubyte:this (Tier0)
         -48 (-36.36 % of base) : 14495.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanOrEqualAnyBenchmark():ubyte:this (Tier0)
         -44 (-22.92 % of base) : 6524.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)
         -40 (-13.16 % of base) : 8842.dasm - System.IO.Compression.Inflater:DeallocateInputBufferHandle():this (Tier0)
         -40 (-4.83 % of base) : 10353.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier0)

Top method improvements (percentages):
         -80 (-54.05 % of base) : 8001.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -56 (-43.75 % of base) : 11697.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:DivisionOperatorBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (Tier0)
         -88 (-40.74 % of base) : 3372.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 3371.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 5101.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -20 (-38.46 % of base) : 7428.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -20 (-38.46 % of base) : 7789.dasm - Microsoft.Extensions.Logging.NullScope:get_Instance():Microsoft.Extensions.Logging.NullScope (Tier0)
         -20 (-38.46 % of base) : 1511.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-38.46 % of base) : 69.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 10702.dasm - System.IO.Pipelines.PipeScheduler:get_ThreadPool():System.IO.Pipelines.PipeScheduler (Tier0)
         -20 (-38.46 % of base) : 2778.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-38.46 % of base) : 10453.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 2284.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 12533.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
         -20 (-38.46 % of base) : 10297.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -20 (-38.46 % of base) : 3725.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-38.46 % of base) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -20 (-38.46 % of base) : 30.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
         -20 (-38.46 % of base) : 649.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
         -20 (-38.46 % of base) : 2913.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)


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: 1217436 (overridden on cmd)
Total bytes of diff: 1207004 (overridden on cmd)
Total bytes of delta: -10432 (-0.86 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1900 : 4811.dasm (-29.86 % of base)
        -544 : 5303.dasm (-77.27 % of base)
        -468 : 12256.dasm (-60.94 % of base)
        -300 : 15340.dasm (-11.70 % of base)
        -296 : 13174.dasm (-69.81 % of base)
        -216 : 10696.dasm (-21.95 % of base)
        -196 : 10894.dasm (-24.02 % of base)
        -180 : 9021.dasm (-16.07 % of base)
        -160 : 12280.dasm (-22.99 % of base)
        -144 : 6886.dasm (-16.74 % of base)
        -136 : 12262.dasm (-43.04 % of base)
        -136 : 12263.dasm (-43.59 % of base)
        -136 : 12274.dasm (-54.84 % of base)
        -128 : 12273.dasm (-55.17 % of base)
        -120 : 11921.dasm (-8.80 % of base)
        -116 : 8981.dasm (-8.10 % of base)
        -116 : 6143.dasm (-24.58 % of base)
        -112 : 5395.dasm (-25.45 % of base)
         -88 : 3077.dasm (-40.74 % of base)
         -88 : 3078.dasm (-40.74 % of base)

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

Top method improvements (bytes):
       -1900 (-29.86 % of base) : 4811.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -544 (-77.27 % of base) : 5303.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -468 (-60.94 % of base) : 12256.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
        -300 (-11.70 % of base) : 15340.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -296 (-69.81 % of base) : 13174.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -216 (-21.95 % of base) : 10696.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -196 (-24.02 % of base) : 10894.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertyGetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (Tier0)
        -180 (-16.07 % of base) : 9021.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -160 (-22.99 % of base) : 12280.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -144 (-16.74 % of base) : 6886.dasm - System.Net.Security.SslConnectionInfo:UpdateSslConnectionInfo(Microsoft.Win32.SafeHandles.SafeSslHandle):this (Tier0)
        -136 (-43.04 % of base) : 12262.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:GetResult():int:this (Tier1)
        -136 (-54.84 % of base) : 12274.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -136 (-43.59 % of base) : 12263.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
        -128 (-55.17 % of base) : 12273.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -120 (-8.80 % of base) : 11921.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTimeIso(Newtonsoft.Json.Utilities.StringReference,int,byref):ubyte (Tier0)
        -116 (-24.58 % of base) : 6143.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:GetCollections():System.Tuple`2[Microsoft.Win32.SafeHandles.SafeX509StackHandle,Microsoft.Win32.SafeHandles.SafeX509StackHandle] (Tier0)
        -116 (-8.10 % of base) : 8981.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -112 (-25.45 % of base) : 5395.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
         -88 (-40.74 % of base) : 3078.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 3077.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 5303.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -296 (-69.81 % of base) : 13174.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -468 (-60.94 % of base) : 12256.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
         -44 (-57.89 % of base) : 438.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
         -44 (-57.89 % of base) : 439.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
        -128 (-55.17 % of base) : 12273.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -136 (-54.84 % of base) : 12274.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -80 (-47.62 % of base) : 12223.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
         -56 (-43.75 % of base) : 14724.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:DivisionOperatorBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (Tier0)
        -136 (-43.59 % of base) : 12263.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
        -136 (-43.04 % of base) : 12262.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:GetResult():int:this (Tier1)
         -88 (-40.74 % of base) : 3078.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 3077.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 3722.dasm - Internal.Cryptography.Helpers:get_HasSymmetricEncryption():ubyte (Tier0)
         -20 (-38.46 % of base) : 1318.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-38.46 % of base) : 12780.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:get_Instance():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier0)
         -20 (-38.46 % of base) : 12848.dasm - System.Collections.Generic.ReferenceEqualityComparer:get_Instance():System.Collections.Generic.ReferenceEqualityComparer (Tier0)
         -20 (-38.46 % of base) : 4621.dasm - System.Diagnostics.DistributedContextPropagator:get_Current():System.Diagnostics.DistributedContextPropagator (Tier0)
         -20 (-38.46 % of base) : 4973.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 67.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)


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: 85076 (overridden on cmd)
Total bytes of diff: 84204 (overridden on cmd)
Total bytes of delta: -872 (-1.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -200 : 61.dasm (-79.37 % of base)
        -100 : 14.dasm (-26.60 % of base)
         -52 : 76.dasm (-46.43 % of base)
         -44 : 341.dasm (-68.75 % of base)
         -44 : 393.dasm (-18.64 % of base)
         -44 : 493.dasm (-39.29 % of base)
         -44 : 722.dasm (-52.38 % of base)
         -44 : 16.dasm (-35.48 % of base)
         -44 : 461.dasm (-25.00 % of base)
         -44 : 484.dasm (-15.49 % of base)
         -44 : 8.dasm (-42.31 % of base)
         -40 : 25.dasm (-11.49 % of base)
         -40 : 390.dasm (-6.85 % of base)
         -36 : 737.dasm (-7.76 % of base)
         -36 : 703.dasm (-25.00 % of base)
         -16 : 510.dasm (-22.22 % of base)

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

Top method improvements (bytes):
        -200 (-79.37 % of base) : 61.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -100 (-26.60 % of base) : 14.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -52 (-46.43 % of base) : 76.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -44 (-15.49 % of base) : 484.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -44 (-52.38 % of base) : 722.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -44 (-42.31 % of base) : 8.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -44 (-35.48 % of base) : 16.dasm - System.ConsolePal:GetConsoleEncoding():System.Text.Encoding (FullOpts)
         -44 (-18.64 % of base) : 393.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
         -44 (-25.00 % of base) : 461.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (FullOpts)
         -44 (-39.29 % of base) : 493.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -44 (-68.75 % of base) : 341.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -40 (-6.85 % of base) : 390.dasm - Microsoft.Win32.SafeHandles.SafePipeHandle:CreatePipeSocket(ubyte):System.Net.Sockets.Socket:this (FullOpts)
         -40 (-11.49 % of base) : 25.dasm - System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)
         -36 (-7.76 % of base) : 737.dasm - Program:TestEntryPoint():int (FullOpts)
         -36 (-25.00 % of base) : 703.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -16 (-22.22 % of base) : 510.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

Top method improvements (percentages):
        -200 (-79.37 % of base) : 61.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -44 (-68.75 % of base) : 341.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -44 (-52.38 % of base) : 722.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -52 (-46.43 % of base) : 76.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -44 (-42.31 % of base) : 8.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -44 (-39.29 % of base) : 493.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -44 (-35.48 % of base) : 16.dasm - System.ConsolePal:GetConsoleEncoding():System.Text.Encoding (FullOpts)
        -100 (-26.60 % of base) : 14.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -44 (-25.00 % of base) : 461.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (FullOpts)
         -36 (-25.00 % of base) : 703.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -16 (-22.22 % of base) : 510.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
         -44 (-18.64 % of base) : 393.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
         -44 (-15.49 % of base) : 484.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -40 (-11.49 % of base) : 25.dasm - System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)
         -36 (-7.76 % of base) : 737.dasm - Program:TestEntryPoint():int (FullOpts)
         -40 (-6.85 % of base) : 390.dasm - Microsoft.Win32.SafeHandles.SafePipeHandle:CreatePipeSocket(ubyte):System.Net.Sockets.Socket:this (FullOpts)

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


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: 9628520 (overridden on cmd)
Total bytes of diff: 9628496 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 140.dasm (-5.88 % of base)
          -4 : 3099.dasm (-2.50 % of base)
          -4 : 144.dasm (-4.00 % of base)
          -4 : 164390.dasm (-1.61 % of base)

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

Top method improvements (bytes):
         -12 (-5.88 % of base) : 140.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-1.61 % of base) : 164390.dasm - Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
          -4 (-2.50 % of base) : 3099.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-4.00 % of base) : 144.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method improvements (percentages):
         -12 (-5.88 % of base) : 140.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-4.00 % of base) : 144.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -4 (-2.50 % of base) : 3099.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-1.61 % of base) : 164390.dasm - Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)

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


libraries.pmi.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 479152 (overridden on cmd)
Total bytes of diff: 467932 (overridden on cmd)
Total bytes of delta: -11220 (-2.34 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 5419.dasm (-61.82 % of base)
        -276 : 9992.dasm (-33.99 % of base)
        -268 : 9844.dasm (-29.52 % of base)
        -268 : 9996.dasm (-34.90 % of base)
        -264 : 9845.dasm (-29.20 % of base)
        -232 : 5197.dasm (-30.53 % of base)
        -204 : 9839.dasm (-34.93 % of base)
        -204 : 9846.dasm (-34.93 % of base)
        -132 : 5184.dasm (-25.58 % of base)
        -104 : 1458.dasm (-18.44 % of base)
        -104 : 1475.dasm (-18.44 % of base)
        -100 : 20.dasm (-26.60 % of base)
         -96 : 1485.dasm (-17.02 % of base)
         -96 : 1491.dasm (-16.00 % of base)
         -92 : 5377.dasm (-38.98 % of base)
         -92 : 5378.dasm (-41.07 % of base)
         -92 : 5379.dasm (-40.35 % of base)
         -92 : 5394.dasm (-27.06 % of base)
         -92 : 9849.dasm (-30.67 % of base)
         -92 : 9850.dasm (-27.71 % of base)

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

Top method improvements (bytes):
        -544 (-61.82 % of base) : 5419.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
        -276 (-33.99 % of base) : 9992.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -268 (-29.52 % of base) : 9844.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:OnCompleted(System.Action):this (FullOpts)
        -268 (-34.90 % of base) : 9996.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
        -264 (-29.20 % of base) : 9845.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
        -232 (-30.53 % of base) : 5197.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
        -204 (-34.93 % of base) : 9846.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -204 (-34.93 % of base) : 9839.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -132 (-25.58 % of base) : 5184.dasm - System.Threading.Tasks.UnwrapPromise`1[ubyte]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
        -104 (-18.44 % of base) : 1475.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
        -104 (-18.44 % of base) : 1458.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
        -100 (-26.60 % of base) : 20.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -96 (-17.02 % of base) : 1485.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
         -96 (-16.00 % of base) : 1491.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
         -92 (-30.67 % of base) : 9849.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[double]:GetResult():double:this (FullOpts)
         -92 (-27.71 % of base) : 9850.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[System.Numerics.Vector`1[float]]:GetResult():System.Numerics.Vector`1[float]:this (FullOpts)
         -92 (-27.06 % of base) : 5394.dasm - System.Threading.Tasks.ValueTask`1[System.Numerics.Vector`1[float]]:get_Result():System.Numerics.Vector`1[float]:this (FullOpts)
         -92 (-40.35 % of base) : 5379.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
         -92 (-38.98 % of base) : 5377.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCompletedSuccessfully():ubyte:this (FullOpts)
         -92 (-41.07 % of base) : 5378.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)

Top method improvements (percentages):
         -60 (-75.00 % of base) : 9704.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
         -56 (-70.00 % of base) : 9705.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
         -52 (-61.90 % of base) : 5706.dasm - System.Runtime.MemoryFailPoint:AddToLastKnownFreeAddressSpace(long) (FullOpts)
        -544 (-61.82 % of base) : 5419.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
         -48 (-60.00 % of base) : 5705.dasm - System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (FullOpts)
         -48 (-60.00 % of base) : 5707.dasm - System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (FullOpts)
         -64 (-59.26 % of base) : 9687.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[double](double):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -52 (-59.09 % of base) : 5708.dasm - System.Runtime.MemoryFailPoint:AddMemoryFailPointReservation(long):long (FullOpts)
         -68 (-58.62 % of base) : 5579.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstUtf16ExtendedGraphemeCluster(System.ReadOnlySpan`1[ushort]):int (FullOpts)
         -44 (-57.89 % of base) : 10312.dasm - System.IO.EnumerationOptions:get_Default():System.IO.EnumerationOptions (FullOpts)
         -44 (-57.89 % of base) : 4580.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
         -44 (-57.89 % of base) : 5248.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
         -60 (-57.69 % of base) : 9686.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[int](int):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -60 (-57.69 % of base) : 9689.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[long](long):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -60 (-57.69 % of base) : 9685.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[short](short):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -60 (-57.69 % of base) : 9684.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[ubyte](ubyte):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -60 (-51.72 % of base) : 3769.dasm - System.Numerics.BitOperations+Crc32Fallback:Crc32C(uint,ubyte):uint (FullOpts)
         -52 (-46.43 % of base) : 4493.dasm - System.Threading.ThreadPool:ReportThreadStatus(ubyte) (FullOpts)
         -44 (-45.83 % of base) : 4492.dasm - System.Threading.ThreadPool:NotifyWorkItemProgress() (FullOpts)
         -64 (-43.24 % of base) : 3770.dasm - System.Numerics.BitOperations+Crc32Fallback:Crc32C(uint,ushort):uint (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: 705512 (overridden on cmd)
Total bytes of diff: 702364 (overridden on cmd)
Total bytes of delta: -3148 (-0.45 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 1132.dasm (10.00 % of base)

Top file improvements (bytes):
        -212 : 4409.dasm (-19.49 % of base)
         -92 : 5769.dasm (-21.70 % of base)
         -72 : 7784.dasm (-22.78 % of base)
         -68 : 2564.dasm (-23.29 % of base)
         -68 : 1226.dasm (-10.69 % of base)
         -64 : 2799.dasm (-16.49 % of base)
         -64 : 2816.dasm (-16.49 % of base)
         -64 : 2909.dasm (-12.21 % of base)
         -64 : 2983.dasm (-17.98 % of base)
         -64 : 2994.dasm (-16.49 % of base)
         -60 : 2864.dasm (-39.47 % of base)
         -60 : 2902.dasm (-39.47 % of base)
         -60 : 3060.dasm (-39.47 % of base)
         -52 : 3682.dasm (-15.66 % of base)
         -52 : 946.dasm (-18.06 % of base)
         -44 : 2592.dasm (-26.19 % of base)
         -44 : 2597.dasm (-26.19 % of base)
         -40 : 1126.dasm (-10.00 % of base)
         -40 : 298.dasm (-6.99 % of base)
         -40 : 4301.dasm (-43.48 % of base)

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

Top method regressions (bytes):
          16 (10.00 % of base) : 1132.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (bytes):
        -212 (-19.49 % of base) : 4409.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
         -92 (-21.70 % of base) : 5769.dasm - NativeExports.Handles:AllocateHandleCore():long (Tier0)
         -72 (-22.78 % of base) : 7784.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -68 (-23.29 % of base) : 2564.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():ulong (Tier0)
         -68 (-10.69 % of base) : 1226.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -64 (-17.98 % of base) : 2983.dasm - NativeExports.ComInterfaceGenerator.ArrayMarshalling+MyComWrapper:get_GetIntArrayVTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2994.dasm - NativeExports.ComInterfaceGenerator.GetAndSetInt+MyComWrapper:get_s_comInterface1VTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2816.dasm - NativeExports.ComInterfaceGenerator.GetPoint+ImplementingObject+ABI:get_VTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2799.dasm - NativeExports.ComInterfaceGenerator.StringMarshalling+MyComWrapper:get_S_Utf8VTable():ulong (Tier0)
         -64 (-12.21 % of base) : 2909.dasm - NativeExports.ComInterfaceGenerator.StringMarshallingOverride+MyComWrapper:get_S_DerivedVTable():ulong (Tier0)
         -60 (-39.47 % of base) : 3060.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2864.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2902.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -52 (-15.66 % of base) : 3682.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -52 (-18.06 % of base) : 946.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -44 (-26.19 % of base) : 2597.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():ulong (Tier0)
         -44 (-26.19 % of base) : 2592.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_ManagedVirtualMethodTable():ulong (Tier0)
         -40 (-43.48 % of base) : 4301.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -40 (-10.00 % of base) : 1126.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -40 (-6.99 % of base) : 298.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)

Top method regressions (percentages):
          16 (10.00 % of base) : 1132.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (percentages):
         -40 (-43.48 % of base) : 4301.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -60 (-39.47 % of base) : 3060.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2864.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2902.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -20 (-38.46 % of base) : 262.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -20 (-38.46 % of base) : 27.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -20 (-38.46 % of base) : 30.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -20 (-38.46 % of base) : 50.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -20 (-38.46 % of base) : 7744.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Comparison():System.Comparison`1[System.String] (Tier0)
         -20 (-38.46 % of base) : 7746.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Instance():Microsoft.Extensions.Configuration.ConfigurationKeyComparer (Tier0)
         -20 (-38.46 % of base) : 7332.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:get_Instance():Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver (Tier0)
         -20 (-38.46 % of base) : 6900.dasm - Microsoft.Extensions.Logging.Abstractions.NullLogger:get_Instance():Microsoft.Extensions.Logging.Abstractions.NullLogger (Tier0)
         -20 (-38.46 % of base) : 3221.dasm - SharedTypes.ComInterfaces.MarshallingFails.IStringArrayMarshallingFailsImpl:get_StartingStrings():System.String[] (Tier0)
         -20 (-38.46 % of base) : 4661.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
         -20 (-38.46 % of base) : 2574.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:get_DefaultIUnknownInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy (Tier0)
         -20 (-38.46 % of base) : 6355.dasm - System.Security.Cryptography.HMACSHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6350.dasm - System.Security.Cryptography.HMACSHA3_384:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6344.dasm - System.Security.Cryptography.HMACSHA3_512:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6352.dasm - System.Security.Cryptography.SHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6347.dasm - System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)


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: 96188 (overridden on cmd)
Total bytes of diff: 91848 (overridden on cmd)
Total bytes of delta: -4340 (-4.51 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 67.dasm (-77.27 % of base)
        -280 : 2263.dasm (-67.31 % of base)
        -200 : 1203.dasm (-79.37 % of base)
        -116 : 1837.dasm (-11.98 % of base)
        -112 : 501.dasm (-25.45 % of base)
        -104 : 121.dasm (-18.44 % of base)
        -100 : 344.dasm (-26.60 % of base)
         -88 : 721.dasm (-44.90 % of base)
         -88 : 139.dasm (-14.57 % of base)
         -88 : 1159.dasm (-36.67 % of base)
         -76 : 974.dasm (-32.76 % of base)
         -72 : 10.dasm (-10.53 % of base)
         -72 : 1166.dasm (-38.30 % of base)
         -56 : 133.dasm (-45.16 % of base)
         -52 : 1952.dasm (-14.29 % of base)
         -52 : 784.dasm (-15.29 % of base)
         -44 : 1170.dasm (-57.89 % of base)
         -44 : 1449.dasm (-52.38 % of base)
         -44 : 1614.dasm (-52.38 % of base)
         -44 : 1682.dasm (-52.38 % of base)

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

Top method improvements (bytes):
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -280 (-67.31 % of base) : 2263.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -200 (-79.37 % of base) : 1203.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -116 (-11.98 % of base) : 1837.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -112 (-25.45 % of base) : 501.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -104 (-18.44 % of base) : 121.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
        -100 (-26.60 % of base) : 344.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -88 (-36.67 % of base) : 1159.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():ulong (FullOpts)
         -88 (-44.90 % of base) : 721.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -88 (-14.57 % of base) : 139.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -76 (-32.76 % of base) : 974.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -72 (-10.53 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-38.30 % of base) : 1166.dasm - System.Runtime.InteropServices.Marshalling.UniqueComInterfaceMarshaller`1[System.__Canon]:ConvertToManaged(ulong):System.__Canon (FullOpts)
         -56 (-45.16 % of base) : 133.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:GetRIDOS():System.String (FullOpts)
         -52 (-14.29 % of base) : 1952.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (FullOpts)
         -52 (-15.29 % of base) : 784.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler:AddExecutionOptions(System.String,Xunit.Abstractions.ITestFrameworkExecutionOptions):this (FullOpts)
         -44 (-52.38 % of base) : 1682.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1397.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1478.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1412.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)

Top method improvements (percentages):
        -200 (-79.37 % of base) : 1203.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-68.75 % of base) : 733.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
        -280 (-67.31 % of base) : 2263.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
         -44 (-57.89 % of base) : 2048.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -44 (-57.89 % of base) : 1170.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -44 (-57.89 % of base) : 770.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 534.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1872.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 778.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1912.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-52.38 % of base) : 1682.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1397.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1478.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1412.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1185.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1261.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1739.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1614.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1745.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (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: 418800 (overridden on cmd)
Total bytes of diff: 406228 (overridden on cmd)
Total bytes of delta: -12572 (-3.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 2553.dasm (6.90 % of base)
           4 : 2716.dasm (2.33 % of base)
           4 : 3594.dasm (2.33 % of base)
           4 : 3555.dasm (2.78 % of base)
           4 : 5060.dasm (2.33 % of base)

Top file improvements (bytes):
       -6416 : 5189.dasm (-73.54 % of base)
        -544 : 744.dasm (-77.27 % of base)
        -440 : 967.dasm (-24.02 % of base)
        -292 : 5122.dasm (-62.39 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -212 : 3938.dasm (-43.44 % of base)
        -132 : 762.dasm (-16.84 % of base)
        -128 : 3302.dasm (-50.79 % of base)
        -128 : 5035.dasm (-35.56 % of base)
        -112 : 2969.dasm (-60.87 % of base)
        -112 : 810.dasm (-25.45 % of base)
        -108 : 432.dasm (-33.75 % of base)
        -104 : 3067.dasm (-12.44 % of base)
        -100 : 3064.dasm (-8.36 % of base)
         -96 : 1013.dasm (-26.97 % of base)
         -92 : 3804.dasm (-54.76 % of base)
         -92 : 5049.dasm (-74.19 % of base)
         -92 : 5050.dasm (-74.19 % of base)
         -88 : 3766.dasm (-53.66 % of base)
         -84 : 3072.dasm (-39.62 % of base)

66 total files with Code Size differences (61 improved, 5 regressed), 1 unchanged.

Top method regressions (bytes):
           8 (6.90 % of base) : 2553.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 3555.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3594.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 5060.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2716.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (bytes):
       -6416 (-73.54 % of base) : 5189.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -544 (-77.27 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -440 (-24.02 % of base) : 967.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
        -292 (-62.39 % of base) : 5122.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -212 (-43.44 % of base) : 3938.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -132 (-16.84 % of base) : 762.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
        -128 (-50.79 % of base) : 3302.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)
        -128 (-35.56 % of base) : 5035.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -112 (-60.87 % of base) : 2969.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
        -112 (-25.45 % of base) : 810.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -108 (-33.75 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -104 (-12.44 % of base) : 3067.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
        -100 (-8.36 % of base) : 3064.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -96 (-26.97 % of base) : 1013.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
         -92 (-74.19 % of base) : 5050.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 5049.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -92 (-54.76 % of base) : 3804.dasm - Microsoft.Build.Shared.FileSystem.FileSystems:GetFileSystem():Microsoft.Build.Shared.FileSystem.IFileSystem (FullOpts)
         -88 (-53.66 % of base) : 3766.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -84 (-39.62 % of base) : 3072.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)

Top method regressions (percentages):
           8 (6.90 % of base) : 2553.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 3555.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3594.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 5060.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2716.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -92 (-74.19 % of base) : 5050.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 5049.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
       -6416 (-73.54 % of base) : 5189.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -292 (-62.39 % of base) : 5122.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -112 (-60.87 % of base) : 2969.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -68 (-58.62 % of base) : 5127.dasm - FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions:ErrorLogger.ErrorR(FSharp.Compiler.ErrorLogger+ErrorLogger,System.Exception) (FullOpts)
         -44 (-57.89 % of base) : 1010.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
         -44 (-57.89 % of base) : 3073.dasm - FSComp.SR:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2227.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 3264.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 3425.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2655.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2663.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2917.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 3017.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -44 (-57.89 % of base) : 3006.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 3358.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 5044.dasm - FSharp.Compiler.Lexer:.cctor() (FullOpts)


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: 810696 (overridden on cmd)
Total bytes of diff: 799392 (overridden on cmd)
Total bytes of delta: -11304 (-1.39 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -260 : 13170.dasm (-51.59 % of base)
        -128 : 8598.dasm (-13.33 % of base)
        -108 : 7857.dasm (-5.31 % of base)
        -108 : 8357.dasm (-16.17 % of base)
         -96 : 10474.dasm (-45.28 % of base)
         -96 : 14561.dasm (-45.28 % of base)
         -96 : 8316.dasm (-13.04 % of base)
         -92 : 16574.dasm (-44.23 % of base)
         -88 : 6285.dasm (-11.89 % of base)
         -84 : 13173.dasm (-36.21 % of base)
         -84 : 15070.dasm (-42.86 % of base)
         -76 : 14875.dasm (-30.16 % of base)
         -72 : 257.dasm (-10.91 % of base)
         -68 : 15000.dasm (-40.48 % of base)
         -68 : 3953.dasm (-18.89 % of base)
         -64 : 8913.dasm (-26.23 % of base)
         -64 : 10985.dasm (-15.38 % of base)
         -64 : 7975.dasm (-33.33 % of base)
         -64 : 8318.dasm (-13.01 % of base)
         -64 : 8329.dasm (-19.51 % of base)

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

Top method improvements (bytes):
        -260 (-51.59 % of base) : 13170.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -128 (-13.33 % of base) : 8598.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -108 (-5.31 % of base) : 7857.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
        -108 (-16.17 % of base) : 8357.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-45.28 % of base) : 10474.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -96 (-13.04 % of base) : 8316.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-45.28 % of base) : 14561.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (FullOpts)
         -92 (-44.23 % of base) : 16574.dasm - System.Runtime.CompilerServices.TaskAwaiter:OnCompletedInternal(System.Threading.Tasks.Task,System.Action,ubyte,ubyte) (FullOpts)
         -88 (-11.89 % of base) : 6285.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -84 (-42.86 % of base) : 15070.dasm - System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte) (FullOpts)
         -84 (-36.21 % of base) : 13173.dasm - System.Threading.Tasks.Task:CancellationCleanupLogic():this (FullOpts)
         -76 (-30.16 % of base) : 14875.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
         -72 (-10.91 % of base) : 257.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -68 (-18.89 % of base) : 3953.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[],byref):long (FullOpts)
         -68 (-40.48 % of base) : 15000.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult) (FullOpts)
         -64 (-33.33 % of base) : 7975.dasm - Internal.Runtime.TypeLoader.RuntimeSignatureHelper:GetModuleInfo(Internal.Runtime.CompilerServices.RuntimeSignature):Internal.Runtime.TypeLoader.ModuleInfo (FullOpts)
         -64 (-13.01 % of base) : 8318.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
         -64 (-15.38 % of base) : 10985.dasm - System.Number:UInt32ToDecStr_NoSmallNumberCheck(uint):System.String (FullOpts)
         -64 (-19.51 % of base) : 8329.dasm - System.Number:UInt64ToDecChars[ushort](ulong,ulong):ulong (FullOpts)
         -64 (-26.23 % of base) : 8913.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo:GetArrayTypeInfo(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,ubyte,int,System.RuntimeTypeHandle):System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo (FullOpts)

Top method improvements (percentages):
         -32 (-57.14 % of base) : 3961.dasm - Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)
         -32 (-57.14 % of base) : 1355.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -32 (-57.14 % of base) : 6971.dasm - Internal.TypeSystem.TypeSystemContext:get_ByRefTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -32 (-57.14 % of base) : 6970.dasm - Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -32 (-57.14 % of base) : 11542.dasm - System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] (FullOpts)
         -32 (-57.14 % of base) : 16910.dasm - System.Dynamic.Utils.DelegateHelpers+DynamicDelegateLightup:get_CreateObjectArrayDelegate():System.Func`3[System.Type,System.Func`2[System.Object[],System.Object],System.Delegate] (FullOpts)
         -32 (-57.14 % of base) : 16173.dasm - System.Globalization.CultureData:GetCalendar(ushort):System.Globalization.CalendarData:this (FullOpts)
         -32 (-57.14 % of base) : 6010.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (FullOpts)
         -32 (-57.14 % of base) : 13442.dasm - System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)
         -32 (-57.14 % of base) : 12470.dasm - System.Linq.Expressions.ConditionalExpression:GetFalse():System.Linq.Expressions.Expression:this (FullOpts)
         -32 (-57.14 % of base) : 7879.dasm - System.Random:get_Shared():System.Random (FullOpts)
         -32 (-57.14 % of base) : 431.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (FullOpts)
         -32 (-57.14 % of base) : 8311.dasm - System.Text.EncoderFallback:get_ReplacementFallback():System.Text.EncoderFallback (FullOpts)
         -32 (-57.14 % of base) : 6193.dasm - System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 6191.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 6194.dasm - System.Text.Encoding:get_BigEndianUTF32():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 8072.dasm - System.Text.Encoding:get_Default():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 6196.dasm - System.Text.Encoding:get_Latin1():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 6192.dasm - System.Text.Encoding:get_Unicode():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 6195.dasm - System.Text.Encoding:get_UTF32():System.Text.Encoding (FullOpts)



linux x64

Diffs are based on 136,302 contexts (18,734 MinOpts, 117,568 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 116,512 (45.38%)

Overall (-60,804 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 140,354 -3,053
benchmarks.run_pgo.linux.x64.checked.mch 948,560 -4,385
benchmarks.run_tiered.linux.x64.checked.mch 796,003 -9,435
coreclr_tests.run.linux.x64.checked.mch 165,738 -740
libraries.crossgen2.linux.x64.checked.mch 7,809,464 -17
libraries.pmi.linux.x64.checked.mch 117,804 -20,220
libraries_tests.run.linux.x64.Release.mch 619,081 -2,891
librariestestsnotieredcompilation.run.linux.x64.Release.mch 67,726 -3,412
realworld.run.linux.x64.checked.mch 361,633 -10,882
smoke_tests.nativeaot.linux.x64.checked.mch 411,097 -5,769

MinOpts (-15,022 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 648,791 -4,385
benchmarks.run_tiered.linux.x64.checked.mch 697,606 -7,426
coreclr_tests.run.linux.x64.checked.mch 133,568 -532
libraries_tests.run.linux.x64.Release.mch 374,137 -2,679

FullOpts (-45,782 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 140,354 -3,053
benchmarks.run_tiered.linux.x64.checked.mch 98,397 -2,009
coreclr_tests.run.linux.x64.checked.mch 32,170 -208
libraries.crossgen2.linux.x64.checked.mch 7,808,513 -17
libraries.pmi.linux.x64.checked.mch 117,804 -20,220
libraries_tests.run.linux.x64.Release.mch 244,944 -212
librariestestsnotieredcompilation.run.linux.x64.Release.mch 67,726 -3,412
realworld.run.linux.x64.checked.mch 361,633 -10,882
smoke_tests.nativeaot.linux.x64.checked.mch 411,015 -5,769

Example diffs

benchmarks.run.linux.x64.checked.mch

-31 (-50.82%) : 989.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)

@@ -16,32 +16,20 @@ G_M55451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M55451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M55451_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M55451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rdi, gword ptr [rdi] ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x08] cmp dword ptr [rdi], edi ;; size=19 bbWeight=1 PerfScore 7.25
-G_M55451_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M55451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-G_M55451_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rdi] - mov rdi, 0xD1FFAB1E - mov esi, 906 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M55451_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 1, PerfScore 14.50, instruction count 13, allocated bytes for code 61 (MethodHash=41c82764) for method System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 10.50, instruction count 7, allocated bytes for code 30 (MethodHash=41c82764) for method System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
; ============================================================ Unwind Info:

-23 (-50.00%) : 2581.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -2,54 +2,37 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - call CORINFO_HELP_CHKCASTANY
+ call CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -57,10 +40,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-43 (-46.74%) : 1611.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)

@@ -8,69 +8,51 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.TaskScheduler>
+; V00 this [V00,T01] ( 5, 4 ) ref -> rdi this class-hnd single-def <System.Threading.Tasks.TaskScheduler>
; V01 loc0 [V01,T03] ( 4, 3.50) int -> rax
-; V02 loc1 [V02,T00] ( 3, 8.50) int -> rdi
+; V02 loc1 [V02,T00] ( 3, 8.50) int -> rcx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V05 cse0 [V05,T04] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive" -; V06 cse1 [V06,T02] ( 2, 4.50) long -> rax hoist "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 2, 4.50) long -> rax hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - mov rbx, rdi - ; gcrRegs +[rbx] - ;; size=11 bbWeight=1 PerfScore 3.75 -G_M51313_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov eax, dword ptr [rbx+0x08]
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M51313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + mov eax, dword ptr [rdi+0x08]
test eax, eax
- jne SHORT G_M51313_IG07
+ jne SHORT G_M51313_IG06
;; size=7 bbWeight=1 PerfScore 3.25
-G_M51313_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M51313_IG08 - ;; size=9 bbWeight=0.50 PerfScore 2.00 -G_M51313_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M51313_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; static handle ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M51313_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, 1
+G_M51313_IG04: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov ecx, 1
lock
- xadd dword ptr [rax], edi - inc edi - je SHORT G_M51313_IG05
+ xadd dword ptr [rax], ecx + inc ecx + je SHORT G_M51313_IG04
;; size=13 bbWeight=4 PerfScore 74.00
-G_M51313_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - lea rsi, bword ptr [rbx+0x08] - ; byrRegs +[rsi]
+G_M51313_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + lea rdx, bword ptr [rdi+0x08] + ; byrRegs +[rdx]
xor eax, eax lock
- cmpxchg dword ptr [rsi], edi - mov eax, dword ptr [rbx+0x08]
+ cmpxchg dword ptr [rdx], ecx + mov eax, dword ptr [rdi+0x08]
;; size=13 bbWeight=0.50 PerfScore 10.38
-G_M51313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - ; byrRegs -[rsi] - add rsp, 8 - pop rbx
+G_M51313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rdi] + ; byrRegs -[rdx]
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M51313_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx] - mov rdi, 0xD1FFAB1E - mov esi, 0x3F1 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M51313_IG04 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 92, prolog size 11, PerfScore 95.75, instruction count 29, allocated bytes for code 92 (MethodHash=40f8378e) for method System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 90.50, instruction count 18, allocated bytes for code 49 (MethodHash=40f8378e) for method System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
; ============================================================ Unwind Info: @@ -78,11 +60,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
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: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+0 (0.00%) : 1861.dasm - System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> rbx class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Type>
-; V03 loc0 [V03,T03] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T03] ( 2, 1.50) ref -> rdi class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -30,26 +30,26 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M17128_IG04 - ;; size=23 bbWeight=1 PerfScore 2.75 -G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx]
mov rdi, rax ; gcrRegs +[rdi]
+ test rbx, rbx + je SHORT G_M17128_IG04 + ;; size=26 bbWeight=1 PerfScore 3.00 +G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx]
mov rsi, r14 ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx] call [System.Text.Json.Serialization.JsonConverterFactory:GetConverterInternal(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this]
- ; gcrRegs -[rdx rsi rdi r14-r15]
+ ; gcrRegs -[rdx rsi rdi r14-r15] +[rax]
; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- ;; size=18 bbWeight=0.50 PerfScore 2.00
+ ;; size=15 bbWeight=0.50 PerfScore 1.88
G_M17128_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, rbx @@ -62,7 +62,7 @@ G_M17128_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 2.50
-; Total bytes of code 64, prolog size 5, PerfScore 11.25, instruction count 21, allocated bytes for code 64 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 11.38, instruction count 21, allocated bytes for code 64 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
; ============================================================ Unwind Info:

+0 (0.00%) : 2060.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> rbx class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> r14 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> r14 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -31,11 +31,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] mov r14, rax ; gcrRegs +[r14]
- test r14, r14
+ test r15, r15
je SHORT G_M22240_IG05 ;; size=26 bbWeight=1 PerfScore 3.00 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref @@ -59,15 +59,15 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [<unknown method>] ;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rsi rdi r14] +[rbx r15]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rsi rdi r14] +[rbx]
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48] call [rax+0x38]<unknown method> ; gcrRegs -[rbx rdi] +[rax]
- cmp rax, r15
+ test rax, rax
sete al ; gcrRegs -[rax] movzx rax, al

+6 (+3.08%) : 1890.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) long -> rbx single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T12] ( 3, 1.50) ref -> rax -; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> rax
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> rax +; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> rax
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V11 tmp8 [V11,T04] ( 2, 4 ) long -> rdi "argument with side effect" ; V12 rat0 [V12,T03] ( 3, 4 ) long -> rdi "runtime lookup" ; V13 rat1 [V13,T02] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) long -> rdi "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) long -> rdi "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) long -> rdi "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) long -> rdi "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) long -> rdi "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -51,82 +51,86 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M17047_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 ; gcrRegs +[rsi]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax]
- test rax, rax - je SHORT G_M17047_IG07
+ test r15, r15 + je SHORT G_M17047_IG08
;; size=13 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r15]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov rax, r15 + ; gcrRegs +[rax] + ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16 pop rbx pop r15 pop rbp ret ;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M17047_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[r15] - mov rdi, r15
+G_M17047_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax r15] + xor rdi, rdi
; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x50] call [rax+0x20]<unknown method> ; gcrRegs -[rdi] +[rax] test rax, rax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor rax, rax
- jmp SHORT G_M17047_IG09 - ;; size=22 bbWeight=0.50 PerfScore 5.38 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M17047_IG10 + ;; size=26 bbWeight=0.50 PerfScore 5.38 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rdi, rax ; gcrRegs +[rdi] mov rsi, rbx call [System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this] ; gcrRegs -[rdi] ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov rdi, qword ptr [rbx+0x38] cmp qword ptr [rdi+0x08], 24
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rdi, qword ptr [rdi+0x18] test rdi, rdi
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov rbx, rax ; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi]
- mov rsi, r15
+ xor rsi, rsi
; gcrRegs +[rsi] call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[rax rsi rdi r15]
+ ; gcrRegs -[rax rsi rdi]
mov rax, rbx ; gcrRegs +[rax]
- ;; size=23 bbWeight=0.50 PerfScore 2.50 -G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=22 bbWeight=0.50 PerfScore 2.50 +G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 16 pop rbx @@ -135,7 +139,7 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ret ;; size=9 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 195, prolog size 17, PerfScore 33.21, instruction count 61, allocated bytes for code 195 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 201, prolog size 17, PerfScore 33.33, instruction count 62, allocated bytes for code 201 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.linux.x64.checked.mch

-20 (-60.61%) : 1489.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M34410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M34410_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 42 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M34410_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=dce37995) for method Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=dce37995) for method Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 11393.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M7622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 381 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M7622_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 2770.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)

@@ -14,17 +14,14 @@ G_M58517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M58517_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 308 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax, qword ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M58517_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=6f6f1b6a) for method System.Marvin:get_DefaultSeed():ulong (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=6f6f1b6a) for method System.Marvin:get_DefaultSeed():ulong (Tier0)
; ============================================================ Unwind Info:

+0 (0.00%) : 2534.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[]):this (Tier0)

@@ -59,7 +59,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -94,7 +94,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x30], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

+0 (0.00%) : 4747.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)

@@ -56,12 +56,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x38] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x28]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rdi, gword ptr [rbp-0x10]

+0 (0.00%) : 7191.dasm - System.Collections.Generic.ArraySortHelper2[System.__Canon,System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper2System.Canon,System.Canon

@@ -51,7 +51,7 @@ G_M9235_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M9235_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x20], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M9235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -96,14 +96,14 @@ G_M9235_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M9235_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x30], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; <unknown class> mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax] mov gword ptr [rbp-0x58], rax mov rax, qword ptr [rbp-0x10] @@ -117,7 +117,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, gword ptr [rbp-0x48] ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] mov gword ptr [rbp-0x60], rax mov rax, qword ptr [rbp-0x10] @@ -131,7 +131,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, gword ptr [rbp-0x50] ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] mov gword ptr [rbp-0x68], rax mov rdi, gword ptr [rbp-0x58] @@ -146,7 +146,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, gword ptr [rbp-0x70] ; gcrRegs +[rsi] mov rdi, qword ptr [rbp-0x30]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rsi] mov gword ptr [rbp-0x18], rax jmp SHORT G_M9235_IG10 @@ -154,7 +154,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9235_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rdi, qword ptr [rbp-0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x28], rax mov rdi, gword ptr [rbp-0x28]

benchmarks.run_tiered.linux.x64.checked.mch

-20 (-62.50%) : 12484.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)

@@ -14,17 +14,14 @@ G_M54325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M54325_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 37 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [(reloc)] ; static handle
- ;; size=26 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M54325_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 32, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 32 (MethodHash=836e2bca) for method System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
+; Total bytes of code 12, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 12 (MethodHash=836e2bca) for method System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 65.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M9075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M9075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 0x8B0 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M9075_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 1293.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M34410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M34410_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 42 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M34410_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=dce37995) for method Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=dce37995) for method Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
; ============================================================ Unwind Info:

+0 (0.00%) : 5918.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)

@@ -56,12 +56,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x38] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x28]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rdi, gword ptr [rbp-0x10]

+0 (0.00%) : 2299.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[]):this (Tier0)

@@ -59,7 +59,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -94,7 +94,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x30], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

+0 (0.00%) : 11716.dasm - System.Collections.Generic.ArraySortHelper2[int,System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper2int,System.__Canon

@@ -47,20 +47,20 @@ G_M46451_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M46451_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x20], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M46451_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax] mov gword ptr [rbp-0x30], rax mov rdi, 0xD1FFAB1E ; <unknown class> mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] mov gword ptr [rbp-0x38], rax mov rax, qword ptr [rbp-0x10] @@ -74,7 +74,7 @@ G_M46451_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, gword ptr [rbp-0x28] ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] mov gword ptr [rbp-0x40], rax mov rdi, gword ptr [rbp-0x30] @@ -89,7 +89,7 @@ G_M46451_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, gword ptr [rbp-0x48] ; gcrRegs +[rsi] mov rdi, qword ptr [rbp-0x20]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rsi] mov gword ptr [rbp-0x18], rax mov rax, gword ptr [rbp-0x18]

coreclr_tests.run.linux.x64.checked.mch

-20 (-51.28%) : 799.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)

@@ -14,19 +14,16 @@ G_M24551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M24551_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 33 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax]
- ;; size=33 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 2.25
G_M24551_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 39, prolog size 4, PerfScore 6.50, instruction count 9, allocated bytes for code 39 (MethodHash=51afa018) for method System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
+; Total bytes of code 19, prolog size 4, PerfScore 5.00, instruction count 6, allocated bytes for code 19 (MethodHash=51afa018) for method System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
; ============================================================ Unwind Info:

-20 (-45.45%) : 71.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)

@@ -14,14 +14,11 @@ G_M36161_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E - mov esi, 22 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle test eax, eax jne SHORT G_M36161_IG03 call [<unknown method>]
- ;; size=37 bbWeight=1 PerfScore 7.75
+ ;; size=17 bbWeight=1 PerfScore 6.25
G_M36161_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref nop ;; size=1 bbWeight=1 PerfScore 0.25 @@ -30,7 +27,7 @@ G_M36161_IG04: ; bbWeight=1, epilog, nogc, extend ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 44, prolog size 4, PerfScore 10.75, instruction count 12, allocated bytes for code 44 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
+; Total bytes of code 24, prolog size 4, PerfScore 9.25, instruction count 9, allocated bytes for code 24 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
; ============================================================ Unwind Info:

-20 (-28.17%) : 644.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)

@@ -14,9 +14,6 @@ G_M6374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 872 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rdx, qword ptr [rax] @@ -24,13 +21,13 @@ G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov qword ptr [rcx], rax
- ;; size=65 bbWeight=1 PerfScore 9.25
+ ;; size=45 bbWeight=1 PerfScore 7.75
G_M6374_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 71, prolog size 4, PerfScore 12.00, instruction count 14, allocated bytes for code 71 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (Tier0)
+; Total bytes of code 51, prolog size 4, PerfScore 10.50, instruction count 11, allocated bytes for code 51 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (Tier0)
; ============================================================ Unwind Info:

-20 (-9.35%) : 286.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)

@@ -44,15 +44,12 @@ G_M29212_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75 G_M29212_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rdi, 0xD1FFAB1E - mov esi, 107 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle test eax, eax je SHORT G_M29212_IG06 call [<unknown method>] nop
- ;; size=38 bbWeight=1 PerfScore 8.00
+ ;; size=18 bbWeight=1 PerfScore 6.50
G_M29212_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbp @@ -94,7 +91,7 @@ G_M29212_IG09: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 214, prolog size 19, PerfScore 88.42, instruction count 56, allocated bytes for code 214 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
+; Total bytes of code 194, prolog size 19, PerfScore 86.92, instruction count 53, allocated bytes for code 194 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
; ============================================================ Unwind Info:

-5 (-7.94%) : 1953.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)

@@ -22,22 +22,21 @@ G_M28697_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 4.00 G_M28697_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E
- mov esi, 66 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
mov byte ptr [rbp-0x10], 0 mov rax, bword ptr [rbp-0x08] ; byrRegs +[rax] mov cl, byte ptr [rbp-0x10] mov byte ptr [rax], cl mov rax, bword ptr [rbp-0x08]
- ;; size=37 bbWeight=1 PerfScore 6.50
+ ;; size=32 bbWeight=1 PerfScore 6.25
G_M28697_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 16 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 16, PerfScore 12.25, instruction count 17, allocated bytes for code 63 (MethodHash=c5b88fe6) for method Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
+; Total bytes of code 58, prolog size 16, PerfScore 12.00, instruction count 16, allocated bytes for code 58 (MethodHash=c5b88fe6) for method Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
; ============================================================ Unwind Info:

-5 (-5.32%) : 176.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

@@ -15,8 +15,7 @@ G_M17591_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=4 bbWeight=1 PerfScore 1.25 G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E
- mov esi, 15 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
call [<unknown method>] test eax, eax jne SHORT G_M17591_IG04 @@ -36,7 +35,7 @@ G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, test eax, eax sete al movzx rax, al
- ;; size=84 bbWeight=1 PerfScore 23.25
+ ;; size=79 bbWeight=1 PerfScore 23.00
G_M17591_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret @@ -49,7 +48,7 @@ G_M17591_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 94, prolog size 4, PerfScore 27.75, instruction count 27, allocated bytes for code 94 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
+; Total bytes of code 89, prolog size 4, PerfScore 27.50, instruction count 26, allocated bytes for code 89 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
; ============================================================ Unwind Info:

libraries.crossgen2.linux.x64.checked.mch

-4 (-3.33%) : 154290.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,7 +15,7 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> rax "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> rdi "CSE - aggressive"
; V07 cse1 [V07,T02] ( 5, 3.50) int -> rcx "CSE - aggressive" ; ; Lcl frame size = 0 @@ -29,28 +29,27 @@ G_M44169_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov ebx, esi ;; size=14 bbWeight=1 PerfScore 4.00 G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] movzx rdi, word ptr [rax] movzx rcx, r15w cmp edi, ecx je SHORT G_M44169_IG04 ;; size=17 bbWeight=1 PerfScore 6.50
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax]
cmp ecx, 47 jne SHORT G_M44169_IG07 ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz - movzx rdi, word ptr [rax] - movzx rdx, bx - cmp edi, edx
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movzx rax, bx + cmp edi, eax
je SHORT G_M44169_IG05
- movzx rdi, bx - cmp edi, 47
+ movzx rax, bx + cmp eax, 47
jne SHORT G_M44169_IG07
- ;; size=18 bbWeight=0.50 PerfScore 2.50
+ ;; size=15 bbWeight=0.50 PerfScore 1.50
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rax]
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -59,20 +58,18 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - ; byrRegs +[rax] - cmp word ptr [rax], 47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp edi, 47
je SHORT G_M44169_IG09 mov edi, ecx call [<unknown method>]
- ; byrRegs -[rax]
mov r15d, eax movzx rdi, bx call [<unknown method>] cmp r15d, eax sete al movzx rax, al
- ;; size=35 bbWeight=0.50 PerfScore 6.12
+ ;; size=34 bbWeight=0.50 PerfScore 4.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbx pop r15 @@ -92,7 +89,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 120, prolog size 9, PerfScore 24.50, instruction count 47, allocated bytes for code 120 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 116, prolog size 9, PerfScore 22.12, instruction count 46, allocated bytes for code 116 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info:

-13 (-2.91%) : 6513.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)

@@ -9,26 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T13] ( 3, 2.50) int -> rbx -; V01 loc1 [V01,T11] ( 3, 3 ) int -> r14
+; V00 loc0 [V00,T07] ( 3, 2.50) int -> rbx +; V01 loc1 [V01,T05] ( 3, 3 ) int -> r14
; V02 loc2 [V02,T04] ( 5, 4 ) int -> rcx
-; V03 loc3 [V03,T14] ( 3, 2.50) short -> rsi
+; V03 loc3 [V03,T08] ( 3, 2.50) short -> rsi
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 2, 4 ) int -> rbx "value for stsfld with typeinit" -; V06 tmp2 [V06,T07] ( 2, 4 ) int -> rdi "value for stsfld with typeinit" -; V07 tmp3 [V07,T08] ( 2, 4 ) int -> rax "value for stsfld with typeinit" -; V08 tmp4 [V08,T09] ( 2, 4 ) int -> rax "value for stsfld with typeinit" -; V09 tmp5 [V09,T05] ( 3, 4 ) int -> rcx "value for stsfld with typeinit" -; V10 tmp6 [V10,T10] ( 2, 4 ) int -> rcx "value for stsfld with typeinit" -; V11 tmp7 [V11 ] ( 2, 2 ) ubyte -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V12 tmp8 [V12 ] ( 2, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V13 tmp9 [V13,T15] ( 3, 2.50) int -> rdi "Inline return value spill temp" -; V14 tmp10 [V14,T16] ( 4, 2 ) int -> rcx "Inline return value spill temp" -; V15 tmp11 [V15,T03] ( 3, 5 ) int -> rax "Inlining Arg" -; V16 tmp12 [V16,T12] ( 3, 3 ) int -> rax "Inline return value spill temp" -; V17 tmp13 [V17,T01] ( 3, 6 ) int -> rax "Inlining Arg" -; V18 tmp14 [V18,T02] ( 3, 6 ) int -> rcx "Inlining Arg" -; V19 cse0 [V19,T00] ( 19, 17 ) byref -> r15 "CSE - aggressive"
+; V05 tmp1 [V05,T14] ( 2, 2 ) ubyte -> rbx "Inline return value spill temp" +; V06 tmp2 [V06 ] ( 2, 2 ) ubyte -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V07 tmp3 [V07,T15] ( 2, 2 ) ubyte -> rdi "Inline return value spill temp" +; V08 tmp4 [V08 ] ( 2, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V09 tmp5 [V09,T09] ( 3, 2.50) int -> rdi "Inline return value spill temp" +; V10 tmp6 [V10,T12] ( 4, 2 ) int -> rcx "Inline return value spill temp" +; V11 tmp7 [V11,T03] ( 3, 5 ) int -> rax "Inlining Arg" +; V12 tmp8 [V12,T13] ( 3, 2 ) int -> rcx "Inline return value spill temp" +; V13 tmp9 [V13,T06] ( 3, 3 ) int -> rax "Inline return value spill temp" +; V14 tmp10 [V14,T01] ( 3, 6 ) int -> rax "Inlining Arg" +; V15 tmp11 [V15,T02] ( 3, 6 ) int -> rcx "Inlining Arg" +; V16 tmp12 [V16,T16] ( 2, 2 ) int -> rcx "Inline return value spill temp" +; V17 cse0 [V17,T10] ( 3, 2.50) int -> rax "CSE - moderate" +; V18 cse1 [V18,T11] ( 3, 2.50) int -> rax "CSE - moderate" +; V19 cse2 [V19,T00] ( 17, 16 ) byref -> r15 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -40,7 +40,7 @@ G_M39812_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 24 lea rbp, [rsp+0x30] ;; size=15 bbWeight=1 PerfScore 4.75
-G_M39812_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M39812_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [(reloc)] ; const ptr mov rdi, gword ptr [rdi] ; gcrRegs +[rdi] @@ -51,7 +51,7 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ecx, 1 test eax, eax cmove ebx, ecx
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] mov r15, rax ; byrRegs +[r15] @@ -100,27 +100,29 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rdi] mov dword ptr [r15+0x0B3C], eax
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] mov ecx, dword ptr [rax+0x0A3C] mov eax, ecx ; byrRegs -[rax] imul eax, ebx mov word ptr [r15+0x0B40], ax
- cmp word ptr [r15+0x0B40], 0x7FFF - jg SHORT G_M39812_IG04 - ;; size=237 bbWeight=1 PerfScore 68.50 -G_M39812_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
movsx rax, word ptr [r15+0x0B40]
+ cmp eax, 0x7FFF + ;; size=238 bbWeight=1 PerfScore 68.75 +G_M39812_IG03: ; bbWeight=1, isz, extend + jg SHORT G_M39812_IG05 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M39812_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cdq idiv edx:eax, ecx cmp eax, ebx
- je SHORT G_M39812_IG05 - ;; size=15 bbWeight=0.50 PerfScore 15.38 -G_M39812_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ je SHORT G_M39812_IG06 + ;; size=7 bbWeight=0.50 PerfScore 13.38 +G_M39812_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov word ptr [r15+0x0B40], 0x7FFF ;; size=10 bbWeight=0.50 PerfScore 0.50
-G_M39812_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M39812_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov edi, 1 cmp r14d, 1 cmovg edi, r14d @@ -133,39 +135,38 @@ G_M39812_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [r15+0x0B42], ax movsx rax, word ptr [r15+0x0B42] cmp eax, esi
- jg SHORT G_M39812_IG07
+ jg SHORT G_M39812_IG08
;; size=57 bbWeight=1 PerfScore 14.00
-G_M39812_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz - movsx rax, word ptr [r15+0x0B42]
+G_M39812_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cdq idiv edx:eax, ecx cmp eax, edi
- je SHORT G_M39812_IG08 - ;; size=15 bbWeight=0.50 PerfScore 15.38 -G_M39812_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ je SHORT G_M39812_IG09 + ;; size=7 bbWeight=0.50 PerfScore 13.38 +G_M39812_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov word ptr [r15+0x0B42], si ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M39812_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M39812_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov eax, dword ptr [r15+0x0B3C] cmp eax, 500
- jbe SHORT G_M39812_IG10
+ jbe SHORT G_M39812_IG11
;; size=14 bbWeight=1 PerfScore 3.25
-G_M39812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz - mov ecx, 500 - jmp SHORT G_M39812_IG11 - ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M39812_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ mov ecx, 500 + jmp SHORT G_M39812_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M39812_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov ecx, eax cmp ecx, 1
- jbe SHORT G_M39812_IG12
+ jbe SHORT G_M39812_IG13
;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M39812_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz - jmp SHORT G_M39812_IG13
+G_M39812_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz + jmp SHORT G_M39812_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M39812_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M39812_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov ecx, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M39812_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M39812_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov dword ptr [r15+0x0B3C], ecx mov eax, dword ptr [r15+0x0B38] mov ecx, dword ptr [r15+0x0B3C] @@ -176,7 +177,7 @@ G_M39812_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr cmova ecx, eax mov dword ptr [r15+0x0B38], ecx ;; size=44 bbWeight=1 PerfScore 7.25
-G_M39812_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M39812_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx pop r14 @@ -185,7 +186,7 @@ G_M39812_IG14: ; bbWeight=1, epilog, nogc, extend ret ;; size=11 bbWeight=1 PerfScore 3.25
-; Total bytes of code 447, prolog size 15, PerfScore 135.75, instruction count 107, allocated bytes for code 447 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
+; Total bytes of code 434, prolog size 15, PerfScore 133.00, instruction count 106, allocated bytes for code 434 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
; ============================================================ Unwind Info:

-1 (-1.61%) : 154294.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T00] ( 4, 3 ) ref -> rbx class-hnd single-def <System.String> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 2 ) int -> rsi "argument with side effect"
-; V03 cse0 [V03,T01] ( 3, 2.50) byref -> rax "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3, 2.50) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,20 +25,21 @@ G_M64282_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 3.75 G_M64282_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- cmp word ptr [rax], 47 - je SHORT G_M64282_IG05 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref
movzx rsi, word ptr [rax]
+ cmp esi, 47 + je SHORT G_M64282_IG05 + ;; size=14 bbWeight=1 PerfScore 6.25 +G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; byrRegs -[rax]
mov rdi, rbx ; gcrRegs +[rdi] lea r11, [(reloc)] ; function address mov edx, 47 cmp dword ptr [rdi], edi
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=17 bbWeight=0.50 PerfScore 2.00
G_M64282_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -47,7 +48,6 @@ G_M64282_IG04: ; bbWeight=0.50, epilog, nogc, extend ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M64282_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi]
- ; byrRegs -[rax]
mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 @@ -58,7 +58,7 @@ G_M64282_IG06: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 62, prolog size 11, PerfScore 16.62, instruction count 22, allocated bytes for code 62 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
+; Total bytes of code 61, prolog size 11, PerfScore 14.88, instruction count 22, allocated bytes for code 61 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
; ============================================================ Unwind Info:

-1 (-0.98%) : 157120.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> rdx "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> rax "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> rdx "CSE - moderate"
; ; Lcl frame size = 8 @@ -45,11 +45,11 @@ G_M45118_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ;; size=20 bbWeight=1 PerfScore 5.00 G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax]
- cmp word ptr [rax], 47 - jne SHORT G_M45118_IG04
movzx rdx, word ptr [rax]
+ cmp edx, 47 + jne SHORT G_M45118_IG04
mov rdi, rbx ; gcrRegs +[rdi] lea r11, [(reloc)] ; function address @@ -66,7 +66,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 ; gcrRegs -[rsi rdi r15] mov r14, rax ; gcrRegs +[r14]
- ;; size=50 bbWeight=0.50 PerfScore 9.88
+ ;; size=49 bbWeight=0.50 PerfScore 8.50
G_M45118_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, r14 @@ -81,7 +81,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=11 bbWeight=1 PerfScore 3.25
-; Total bytes of code 102, prolog size 12, PerfScore 24.38, instruction count 34, allocated bytes for code 102 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 101, prolog size 12, PerfScore 23.00, instruction count 34, allocated bytes for code 101 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info:

+1 (+4.35%) : 34390.dasm - .$Array:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> rbx "value for stsfld with typeinit"
; ; Lcl frame size = 0 @@ -17,20 +16,22 @@ G_M35347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx ;; size=1 bbWeight=1 PerfScore 1.00 G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [<unknown method>] - ; gcr arg pop 0 - mov ebx, eax - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x0E10], ebx - ;; size=20 bbWeight=1 PerfScore 7.25
+ mov rbx, rax + ; byrRegs +[rbx] + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + mov dword ptr [rbx+0x0E10], eax + ;; size=21 bbWeight=1 PerfScore 7.25
G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 23, prolog size 1, PerfScore 9.75, instruction count 7, allocated bytes for code 23 (MethodHash=db6175ec) for method <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
+; Total bytes of code 24, prolog size 1, PerfScore 9.75, instruction count 7, allocated bytes for code 24 (MethodHash=db6175ec) for method <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
; ============================================================ Unwind Info:

+1 (+4.35%) : 171954.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> rbx "value for stsfld with typeinit"
; ; Lcl frame size = 0 @@ -17,20 +16,22 @@ G_M7219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx ;; size=1 bbWeight=1 PerfScore 1.00 G_M7219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [<unknown method>] - ; gcr arg pop 0 - mov ebx, eax - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x220], ebx - ;; size=20 bbWeight=1 PerfScore 7.25
+ mov rbx, rax + ; byrRegs +[rbx] + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + mov dword ptr [rbx+0x220], eax + ;; size=21 bbWeight=1 PerfScore 7.25
G_M7219_IG03: ; bbWeight=1, epilog, nogc, extend pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 23, prolog size 1, PerfScore 9.75, instruction count 7, allocated bytes for code 23 (MethodHash=ab7fe3cc) for method Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)
+; Total bytes of code 24, prolog size 1, PerfScore 9.75, instruction count 7, allocated bytes for code 24 (MethodHash=ab7fe3cc) for method Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-31 (-77.50%) : 1793.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)

@@ -8,37 +8,25 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 2, 2 ) int -> rax "Inline return value spill temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40059_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - mov rbx, rdi - ; gcrRegs +[rbx] - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M40059_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M40059_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M40059_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov eax, dword ptr [rbx+0x08]
+ push rax + ;; size=1 bbWeight=1 PerfScore 1.00 +G_M40059_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rdi] + mov eax, dword ptr [rdi+0x08]
;; size=3 bbWeight=1 PerfScore 2.00
-G_M40059_IG04: ; bbWeight=1, epilog, nogc, extend - pop rbx
+G_M40059_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M40059_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 0x87F - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M40059_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 40 (MethodHash=21e16384) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
+; Total bytes of code 9, prolog size 1, PerfScore 4.25, instruction count 4, allocated bytes for code 9 (MethodHash=21e16384) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
; ============================================================ Unwind Info: @@ -51,4 +39,4 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-31 (-68.89%) : 2306.dasm - Microsoft.FSharp.Control.Trampoline:.cctor() (FullOpts)
@@ -8,34 +8,22 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 G_M39838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M39838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M39838_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M39838_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [(reloc)], edi
+G_M39838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [(reloc)], eax
;; size=8 bbWeight=1 PerfScore 1.25
-G_M39838_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M39838_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39838_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 908 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M39838_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 1, PerfScore 7.50, instruction count 11, allocated bytes for code 45 (MethodHash=1e3f6461) for method Microsoft.FSharp.Control.Trampoline:.cctor() (FullOpts)
+; Total bytes of code 14, prolog size 1, PerfScore 3.50, instruction count 5, allocated bytes for code 14 (MethodHash=1e3f6461) for method Microsoft.FSharp.Control.Trampoline:.cctor() (FullOpts)
; ============================================================ Unwind Info:

-31 (-68.89%) : 1892.dasm - Microsoft.FSharp.Quotations.FSharpVar:.cctor() (FullOpts)

@@ -8,34 +8,22 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 G_M59304_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M59304_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M59304_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M59304_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [(reloc)], edi
+G_M59304_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [(reloc)], eax
;; size=8 bbWeight=1 PerfScore 1.25
-G_M59304_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59304_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M59304_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 0x4D4 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M59304_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 1, PerfScore 7.50, instruction count 11, allocated bytes for code 45 (MethodHash=35091857) for method Microsoft.FSharp.Quotations.FSharpVar:.cctor() (FullOpts)
+; Total bytes of code 14, prolog size 1, PerfScore 3.50, instruction count 5, allocated bytes for code 14 (MethodHash=35091857) for method Microsoft.FSharp.Quotations.FSharpVar:.cctor() (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.42%) : 823.dasm - Microsoft.FSharp.Core.FSharpFunc2[long,System.Nullable1[int]]:InvokeFastlong:long (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]]>
; V01 arg1 [V01,T01] ( 4, 3 ) long -> r15 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -32,10 +32,10 @@ G_M58196_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M58196_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M58196_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -55,15 +55,15 @@ G_M58196_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x28]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M58196_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] +[rbx] - mov rdi, rbx
+G_M58196_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + xor rdi, rdi
; gcrRegs +[rdi] mov rsi, r15
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -71,7 +71,7 @@ G_M58196_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M58196_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 16 pop rbx @@ -80,7 +80,7 @@ G_M58196_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 117, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 117 (MethodHash=4bb61cab) for method Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
+; Total bytes of code 121, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 121 (MethodHash=4bb61cab) for method Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.42%) : 776.dasm - Microsoft.FSharp.Core.FSharpFunc2[int,System.Nullable1[int]]:InvokeFastubyte:ubyte (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]]>
; V01 arg1 [V01,T01] ( 4, 3 ) int -> r15 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -32,10 +32,10 @@ G_M49112_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M49112_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M49112_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -55,15 +55,15 @@ G_M49112_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x28]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] +[rbx] - mov rdi, rbx
+G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + xor rdi, rdi
; gcrRegs +[rdi] mov esi, r15d
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -71,7 +71,7 @@ G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M49112_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 16 pop rbx @@ -80,7 +80,7 @@ G_M49112_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 117, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 117 (MethodHash=653e4027) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
+; Total bytes of code 121, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 121 (MethodHash=653e4027) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.42%) : 820.dasm - Microsoft.FSharp.Core.FSharpFunc2[long,System.Nullable1[int]]:InvokeFastint:int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]]>
; V01 arg1 [V01,T01] ( 4, 3 ) long -> r15 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -32,10 +32,10 @@ G_M23245_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M23245_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M23245_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -55,15 +55,15 @@ G_M23245_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x28]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M23245_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] +[rbx] - mov rdi, rbx
+G_M23245_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + xor rdi, rdi
; gcrRegs +[rdi] mov rsi, r15
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -71,7 +71,7 @@ G_M23245_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M23245_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 16 pop rbx @@ -80,7 +80,7 @@ G_M23245_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=12 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 117, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 117 (MethodHash=ae23a532) for method Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
+; Total bytes of code 121, prolog size 23, PerfScore 20.88, instruction count 37, allocated bytes for code 121 (MethodHash=ae23a532) for method Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-20 (-62.50%) : 3563.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)

@@ -14,17 +14,14 @@ G_M27576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M27576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 35 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [(reloc)] ; static handle
- ;; size=26 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M27576_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 32, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 32 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
+; Total bytes of code 12, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 12 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 8489.dasm - System.Security.Cryptography.SHA3512:getIsSupported():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M49554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M49554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 272 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M49554_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=bcf63e6d) for method System.Security.Cryptography.SHA3_512:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=bcf63e6d) for method System.Security.Cryptography.SHA3_512:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info:

-20 (-60.61%) : 8497.dasm - System.Security.Cryptography.SHA3384:getIsSupported():ubyte (Tier0)

@@ -14,17 +14,14 @@ G_M50683_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M50683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E - mov esi, 270 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M50683_IG03: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 6.25, instruction count 8, allocated bytes for code 33 (MethodHash=f62c3a04) for method System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=f62c3a04) for method System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info:

+0 (0.00%) : 663.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)

@@ -56,12 +56,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x38] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x28]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rdi, gword ptr [rbp-0x10]

+14 (+3.62%) : 2502.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

@@ -10,29 +10,34 @@ ; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "Reusable Box Helper"
+; V05 tmp2 [V05 ] ( 1, 1 ) float -> [rbp-0x24] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> ; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V08 tmp5 [V08 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V10 tmp7 [V10 ] ( 1, 1 ) struct ( 8) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V10 tmp7 [V10 ] ( 1, 1 ) double -> [rbp-0x50] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V12 tmp9 [V12 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[] must-init "argument with side effect"
+; V12 tmp9 [V12 ] ( 1, 1 ) struct ( 8) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V13 tmp10 [V13 ] ( 1, 1 ) ref -> [rbp-0x68] do-not-enreg[] must-init "argument with side effect" +; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init "argument with side effect" +; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [rbp-0x78] do-not-enreg[] must-init "argument with side effect" +; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 128
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 96 - lea rbp, [rsp+0x60]
+ sub rsp, 128 + lea rbp, [rsp+0x80]
vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 vmovdqa xmmword ptr [rbp-0x20], xmm8 xor eax, eax mov qword ptr [rbp-0x10], rax mov dword ptr [rbp-0x04], edi
- ;; size=39 bbWeight=1 PerfScore 10.33
+ ;; size=50 bbWeight=1 PerfScore 12.33
G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp dword ptr [rbp-0x04], 7 ja SHORT G_M5822_IG03 @@ -51,43 +56,43 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rax] ; gcrRegs +[rsi]
- lea rdi, [rbp-0x58]
+ lea rdi, [rbp-0x60]
call [<unknown method>] ; gcrRegs -[rsi]
- mov rax, gword ptr [rbp-0x58]
+ mov rax, gword ptr [rbp-0x60]
; gcrRegs +[rax] mov gword ptr [rbp-0x10], rax jmp G_M5822_IG11 ;; size=36 bbWeight=1 PerfScore 9.75 G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]
+ xor eax, eax + mov qword ptr [rbp-0x50], rax + lea rsi, [rbp-0x50]
mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_UNBOX
; gcrRegs +[rax]
- mov gword ptr [rbp-0x40], rax - mov rax, gword ptr [rbp-0x40] - xor ecx, ecx - mov qword ptr [rax+0x08], rcx - mov rsi, gword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x68], rax + mov rsi, gword ptr [rbp-0x68]
; gcrRegs +[rsi]
- lea rdi, [rbp-0x50]
+ lea rdi, [rbp-0x58]
call [<unknown method>] ; gcrRegs -[rax rsi]
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax] mov gword ptr [rbp-0x10], rax jmp G_M5822_IG11
- ;; size=56 bbWeight=1 PerfScore 13.00
+ ;; size=56 bbWeight=1 PerfScore 12.50
G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]
+ xor eax, eax + mov qword ptr [rbp-0x40], rax + lea rsi, [rbp-0x40]
mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_UNBOX
; gcrRegs +[rax]
- mov gword ptr [rbp-0x40], rax - mov rax, gword ptr [rbp-0x40] - xor ecx, ecx - mov qword ptr [rax+0x08], rcx - mov rsi, gword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x70], rax + mov rsi, gword ptr [rbp-0x70]
; gcrRegs +[rsi] lea rdi, [rbp-0x48] call [<unknown method>] @@ -96,15 +101,15 @@ G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rax] mov gword ptr [rbp-0x10], rax jmp G_M5822_IG11
- ;; size=56 bbWeight=1 PerfScore 13.00
+ ;; size=56 bbWeight=1 PerfScore 12.50
G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; System.Decimal mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- call CORINFO_HELP_BOX
+ call CORINFO_HELP_UNBOX
; gcrRegs +[rax]
- mov gword ptr [rbp-0x60], rax - mov rsi, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0x78], rax + mov rsi, gword ptr [rbp-0x78]
; gcrRegs +[rsi] lea rdi, [rbp-0x38] call [<unknown method>] @@ -116,14 +121,14 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=53 bbWeight=1 PerfScore 11.00 G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
+ xor eax, eax + mov dword ptr [rbp-0x24], eax + lea rsi, [rbp-0x24]
mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_UNBOX
; gcrRegs +[rax]
- mov gword ptr [rbp-0x28], rax - mov rax, gword ptr [rbp-0x28] - xor ecx, ecx - mov dword ptr [rax+0x08], ecx - mov rsi, gword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x80], rax + mov rsi, gword ptr [rbp-0x80]
; gcrRegs +[rsi] lea rdi, [rbp-0x30] call [<unknown method>] @@ -132,7 +137,7 @@ G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rax] mov gword ptr [rbp-0x10], rax jmp SHORT G_M5822_IG11
- ;; size=52 bbWeight=1 PerfScore 13.00
+ ;; size=52 bbWeight=1 PerfScore 12.50
G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, 0xD1FFAB1E ; const ptr @@ -160,10 +165,10 @@ G_M5822_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 1.00 G_M5822_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 128
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=9 bbWeight=1 PerfScore 1.75
RWD00 dd G_M5822_IG04 - G_M5822_IG02 dd G_M5822_IG05 - G_M5822_IG02 dd G_M5822_IG06 - G_M5822_IG02 @@ -174,7 +179,7 @@ RWD00 dd G_M5822_IG04 - G_M5822_IG02 dd G_M5822_IG09 - G_M5822_IG02
-; Total bytes of code 387, prolog size 36, PerfScore 97.83, instruction count 88, allocated bytes for code 387 (MethodHash=751de941) for method Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
+; Total bytes of code 401, prolog size 47, PerfScore 98.33, instruction count 89, allocated bytes for code 401 (MethodHash=751de941) for method Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
; ============================================================ Unwind Info: @@ -182,10 +187,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05
+ SizeOfProlog : 0x08
CountOfUnwindCodes: 2 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+16 (+12.50%) : 4416.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect" @@ -26,11 +26,13 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov dword ptr [rbp-0x18], edx ;; size=31 bbWeight=1 PerfScore 7.00 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rbp-0x18] - test eax, eax
+ lea rsi, [rbp-0x18] + mov rdi, 0xD1FFAB1E ; System.Nullable`1[ubyte] + call CORINFO_HELP_UNBOX_NULLABLE + ; gcrRegs +[rax] + test rax, rax
jne SHORT G_M26730_IG04 mov rax, gword ptr [rbp-0x08]
- ; gcrRegs +[rax]
mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] mov rsi, gword ptr [rbp-0x10] @@ -39,7 +41,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rax rsi rdi] nop
- ;; size=29 bbWeight=1 PerfScore 12.50
+ ;; size=45 bbWeight=1 PerfScore 13.25
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbp @@ -52,7 +54,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov gword ptr [rbp-0x28], rax lea rsi, [rbp-0x18] mov rdi, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_BOX_NULLABLE
+ call CORINFO_HELP_UNBOX_NULLABLE
mov gword ptr [rbp-0x20], rax mov rdx, gword ptr [rbp-0x20] ; gcrRegs +[rdx] @@ -71,7 +73,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 128, prolog size 20, PerfScore 39.00, instruction count 37, allocated bytes for code 128 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 144, prolog size 20, PerfScore 39.75, instruction count 39, allocated bytes for code 144 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-31 (-79.49%) : 711.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)

@@ -23,25 +23,15 @@ G_M59074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M59074_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M59074_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25
-G_M59074_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59074_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M59074_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 6 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M59074_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 39, prolog size 4, PerfScore 7.00, instruction count 11, allocated bytes for code 39 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
+; Total bytes of code 8, prolog size 4, PerfScore 3.00, instruction count 5, allocated bytes for code 8 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info:

-31 (-62.00%) : 509.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -15,29 +15,17 @@ G_M52532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M52532_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M52532_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M52532_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52532_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M52532_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E - mov esi, 56 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M52532_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 1, PerfScore 8.50, instruction count 11, allocated bytes for code 50 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 4.50, instruction count 5, allocated bytes for code 19 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info:

-31 (-62.00%) : 1141.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)

@@ -16,29 +16,17 @@ G_M61451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M61451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M61451_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M61451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M61451_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M61451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M61451_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E - mov esi, 58 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M61451_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 1, PerfScore 8.50, instruction count 11, allocated bytes for code 50 (MethodHash=49de0ff4) for method System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 4.50, instruction count 5, allocated bytes for code 19 (MethodHash=49de0ff4) for method System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
; ============================================================ Unwind Info:

-1 (-1.32%) : 489.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -33,17 +33,17 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi]
- test rax, rax
+ test rbx, rbx
jne SHORT G_M47281_IG05 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rsi, rbx
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx] + xor rsi, rsi
; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown method>
- ;; size=13 bbWeight=0.50 PerfScore 0.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.25
G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -51,14 +51,14 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]] ;; size=12 bbWeight=0.50 PerfScore 1.62 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx rsi] +[rax]
+ ; gcrRegs -[rsi] +[rax]
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 76, prolog size 8, PerfScore 14.50, instruction count 22, allocated bytes for code 76 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 75, prolog size 8, PerfScore 14.50, instruction count 22, allocated bytes for code 75 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================ Unwind Info:

-1 (-1.32%) : 580.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -33,17 +33,17 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi]
- test rax, rax
+ test rbx, rbx
jne SHORT G_M51894_IG05 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rsi, rbx
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx] + xor rsi, rsi
; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown method>
- ;; size=13 bbWeight=0.50 PerfScore 0.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.25
G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -51,14 +51,14 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]] ;; size=12 bbWeight=0.50 PerfScore 1.62 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx rsi] +[rax]
+ ; gcrRegs -[rsi] +[rax]
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 76, prolog size 8, PerfScore 14.50, instruction count 22, allocated bytes for code 76 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 75, prolog size 8, PerfScore 14.50, instruction count 22, allocated bytes for code 75 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================ Unwind Info:

-7 (-0.61%) : 980.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon

@@ -15,8 +15,8 @@ ; V04 arg3 [V04,T09] ( 6, 4 ) ref -> r12 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> ; V05 loc0 [V05 ] ( 3, 2 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T12] ( 3, 5 ) ref -> r12 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T51] ( 3, 1.50) ref -> [rbp-0x50] class-hnd spill-single-def <System.__Canon[]> -; V08 loc3 [V08,T52] ( 3, 1.50) ref -> [rbp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V07 loc2 [V07,T51] ( 3, 1.50) ref -> [rbp-0x58] class-hnd spill-single-def <System.__Canon[]> +; V08 loc3 [V08,T55] ( 2, 1 ) ref -> r13 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> r14 class-hnd <System.__Canon> @@ -31,8 +31,8 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> [rbp-0x70] class-hnd spill-single-def "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T39] ( 3, 2 ) long -> r13 "spilling helperCall" -; V24 tmp12 [V24,T40] ( 3, 2 ) long -> [rbp-0x40] "spilling helperCall"
+; V23 tmp11 [V23,T39] ( 3, 2 ) long -> [rbp-0x40] "spilling helperCall" +; V24 tmp12 [V24,T40] ( 3, 2 ) long -> [rbp-0x48] "spilling helperCall"
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V27 tmp15 [V27,T41] ( 3, 2 ) long -> r13 "spilling helperCall" @@ -43,7 +43,7 @@ ; V32 tmp20 [V32,T02] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon> ;* V33 tmp21 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V34 tmp22 [V34,T56] ( 2, 1 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp23 [V35,T59] ( 2, 1 ) int -> [rbp-0x44] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
+; V35 tmp23 [V35,T59] ( 2, 1 ) int -> [rbp-0x4C] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP
; V36 tmp24 [V36,T57] ( 2, 1 ) byref -> rsi "field V25._reference (fldOffset=0x0)" P-INDEP ; V37 tmp25 [V37,T60] ( 2, 1 ) int -> rdx "field V25._length (fldOffset=0x8)" P-INDEP ; V38 tmp26 [V38,T58] ( 2, 1 ) byref -> rsi "field V29._reference (fldOffset=0x0)" P-INDEP @@ -71,7 +71,7 @@ ; V60 rat13 [V60,T23] ( 3, 2.80) long -> rdi "spilling expr" ; V61 rat14 [V61,T33] ( 3, 2.24) long -> rdi "fgMakeTemp is creating a new local variable" ; V62 rat15 [V62,T24] ( 3, 2.80) long -> rdi "spilling expr"
-; V63 rat16 [V63,T34] ( 3, 2.24) long -> r13 "fgMakeTemp is creating a new local variable"
+; V63 rat16 [V63,T34] ( 3, 2.24) long -> rax "fgMakeTemp is creating a new local variable"
; V64 rat17 [V64,T25] ( 3, 2.80) long -> rdi "spilling expr" ; V65 rat18 [V65,T35] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable" ; V66 rat19 [V66,T46] ( 3, 2 ) long -> rdi "runtime lookup" @@ -82,9 +82,9 @@ ; V71 rat24 [V71,T37] ( 3, 2.24) long -> rdi "fgMakeTemp is creating a new local variable" ; V72 rat25 [V72,T28] ( 3, 2.80) long -> rdi "spilling expr" ; V73 rat26 [V73,T38] ( 3, 2.24) long -> r11 "fgMakeTemp is creating a new local variable"
-; V74 rat27 [V74,T55] ( 3, 1 ) long -> r13 "runtime lookup" -; V75 rat28 [V75,T53] ( 3, 1.40) long -> rdi "spilling expr" -; V76 rat29 [V76,T54] ( 3, 1.12) long -> r13 "fgMakeTemp is creating a new local variable"
+; V74 rat27 [V74,T54] ( 3, 1 ) long -> r13 "runtime lookup" +; V75 rat28 [V75,T52] ( 3, 1.40) long -> rdi "spilling expr" +; V76 rat29 [V76,T53] ( 3, 1.12) long -> r13 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 88 @@ -127,7 +127,7 @@ G_M36297_IG03: ; bbWeight=0.80, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rdi, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 @@ -160,12 +160,12 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rdi, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] ; gcr arg pop 0 mov r14, rax @@ -208,21 +208,21 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rdi, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz mov rsi, r13 ; gcrRegs +[rsi]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x58], rax
; GC ptr vars +{V07} test rax, rax je G_M36297_IG28
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x58]
mov rdi, qword ptr [r14+0x38] cmp qword ptr [rdi+0x18], 104 jle SHORT G_M36297_IG20 @@ -242,10 +242,10 @@ G_M36297_IG20: ; bbWeight=0.18, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0 ; gcrRegs -[rax] mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r13, rax
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax] ;; size=25 bbWeight=0.18 PerfScore 0.49 G_M36297_IG21: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz @@ -268,10 +268,10 @@ G_M36297_IG25: ; bbWeight=0.18, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0 ; gcrRegs -[rax] mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r14, rax
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax] ;; size=25 bbWeight=0.18 PerfScore 0.49 G_M36297_IG26: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref @@ -325,97 +325,91 @@ G_M36297_IG30: ; bbWeight=0.32, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe G_M36297_IG31: ; bbWeight=0.18, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rdi, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG32: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz mov rsi, r13 ; gcrRegs +[rsi]
- call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rsi] +[rax] - ; gcr arg pop 0 - mov gword ptr [rbp-0x58], rax - ; GC ptr vars +{V08} - test rax, rax - je G_M36297_IG48 - mov rax, gword ptr [rbp-0x58] - mov rdi, qword ptr [r14+0x38] - cmp qword ptr [rdi+0x18], 80 - jle SHORT G_M36297_IG36 - ;; size=36 bbWeight=0.50 PerfScore 5.25 -G_M36297_IG33: ; bbWeight=0.40, gcVars=0010000000000000 {V08}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r13] - mov r13, qword ptr [rdi+0x50] - test r13, r13 - je SHORT G_M36297_IG35 - ;; size=9 bbWeight=0.40 PerfScore 1.30 -G_M36297_IG34: ; bbWeight=0.32, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M36297_IG37 - ;; size=2 bbWeight=0.32 PerfScore 0.64 -G_M36297_IG35: ; bbWeight=0.20, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - ;; size=0 bbWeight=0.20 PerfScore 0.00 -G_M36297_IG36: ; bbWeight=0.18, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdi, r14 - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[rsi r13] +[rax]
; gcr arg pop 0 mov r13, rax
- mov rax, gword ptr [rbp-0x58] - ; gcrRegs +[rax] - ;; size=25 bbWeight=0.18 PerfScore 0.49 -G_M36297_IG37: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13]
mov rdi, qword ptr [r14+0x38]
- cmp qword ptr [rdi+0x18], 88 - jle SHORT G_M36297_IG41 - ;; size=11 bbWeight=0.50 PerfScore 3.00 -G_M36297_IG38: ; bbWeight=0.40, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rdi+0x58] - test rcx, rcx - je SHORT G_M36297_IG40 - ;; size=9 bbWeight=0.40 PerfScore 1.30 -G_M36297_IG39: ; bbWeight=0.32, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - mov qword ptr [rbp-0x40], rcx - jmp SHORT G_M36297_IG42 - ;; size=6 bbWeight=0.32 PerfScore 0.96 -G_M36297_IG40: ; bbWeight=0.20, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - ;; size=0 bbWeight=0.20 PerfScore 0.00 -G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+ cmp qword ptr [rdi+0x18], 80 + jle SHORT G_M36297_IG35 + ;; size=22 bbWeight=0.50 PerfScore 3.75 +G_M36297_IG33: ; bbWeight=0.40, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ mov rax, qword ptr [rdi+0x50] + test rax, rax + je SHORT G_M36297_IG35 + ;; size=9 bbWeight=0.40 PerfScore 1.30 +G_M36297_IG34: ; bbWeight=0.32, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M36297_IG36 + ;; size=2 bbWeight=0.32 PerfScore 0.64 +G_M36297_IG35: ; bbWeight=0.18, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov qword ptr [rbp-0x40], rax
- mov rax, gword ptr [rbp-0x58] - ; gcrRegs +[rax]
+ ;; size=22 bbWeight=0.18 PerfScore 0.45 +G_M36297_IG36: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, qword ptr [r14+0x38] + cmp qword ptr [rdi+0x18], 88 + jle SHORT G_M36297_IG40 + ;; size=11 bbWeight=0.50 PerfScore 3.00 +G_M36297_IG37: ; bbWeight=0.40, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + mov rcx, qword ptr [rdi+0x58] + test rcx, rcx + je SHORT G_M36297_IG39 + ;; size=9 bbWeight=0.40 PerfScore 1.30 +G_M36297_IG38: ; bbWeight=0.32, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + mov qword ptr [rbp-0x48], rcx + jmp SHORT G_M36297_IG42 + ;; size=6 bbWeight=0.32 PerfScore 0.96 +G_M36297_IG39: ; bbWeight=0.20, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + mov qword ptr [rbp-0x40], rax + jmp SHORT G_M36297_IG41 + ;; size=6 bbWeight=0.20 PerfScore 0.60 +G_M36297_IG40: ; bbWeight=0.25, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref + mov qword ptr [rbp-0x40], rax + ;; size=4 bbWeight=0.25 PerfScore 0.25 +G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref + mov rdi, r14 + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov qword ptr [rbp-0x48], rax + mov rax, qword ptr [rbp-0x40]
;; size=26 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref, isz - mov rdi, r13 - mov rsi, rax
+G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, rax
...

realworld.run.linux.x64.checked.mch

-31 (-68.89%) : 2649.dasm - FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)

@@ -8,34 +8,22 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 G_M20736_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M20736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M20736_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M20736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [(reloc)], edi
+G_M20736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [(reloc)], eax
;; size=8 bbWeight=1 PerfScore 1.25
-G_M20736_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M20736_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M20736_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 0x3473 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M20736_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 1, PerfScore 7.50, instruction count 11, allocated bytes for code 45 (MethodHash=8db3aeff) for method FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)
+; Total bytes of code 14, prolog size 1, PerfScore 3.50, instruction count 5, allocated bytes for code 14 (MethodHash=8db3aeff) for method FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)
; ============================================================ Unwind Info:

-31 (-68.89%) : 3433.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)

@@ -8,34 +8,22 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 G_M31228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M31228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M31228_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M31228_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [(reloc)], edi
+G_M31228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [(reloc)], eax
;; size=8 bbWeight=1 PerfScore 1.25
-G_M31228_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M31228_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M31228_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 0x3382 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M31228_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 1, PerfScore 7.50, instruction count 11, allocated bytes for code 45 (MethodHash=c6be8603) for method FSharp.Compiler.Parser:.cctor() (FullOpts)
+; Total bytes of code 14, prolog size 1, PerfScore 3.50, instruction count 5, allocated bytes for code 14 (MethodHash=c6be8603) for method FSharp.Compiler.Parser:.cctor() (FullOpts)
; ============================================================ Unwind Info:

-31 (-68.89%) : 2410.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)

@@ -8,34 +8,22 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 G_M59575_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M59575_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M59575_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M59575_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [(reloc)], edi
+G_M59575_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [(reloc)], eax
;; size=8 bbWeight=1 PerfScore 1.25
-G_M59575_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59575_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M59575_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, 0xD1FFAB1E - mov esi, 0x3B44 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M59575_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 1, PerfScore 7.50, instruction count 11, allocated bytes for code 45 (MethodHash=75061748) for method FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
+; Total bytes of code 14, prolog size 1, PerfScore 3.50, instruction count 5, allocated bytes for code 14 (MethodHash=75061748) for method FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
; ============================================================ Unwind Info:

+4 (+2.72%) : 3116.dasm - Microsoft.FSharp.Core.FSharpFunc2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc2[int,System.Canon],int,System.Canon):System.__Canon (FullOpts)

@@ -8,15 +8,15 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
; V02 arg1 [V02,T04] ( 4, 3 ) int -> r14 single-def ; V03 arg2 [V03,T03] ( 4, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V08 tmp2 [V08,T06] ( 2, 4 ) long -> rdi "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) long -> rdi "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable" ; @@ -48,17 +48,17 @@ G_M46648_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ;; size=5 bbWeight=0.80 PerfScore 1.80 G_M46648_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rdi, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M46648_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, rbx ; gcrRegs +[rsi]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M46648_IG08 ;; size=13 bbWeight=1 PerfScore 2.50 G_M46648_IG06: ; bbWeight=0.50, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {}, byref @@ -80,15 +80,15 @@ G_M46648_IG07: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x28]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdx rdi] +[rbx] - mov rdi, rbx
+G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx rdi] + xor rdi, rdi
; gcrRegs +[rdi] mov esi, r14d
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -97,7 +97,7 @@ G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=29 bbWeight=0.50 PerfScore 6.00
+ ;; size=33 bbWeight=0.50 PerfScore 6.00
G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -107,7 +107,7 @@ G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 147, prolog size 25, PerfScore 29.73, instruction count 49, allocated bytes for code 147 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 151, prolog size 25, PerfScore 29.73, instruction count 49, allocated bytes for code 151 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

+3 (+3.03%) : 2046.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> rsi class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -27,44 +27,44 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M19732_IG05 - ;; size=23 bbWeight=1 PerfScore 2.75 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - mov rdi, rax - ; gcrRegs +[rdi] - mov rsi, rbx
+ mov rsi, rax
; gcrRegs +[rsi]
- mov rax, qword ptr [rax]
+ test rbx, rbx + je SHORT G_M19732_IG05 + ;; size=26 bbWeight=1 PerfScore 3.00 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, rbx + ; gcrRegs +[rdi] + mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x98]
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx pop rbp tail.jmp [rax+0x10]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rsi rdi] - mov rdi, rbx
+G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx rsi rdi] + xor rdi, rdi
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x50] call [rax+0x30]<unknown method> ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi]
- mov rsi, rbx
+ xor rsi, rsi
; gcrRegs +[rsi] mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x98]
- ;; size=29 bbWeight=0.50 PerfScore 5.88
+ ;; size=32 bbWeight=0.50 PerfScore 5.88
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -72,7 +72,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x10]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 99, prolog size 11, PerfScore 17.88, instruction count 30, allocated bytes for code 99 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 102, prolog size 11, PerfScore 18.00, instruction count 30, allocated bytes for code 102 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.42%) : 3048.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T01] ( 4, 3 ) int -> r15 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 2 ) int -> r14 single-def "field V01.idx (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -34,10 +34,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, rbx ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M49388_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -58,15 +58,15 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x28]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] +[rbx] - mov rdi, rbx
+G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + xor rdi, rdi
; gcrRegs +[rdi] mov esi, r14d
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -74,7 +74,7 @@ G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=29 bbWeight=0.50 PerfScore 6.00
+ ;; size=33 bbWeight=0.50 PerfScore 6.00
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx @@ -84,7 +84,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 117, prolog size 21, PerfScore 21.62, instruction count 40, allocated bytes for code 117 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 121, prolog size 21, PerfScore 21.62, instruction count 40, allocated bytes for code 121 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.linux.x64.checked.mch

-23 (-60.53%) : 3342.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)

@@ -15,29 +15,20 @@ G_M47143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M47143_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M47143_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M47143_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M47143_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M47143_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M47143_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 1, PerfScore 10.75, instruction count 10, allocated bytes for code 38 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
+; Total bytes of code 15, prolog size 1, PerfScore 5.25, instruction count 5, allocated bytes for code 15 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
; ============================================================ Cfi Info:

-23 (-60.53%) : 1699.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)

@@ -15,29 +15,20 @@ G_M28146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M28146_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M28146_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M28146_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M28146_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M28146_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M28146_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 1, PerfScore 10.75, instruction count 10, allocated bytes for code 38 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
+; Total bytes of code 15, prolog size 1, PerfScore 5.25, instruction count 5, allocated bytes for code 15 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
; ============================================================ Cfi Info:

-23 (-60.53%) : 7223.dasm - System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)

@@ -15,29 +15,20 @@ G_M57960_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57960_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M57960_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M57960_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M57960_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M57960_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M57960_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M57960_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M57960_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 1, PerfScore 10.75, instruction count 10, allocated bytes for code 38 (MethodHash=656a1d97) for method System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)
+; Total bytes of code 15, prolog size 1, PerfScore 5.25, instruction count 5, allocated bytes for code 15 (MethodHash=656a1d97) for method System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)
; ============================================================ Cfi Info:

-30 (-3.38%) : 5310.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)

@@ -33,12 +33,12 @@ ; V23 tmp14 [V23,T11] ( 2, 2 ) struct (40) [rbp-0xC8] do-not-enreg[S] must-init single-def "argument with side effect" <System.Globalization.TimeSpanFormat+FormatLiterals> ; V24 tmp15 [V24,T12] ( 2, 2 ) struct (40) [rbp-0xF0] do-not-enreg[S] must-init single-def "argument with side effect" <System.Globalization.TimeSpanFormat+FormatLiterals> ; V25 cse0 [V25,T13] ( 3, 1.50) byref -> [rbp-0xF8] spill-single-def "CSE - moderate"
-; V26 cse1 [V26,T14] ( 2, 1 ) int -> rcx "CSE - moderate"
+; V26 cse1 [V26,T14] ( 2, 1 ) int -> rax "CSE - moderate"
; V27 cse2 [V27,T07] ( 4, 2 ) int -> r14 "CSE - aggressive" ; ; Lcl frame size = 376
-G_M20866_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M20866_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp push r15 push r14 @@ -75,7 +75,7 @@ G_M20866_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, ; byrRegs +[rdi] call System.Globalization.TimeSpanParse+TimeSpanResult:SetBadTimeSpanFailure():ubyte:this ; byrRegs -[rdi r15]
- jmp G_M20866_IG20
+ jmp G_M20866_IG19
;; size=13 bbWeight=0.50 PerfScore 1.62 G_M20866_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz ; byrRegs +[rbx r15] @@ -89,25 +89,21 @@ G_M20866_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 ; gcrRegs -[rsi rdi] ;; size=25 bbWeight=0.50 PerfScore 3.00 G_M20866_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- mov ecx, r14d - and ecx, 1
+ mov eax, r14d + and eax, 1
test r14b, 2 setne r14b movzx r14, r14b xor r13d, r13d xor r12d, r12d
- test ecx, ecx - je G_M20866_IG12 - lea rcx, [(reloc)] - cmp qword ptr [rcx-0x08], 0 - jne G_M20866_IG22 - ;; size=50 bbWeight=0.50 PerfScore 4.12 -G_M20866_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref - mov rax, qword ptr [(reloc)]
+ test eax, eax + je G_M20866_IG11 + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax]
mov bword ptr [rbp-0xF8], rax ; GC ptr vars +{V25}
- ;; size=14 bbWeight=0.50 PerfScore 1.50 -G_M20866_IG08: ; bbWeight=0.50, nogc, extend
+ ;; size=44 bbWeight=0.50 PerfScore 2.88 +G_M20866_IG07: ; bbWeight=0.50, nogc, extend
movups xmm0, xmmword ptr [rax+0x08] movups xmmword ptr [rbp-0xC8], xmm0 movups xmm0, xmmword ptr [rax+0x18] @@ -115,7 +111,7 @@ G_M20866_IG08: ; bbWeight=0.50, nogc, extend mov rcx, qword ptr [rax+0x28] mov qword ptr [rbp-0xA8], rcx ;; size=33 bbWeight=0.50 PerfScore 6.50
-G_M20866_IG09: ; bbWeight=0.50, isz, extend
+G_M20866_IG08: ; bbWeight=0.50, isz, extend
lea rdi, [rsp] lea rsi, [rbp-0xC8] mov rcx, gword ptr [rsi] @@ -134,14 +130,14 @@ G_M20866_IG09: ; bbWeight=0.50, isz, extend ; byrRegs +[rdi] call System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this ; gcrRegs -[rcx]
- ; byrRegs -[rdi]
+ ; byrRegs -[rax rdi]
test eax, eax
- je SHORT G_M20866_IG10
+ je SHORT G_M20866_IG09
mov r12d, 1 mov r13d, 1
- jmp SHORT G_M20866_IG12
+ jmp SHORT G_M20866_IG11
;; size=74 bbWeight=0.50 PerfScore 8.00
-G_M20866_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, nogc
+G_M20866_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, nogc
mov rdi, bword ptr [rbp-0xF8] ; byrRegs +[rdi] movups xmm0, xmmword ptr [rdi+0x30] @@ -151,7 +147,7 @@ G_M20866_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 mov rcx, qword ptr [rdi+0x50] mov qword ptr [rbp-0xD0], rcx ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M20866_IG11: ; bbWeight=0.50, isz, extend
+G_M20866_IG10: ; bbWeight=0.50, isz, extend
lea rdi, [rsp] ; byrRegs -[rdi] lea rsi, [rbp-0xF0] @@ -174,15 +170,15 @@ G_M20866_IG11: ; bbWeight=0.50, isz, extend ; gcrRegs -[rcx] ; byrRegs -[rdi] test eax, eax
- je SHORT G_M20866_IG12
+ je SHORT G_M20866_IG11
mov r12d, 1 xor r13d, r13d ;; size=69 bbWeight=0.50 PerfScore 7.00
-G_M20866_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M20866_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test r14d, r14d
- je G_M20866_IG14
+ je G_M20866_IG13
test r12d, r12d
- jne G_M20866_IG14
+ jne G_M20866_IG13
lea rsi, [rbp-0xA0] mov rdi, rbx ; byrRegs +[rdi] @@ -208,12 +204,12 @@ G_M20866_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 ; gcrRegs -[rcx] ; byrRegs -[rdi] test eax, eax
- je SHORT G_M20866_IG13
+ je SHORT G_M20866_IG12
mov r12d, 1 mov r13d, 1
- jmp SHORT G_M20866_IG14
+ jmp SHORT G_M20866_IG13
;; size=107 bbWeight=0.50 PerfScore 10.12
-G_M20866_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M20866_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
lea rsi, [rbp-0x78] mov rdi, rbx ; byrRegs +[rdi] @@ -239,15 +235,15 @@ G_M20866_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 ; gcrRegs -[rcx] ; byrRegs -[rdi] test eax, eax
- je SHORT G_M20866_IG14
+ je SHORT G_M20866_IG13
xor r13d, r13d
- jmp SHORT G_M20866_IG15
+ jmp SHORT G_M20866_IG14
;; size=74 bbWeight=0.50 PerfScore 8.75
-G_M20866_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M20866_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d je G_M20866_IG04 ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M20866_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M20866_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
mov byte ptr [rbp-0x48], 2 xorps xmm0, xmm0 movups xmmword ptr [rbp-0x38], xmm0 @@ -307,31 +303,31 @@ G_M20866_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 call <unknown method> ; byrRegs -[rax rcx rbx] test eax, eax
- jne SHORT G_M20866_IG17
+ jne SHORT G_M20866_IG16
;; size=196 bbWeight=0.50 PerfScore 21.54
-G_M20866_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M20866_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov rdi, r15 ; byrRegs +[rdi] call System.Globalization.TimeSpanParse+TimeSpanResult:SetOverflowFailure():ubyte:this ; byrRegs -[rdi r15]
- jmp SHORT G_M20866_IG20
+ jmp SHORT G_M20866_IG19
;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M20866_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M20866_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs +[r15] test r13d, r13d
- jne SHORT G_M20866_IG18
+ jne SHORT G_M20866_IG17
mov rax, qword ptr [rbp-0x50] neg rax mov qword ptr [rbp-0x50], rax cmp qword ptr [rbp-0x50], 0
- jg SHORT G_M20866_IG16
+ jg SHORT G_M20866_IG15
;; size=23 bbWeight=0.50 PerfScore 3.25
-G_M20866_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M20866_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov rax, qword ptr [rbp-0x50] mov qword ptr [r15], rax mov eax, 1 ;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M20866_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M20866_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 376 pop rbx pop r12 @@ -341,11 +337,11 @@ G_M20866_IG19: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M20866_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M20866_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r15] movzx rax, al ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M20866_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M20866_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 376 pop rbx pop r12 @@ -355,14 +351,8 @@ G_M20866_IG21: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M20866_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref - ; byrRegs +[rbx r15] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - jmp G_M20866_IG07 - ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 887, prolog size 67, PerfScore 111.00, instruction count 235, allocated bytes for code 887 (MethodHash=7c17ae7d) for method System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
+; Total bytes of code 857, prolog size 67, PerfScore 108.25, instruction count 230, allocated bytes for code 857 (MethodHash=7c17ae7d) for method System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
; ============================================================ Cfi Info:

-32 (-0.76%) : 5309.dasm - System.Globalization.TimeSpanParse:ProcessTerminalHMS_D(byref,ubyte,byref):ubyte (FullOpts)

@@ -10,7 +10,7 @@ ; V00 arg0 [V00,T00] ( 58, 30.50) byref -> rbx single-def ; V01 arg1 [V01,T06] ( 3, 2.50) ubyte -> rsi single-def ; V02 arg2 [V02,T05] ( 5, 3.50) byref -> r15 single-def
-; V03 loc0 [V03,T35] ( 2, 1 ) ubyte -> rcx
+; V03 loc0 [V03,T35] ( 2, 1 ) ubyte -> rax
; V04 loc1 [V04,T36] ( 2, 1 ) ubyte -> r14 ; V05 loc2 [V05,T04] ( 14, 7 ) ubyte -> r13 ; V06 loc3 [V06,T01] ( 37, 18.50) ubyte -> r12 @@ -86,12 +86,12 @@ G_M35317_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=94 bbWeight=1 PerfScore 20.33 G_M35317_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref cmp dword ptr [rbx+0x14], 4
- jne G_M35317_IG68
+ jne G_M35317_IG67
;; size=10 bbWeight=1 PerfScore 4.00 G_M35317_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz movzx r14, sil test r14b, 4
- jne G_M35317_IG68
+ jne G_M35317_IG67
cmp dword ptr [rbx+0x18], 3 je SHORT G_M35317_IG04 lea rdi, gword ptr [(reloc)] @@ -102,44 +102,40 @@ G_M35317_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 ; gcrRegs -[rsi rdi] ;; size=39 bbWeight=0.50 PerfScore 3.75 G_M35317_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- mov ecx, r14d - and ecx, 1
+ mov eax, r14d + and eax, 1
test r14b, 2 setne r14b movzx r14, r14b xor r13d, r13d xor r12d, r12d
- xor eax, eax - mov dword ptr [rbp-0x2C], eax
+ xor ecx, ecx + mov dword ptr [rbp-0x2C], ecx
mov byte ptr [rbp-0x50], 2 xorps xmm0, xmm0 movups xmmword ptr [rbp-0x40], xmm0
- xor edi, edi - mov qword ptr [rbp-0x58], rdi - test ecx, ecx - je G_M35317_IG39 - lea rcx, [(reloc)] - cmp qword ptr [rcx-0x08], 0 - jne G_M35317_IG71 - ;; size=72 bbWeight=0.50 PerfScore 6.54 -G_M35317_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref - mov rdx, qword ptr [(reloc)] - mov bword ptr [rbp-0x248], rdx
+ xor edx, edx + mov qword ptr [rbp-0x58], rdx + test eax, eax + je G_M35317_IG38 + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + mov bword ptr [rbp-0x248], rax
; GC ptr vars +{V47}
- lea r8, bword ptr [rdx+0x08] - ; byrRegs +[r8] - mov bword ptr [rbp-0x240], r8
+ lea rdx, bword ptr [rax+0x08] + ; byrRegs +[rdx] + mov bword ptr [rbp-0x240], rdx
; GC ptr vars +{V46}
- ;; size=25 bbWeight=0.50 PerfScore 2.25 -G_M35317_IG06: ; bbWeight=0.50, nogc, extend - movups xmm0, xmmword ptr [r8]
+ ;; size=77 bbWeight=0.50 PerfScore 6.04 +G_M35317_IG05: ; bbWeight=0.50, nogc, extend + movups xmm0, xmmword ptr [rdx]
movups xmmword ptr [rbp-0x170], xmm0
- movups xmm0, xmmword ptr [r8+0x10]
+ movups xmm0, xmmword ptr [rdx+0x10]
movups xmmword ptr [rbp-0x160], xmm0
- mov rcx, qword ptr [r8+0x20]
+ mov rcx, qword ptr [rdx+0x20]
mov qword ptr [rbp-0x150], rcx
- ;; size=34 bbWeight=0.50 PerfScore 6.50 -G_M35317_IG07: ; bbWeight=0.50, extend
+ ;; size=32 bbWeight=0.50 PerfScore 6.50 +G_M35317_IG06: ; bbWeight=0.50, extend
lea rdi, [rsp] lea rsi, [rbp-0x170] mov rcx, gword ptr [rsi] @@ -158,9 +154,9 @@ G_M35317_IG07: ; bbWeight=0.50, extend ; byrRegs +[rdi] call <unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[rdi r8]
+ ; byrRegs -[rax rdx rdi]
test eax, eax
- je G_M35317_IG09
+ je G_M35317_IG08
mov r13d, 1 lea rdi, [rsp] lea rsi, [rbp-0x50] @@ -211,7 +207,7 @@ G_M35317_IG07: ; bbWeight=0.50, extend movsq mov rcx, bword ptr [rsi] ;; size=227 bbWeight=0.50 PerfScore 24.75
-G_M35317_IG08: ; bbWeight=0.50, extend
+G_M35317_IG07: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x90], rcx add rsi, 8 add rdi, 8 @@ -224,14 +220,14 @@ G_M35317_IG08: ; bbWeight=0.50, extend xor ecx, ecx test r12d, r12d sete cl
- movzx rax, cl - mov dword ptr [rbp-0x2C], eax
+ movzx rcx, cl + mov dword ptr [rbp-0x2C], ecx
;; size=49 bbWeight=0.50 PerfScore 3.62
-G_M35317_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M35317_IG15
+ jne G_M35317_IG14
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M35317_IG10: ; bbWeight=0.50, nogc, extend
+G_M35317_IG09: ; bbWeight=0.50, nogc, extend
mov rdx, bword ptr [rbp-0x240] ; byrRegs +[rdx] movups xmm0, xmmword ptr [rdx] @@ -241,7 +237,7 @@ G_M35317_IG10: ; bbWeight=0.50, nogc, extend mov rcx, qword ptr [rdx+0x20] mov qword ptr [rbp-0x178], rcx ;; size=39 bbWeight=0.50 PerfScore 7.00
-G_M35317_IG11: ; bbWeight=0.50, extend
+G_M35317_IG10: ; bbWeight=0.50, extend
lea rdi, [rsp] lea rsi, [rbp-0x198] mov rcx, gword ptr [rsi] @@ -262,7 +258,7 @@ G_M35317_IG11: ; bbWeight=0.50, extend ; gcrRegs -[rcx] ; byrRegs -[rdx rdi] test eax, eax
- je G_M35317_IG15
+ je G_M35317_IG14
mov r13d, 1 lea rax, bword ptr [rbx+0x70] ; byrRegs +[rax] @@ -313,7 +309,7 @@ G_M35317_IG11: ; bbWeight=0.50, extend movsq mov rcx, bword ptr [rsi] ;; size=227 bbWeight=0.50 PerfScore 24.75
-G_M35317_IG12: ; bbWeight=0.50, isz, extend
+G_M35317_IG11: ; bbWeight=0.50, isz, extend
mov bword ptr [rsp+0x90], rcx add rsi, 8 add rdi, 8 @@ -324,24 +320,24 @@ G_M35317_IG12: ; bbWeight=0.50, isz, extend ; byrRegs -[rax rcx] mov r12d, eax cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M35317_IG13
+ jne SHORT G_M35317_IG12
xor ecx, ecx test r12d, r12d sete cl
- jmp SHORT G_M35317_IG14
+ jmp SHORT G_M35317_IG13
;; size=51 bbWeight=0.50 PerfScore 5.50
-G_M35317_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov ecx, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35317_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
movzx rax, cl mov dword ptr [rbp-0x2C], eax ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M35317_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M35317_IG21
+ jne G_M35317_IG20
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M35317_IG16: ; bbWeight=0.50, nogc, extend
+G_M35317_IG15: ; bbWeight=0.50, nogc, extend
mov rdi, bword ptr [rbp-0x240] ; byrRegs +[rdi] movups xmm0, xmmword ptr [rdi] @@ -351,7 +347,7 @@ G_M35317_IG16: ; bbWeight=0.50, nogc, extend mov rcx, qword ptr [rdi+0x20] mov qword ptr [rbp-0x1A0], rcx ;; size=39 bbWeight=0.50 PerfScore 7.00
-G_M35317_IG17: ; bbWeight=0.50, extend
+G_M35317_IG16: ; bbWeight=0.50, extend
lea rdi, [rsp] ; byrRegs -[rdi] lea rsi, [rbp-0x1C0] @@ -374,7 +370,7 @@ G_M35317_IG17: ; bbWeight=0.50, extend ; gcrRegs -[rcx] ; byrRegs -[rdi] test eax, eax
- je G_M35317_IG21
+ je G_M35317_IG20
mov r13d, 1 lea rdi, [rsp] lea rsi, [rbp-0x50] @@ -426,7 +422,7 @@ G_M35317_IG17: ; bbWeight=0.50, extend movsq mov rcx, bword ptr [rsi] ;; size=227 bbWeight=0.50 PerfScore 24.75
-G_M35317_IG18: ; bbWeight=0.50, isz, extend
+G_M35317_IG17: ; bbWeight=0.50, isz, extend
mov bword ptr [rsp+0x90], rcx add rsi, 8 add rdi, 8 @@ -438,24 +434,24 @@ G_M35317_IG18: ; bbWeight=0.50, isz, extend ; byrRegs -[rax rcx] mov r12d, eax cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M35317_IG19
+ jne SHORT G_M35317_IG18
xor ecx, ecx test r12d, r12d sete cl
- jmp SHORT G_M35317_IG20
+ jmp SHORT G_M35317_IG19
;; size=51 bbWeight=0.50 PerfScore 5.50
-G_M35317_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov ecx, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35317_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
movzx rax, cl mov dword ptr [rbp-0x2C], eax ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M35317_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M35317_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M35317_IG27
+ jne G_M35317_IG26
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M35317_IG22: ; bbWeight=0.50, nogc, extend
+G_M35317_IG21: ; bbWeight=0.50, nogc, extend
mov rdx, bword ptr [rbp-0x248] ; byrRegs +[rdx] movups xmm0, xmmword ptr [rdx+0x30] @@ -465,7 +461,7 @@ G_M35317_IG22: ; bbWeight=0.50, nogc, extend ...

-32 (-0.75%) : 5308.dasm - System.Globalization.TimeSpanParse:ProcessTerminalHMSF_D(byref,ubyte,byref):ubyte (FullOpts)

@@ -10,7 +10,7 @@ ; V00 arg0 [V00,T00] ( 70, 36.50) byref -> rbx single-def ; V01 arg1 [V01,T06] ( 3, 2.50) ubyte -> rsi single-def ; V02 arg2 [V02,T05] ( 5, 3.50) byref -> r15 single-def
-; V03 loc0 [V03,T35] ( 2, 1 ) ubyte -> rcx
+; V03 loc0 [V03,T35] ( 2, 1 ) ubyte -> rax
; V04 loc1 [V04,T36] ( 2, 1 ) ubyte -> r14 ; V05 loc2 [V05 ] ( 17, 8.50) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc3 [V06,T03] ( 14, 7 ) ubyte -> r13 @@ -86,12 +86,12 @@ G_M1843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=90 bbWeight=1 PerfScore 19.33 G_M1843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref cmp dword ptr [rbx+0x14], 5
- jne G_M1843_IG71
+ jne G_M1843_IG70
;; size=10 bbWeight=1 PerfScore 4.00 G_M1843_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz movzx r14, sil test r14b, 4
- jne G_M1843_IG71
+ jne G_M1843_IG70
cmp dword ptr [rbx+0x18], 4 je SHORT G_M1843_IG04 lea rdi, gword ptr [(reloc)] @@ -102,13 +102,13 @@ G_M1843_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15 ; gcrRegs -[rsi rdi] ;; size=39 bbWeight=0.50 PerfScore 3.75 G_M1843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- mov ecx, r14d - and ecx, 1
+ mov eax, r14d + and eax, 1
test r14b, 2 setne r14b movzx r14, r14b
- xor edi, edi - mov qword ptr [rbp-0x30], rdi
+ xor ecx, ecx + mov qword ptr [rbp-0x30], rcx
;; size=24 bbWeight=0.50 PerfScore 1.62 G_M1843_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref xor r13d, r13d @@ -117,34 +117,30 @@ G_M1843_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15 xor r12d, r12d ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M1843_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- mov dword ptr [rbp-0x34], edi
+ mov dword ptr [rbp-0x34], ecx
mov byte ptr [rbp-0x58], 2 xorps xmm0, xmm0 movups xmmword ptr [rbp-0x48], xmm0
- test ecx, ecx - je G_M1843_IG42 - lea rcx, [(reloc)] - cmp qword ptr [rcx-0x08], 0 - jne G_M1843_IG74 - ;; size=40 bbWeight=0.50 PerfScore 4.54 -G_M1843_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref - mov rdx, qword ptr [(reloc)] - mov bword ptr [rbp-0x248], rdx
+ test eax, eax + je G_M1843_IG41 + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + mov bword ptr [rbp-0x248], rax
; GC ptr vars +{V47}
- lea r8, bword ptr [rdx+0x08] - ; byrRegs +[r8] - mov bword ptr [rbp-0x240], r8
+ lea rdx, bword ptr [rax+0x08] + ; byrRegs +[rdx] + mov bword ptr [rbp-0x240], rdx
; GC ptr vars +{V46}
- ;; size=25 bbWeight=0.50 PerfScore 2.25 -G_M1843_IG09: ; bbWeight=0.50, nogc, extend - movups xmm0, xmmword ptr [r8]
+ ;; size=45 bbWeight=0.50 PerfScore 4.04 +G_M1843_IG08: ; bbWeight=0.50, nogc, extend + movups xmm0, xmmword ptr [rdx]
movups xmmword ptr [rbp-0x170], xmm0
- movups xmm0, xmmword ptr [r8+0x10]
+ movups xmm0, xmmword ptr [rdx+0x10]
movups xmmword ptr [rbp-0x160], xmm0
- mov rcx, qword ptr [r8+0x20]
+ mov rcx, qword ptr [rdx+0x20]
mov qword ptr [rbp-0x150], rcx
- ;; size=34 bbWeight=0.50 PerfScore 6.50 -G_M1843_IG10: ; bbWeight=0.50, extend
+ ;; size=32 bbWeight=0.50 PerfScore 6.50 +G_M1843_IG09: ; bbWeight=0.50, extend
lea rdi, [rsp] lea rsi, [rbp-0x170] mov rcx, gword ptr [rsi] @@ -163,9 +159,9 @@ G_M1843_IG10: ; bbWeight=0.50, extend ; byrRegs +[rdi] call <unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[rdi r8]
+ ; byrRegs -[rax rdx rdi]
test eax, eax
- je G_M1843_IG12
+ je G_M1843_IG11
mov r13d, 1 lea rdi, [rsp] lea rsi, [rbp-0x58] @@ -215,7 +211,7 @@ G_M1843_IG10: ; bbWeight=0.50, extend movsq movsq ;; size=230 bbWeight=0.50 PerfScore 23.88
-G_M1843_IG11: ; bbWeight=0.50, extend
+G_M1843_IG10: ; bbWeight=0.50, extend
mov rcx, bword ptr [rsi] mov bword ptr [rsp+0x90], rcx add rsi, 8 @@ -230,14 +226,14 @@ G_M1843_IG11: ; bbWeight=0.50, extend xor ecx, ecx test r12d, r12d sete cl
- movzx rax, cl - mov dword ptr [rbp-0x34], eax
+ movzx rcx, cl + mov dword ptr [rbp-0x34], ecx
;; size=52 bbWeight=0.50 PerfScore 4.62
-G_M1843_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M1843_IG18
+ jne G_M1843_IG17
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M1843_IG13: ; bbWeight=0.50, nogc, extend
+G_M1843_IG12: ; bbWeight=0.50, nogc, extend
mov rdx, bword ptr [rbp-0x240] ; byrRegs +[rdx] movups xmm0, xmmword ptr [rdx] @@ -247,7 +243,7 @@ G_M1843_IG13: ; bbWeight=0.50, nogc, extend mov rcx, qword ptr [rdx+0x20] mov qword ptr [rbp-0x178], rcx ;; size=39 bbWeight=0.50 PerfScore 7.00
-G_M1843_IG14: ; bbWeight=0.50, extend
+G_M1843_IG13: ; bbWeight=0.50, extend
lea rdi, [rsp] lea rsi, [rbp-0x198] mov rcx, gword ptr [rsi] @@ -268,7 +264,7 @@ G_M1843_IG14: ; bbWeight=0.50, extend ; gcrRegs -[rcx] ; byrRegs -[rdx rdi] test eax, eax
- je G_M1843_IG18
+ je G_M1843_IG17
mov r13d, 1 lea rax, bword ptr [rbx+0x70] ; byrRegs +[rax] @@ -319,7 +315,7 @@ G_M1843_IG14: ; bbWeight=0.50, extend movsq movsq ;; size=230 bbWeight=0.50 PerfScore 23.88
-G_M1843_IG15: ; bbWeight=0.50, isz, extend
+G_M1843_IG14: ; bbWeight=0.50, isz, extend
mov rcx, bword ptr [rsi] mov bword ptr [rsp+0x90], rcx add rsi, 8 @@ -331,24 +327,24 @@ G_M1843_IG15: ; bbWeight=0.50, isz, extend ; byrRegs -[rax rcx] mov r12d, eax cmp dword ptr [rbp-0x34], 0
- jne SHORT G_M1843_IG16
+ jne SHORT G_M1843_IG15
xor ecx, ecx test r12d, r12d sete cl
- jmp SHORT G_M1843_IG17
+ jmp SHORT G_M1843_IG16
;; size=54 bbWeight=0.50 PerfScore 6.50
-G_M1843_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov ecx, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M1843_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
movzx rax, cl mov dword ptr [rbp-0x34], eax ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M1843_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M1843_IG24
+ jne G_M1843_IG23
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M1843_IG19: ; bbWeight=0.50, nogc, extend
+G_M1843_IG18: ; bbWeight=0.50, nogc, extend
mov rdi, bword ptr [rbp-0x240] ; byrRegs +[rdi] movups xmm0, xmmword ptr [rdi] @@ -358,7 +354,7 @@ G_M1843_IG19: ; bbWeight=0.50, nogc, extend mov rcx, qword ptr [rdi+0x20] mov qword ptr [rbp-0x1A0], rcx ;; size=39 bbWeight=0.50 PerfScore 7.00
-G_M1843_IG20: ; bbWeight=0.50, extend
+G_M1843_IG19: ; bbWeight=0.50, extend
lea rdi, [rsp] ; byrRegs -[rdi] lea rsi, [rbp-0x1C0] @@ -381,7 +377,7 @@ G_M1843_IG20: ; bbWeight=0.50, extend ; gcrRegs -[rcx] ; byrRegs -[rdi] test eax, eax
- je G_M1843_IG24
+ je G_M1843_IG23
mov r13d, 1 lea rax, bword ptr [rbx+0x70] ; byrRegs +[rax] @@ -433,7 +429,7 @@ G_M1843_IG20: ; bbWeight=0.50, extend movsq movsq ;; size=230 bbWeight=0.50 PerfScore 23.88
-G_M1843_IG21: ; bbWeight=0.50, isz, extend
+G_M1843_IG20: ; bbWeight=0.50, isz, extend
mov rcx, bword ptr [rsi] mov bword ptr [rsp+0x90], rcx add rsi, 8 @@ -446,24 +442,24 @@ G_M1843_IG21: ; bbWeight=0.50, isz, extend ; byrRegs -[rax rcx] mov r12d, eax cmp dword ptr [rbp-0x34], 0
- jne SHORT G_M1843_IG22
+ jne SHORT G_M1843_IG21
xor ecx, ecx test r12d, r12d sete cl
- jmp SHORT G_M1843_IG23
+ jmp SHORT G_M1843_IG22
;; size=54 bbWeight=0.50 PerfScore 6.50
-G_M1843_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov ecx, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M1843_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
movzx rax, cl mov dword ptr [rbp-0x34], eax ;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M1843_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M1843_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
test r12d, r12d
- jne G_M1843_IG30
+ jne G_M1843_IG29
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M1843_IG25: ; bbWeight=0.50, nogc, extend
+G_M1843_IG24: ; bbWeight=0.50, nogc, extend
mov rdx, bword ptr [rbp-0x248] ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 45 42 1 2 -3,059 +6
benchmarks.run_pgo.linux.x64.checked.mch 136 132 0 4 -4,385 +0
benchmarks.run_tiered.linux.x64.checked.mch 181 178 0 3 -9,435 +0
coreclr_tests.run.linux.x64.checked.mch 16 16 0 0 -740 +0
libraries.crossgen2.linux.x64.checked.mch 6 4 2 0 -19 +2
libraries.pmi.linux.x64.checked.mch 627 577 49 1 -20,416 +196
libraries_tests.run.linux.x64.Release.mch 98 95 2 1 -2,921 +30
librariestestsnotieredcompilation.run.linux.x64.Release.mch 75 75 0 0 -3,412 +0
realworld.run.linux.x64.checked.mch 90 82 7 1 -10,909 +27
smoke_tests.nativeaot.linux.x64.checked.mch 175 175 0 0 -5,769 +0
1,449 1,376 61 12 -61,065 +261

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 972 0 972 0 (0.00%) 1,311 (48.94%)
benchmarks.run_pgo.linux.x64.checked.mch 8,780 7,128 1,652 1 (0.01%) 6,151 (40.13%)
benchmarks.run_tiered.linux.x64.checked.mch 8,667 7,174 1,493 0 (0.00%) 5,057 (35.81%)
coreclr_tests.run.linux.x64.checked.mch 998 757 241 0 (0.00%) 1,165 (45.53%)
libraries.crossgen2.linux.x64.checked.mch 101,670 13 101,657 0 (0.00%) 87,432 (46.14%)
libraries.pmi.linux.x64.checked.mch 2,531 0 2,531 0 (0.00%) 1,501 (33.90%)
libraries_tests.run.linux.x64.Release.mch 4,528 3,659 869 0 (0.00%) 4,484 (47.66%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 838 0 838 0 (0.00%) 1,371 (52.63%)
realworld.run.linux.x64.checked.mch 1,761 0 1,761 1 (0.02%) 3,315 (60.58%)
smoke_tests.nativeaot.linux.x64.checked.mch 5,557 3 5,554 0 (0.00%) 4,725 (44.25%)
136,302 18,734 117,568 2 (0.00%) 116,512 (45.38%)

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: 140354 (overridden on cmd)
Total bytes of diff: 137301 (overridden on cmd)
Total bytes of delta: -3053 (-2.18 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 1890.dasm (3.08 % of base)

Top file improvements (bytes):
        -502 : 701.dasm (-79.94 % of base)
        -422 : 1641.dasm (-65.83 % of base)
        -232 : 1263.dasm (-68.04 % of base)
        -217 : 9.dasm (-68.89 % of base)
        -115 : 410.dasm (-42.28 % of base)
        -110 : 1775.dasm (-34.81 % of base)
        -108 : 1603.dasm (-22.98 % of base)
        -106 : 1710.dasm (-29.28 % of base)
        -104 : 733.dasm (-29.21 % of base)
         -91 : 2325.dasm (-23.45 % of base)
         -73 : 240.dasm (-12.87 % of base)
         -59 : 3145.dasm (-15.25 % of base)
         -48 : 1074.dasm (-46.60 % of base)
         -43 : 1611.dasm (-46.74 % of base)
         -43 : 1657.dasm (-22.40 % of base)
         -42 : 2389.dasm (-13.00 % of base)
         -40 : 1637.dasm (-3.31 % of base)
         -38 : 2190.dasm (-15.70 % of base)
         -38 : 2153.dasm (-19.39 % of base)
         -38 : 337.dasm (-15.90 % of base)

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

Top method regressions (bytes):
           6 (3.08 % of base) : 1890.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

Top method improvements (bytes):
        -502 (-79.94 % of base) : 701.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -422 (-65.83 % of base) : 1641.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (FullOpts)
        -232 (-68.04 % of base) : 1263.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -217 (-68.89 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -115 (-42.28 % of base) : 410.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -110 (-34.81 % of base) : 1775.dasm - System.HashCode:Add(int):this (FullOpts)
        -108 (-22.98 % of base) : 1603.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -106 (-29.28 % of base) : 1710.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -104 (-29.21 % of base) : 733.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -91 (-23.45 % of base) : 2325.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
         -73 (-12.87 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -59 (-15.25 % of base) : 3145.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (FullOpts)
         -48 (-46.60 % of base) : 1074.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -43 (-22.40 % of base) : 1657.dasm - System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this (FullOpts)
         -43 (-46.74 % of base) : 1611.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -42 (-13.00 % of base) : 2389.dasm - System.Security.Cryptography.OidLookup:ToOid(System.String,int,ubyte):System.String (FullOpts)
         -40 (-3.31 % of base) : 1637.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
         -38 (-19.39 % of base) : 2153.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -38 (-15.70 % of base) : 2190.dasm - System.ConsolePal:WriteFromConsoleStream(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte]) (FullOpts)
         -38 (-15.90 % of base) : 337.dasm - System.Reflection.PseudoCustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType):ubyte (FullOpts)

Top method regressions (percentages):
           6 (3.08 % of base) : 1890.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
        -502 (-79.94 % of base) : 701.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -217 (-68.89 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -232 (-68.04 % of base) : 1263.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -422 (-65.83 % of base) : 1641.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (FullOpts)
         -31 (-50.82 % of base) : 989.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -23 (-50.00 % of base) : 2581.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -43 (-46.74 % of base) : 1611.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -48 (-46.60 % of base) : 1074.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -34 (-46.58 % of base) : 3185.dasm - System.IO.Directory:EnumerateFiles(System.String):System.Collections.Generic.IEnumerable`1[System.String] (FullOpts)
         -28 (-45.16 % of base) : 2147.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -31 (-43.66 % of base) : 2156.dasm - System.ConsolePal:GetConsoleEncoding():System.Text.Encoding (FullOpts)
        -115 (-42.28 % of base) : 410.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
         -31 (-41.33 % of base) : 1326.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:BitwiseAndOperatorBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)
         -31 (-38.75 % of base) : 1009.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (FullOpts)
         -31 (-38.75 % of base) : 1008.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
         -31 (-37.80 % of base) : 1360.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
        -110 (-34.81 % of base) : 1775.dasm - System.HashCode:Add(int):this (FullOpts)
         -31 (-31.96 % of base) : 23.dasm - System.StartupHookProvider:ManagedStartup(ulong) (FullOpts)
         -34 (-31.48 % of base) : 1836.dasm - System.Text.Json.Serialization.Converters.NullableConverterFactory:CanConvert(System.Type):ubyte:this (FullOpts)
        -106 (-29.28 % of base) : 1710.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)

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


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: 948560 (overridden on cmd)
Total bytes of diff: 944175 (overridden on cmd)
Total bytes of delta: -4385 (-0.46 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -300 : 14337.dasm (-14.66 % of base)
        -252 : 4796.dasm (-30.22 % of base)
        -206 : 6017.dasm (-22.86 % of base)
        -135 : 13012.dasm (-15.32 % of base)
        -106 : 3381.dasm (-63.10 % of base)
        -106 : 3382.dasm (-63.10 % of base)
        -104 : 14449.dasm (-23.96 % of base)
         -80 : 4554.dasm (-44.44 % of base)
         -80 : 8287.dasm (-59.70 % of base)
         -66 : 11410.dasm (-53.66 % of base)
         -60 : 21.dasm (-32.43 % of base)
         -59 : 5636.dasm (-8.86 % of base)
         -56 : 10482.dasm (-40.58 % of base)
         -54 : 8479.dasm (-21.34 % of base)
         -50 : 6843.dasm (-35.97 % of base)
         -50 : 10759.dasm (-41.32 % of base)
         -50 : 6577.dasm (-39.68 % of base)
         -46 : 5511.dasm (-31.51 % of base)
         -45 : 12643.dasm (-45.00 % of base)
         -44 : 5541.dasm (-53.66 % of base)

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

Top method improvements (bytes):
        -300 (-14.66 % of base) : 14337.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -252 (-30.22 % of base) : 4796.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -206 (-22.86 % of base) : 6017.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -135 (-15.32 % of base) : 13012.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -106 (-63.10 % of base) : 3382.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 3381.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
        -104 (-23.96 % of base) : 14449.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (Tier0)
         -80 (-44.44 % of base) : 4554.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -80 (-59.70 % of base) : 8287.dasm - System.Net.SocketAddress:.cctor() (Tier0)
         -66 (-53.66 % of base) : 11410.dasm - System.Xml.XmlUTF8NodeWriter:.ctor():this (Tier0)
         -60 (-32.43 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -59 (-8.86 % of base) : 5636.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier0)
         -56 (-40.58 % of base) : 10482.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -54 (-21.34 % of base) : 8479.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -50 (-39.68 % of base) : 6577.dasm - System.Numerics.Tests.Perf_Vector2:DistanceSquaredBenchmark():float:this (Tier0)
         -50 (-35.97 % of base) : 6843.dasm - System.Numerics.Tests.Perf_Vector3:AddOperatorBenchmark():System.Numerics.Vector3:this (Tier0)
         -50 (-41.32 % of base) : 10759.dasm - System.Numerics.Tests.Perf_Vector4:DivideBenchmark():System.Numerics.Vector4:this (Tier0)
         -46 (-31.51 % of base) : 5511.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)
         -45 (-45.00 % of base) : 12643.dasm - System.Threading.Tasks.TaskReplicator+Replica+<>c:<.ctor>b__4_0(System.Object):this (Instrumented Tier0)
         -44 (-53.66 % of base) : 5541.dasm - System.Runtime.CompilerServices.AsyncMethodBuilderCore:get_TrackAsyncMethodCompletion():ubyte (Tier0)

Top method improvements (percentages):
        -106 (-63.10 % of base) : 3382.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 3381.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-60.61 % of base) : 8959.dasm - Internal.Cryptography.Helpers:get_HasSymmetricEncryption():ubyte (Tier0)
         -20 (-60.61 % of base) : 1489.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-60.61 % of base) : 68.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 2770.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-60.61 % of base) : 8298.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -20 (-60.61 % of base) : 2259.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 11393.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-60.61 % of base) : 4524.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -20 (-60.61 % of base) : 3351.dasm - System.Threading.Lock:get_ContentionCount():long (Tier0)
         -20 (-60.61 % of base) : 3359.dasm - System.Threading.ThreadPool:EnsureConfigInitialized():ubyte (Tier0)
         -80 (-59.70 % of base) : 8287.dasm - System.Net.SocketAddress:.cctor() (Tier0)
         -44 (-53.66 % of base) : 5541.dasm - System.Runtime.CompilerServices.AsyncMethodBuilderCore:get_TrackAsyncMethodCompletion():ubyte (Tier0)
         -66 (-53.66 % of base) : 11410.dasm - System.Xml.XmlUTF8NodeWriter:.ctor():this (Tier0)
         -20 (-51.28 % of base) : 12072.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -20 (-51.28 % of base) : 7110.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
         -20 (-51.28 % of base) : 12420.dasm - System.Random:get_Shared():System.Random (Tier0)
         -20 (-51.28 % of base) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -20 (-51.28 % of base) : 30.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)


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: 796003 (overridden on cmd)
Total bytes of diff: 786568 (overridden on cmd)
Total bytes of delta: -9435 (-1.19 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1933 : 12596.dasm (-35.48 % of base)
        -502 : 3196.dasm (-79.94 % of base)
        -384 : 4424.dasm (-63.68 % of base)
        -300 : 11459.dasm (-14.66 % of base)
        -275 : 9239.dasm (-76.18 % of base)
        -252 : 5965.dasm (-30.22 % of base)
        -206 : 5994.dasm (-22.86 % of base)
        -161 : 8373.dasm (-23.85 % of base)
        -120 : 7699.dasm (-32.35 % of base)
        -110 : 4432.dasm (-48.89 % of base)
        -110 : 4433.dasm (-49.33 % of base)
        -108 : 4292.dasm (-22.98 % of base)
        -106 : 3779.dasm (-63.10 % of base)
        -106 : 3780.dasm (-63.10 % of base)
        -104 : 11558.dasm (-23.96 % of base)
        -104 : 3281.dasm (-29.21 % of base)
         -97 : 4286.dasm (-52.15 % of base)
         -96 : 4285.dasm (-53.33 % of base)
         -96 : 7723.dasm (-53.33 % of base)
         -81 : 13761.dasm (-24.18 % of base)

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

Top method improvements (bytes):
       -1933 (-35.48 % of base) : 12596.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -502 (-79.94 % of base) : 3196.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -384 (-63.68 % of base) : 4424.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
        -300 (-14.66 % of base) : 11459.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -275 (-76.18 % of base) : 9239.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -252 (-30.22 % of base) : 5965.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -206 (-22.86 % of base) : 5994.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -161 (-23.85 % of base) : 8373.dasm - System.Net.Security.SslConnectionInfo:UpdateSslConnectionInfo(Microsoft.Win32.SafeHandles.SafeSslHandle):this (Tier0)
        -120 (-32.35 % of base) : 7699.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:GetCollections():System.Tuple`2[Microsoft.Win32.SafeHandles.SafeX509StackHandle,Microsoft.Win32.SafeHandles.SafeX509StackHandle] (Tier0)
        -110 (-48.89 % of base) : 4432.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:GetResult():int:this (Tier1)
        -110 (-49.33 % of base) : 4433.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
        -108 (-22.98 % of base) : 4292.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -106 (-63.10 % of base) : 3780.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 3779.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
        -104 (-23.96 % of base) : 11558.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (Tier0)
        -104 (-29.21 % of base) : 3281.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
         -97 (-52.15 % of base) : 4286.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -96 (-53.33 % of base) : 7723.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
         -96 (-53.33 % of base) : 4285.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -81 (-24.18 % of base) : 13761.dasm - Sigil.Impl.TypeOnStack+TypeCache:Get(System.Type):Sigil.Impl.TypeOnStack (Tier0)

Top method improvements (percentages):
        -502 (-79.94 % of base) : 3196.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -275 (-76.18 % of base) : 9239.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -384 (-63.68 % of base) : 4424.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
        -106 (-63.10 % of base) : 3780.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 3779.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-62.50 % of base) : 12484.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
         -20 (-60.61 % of base) : 6970.dasm - Internal.Cryptography.Helpers:get_HasSymmetricEncryption():ubyte (Tier0)
         -20 (-60.61 % of base) : 10648.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -20 (-60.61 % of base) : 1293.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-60.61 % of base) : 12668.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 65.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 2487.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-60.61 % of base) : 12588.dasm - System.Net.Http.GlobalHttpSettings+DiagnosticsHandler:get_EnableActivityPropagation():ubyte (Tier0)
         -20 (-60.61 % of base) : 6317.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -20 (-60.61 % of base) : 12337.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 2022.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8041.dasm - System.Security.Cryptography.SafeEvpPKeyHandle:get_OpenSslVersion():long (Tier0)
         -20 (-60.61 % of base) : 8459.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-60.61 % of base) : 5604.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -20 (-60.61 % of base) : 4241.dasm - System.Threading.Lock:get_ContentionCount():long (Tier0)


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: 165738 (overridden on cmd)
Total bytes of diff: 164998 (overridden on cmd)
Total bytes of delta: -740 (-0.45 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -259 : 243.dasm (-29.63 % of base)
        -111 : 1163.dasm (-48.68 % of base)
         -97 : 996.dasm (-53.59 % of base)
         -54 : 51.dasm (-23.89 % of base)
         -32 : 472.dasm (-22.22 % of base)
         -32 : 512.dasm (-19.39 % of base)
         -20 : 644.dasm (-28.17 % of base)
         -20 : 286.dasm (-9.35 % of base)
         -20 : 44.dasm (-13.61 % of base)
         -20 : 799.dasm (-51.28 % of base)
         -20 : 283.dasm (-15.27 % of base)
         -20 : 41.dasm (-21.74 % of base)
         -20 : 71.dasm (-45.45 % of base)
          -5 : 1953.dasm (-7.94 % of base)
          -5 : 1799.dasm (-11.36 % of base)
          -5 : 176.dasm (-5.32 % of base)

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

Top method improvements (bytes):
        -259 (-29.63 % of base) : 243.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
        -111 (-48.68 % of base) : 1163.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
         -97 (-53.59 % of base) : 996.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
         -54 (-23.89 % of base) : 51.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -32 (-19.39 % of base) : 512.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -32 (-22.22 % of base) : 472.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -20 (-21.74 % of base) : 41.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -20 (-45.45 % of base) : 71.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
         -20 (-13.61 % of base) : 44.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)
         -20 (-15.27 % of base) : 283.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(long,ubyte):this (Tier0)
         -20 (-9.35 % of base) : 286.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
         -20 (-51.28 % of base) : 799.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
         -20 (-28.17 % of base) : 644.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
          -5 (-7.94 % of base) : 1953.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
          -5 (-11.36 % of base) : 1799.dasm - Helper:Create(int):int (Tier0)
          -5 (-5.32 % of base) : 176.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

Top method improvements (percentages):
         -97 (-53.59 % of base) : 996.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
         -20 (-51.28 % of base) : 799.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
        -111 (-48.68 % of base) : 1163.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
         -20 (-45.45 % of base) : 71.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
        -259 (-29.63 % of base) : 243.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
         -20 (-28.17 % of base) : 644.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
         -54 (-23.89 % of base) : 51.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -32 (-22.22 % of base) : 472.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -20 (-21.74 % of base) : 41.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -32 (-19.39 % of base) : 512.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -20 (-15.27 % of base) : 283.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(long,ubyte):this (Tier0)
         -20 (-13.61 % of base) : 44.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)
          -5 (-11.36 % of base) : 1799.dasm - Helper:Create(int):int (Tier0)
         -20 (-9.35 % of base) : 286.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          -5 (-7.94 % of base) : 1953.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
          -5 (-5.32 % of base) : 176.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

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


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: 7809464 (overridden on cmd)
Total bytes of diff: 7809447 (overridden on cmd)
Total bytes of delta: -17 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           1 : 171954.dasm (4.35 % of base)
           1 : 34390.dasm (4.35 % of base)

Top file improvements (bytes):
         -13 : 6513.dasm (-2.91 % of base)
          -4 : 154290.dasm (-3.33 % of base)
          -1 : 154294.dasm (-1.61 % of base)
          -1 : 157120.dasm (-0.98 % of base)

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

Top method regressions (bytes):
           1 (4.35 % of base) : 34390.dasm - <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
           1 (4.35 % of base) : 171954.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

Top method improvements (bytes):
         -13 (-2.91 % of base) : 6513.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -4 (-3.33 % of base) : 154290.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -1 (-0.98 % of base) : 157120.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -1 (-1.61 % of base) : 154294.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method regressions (percentages):
           1 (4.35 % of base) : 34390.dasm - <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
           1 (4.35 % of base) : 171954.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

Top method improvements (percentages):
          -4 (-3.33 % of base) : 154290.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
         -13 (-2.91 % of base) : 6513.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -1 (-1.61 % of base) : 154294.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -1 (-0.98 % of base) : 157120.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)

6 total methods with Code Size differences (4 improved, 2 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: 117804 (overridden on cmd)
Total bytes of diff: 97584 (overridden on cmd)
Total bytes of delta: -20220 (-17.16 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 751.dasm (3.36 % of base)
           4 : 752.dasm (3.05 % of base)
           4 : 762.dasm (3.36 % of base)
           4 : 763.dasm (3.36 % of base)
           4 : 775.dasm (2.72 % of base)
           4 : 780.dasm (3.10 % of base)
           4 : 781.dasm (3.42 % of base)
           4 : 792.dasm (3.33 % of base)
           4 : 795.dasm (3.33 % of base)
           4 : 823.dasm (3.42 % of base)
           4 : 728.dasm (2.72 % of base)
           4 : 748.dasm (3.36 % of base)
           4 : 753.dasm (3.36 % of base)
           4 : 764.dasm (3.36 % of base)
           4 : 765.dasm (3.36 % of base)
           4 : 776.dasm (3.42 % of base)
           4 : 777.dasm (3.42 % of base)
           4 : 818.dasm (3.42 % of base)
           4 : 819.dasm (3.42 % of base)
           4 : 820.dasm (3.42 % of base)

Top file improvements (bytes):
        -156 : 3361.dasm (-36.71 % of base)
        -100 : 815.dasm (-38.76 % of base)
         -96 : 811.dasm (-38.25 % of base)
         -96 : 812.dasm (-38.25 % of base)
         -95 : 801.dasm (-38.31 % of base)
         -95 : 813.dasm (-38.31 % of base)
         -95 : 814.dasm (-38.31 % of base)
         -95 : 816.dasm (-38.31 % of base)
         -93 : 759.dasm (-37.05 % of base)
         -93 : 773.dasm (-37.05 % of base)
         -92 : 829.dasm (-37.10 % of base)
         -92 : 787.dasm (-37.10 % of base)
         -87 : 797.dasm (-36.71 % of base)
         -87 : 798.dasm (-36.71 % of base)
         -86 : 802.dasm (-36.75 % of base)
         -86 : 799.dasm (-36.75 % of base)
         -86 : 800.dasm (-36.75 % of base)
         -84 : 774.dasm (-36.36 % of base)
         -84 : 757.dasm (-36.36 % of base)
         -84 : 758.dasm (-35.44 % of base)

87 total files with Code Size differences (56 improved, 31 regressed), 1 unchanged.

Top method regressions (bytes):
           4 (3.33 % of base) : 792.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],double,System.Nullable`1[int]):int (FullOpts)
           4 (3.33 % of base) : 795.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],double,System.Nullable`1[int]):long (FullOpts)
           4 (3.33 % of base) : 791.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],double,System.Nullable`1[int]):short (FullOpts)
           4 (3.42 % of base) : 779.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],int,System.Nullable`1[int]):double (FullOpts)
           4 (3.42 % of base) : 778.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],int,System.Nullable`1[int]):int (FullOpts)
           4 (3.42 % of base) : 781.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
           4 (3.42 % of base) : 777.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
           4 (2.72 % of base) : 775.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.Nullable`1[int]):System.__Canon (FullOpts)
           4 (3.10 % of base) : 780.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.Numerics.Vector`1[float]]],int,System.Nullable`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           4 (3.42 % of base) : 776.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.42 % of base) : 821.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],long,System.Nullable`1[int]):double (FullOpts)
           4 (3.42 % of base) : 820.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
           4 (3.42 % of base) : 823.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
           4 (3.42 % of base) : 819.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],long,System.Nullable`1[int]):short (FullOpts)
           4 (3.42 % of base) : 818.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],long,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.36 % of base) : 765.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],short,System.Nullable`1[int]):double (FullOpts)
           4 (3.36 % of base) : 764.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],short,System.Nullable`1[int]):int (FullOpts)
           4 (3.36 % of base) : 767.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],short,System.Nullable`1[int]):long (FullOpts)
           4 (3.36 % of base) : 763.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],short,System.Nullable`1[int]):short (FullOpts)
           4 (3.36 % of base) : 762.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],short,System.Nullable`1[int]):ubyte (FullOpts)

Top method improvements (bytes):
        -156 (-36.71 % of base) : 3361.dasm - Microsoft.FSharp.Linq.QueryModule:|ZeroOnElseBranch|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] (FullOpts)
        -100 (-38.76 % of base) : 815.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -96 (-38.25 % of base) : 812.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[short,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],short):System.Nullable`1[int] (FullOpts)
         -96 (-38.25 % of base) : 811.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[ubyte,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte):System.Nullable`1[int] (FullOpts)
         -95 (-38.31 % of base) : 801.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],double,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -95 (-38.31 % of base) : 814.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -95 (-38.31 % of base) : 813.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[int,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],int):System.Nullable`1[int] (FullOpts)
         -95 (-38.31 % of base) : 816.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -93 (-37.05 % of base) : 773.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],short,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -93 (-37.05 % of base) : 759.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -92 (-37.10 % of base) : 787.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],int,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -92 (-37.10 % of base) : 829.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],long,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -87 (-36.71 % of base) : 798.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[short,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]]],double,System.Nullable`1[int],short):System.Nullable`1[int] (FullOpts)
         -87 (-36.71 % of base) : 797.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[ubyte,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]]],double,System.Nullable`1[int],ubyte):System.Nullable`1[int] (FullOpts)
         -86 (-36.75 % of base) : 800.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],double,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -86 (-36.75 % of base) : 799.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[int,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]]],double,System.Nullable`1[int],int):System.Nullable`1[int] (FullOpts)
         -86 (-36.75 % of base) : 802.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],double,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -84 (-36.36 % of base) : 774.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],short,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -84 (-35.44 % of base) : 758.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -84 (-36.36 % of base) : 757.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[int,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],int):System.Nullable`1[int] (FullOpts)

Top method regressions (percentages):
           4 (3.42 % of base) : 779.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],int,System.Nullable`1[int]):double (FullOpts)
           4 (3.42 % of base) : 778.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],int,System.Nullable`1[int]):int (FullOpts)
           4 (3.42 % of base) : 781.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
           4 (3.42 % of base) : 777.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
           4 (3.42 % of base) : 776.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.42 % of base) : 821.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],long,System.Nullable`1[int]):double (FullOpts)
           4 (3.42 % of base) : 820.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
           4 (3.42 % of base) : 823.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
           4 (3.42 % of base) : 819.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],long,System.Nullable`1[int]):short (FullOpts)
           4 (3.42 % of base) : 818.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],long,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.36 % of base) : 765.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],short,System.Nullable`1[int]):double (FullOpts)
           4 (3.36 % of base) : 764.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],short,System.Nullable`1[int]):int (FullOpts)
           4 (3.36 % of base) : 767.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],short,System.Nullable`1[int]):long (FullOpts)
           4 (3.36 % of base) : 763.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],short,System.Nullable`1[int]):short (FullOpts)
           4 (3.36 % of base) : 762.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],short,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.36 % of base) : 751.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],ubyte,System.Nullable`1[int]):double (FullOpts)
           4 (3.36 % of base) : 750.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],ubyte,System.Nullable`1[int]):int (FullOpts)
           4 (3.36 % of base) : 753.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],ubyte,System.Nullable`1[int]):long (FullOpts)
           4 (3.36 % of base) : 749.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],ubyte,System.Nullable`1[int]):short (FullOpts)
           4 (3.36 % of base) : 748.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],ubyte,System.Nullable`1[int]):ubyte (FullOpts)

Top method improvements (percentages):
         -31 (-77.50 % of base) : 1793.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
         -31 (-68.89 % of base) : 2306.dasm - Microsoft.FSharp.Control.Trampoline:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 1892.dasm - Microsoft.FSharp.Quotations.FSharpVar:.cctor() (FullOpts)
         -49 (-67.12 % of base) : 3910.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+CleanupLeaf@294:Invoke(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Quotations.FSharpExpr:this (FullOpts)
         -49 (-63.64 % of base) : 957.dasm - Microsoft.FSharp.Core.FSharpResult`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -49 (-63.64 % of base) : 996.dasm - Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]:GetHashCode():int:this (FullOpts)
         -31 (-62.00 % of base) : 2296.dasm - Microsoft.FSharp.Control.AsyncReturn:get_AsyncReturn():Microsoft.FSharp.Control.AsyncReturn (FullOpts)
         -31 (-62.00 % of base) : 1986.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AddressOfOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1990.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AddressSetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1930.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AppOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1932.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_IfThenElseOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1938.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1936.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetRecCombOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1934.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetRecOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1984.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_SequentialOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1996.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_TryFinallyOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1994.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_TryWithOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1988.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_VarSetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 2000.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_WhileLoopOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -31 (-62.00 % of base) : 1725.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_ActivePatternResult():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (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: 619081 (overridden on cmd)
Total bytes of diff: 616190 (overridden on cmd)
Total bytes of delta: -2891 (-0.47 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 4416.dasm (12.50 % of base)
          14 : 2502.dasm (3.62 % of base)

Top file improvements (bytes):
        -259 : 169.dasm (-29.63 % of base)
        -104 : 1809.dasm (-8.16 % of base)
         -97 : 7978.dasm (-53.59 % of base)
         -80 : 4498.dasm (-17.39 % of base)
         -77 : 1046.dasm (-31.17 % of base)
         -65 : 5617.dasm (-21.89 % of base)
         -65 : 5812.dasm (-21.89 % of base)
         -65 : 5877.dasm (-23.99 % of base)
         -60 : 6092.dasm (-60.61 % of base)
         -60 : 5758.dasm (-60.61 % of base)
         -60 : 6122.dasm (-60.61 % of base)
         -54 : 38.dasm (-23.89 % of base)
         -54 : 6900.dasm (-21.34 % of base)
         -45 : 5937.dasm (-36.29 % of base)
         -40 : 1122.dasm (-39.60 % of base)
         -40 : 3601.dasm (-8.77 % of base)
         -40 : 4411.dasm (-12.70 % of base)
         -40 : 3373.dasm (-22.86 % of base)
         -40 : 5055.dasm (-50.00 % of base)
         -34 : 394.dasm (-21.66 % of base)

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

Top method regressions (bytes):
          16 (12.50 % of base) : 4416.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
          14 (3.62 % of base) : 2502.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

Top method improvements (bytes):
        -259 (-29.63 % of base) : 169.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
        -104 (-8.16 % of base) : 1809.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprConstant:get_Object():System.Object:this (Tier0)
         -97 (-53.59 % of base) : 7978.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
         -80 (-17.39 % of base) : 4498.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -77 (-31.17 % of base) : 1046.dasm - Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon (Tier0)
         -65 (-23.99 % of base) : 5877.dasm - NativeExports.ComInterfaceGenerator.ArrayMarshalling+MyComWrapper:get_GetIntArrayVTable():ulong (Tier0)
         -65 (-21.89 % of base) : 5617.dasm - NativeExports.ComInterfaceGenerator.GetAndSetInt+MyComWrapper:get_s_comInterface1VTable():ulong (Tier0)
         -65 (-21.89 % of base) : 5812.dasm - NativeExports.ComInterfaceGenerator.GetPoint+ImplementingObject+ABI:get_VTable():ulong (Tier0)
         -60 (-60.61 % of base) : 5758.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-60.61 % of base) : 6092.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-60.61 % of base) : 6122.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -54 (-21.34 % of base) : 6900.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -54 (-23.89 % of base) : 38.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -45 (-36.29 % of base) : 5937.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():ulong (Tier0)
         -40 (-22.86 % of base) : 3373.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-39.60 % of base) : 1122.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
         -40 (-12.70 % of base) : 4411.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -40 (-8.77 % of base) : 3601.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -40 (-50.00 % of base) : 5055.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -34 (-21.66 % of base) : 394.dasm - System.Text.Json.JsonSerializer:GetTypeInfo(System.Text.Json.JsonSerializerOptions,System.Type):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier0)

Top method regressions (percentages):
          16 (12.50 % of base) : 4416.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
          14 (3.62 % of base) : 2502.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

Top method improvements (percentages):
         -20 (-62.50 % of base) : 3563.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -60 (-60.61 % of base) : 5758.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-60.61 % of base) : 6092.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-60.61 % of base) : 6122.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -20 (-60.61 % of base) : 7146.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
         -20 (-60.61 % of base) : 8505.dasm - System.Security.Cryptography.HMACSHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8500.dasm - System.Security.Cryptography.HMACSHA3_384:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8494.dasm - System.Security.Cryptography.HMACSHA3_512:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8502.dasm - System.Security.Cryptography.SHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8497.dasm - System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 8489.dasm - System.Security.Cryptography.SHA3_512:get_IsSupported():ubyte (Tier0)
         -20 (-60.61 % of base) : 2934.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-60.61 % of base) : 8436.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-60.61 % of base) : 403.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -97 (-53.59 % of base) : 7978.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
         -20 (-51.28 % of base) : 3368.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -20 (-51.28 % of base) : 3371.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -20 (-51.28 % of base) : 3059.dasm - System.Reflection.Metadata.MetadataStringDecoder:get_DefaultUTF8():System.Reflection.Metadata.MetadataStringDecoder (Tier0)
         -20 (-51.28 % of base) : 1897.dasm - System.Runtime.CompilerServices.CallSiteBinder:get_UpdateLabel():System.Linq.Expressions.LabelTarget (Tier0)
         -20 (-51.28 % of base) : 5621.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:get_DefaultMarshallingInstance():System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers (Tier0)


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: 67726 (overridden on cmd)
Total bytes of diff: 64314 (overridden on cmd)
Total bytes of delta: -3412 (-5.04 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -502 : 66.dasm (-79.94 % of base)
        -232 : 2298.dasm (-68.04 % of base)
        -199 : 1154.dasm (-85.41 % of base)
        -124 : 1815.dasm (-14.71 % of base)
        -104 : 476.dasm (-29.21 % of base)
         -90 : 120.dasm (-21.74 % of base)
         -80 : 138.dasm (-17.51 % of base)
         -75 : 699.dasm (-47.47 % of base)
         -73 : 9.dasm (-12.87 % of base)
         -69 : 315.dasm (-30.40 % of base)
         -43 : 1493.dasm (-58.11 % of base)
         -43 : 952.dasm (-28.86 % of base)
         -43 : 1352.dasm (-58.11 % of base)
         -43 : 1458.dasm (-58.11 % of base)
         -38 : 1903.dasm (-8.10 % of base)
         -38 : 762.dasm (-14.62 % of base)
         -38 : 123.dasm (-11.59 % of base)
         -34 : 837.dasm (-19.88 % of base)
         -32 : 1909.dasm (-16.08 % of base)
         -32 : 1930.dasm (-13.50 % of base)

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

Top method improvements (bytes):
        -502 (-79.94 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -232 (-68.04 % of base) : 2298.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -199 (-85.41 % of base) : 1154.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -124 (-14.71 % of base) : 1815.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -104 (-29.21 % of base) : 476.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -90 (-21.74 % of base) : 120.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
         -80 (-17.51 % of base) : 138.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -75 (-47.47 % of base) : 699.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -73 (-12.87 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -69 (-30.40 % of base) : 315.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -43 (-58.11 % of base) : 1352.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -43 (-58.11 % of base) : 1458.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -43 (-58.11 % of base) : 1493.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -43 (-28.86 % of base) : 952.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -38 (-11.59 % of base) : 123.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:DetermineOSPlatform():int (FullOpts)
         -38 (-8.10 % of base) : 1903.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal]):System.Decimal (FullOpts)
         -38 (-14.62 % of base) : 762.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler:AddExecutionOptions(System.String,Xunit.Abstractions.ITestFrameworkExecutionOptions):this (FullOpts)
         -34 (-19.88 % of base) : 837.dasm - System.Dynamic.Utils.TypeExtensions:GetParametersCached(System.Reflection.MethodBase):System.Reflection.ParameterInfo[] (FullOpts)
         -32 (-13.50 % of base) : 1930.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (FullOpts)
         -32 (-16.08 % of base) : 1909.dasm - System.Xml.Linq.XElement:Save(System.IO.Stream,int):this (FullOpts)

Top method improvements (percentages):
        -199 (-85.41 % of base) : 1154.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -502 (-79.94 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -31 (-79.49 % of base) : 711.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
        -232 (-68.04 % of base) : 2298.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
         -31 (-62.00 % of base) : 2025.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -31 (-62.00 % of base) : 1141.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -31 (-62.00 % of base) : 748.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -31 (-62.00 % of base) : 509.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -31 (-62.00 % of base) : 1850.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -31 (-62.00 % of base) : 756.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -31 (-62.00 % of base) : 1890.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -43 (-58.11 % of base) : 1352.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -43 (-58.11 % of base) : 1458.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -43 (-58.11 % of base) : 1493.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (FullOpts)
         -31 (-55.36 % of base) : 806.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (FullOpts)
         -75 (-47.47 % of base) : 699.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -28 (-45.16 % of base) : 309.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -31 (-44.29 % of base) : 132.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:GetRIDOS():System.String (FullOpts)
         -28 (-43.75 % of base) : 1372.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():ulong (FullOpts)
         -31 (-43.66 % of base) : 317.dasm - System.ConsolePal:GetConsoleEncoding():System.Text.Encoding (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: 361633 (overridden on cmd)
Total bytes of diff: 350751 (overridden on cmd)
Total bytes of delta: -10882 (-3.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 2209.dasm (2.72 % of base)
           4 : 3048.dasm (3.42 % of base)
           4 : 3116.dasm (2.72 % of base)
           4 : 4557.dasm (2.72 % of base)
           4 : 5156.dasm (2.42 % of base)
           4 : 5428.dasm (2.42 % of base)
           3 : 2046.dasm (3.03 % of base)

Top file improvements (bytes):
       -6440 : 4685.dasm (-75.61 % of base)
        -502 : 700.dasm (-79.94 % of base)
        -283 : 4618.dasm (-70.57 % of base)
        -217 : 9.dasm (-68.89 % of base)
        -202 : 3432.dasm (-35.63 % of base)
        -202 : 4935.dasm (-35.63 % of base)
        -115 : 409.dasm (-42.28 % of base)
        -106 : 4529.dasm (-37.06 % of base)
        -104 : 732.dasm (-29.21 % of base)
         -92 : 2557.dasm (-9.17 % of base)
         -90 : 2472.dasm (-27.69 % of base)
         -86 : 2462.dasm (-63.70 % of base)
         -76 : 2560.dasm (-11.01 % of base)
         -73 : 240.dasm (-12.87 % of base)
         -65 : 3298.dasm (-61.32 % of base)
         -62 : 2565.dasm (-42.47 % of base)
         -62 : 3260.dasm (-54.39 % of base)
         -62 : 4543.dasm (-76.54 % of base)
         -62 : 4544.dasm (-76.54 % of base)
         -61 : 2795.dasm (-43.88 % of base)

61 total files with Code Size differences (54 improved, 7 regressed), 1 unchanged.

Top method regressions (bytes):
           4 (3.42 % of base) : 3048.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.42 % of base) : 5428.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon],FSharp.Compiler.Text.Range,System.__Canon):System.__Canon (FullOpts)
           4 (2.72 % of base) : 3116.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.42 % of base) : 5156.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.Text.Range]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.Text.Range):System.__Canon (FullOpts)
           4 (2.72 % of base) : 4557.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.72 % of base) : 2209.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
           3 (3.03 % of base) : 2046.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

Top method improvements (bytes):
       -6440 (-75.61 % of base) : 4685.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -502 (-79.94 % of base) : 700.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -283 (-70.57 % of base) : 4618.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -217 (-68.89 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -202 (-35.63 % of base) : 3432.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -202 (-35.63 % of base) : 4935.dasm - FSharp.Compiler.PPParser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.PPParser+token] (FullOpts)
        -115 (-42.28 % of base) : 409.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -106 (-37.06 % of base) : 4529.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -104 (-29.21 % of base) : 732.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -92 (-9.17 % of base) : 2557.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -90 (-27.69 % of base) : 2472.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
         -86 (-63.70 % of base) : 2462.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -76 (-11.01 % of base) : 2560.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -73 (-12.87 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -65 (-61.32 % of base) : 3298.dasm - Microsoft.Build.Shared.FileSystem.FileSystems:GetFileSystem():Microsoft.Build.Shared.FileSystem.IFileSystem (FullOpts)
         -62 (-42.47 % of base) : 2565.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
         -62 (-54.39 % of base) : 3260.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -62 (-76.54 % of base) : 4544.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -62 (-76.54 % of base) : 4543.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -61 (-43.88 % of base) : 2795.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)

Top method regressions (percentages):
           4 (3.42 % of base) : 3048.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           3 (3.03 % of base) : 2046.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.72 % of base) : 3116.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.72 % of base) : 4557.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.72 % of base) : 2209.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
           4 (2.42 % of base) : 5428.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon],FSharp.Compiler.Text.Range,System.__Canon):System.__Canon (FullOpts)
           4 (2.42 % of base) : 5156.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.Text.Range]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.Text.Range):System.__Canon (FullOpts)

Top method improvements (percentages):
        -502 (-79.94 % of base) : 700.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -62 (-76.54 % of base) : 4544.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -62 (-76.54 % of base) : 4543.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
       -6440 (-75.61 % of base) : 4685.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -283 (-70.57 % of base) : 4618.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
         -31 (-68.89 % of base) : 2566.dasm - FSComp.SR:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 1719.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2756.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2918.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 5524.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2148.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2156.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2410.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2499.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2851.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 4538.dasm - FSharp.Compiler.Lexer:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 3433.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 4963.dasm - FSharp.Compiler.PPLexer:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 4936.dasm - FSharp.Compiler.PPParser:.cctor() (FullOpts)
         -31 (-68.89 % of base) : 2649.dasm - FSharp.Compiler.Syntax.PrettyNaming:.cctor() (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: 411097 (overridden on cmd)
Total bytes of diff: 405328 (overridden on cmd)
Total bytes of delta: -5769 (-1.40 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -267 : 7154.dasm (-55.86 % of base)
        -119 : 2389.dasm (-12.11 % of base)
        -101 : 6846.dasm (-10.64 % of base)
        -100 : 4709.dasm (-4.33 % of base)
         -96 : 3596.dasm (-7.47 % of base)
         -96 : 1589.dasm (-14.88 % of base)
         -90 : 1067.dasm (-12.41 % of base)
         -86 : 6780.dasm (-72.88 % of base)
         -81 : 1869.dasm (-10.33 % of base)
         -75 : 1832.dasm (-15.53 % of base)
         -69 : 2620.dasm (-47.26 % of base)
         -66 : 6545.dasm (-35.29 % of base)
         -64 : 7124.dasm (-40.00 % of base)
         -64 : 6426.dasm (-15.24 % of base)
         -63 : 1004.dasm (-13.24 % of base)
         -61 : 2920.dasm (-17.09 % of base)
         -60 : 976.dasm (-14.67 % of base)
         -57 : 3583.dasm (-8.48 % of base)
         -57 : 7132.dasm (-39.58 % of base)
         -54 : 6433.dasm (-6.78 % of base)

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

Top method improvements (bytes):
        -267 (-55.86 % of base) : 7154.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -119 (-12.11 % of base) : 2389.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -101 (-10.64 % of base) : 6846.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte,byref):uint:this (FullOpts)
        -100 (-4.33 % of base) : 4709.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-7.47 % of base) : 3596.dasm - System.DateTimeFormat:TryFormatO[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-14.88 % of base) : 1589.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -90 (-12.41 % of base) : 1067.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -86 (-72.88 % of base) : 6780.dasm - System.Threading.SpinWait:.cctor() (FullOpts)
         -81 (-10.33 % of base) : 1869.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -75 (-15.53 % of base) : 1832.dasm - System.Number:UInt64ToDecStr(ulong,int):System.String (FullOpts)
         -69 (-47.26 % of base) : 2620.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -66 (-35.29 % of base) : 6545.dasm - System.Threading.Tasks.Task:CancellationCleanupLogic():this (FullOpts)
         -64 (-40.00 % of base) : 7124.dasm - System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte) (FullOpts)
         -64 (-15.24 % of base) : 6426.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
         -63 (-13.24 % of base) : 1004.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
         -61 (-17.09 % of base) : 2920.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[],byref):long (FullOpts)
         -60 (-14.67 % of base) : 976.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
         -57 (-8.48 % of base) : 3583.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -57 (-39.58 % of base) : 7132.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult) (FullOpts)
         -54 (-6.78 % of base) : 6433.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (FullOpts)

Top method improvements (percentages):
         -86 (-72.88 % of base) : 6780.dasm - System.Threading.SpinWait:.cctor() (FullOpts)
         -23 (-60.53 % of base) : 12852.dasm - Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)
         -23 (-60.53 % of base) : 1699.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
         -23 (-60.53 % of base) : 3342.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -23 (-60.53 % of base) : 12584.dasm - Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -23 (-60.53 % of base) : 7223.dasm - System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)
         -23 (-60.53 % of base) : 13023.dasm - System.Text.DecoderFallback:get_ReplacementFallback():System.Text.DecoderFallback (FullOpts)
         -23 (-60.53 % of base) : 10556.dasm - System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)
         -23 (-60.53 % of base) : 10559.dasm - System.Text.Encoding:get_Latin1():System.Text.Encoding (FullOpts)
         -23 (-60.53 % of base) : 10555.dasm - System.Text.Encoding:get_Unicode():System.Text.Encoding (FullOpts)
         -23 (-60.53 % of base) : 11203.dasm - System.Threading.TimerQueue:get_Instances():System.Threading.TimerQueue[] (FullOpts)
         -23 (-57.50 % of base) : 6182.dasm - System.Threading.PortableThreadPool+WorkerThread+<>c:<.cctor>b__17_0():this (FullOpts)
         -23 (-57.50 % of base) : 7829.dasm - System.Threading.Tasks.Task:LogFinishCompletionNotification() (FullOpts)
         -35 (-56.45 % of base) : 10512.dasm - System.Threading.ThreadPoolWorkQueue:RefreshLoggingEnabled():this (FullOpts)
         -23 (-56.10 % of base) : 6333.dasm - System.Linq.Expressions.ConditionalExpression:GetFalse():System.Linq.Expressions.Expression:this (FullOpts)
        -267 (-55.86 % of base) : 7154.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
         -23 (-54.76 % of base) : 26.dasm - Internal.TypeSystem.Instantiation:.cctor() (FullOpts)
         -23 (-52.27 % of base) : 1069.dasm - Internal.Runtime.TypeLoader.ModuleList:EnumerateModules():Internal.Runtime.TypeLoader.NativeFormatModuleInfoEnumerable (FullOpts)
         -23 (-52.27 % of base) : 6371.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:NotifyWorkItemProgress():this (FullOpts)
         -23 (-52.27 % of base) : 10504.dasm - System.Threading.ThreadPool:NotifyThreadUnblocked() (FullOpts)



osx arm64

Diffs are based on 143,750 contexts (21,411 MinOpts, 122,339 FullOpts).

MISSED contexts: base: 4 (0.00%), diff: 124,661 (45.84%)

Overall (-40,932 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 189,868 -3,036
benchmarks.run_pgo.osx.arm64.checked.mch 1,297,204 -7,836
benchmarks.run_tiered.osx.arm64.checked.mch 1,037,520 -6,696
coreclr_tests.run.osx.arm64.checked.mch 247,160 -776
libraries.crossgen2.osx.arm64.checked.mch 11,447,832 -40
libraries.pmi.osx.arm64.checked.mch 708,248 -3,484
libraries_tests.run.osx.arm64.Release.mch 649,232 -2,956
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 102,104 -4,316
realworld.run.osx.arm64.checked.mch 402,548 -11,792

MinOpts (-17,532 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 1,201,340 -7,816
benchmarks.run_tiered.osx.arm64.checked.mch 903,596 -6,344
coreclr_tests.run.osx.arm64.checked.mch 222,648 -480
libraries_tests.run.osx.arm64.Release.mch 597,968 -2,892

FullOpts (-23,400 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 189,868 -3,036
benchmarks.run_pgo.osx.arm64.checked.mch 95,864 -20
benchmarks.run_tiered.osx.arm64.checked.mch 133,924 -352
coreclr_tests.run.osx.arm64.checked.mch 24,512 -296
libraries.crossgen2.osx.arm64.checked.mch 11,446,560 -40
libraries.pmi.osx.arm64.checked.mch 708,248 -3,484
libraries_tests.run.osx.arm64.Release.mch 51,264 -64
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 102,104 -4,316
realworld.run.osx.arm64.checked.mch 402,548 -11,792

Example diffs

benchmarks.run.osx.arm64.checked.mch

-44 (-57.89%) : 1321.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)

@@ -15,35 +15,19 @@ G_M30370_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M30370_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M30370_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M30370_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30370_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M30370_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M30370_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M30370_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #163 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M30370_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-44.00%) : 986.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)

@@ -17,14 +17,7 @@ G_M55451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M55451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M55451_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M55451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 @@ -37,23 +30,13 @@ G_M55451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] ldr wzr, [x0] ;; size=40 bbWeight=1 PerfScore 15.00
-G_M55451_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M55451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M55451_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M55451_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 8, PerfScore 24.00, instruction count 25, allocated bytes for code 100 (MethodHash=41c82764) for method System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 18.50, instruction count 14, allocated bytes for code 56 (MethodHash=41c82764) for method System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-40.74%) : 2181.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (FullOpts)

@@ -9,9 +9,8 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Intrinsics.Tests.Perf_Vector128Float> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V03 cse1 [V03,T00] ( 3, 3 ) long -> x0 "CSE - aggressive" -; V04 rat0 [V04,T02] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V02 cse0 [V02,T00] ( 3, 3 ) long -> x0 "CSE - aggressive" +; V03 rat0 [V03,T01] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -19,14 +18,7 @@ G_M30466_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M30466_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M30466_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M30466_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30466_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -40,20 +32,12 @@ G_M30466_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmn x0, #1 cset x0, eq ;; size=48 bbWeight=1 PerfScore 13.00
-G_M30466_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M30466_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M30466_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M30466_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 8, PerfScore 22.00, instruction count 27, allocated bytes for code 108 (MethodHash=e12a88fd) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=e12a88fd) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.54%) : 2314.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

@@ -8,36 +8,35 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> x20 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> x20 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) long -> x19 single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T12] ( 3, 1.50) ref -> x21 -; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> x0
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> x20 +; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> x0
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V11 tmp8 [V11,T04] ( 2, 4 ) long -> x0 "argument with side effect" ; V12 rat0 [V12,T03] ( 3, 4 ) long -> x0 "runtime lookup" ; V13 rat1 [V13,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) long -> x0 "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) long -> x0 "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) long -> x0 "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M17047_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp
- str x1, [fp, #0x10]
+ str x1, [fp, #0x18]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M17047_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x38] ldr x0, [x0, #0x10] @@ -51,97 +50,99 @@ G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 0.60 G_M17047_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbz x0, G_M17047_IG07
+ cbz x20, G_M17047_IG08
;; size=12 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x20] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M17047_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] +[x20]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
mov x0, x20 ; gcrRegs +[x0]
- ldr x1, [x20]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M17047_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0 x20] + mov x0, xzr + mov x1, xzr + ldr x1, [x1]
ldr x1, [x1, #0x50] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M17047_IG08 - mov x21, xzr - ; gcrRegs +[x21] - b G_M17047_IG09 - ;; size=32 bbWeight=0.50 PerfScore 6.50 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+ ; gcrRegs +[x0] + cbnz x0, G_M17047_IG09 + mov x20, xzr + ; gcrRegs +[x20] + b G_M17047_IG10 + ;; size=36 bbWeight=0.50 PerfScore 6.75 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20]
mov x1, x19 movz x2, #0xD1FFAB1E // code for System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- mov x21, x0 - ; gcrRegs +[x21]
+ mov x20, x0 + ; gcrRegs +[x20]
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- mov x0, x21
+ mov x0, x20
; gcrRegs +[x0]
- cbnz x0, G_M17047_IG14
+ cbnz x0, G_M17047_IG15
ldr x0, [x19, #0x38] ; gcrRegs -[x0] ldr x1, [x0, #0x08] cmp x1, #24
- ble G_M17047_IG12
+ ble G_M17047_IG13
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x21]
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20]
ldr x0, [x0, #0x18]
- cbz x0, G_M17047_IG12
+ cbz x0, G_M17047_IG13
;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M17047_IG14
;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19]
- mov x1, x20 - ; gcrRegs +[x1]
+ mov x1, xzr
movz x2, #0xD1FFAB1E // code for System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1 x20]
+ ; gcrRegs -[x0]
mov x0, x19 ; gcrRegs +[x0] ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 260, prolog size 20, PerfScore 42.11, instruction count 65, allocated bytes for code 260 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 256, prolog size 16, PerfScore 39.61, instruction count 64, allocated bytes for code 256 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -152,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -163,9 +164,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 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

+0 (0.00%) : 1650.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> x21 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -31,11 +31,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] mov x21, x0 ; gcrRegs +[x21]
- cbz x21, G_M22240_IG05
+ cbz x20, G_M22240_IG05
;; size=28 bbWeight=1 PerfScore 4.50 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x20] @@ -60,8 +60,8 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1 x21] +[x19-x20]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x21] +[x19]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -69,7 +69,7 @@ G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ldr x1, [x1, #0x38] blr x1 ; gcrRegs -[x19]
- cmp x0, x20
+ cmp x0, #0
cset x0, eq ; gcrRegs -[x0] ;; size=28 bbWeight=0.50 PerfScore 5.75

+0 (0.00%) : 2334.dasm - System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> x19 class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> x19 class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> x21 class-hnd single-def <System.Type>
-; V03 loc0 [V03,T03] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T03] ( 2, 1.50) ref -> x0 class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -33,9 +33,9 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbz x0, G_M17128_IG04
+ cbz x19, G_M17128_IG04
;; size=24 bbWeight=1 PerfScore 4.00 G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]

benchmarks.run_pgo.osx.arm64.checked.mch

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 89.dasm - System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)

@@ -14,23 +14,18 @@ G_M38075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M38075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M38075_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=69976b44) for method System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=69976b44) for method System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 481.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)

@@ -14,23 +14,18 @@ G_M31785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M31785_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M31785_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.60%) : 5654.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)

@@ -32,8 +32,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #70 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
add x0, fp, #64 // [V00 arg0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -107,7 +106,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x3] cbz w0, G_M1602_IG06 mov w0, #1
- ;; size=280 bbWeight=1 PerfScore 73.50
+ ;; size=276 bbWeight=1 PerfScore 73.00
G_M1602_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -224,7 +223,7 @@ G_M1602_IG09: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 668, prolog size 16, PerfScore 181.50, instruction count 167, allocated bytes for code 668 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
+; Total bytes of code 664, prolog size 16, PerfScore 181.00, instruction count 166, allocated bytes for code 664 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -235,7 +234,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.46%) : 7080.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)

@@ -546,15 +546,14 @@ G_M12113_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x0] str x1, [fp, #0xC0] b G_M12113_IG13
- ;; size=232 bbWeight=1 PerfScore 74.50
+ ;; size=228 bbWeight=1 PerfScore 74.00
G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xD0] // [V06 tmp1] ; gcrRegs +[x0] @@ -563,14 +562,13 @@ G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x0] str x1, [fp, #0xC0]
- ;; size=48 bbWeight=1 PerfScore 11.50
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M12113_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xC8] // [V07 tmp2] ; gcrRegs +[x0] @@ -590,7 +588,7 @@ G_M12113_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 1756, prolog size 36, PerfScore 629.00, instruction count 439, allocated bytes for code 1756 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
+; Total bytes of code 1748, prolog size 36, PerfScore 628.00, instruction count 437, allocated bytes for code 1748 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
; ============================================================ Unwind Info: @@ -601,7 +599,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 439 (0x001b7) Actual length = 1756 (0x0006dc)
+ Function Length : 437 (0x001b5) Actual length = 1748 (0x0006d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.25%) : 17329.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

@@ -5,53 +5,54 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <System.Numerics.Tests.Perf_Plane>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] this class-hnd <System.Numerics.Tests.Perf_Plane>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) simd16 -> [fp+0x20] HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Plane> -; V03 tmp2 [V03 ] ( 1, 1 ) simd16 -> [fp+0x10] do-not-enreg[SFA] multireg-arg "argument with side effect"
+; V02 tmp1 [V02 ] ( 1, 1 ) simd16 -> [fp+0x10] HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Plane>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M17376_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- str x0, [fp, #0x38] // [V00 this]
+ str x0, [fp, #0x28] // [V00 this]
;; size=12 bbWeight=1 PerfScore 2.50 G_M17376_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- ldr q16, [x0] - str q16, [fp, #0x10] // [V03 tmp2] - ldr s0, [fp, #0x10] // [V03 tmp2] - ldr s1, [fp, #0x14] // [V03 tmp2+0x04] - ldr s2, [fp, #0x18] // [V03 tmp2+0x08] - ldr s3, [fp, #0x1C] // [V03 tmp2+0x0c]
+ ldr s0, [x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s1, [x0, #0x04] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s2, [x0, #0x08] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s3, [x0, #0x0C]
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] blr x0
- str s0, [fp, #0x20] // [V02 tmp1] - str s1, [fp, #0x24] // [V02 tmp1+0x04] - str s2, [fp, #0x28] // [V02 tmp1+0x08] - str s3, [fp, #0x2C] // [V02 tmp1+0x0c] - ldr s0, [fp, #0x20] // [V02 tmp1] - ldr s1, [fp, #0x24] // [V02 tmp1+0x04] - ldr s2, [fp, #0x28] // [V02 tmp1+0x08] - ldr s3, [fp, #0x2C] // [V02 tmp1+0x0c] - ;; size=108 bbWeight=1 PerfScore 34.00
+ str s0, [fp, #0x10] // [V02 tmp1] + str s1, [fp, #0x14] // [V02 tmp1+0x04] + str s2, [fp, #0x18] // [V02 tmp1+0x08] + str s3, [fp, #0x1C] // [V02 tmp1+0x0c] + ldr s0, [fp, #0x10] // [V02 tmp1] + ldr s1, [fp, #0x14] // [V02 tmp1+0x04] + ldr s2, [fp, #0x18] // [V02 tmp1+0x08] + ldr s3, [fp, #0x1C] // [V02 tmp1+0x0c] + ;; size=116 bbWeight=1 PerfScore 35.50
G_M17376_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 38.50, instruction count 32, allocated bytes for code 128 (MethodHash=6ba9bc1f) for method System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)
+; Total bytes of code 136, prolog size 8, PerfScore 40.00, instruction count 34, allocated bytes for code 136 (MethodHash=6ba9bc1f) for method System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)
; ============================================================ Unwind Info: @@ -62,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -70,7 +71,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

benchmarks.run_tiered.osx.arm64.checked.mch

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 89.dasm - System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)

@@ -14,23 +14,18 @@ G_M38075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M38075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M38075_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=69976b44) for method System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=69976b44) for method System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 481.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)

@@ -14,23 +14,18 @@ G_M31785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M31785_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M31785_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.46%) : 9594.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)

@@ -546,15 +546,14 @@ G_M12113_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x0] str x1, [fp, #0xC0] b G_M12113_IG13
- ;; size=232 bbWeight=1 PerfScore 74.50
+ ;; size=228 bbWeight=1 PerfScore 74.00
G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xD0] // [V06 tmp1] ; gcrRegs +[x0] @@ -563,14 +562,13 @@ G_M12113_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x0] str x1, [fp, #0xC0]
- ;; size=48 bbWeight=1 PerfScore 11.50
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M12113_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0xC8] // [V07 tmp2] ; gcrRegs +[x0] @@ -590,7 +588,7 @@ G_M12113_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 1756, prolog size 36, PerfScore 629.00, instruction count 439, allocated bytes for code 1756 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
+; Total bytes of code 1748, prolog size 36, PerfScore 628.00, instruction count 437, allocated bytes for code 1748 (MethodHash=9eb0d0ae) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Tier0)
; ============================================================ Unwind Info: @@ -601,7 +599,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 439 (0x001b7) Actual length = 1756 (0x0006dc)
+ Function Length : 437 (0x001b5) Actual length = 1748 (0x0006d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 6164.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object>
; V01 arg1 [V01,T01] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Threading.Thread>
-; V02 loc0 [V02,T02] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T02] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -33,10 +33,10 @@ G_M60059_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M60059_IG05
+ cbz x19, G_M60059_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M60059_IG03: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -52,15 +52,14 @@ G_M60059_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0-x1 x20] +[x19] - mov x1, x19 - ; gcrRegs +[x1]
+G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0-x1 x20] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[x0]
; gcr arg pop 0 cbnz x0, G_M60059_IG06 movz x1, #8 @@ -75,9 +74,8 @@ G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=60 bbWeight=0.50 PerfScore 5.75
-G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19 - ; gcrRegs +[x0]
+G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov x0, xzr
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32

+8 (+6.25%) : 12741.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

@@ -5,53 +5,54 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <System.Numerics.Tests.Perf_Plane>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] this class-hnd <System.Numerics.Tests.Perf_Plane>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) simd16 -> [fp+0x20] HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Plane> -; V03 tmp2 [V03 ] ( 1, 1 ) simd16 -> [fp+0x10] do-not-enreg[SFA] multireg-arg "argument with side effect"
+; V02 tmp1 [V02 ] ( 1, 1 ) simd16 -> [fp+0x10] HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Plane>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M17376_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- str x0, [fp, #0x38] // [V00 this]
+ str x0, [fp, #0x28] // [V00 this]
;; size=12 bbWeight=1 PerfScore 2.50 G_M17376_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- ldr q16, [x0] - str q16, [fp, #0x10] // [V03 tmp2] - ldr s0, [fp, #0x10] // [V03 tmp2] - ldr s1, [fp, #0x14] // [V03 tmp2+0x04] - ldr s2, [fp, #0x18] // [V03 tmp2+0x08] - ldr s3, [fp, #0x1C] // [V03 tmp2+0x0c]
+ ldr s0, [x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s1, [x0, #0x04] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s2, [x0, #0x08] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr s3, [x0, #0x0C]
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] blr x0
- str s0, [fp, #0x20] // [V02 tmp1] - str s1, [fp, #0x24] // [V02 tmp1+0x04] - str s2, [fp, #0x28] // [V02 tmp1+0x08] - str s3, [fp, #0x2C] // [V02 tmp1+0x0c] - ldr s0, [fp, #0x20] // [V02 tmp1] - ldr s1, [fp, #0x24] // [V02 tmp1+0x04] - ldr s2, [fp, #0x28] // [V02 tmp1+0x08] - ldr s3, [fp, #0x2C] // [V02 tmp1+0x0c] - ;; size=108 bbWeight=1 PerfScore 34.00
+ str s0, [fp, #0x10] // [V02 tmp1] + str s1, [fp, #0x14] // [V02 tmp1+0x04] + str s2, [fp, #0x18] // [V02 tmp1+0x08] + str s3, [fp, #0x1C] // [V02 tmp1+0x0c] + ldr s0, [fp, #0x10] // [V02 tmp1] + ldr s1, [fp, #0x14] // [V02 tmp1+0x04] + ldr s2, [fp, #0x18] // [V02 tmp1+0x08] + ldr s3, [fp, #0x1C] // [V02 tmp1+0x0c] + ;; size=116 bbWeight=1 PerfScore 35.50
G_M17376_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 38.50, instruction count 32, allocated bytes for code 128 (MethodHash=6ba9bc1f) for method System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)
+; Total bytes of code 136, prolog size 8, PerfScore 40.00, instruction count 34, allocated bytes for code 136 (MethodHash=6ba9bc1f) for method System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)
; ============================================================ Unwind Info: @@ -62,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -70,7 +71,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

coreclr_tests.run.osx.arm64.checked.mch

-20 (-38.46%) : 563.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)

@@ -14,23 +14,18 @@ G_M24551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M24551_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #33 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M24551_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=51afa018) for method System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=51afa018) for method System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-26.32%) : 42.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)

@@ -14,11 +14,6 @@ G_M36161_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #22 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -29,13 +24,13 @@ G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #1 LSL #32 ldr x0, [x0] blr x0
- ;; size=60 bbWeight=1 PerfScore 14.00
+ ;; size=40 bbWeight=1 PerfScore 11.00
G_M36161_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
+; Total bytes of code 56, prolog size 8, PerfScore 14.50, instruction count 14, allocated bytes for code 56 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
; ============================================================ Unwind Info: @@ -46,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-19.23%) : 442.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)

@@ -14,11 +14,6 @@ G_M6374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -36,13 +31,13 @@ G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 str x0, [x1]
- ;; size=88 bbWeight=1 PerfScore 18.00
+ ;; size=68 bbWeight=1 PerfScore 15.00
G_M6374_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 21.50, instruction count 26, allocated bytes for code 104 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (Tier0)
+; Total bytes of code 84, prolog size 8, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (Tier0)
; ============================================================ Unwind Info: @@ -53,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-7.69%) : 1955.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)

@@ -21,17 +21,16 @@ G_M28697_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #66 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
strb wzr, [fp, #0x10] // [V01 loc0] ldr w0, [fp, #0x10] // [V01 loc0]
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 5.50
G_M28697_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=c5b88fe6) for method Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
+; Total bytes of code 48, prolog size 12, PerfScore 11.00, instruction count 12, allocated bytes for code 48 (MethodHash=c5b88fe6) for method Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
; ============================================================ Unwind Info: @@ -42,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-5.95%) : 235.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)

@@ -47,11 +47,6 @@ G_M29212_IG03: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00 G_M29212_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #107 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -62,7 +57,7 @@ G_M29212_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { movk x0, #1 LSL #32 ldr x0, [x0] blr x0
- ;; size=60 bbWeight=1 PerfScore 14.00
+ ;; size=40 bbWeight=1 PerfScore 11.00
G_M29212_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -120,7 +115,7 @@ G_M29212_IG09: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 336, prolog size 12, PerfScore 108.00, instruction count 84, allocated bytes for code 336 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
+; Total bytes of code 316, prolog size 12, PerfScore 105.00, instruction count 79, allocated bytes for code 316 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
; ============================================================ Unwind Info: @@ -131,7 +126,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.17%) : 131.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

@@ -17,8 +17,7 @@ G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- mov w1, #15 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -53,7 +52,7 @@ G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 cmp w0, #0 cset x0, eq
- ;; size=156 bbWeight=1 PerfScore 37.00
+ ;; size=152 bbWeight=1 PerfScore 36.50
G_M17591_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -66,7 +65,7 @@ G_M17591_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 184, prolog size 8, PerfScore 43.00, instruction count 46, allocated bytes for code 184 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
+; Total bytes of code 180, prolog size 8, PerfScore 42.50, instruction count 45, allocated bytes for code 180 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -77,7 +76,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ 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)

libraries.crossgen2.osx.arm64.checked.mch

-12 (-5.88%) : 23255.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,8 +15,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> x0 "CSE - aggressive" -; V07 cse1 [V07,T02] ( 5, 3.50) int -> x1 "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> x11 "CSE - aggressive" +; V07 cse1 [V07,T02] ( 5, 3.50) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,25 +34,24 @@ G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; byrRegs +[x0] ldrh w11, [x0]
- uxth w1, w20 - cmp w11, w1
+ uxth w0, w20 + ; byrRegs -[x0] + cmp w11, w0
beq G_M44169_IG04 ;; size=32 bbWeight=1 PerfScore 10.00
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - cmp w1, #47
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp w0, #47
bne G_M44169_IG07 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w11, [x0] - uxth w2, w19 - cmp w11, w2
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + uxth w1, w19 + cmp w11, w1
beq G_M44169_IG05
- uxth w11, w19 - cmp w11, #47
+ uxth w1, w19 + cmp w1, #47
bne G_M44169_IG07
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -60,13 +59,9 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; byrRegs +[x0] - ldrh w0, [x0] - ; byrRegs -[x0] - cmp w0, #47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp w11, #47
beq G_M44169_IG09
- mov w0, w1
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -79,15 +74,15 @@ G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 cmp w20, w0 cset x0, eq
- ;; size=64 bbWeight=0.50 PerfScore 8.50
+ ;; size=56 bbWeight=0.50 PerfScore 6.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50 G_M44169_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- uxth w0, w19 - cmp w1, w0
+ uxth w1, w19 + cmp w0, w1
cset x0, eq ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -96,7 +91,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 12, PerfScore 31.75, instruction count 51, allocated bytes for code 204 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 28.50, instruction count 48, allocated bytes for code 192 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-5.88%) : 183360.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,8 +15,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> x0 "CSE - aggressive" -; V07 cse1 [V07,T02] ( 5, 3.50) int -> x1 "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> x11 "CSE - aggressive" +; V07 cse1 [V07,T02] ( 5, 3.50) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,25 +34,24 @@ G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; byrRegs +[x0] ldrh w11, [x0]
- uxth w1, w20 - cmp w11, w1
+ uxth w0, w20 + ; byrRegs -[x0] + cmp w11, w0
beq G_M44169_IG04 ;; size=32 bbWeight=1 PerfScore 10.00
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - cmp w1, #47
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp w0, #47
bne G_M44169_IG07 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w11, [x0] - uxth w2, w19 - cmp w11, w2
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + uxth w1, w19 + cmp w11, w1
beq G_M44169_IG05
- uxth w11, w19 - cmp w11, #47
+ uxth w1, w19 + cmp w1, #47
bne G_M44169_IG07
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -60,13 +59,9 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; byrRegs +[x0] - ldrh w0, [x0] - ; byrRegs -[x0] - cmp w0, #47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp w11, #47
beq G_M44169_IG09
- mov w0, w1
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -79,15 +74,15 @@ G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 cmp w20, w0 cset x0, eq
- ;; size=64 bbWeight=0.50 PerfScore 8.50
+ ;; size=56 bbWeight=0.50 PerfScore 6.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50 G_M44169_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- uxth w0, w19 - cmp w1, w0
+ uxth w1, w19 + cmp w0, w1
cset x0, eq ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -96,7 +91,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 12, PerfScore 31.75, instruction count 51, allocated bytes for code 204 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 28.50, instruction count 48, allocated bytes for code 192 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-4.00%) : 23259.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T00] ( 4, 3 ) ref -> x19 class-hnd single-def <System.String> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 2, 2 ) int -> x1 "argument with side effect"
-; V03 cse0 [V03,T01] ( 3, 2.50) byref -> x0 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,17 +34,16 @@ G_M64282_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cmp w1, #47 beq G_M64282_IG05 ;; size=28 bbWeight=1 PerfScore 9.50
-G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref - ldrh w1, [x0]
+G_M64282_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; byrRegs -[x0]
mov x0, x19 ; gcrRegs +[x0]
- ; byrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] mov w2, #47 ldr wzr, [x0] ldr x3, [x11]
- ;; size=28 bbWeight=0.50 PerfScore 5.50
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M64282_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -62,7 +61,7 @@ G_M64282_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 100, prolog size 16, PerfScore 22.25, instruction count 25, allocated bytes for code 100 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
+; Total bytes of code 96, prolog size 16, PerfScore 20.75, instruction count 24, allocated bytes for code 96 (MethodHash=904104e5) for method Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.50%) : 26181.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> x2 "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> x0 "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> x2 "CSE - moderate"
; ; Lcl frame size = 8 @@ -53,7 +53,6 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldrh w2, [x0] cmp w2, #47 bne G_M45118_IG04
- ldrh w2, [x0]
mov x0, x19 ; gcrRegs +[x0] ; byrRegs -[x0] @@ -73,7 +72,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x1 x20] mov x21, x0 ; gcrRegs +[x21]
- ;; size=84 bbWeight=0.50 PerfScore 13.75
+ ;; size=80 bbWeight=0.50 PerfScore 12.25
G_M45118_IG04: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x21 @@ -86,7 +85,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 31.25, instruction count 40, allocated bytes for code 160 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 156, prolog size 16, PerfScore 29.75, instruction count 39, allocated bytes for code 156 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.50%) : 186156.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> x2 "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> x0 "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> x2 "CSE - moderate"
; ; Lcl frame size = 8 @@ -53,7 +53,6 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldrh w2, [x0] cmp w2, #47 bne G_M45118_IG04
- ldrh w2, [x0]
mov x0, x19 ; gcrRegs +[x0] ; byrRegs -[x0] @@ -73,7 +72,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x1 x20] mov x21, x0 ; gcrRegs +[x21]
- ;; size=84 bbWeight=0.50 PerfScore 13.75
+ ;; size=80 bbWeight=0.50 PerfScore 12.25
G_M45118_IG04: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x21 @@ -86,7 +85,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 31.25, instruction count 40, allocated bytes for code 160 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 156, prolog size 16, PerfScore 29.75, instruction count 39, allocated bytes for code 156 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 79643.dasm - .$Array:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> x19 "value for stsfld with typeinit"
; ; Lcl frame size = 8 @@ -23,13 +22,15 @@ G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] blr x0
- sxtw w19, w0
+ ; byrRegs +[x0] + mov x19, x0 + ; byrRegs +[x19]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11]
+ ; byrRegs -[x0]
blr x0
- ; byrRegs +[x0] - str w19, [x0, #0xD1FFAB1E]
+ str w0, [x19, #0xD1FFAB1E]
;; size=40 bbWeight=1 PerfScore 11.50 G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18]

libraries.pmi.osx.arm64.checked.mch

-44 (-57.89%) : 829.dasm - System.SR:UsingResourceKeys():ubyte (FullOpts)

@@ -8,53 +8,36 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - aggressive" -; V02 rat0 [V02,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M7622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #1 LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M7622_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M7622_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldrb w0, [x19, #0x51] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M7622_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldrb w0, [x0] + ;; size=16 bbWeight=1 PerfScore 4.50 +G_M7622_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M7622_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #2 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M7622_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.00, instruction count 19, allocated bytes for code 76 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (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 : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -62,10 +45,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-57.89%) : 10097.dasm - System.StringComparer:get_InvariantCultureIgnoreCase():System.StringComparer (FullOpts)

@@ -15,35 +15,19 @@ G_M54146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M54146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M54146_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M54146_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M54146_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M54146_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M54146_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M54146_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=a1592c7d) for method System.StringComparer:get_InvariantCultureIgnoreCase():System.StringComparer (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=a1592c7d) for method System.StringComparer:get_InvariantCultureIgnoreCase():System.StringComparer (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 7996.dasm - System.Random:get_Shared():System.Random (FullOpts)

@@ -15,35 +15,19 @@ G_M23867_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23867_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M23867_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M23867_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23867_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M23867_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M23867_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M23867_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M23867_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=3adba2c4) for method System.Random:get_Shared():System.Random (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=3adba2c4) for method System.Random:get_Shared():System.Random (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-3.59%) : 5472.dasm - System.DateTimeParse:DTFITrace(System.Globalization.DateTimeFormatInfo) (FullOpts)

@@ -93,27 +93,20 @@ G_M24620_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00 G_M24620_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M24620_IG15 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M24620_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldrb w0, [x0]
- cbnz w0, G_M24620_IG05
+ cbnz w0, G_M24620_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M24620_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24620_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M24620_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24620_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -123,14 +116,14 @@ G_M24620_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ldr x1, [x1] ldr wzr, [x0] blr x1
- cbnz x0, G_M24620_IG06
+ cbnz x0, G_M24620_IG05
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG07
+ b G_M24620_IG06
;; size=44 bbWeight=0.50 PerfScore 6.00
-G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x20, x0, #12 @@ -147,7 +140,7 @@ G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; byrRegs +[x0] sxtw w1, w21 ;; size=40 bbWeight=0.50 PerfScore 5.25
-G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
; byrRegs -[x20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -174,14 +167,14 @@ G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG08
+ cbnz x0, G_M24620_IG07
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG09
+ b G_M24620_IG08
;; size=96 bbWeight=0.50 PerfScore 11.00
-G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG07: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x20, x0, #12 @@ -198,7 +191,7 @@ G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; byrRegs +[x0] sxtw w1, w21 ;; size=40 bbWeight=0.50 PerfScore 5.25
-G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
; byrRegs -[x20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -225,14 +218,14 @@ G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG10
+ cbnz x0, G_M24620_IG09
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG11
+ b G_M24620_IG10
;; size=96 bbWeight=0.50 PerfScore 11.00
-G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG09: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x20, x0, #12 @@ -249,7 +242,7 @@ G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; byrRegs +[x0] sxtw w1, w21 ;; size=40 bbWeight=0.50 PerfScore 5.25
-G_M24620_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M24620_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
; byrRegs -[x20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -276,14 +269,14 @@ G_M24620_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cbnz x0, G_M24620_IG12
+ cbnz x0, G_M24620_IG11
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M24620_IG13
+ b G_M24620_IG12
;; size=96 bbWeight=0.50 PerfScore 11.00
-G_M24620_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24620_IG11: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] ; byrRegs -[x0] add x20, x0, #12 @@ -300,7 +293,7 @@ G_M24620_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; byrRegs +[x0] sxtw w1, w21 ;; size=40 bbWeight=0.50 PerfScore 5.25
-G_M24620_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
+G_M24620_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
; byrRegs -[x20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -484,23 +477,14 @@ G_M24620_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0 blr x2 ; gcrRegs -[x1] +[x0] ;; size=616 bbWeight=0.50 PerfScore 73.00
-G_M24620_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M24620_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M24620_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #255 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M24620_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1224, prolog size 16, PerfScore 153.00, instruction count 306, allocated bytes for code 1224 (MethodHash=399f9fd3) for method System.DateTimeParse:DTFITrace(System.Globalization.DateTimeFormatInfo) (FullOpts)
+; Total bytes of code 1180, prolog size 16, PerfScore 147.50, instruction count 295, allocated bytes for code 1180 (MethodHash=399f9fd3) for method System.DateTimeParse:DTFITrace(System.Globalization.DateTimeFormatInfo) (FullOpts)
; ============================================================ Unwind Info: @@ -511,7 +495,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 306 (0x00132) Actual length = 1224 (0x0004c8)
+ Function Length : 295 (0x00127) Actual length = 1180 (0x00049c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-2.27%) : 2847.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)

@@ -8,26 +8,27 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 11, 7 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T01] ( 10, 6.50) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V01 arg1 [V01,T00] ( 13, 7.50) int -> x19 single-def ; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x23 single-def ; V03 arg3 [V03,T06] ( 3, 2.50) ubyte -> x24 single-def ; V04 arg4 [V04,T04] ( 4, 3 ) ubyte -> x22 single-def ; V05 arg5 [V05,T02] ( 9, 6 ) ref -> x21 class-hnd single-def <System.String> ; V06 arg6 [V06,T07] ( 3, 2.50) ubyte -> x25 single-def
-; V07 loc0 [V07,T09] ( 4, 2 ) ubyte -> x26 -; V08 loc1 [V08,T08] ( 5, 2.50) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
+; V07 loc0 [V07,T08] ( 4, 2 ) ubyte -> x27 +; V08 loc1 [V08,T15] ( 3, 1.50) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T13] ( 3, 2 ) int -> x0 ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp4 [V13,T10] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V13 tmp4 [V13,T09] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
; V14 tmp5 [V14,T03] ( 5, 5 ) ref -> x26 class-hnd exact single-def "Inlining Arg" <System.String> ; V15 tmp6 [V15,T14] ( 2, 2 ) byref -> x0 single-def "impAppendStmt" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 cse0 [V17,T11] ( 4, 2 ) long -> x23 "CSE - aggressive" -; V18 cse1 [V18,T15] ( 3, 1.50) long -> x20 "CSE - moderate" -; V19 cse2 [V19,T12] ( 4, 2 ) int -> x27 "CSE - aggressive"
+; V17 cse0 [V17,T10] ( 4, 2 ) long -> x26 "CSE - aggressive" +; V18 cse1 [V18,T16] ( 3, 1.50) long -> x20 "CSE - moderate" +; V19 cse2 [V19,T11] ( 4, 2 ) long -> x23 "CSE - aggressive" +; V20 cse3 [V20,T12] ( 4, 2 ) int -> x27 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -151,35 +152,34 @@ G_M7707_IG10: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 G_M7707_IG11: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz mov x0, x20 ; gcrRegs +[x0]
- ldr x1, [x20] - ldr x23, [x1, #0x48] - ldr x1, [x23, #0x38]
+ ldr x23, [x20] + ldr x26, [x23, #0x48] + ldr x1, [x26, #0x38]
blr x1
- mov x26, x0 - ; gcrRegs +[x26]
+ mov x27, x0 + ; gcrRegs +[x27]
mov x0, x20
- ldr x1, [x20] - ldr x1, [x1, #0x50]
+ ldr x1, [x23, #0x50]
ldr x1, [x1] blr x1
- cmp x26, x0 - cset x26, ne - ; gcrRegs -[x26]
+ cmp x27, x0 + cset x27, ne + ; gcrRegs -[x27]
tst w19, #2 cset x0, ne ; gcrRegs -[x0]
- tst w0, w26
+ tst w0, w27
bne G_M7707_IG15 mov x0, x20 ; gcrRegs +[x0]
- ldr x1, [x23, #0x28]
+ ldr x1, [x26, #0x28]
blr x1 ; gcrRegs -[x0] cmp w0, #32 beq G_M7707_IG13 mov x0, x20 ; gcrRegs +[x0]
- ldr x1, [x23, #0x28]
+ ldr x1, [x26, #0x28]
blr x1 ; gcrRegs -[x0] cmp w0, #128 @@ -188,11 +188,11 @@ G_M7707_IG11: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 beq G_M7707_IG12 tst w19, #64 cset x2, eq
- tst w2, w26
+ tst w2, w27
bne G_M7707_IG15 tbnz w19, #3, G_M7707_IG13 b G_M7707_IG15
- ;; size=140 bbWeight=0.50 PerfScore 21.50
+ ;; size=136 bbWeight=0.50 PerfScore 20.00
G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz tbz w19, #2, G_M7707_IG15 ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -215,7 +215,7 @@ G_M7707_IG13: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 G_M7707_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz tst w19, #2 cset x1, eq
- and w1, w1, w26
+ and w1, w1, w27
uxtb w0, w24 tst w1, w0 beq G_M7707_IG17 @@ -228,14 +228,11 @@ G_M7707_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1 x20] +[x0] mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M7707_IG15 - mov x0, x19 - ldr x1, [x19] - ldr x20, [x1, #0x58]
+ ldr x20, [x23, #0x58]
ldr x1, [x20, #0x20] blr x1 ; gcrRegs -[x0] @@ -246,7 +243,7 @@ G_M7707_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, blr x1 ; gcrRegs -[x0 x19] tbnz w0, #10, G_M7707_IG17
- ;; size=108 bbWeight=0.50 PerfScore 14.25
+ ;; size=96 bbWeight=0.50 PerfScore 12.00
G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 @@ -272,7 +269,7 @@ G_M7707_IG18: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=28 bbWeight=0.50 PerfScore 4.00
-; Total bytes of code 704, prolog size 28, PerfScore 104.50, instruction count 176, allocated bytes for code 704 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
+; Total bytes of code 688, prolog size 28, PerfScore 100.75, instruction count 172, allocated bytes for code 688 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -283,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 176 (0x000b0) Actual length = 704 (0x0002c0)
+ Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 5050.dasm - System.DefaultBinder:FindMostSpecificType(System.Type,System.Type,System.Type):int (FullOpts)

@@ -10,16 +10,16 @@ ; ; V00 arg0 [V00,T00] ( 22, 12.50) ref -> x19 class-hnd <System.Type> ; V01 arg1 [V01,T01] ( 22, 12.50) ref -> x20 class-hnd <System.Type>
-; V02 arg2 [V02,T02] ( 5, 3.50) ref -> x21 class-hnd single-def <System.Type> -; V03 loc0 [V03,T04] ( 4, 2 ) ref -> x22 class-hnd single-def <<unknown class>> -; V04 loc1 [V04,T05] ( 4, 2 ) ubyte -> x21
+; V02 arg2 [V02,T02] ( 4, 3 ) ref -> x21 class-hnd single-def <System.Type> +; V03 loc0 [V03,T09] ( 3, 1.50) ref -> x22 class-hnd single-def <<unknown class>> +; V04 loc1 [V04,T04] ( 4, 2 ) ubyte -> x21
; V05 loc2 [V05,T10] ( 3, 1.50) ubyte -> x0 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V08 tmp2 [V08,T09] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V09 cse0 [V09,T06] ( 4, 2 ) long -> x22 "CSE - aggressive"
+; V07 tmp1 [V07,T07] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V08 tmp2 [V08,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V09 cse0 [V09,T05] ( 4, 2 ) long -> x22 "CSE - aggressive"
; V10 cse1 [V10,T03] ( 5, 2.50) long -> registers multi-def "CSE - aggressive"
-; V11 cse2 [V11,T07] ( 4, 2 ) long -> x21 "CSE - moderate"
+; V11 cse2 [V11,T06] ( 4, 2 ) long -> x21 "CSE - moderate"
; ; Lcl frame size = 0 @@ -54,11 +54,11 @@ G_M53685_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] mov x22, x0 ; gcrRegs +[x22]
- cbz x22, G_M53685_IG04
+ cbz x21, G_M53685_IG04
mov x0, x22 mov x1, x19 ; gcrRegs +[x1] @@ -82,29 +82,26 @@ G_M53685_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs cbz w0, G_M53685_IG05 b G_M53685_IG16 ;; size=96 bbWeight=0.50 PerfScore 10.25
-G_M53685_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21]
+G_M53685_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0]
- mov x1, x21 - ; gcrRegs +[x1]
+ mov x1, xzr
movz x2, #0xD1FFAB1E // code for System.Type:op_Equality(System.Type,System.Type):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0]
cbnz w0, G_M53685_IG18 mov x0, x20 ; gcrRegs +[x0]
- mov x1, x21 - ; gcrRegs +[x1]
+ mov x1, xzr
movz x2, #0xD1FFAB1E // code for System.Type:op_Equality(System.Type,System.Type):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1 x21]
+ ; gcrRegs -[x0]
cbnz w0, G_M53685_IG16 ;; size=64 bbWeight=0.50 PerfScore 7.50 G_M53685_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz

libraries_tests.run.osx.arm64.Release.mch

-20 (-38.46%) : 13.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)

@@ -14,23 +14,18 @@ G_M52025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M52025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #7 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M52025_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 5458.dasm - System.Security.Cryptography.Utf8DataEncoding:get_ThrowingUtf8Encoding():System.Text.Encoding (Tier0)

@@ -14,23 +14,18 @@ G_M53380_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M53380_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #75 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M53380_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f0782f7b) for method System.Security.Cryptography.Utf8DataEncoding:get_ThrowingUtf8Encoding():System.Text.Encoding (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f0782f7b) for method System.Security.Cryptography.Utf8DataEncoding:get_ThrowingUtf8Encoding():System.Text.Encoding (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 5994.dasm - System.Security.Cryptography.SHA3384:getIsSupported():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M50683_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M50683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M50683_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f62c3a04) for method System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f62c3a04) for method System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-2.20%) : 69.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

@@ -74,19 +74,14 @@ G_M3749_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} str x0, [fp, #0x38] // [V16 tmp2] ldr x0, [fp, #0x40] // [V15 tmp1] cbnz x0, G_M3749_IG05
- movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #6 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] str x0, [fp, #0x38] // [V16 tmp2]
- ;; size=100 bbWeight=1 PerfScore 27.50
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ldr x0, [fp, #0x38] // [V16 tmp2] @@ -252,7 +247,7 @@ G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] str x0, [fp, #0x18] // [V20 tmp6] ldr x0, [fp, #0x58] // [V11 loc9] @@ -303,7 +298,7 @@ G_M3749_IG06: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 908, prolog size 44, PerfScore 269.00, instruction count 227, allocated bytes for code 908 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 888, prolog size 44, PerfScore 266.00, instruction count 222, allocated bytes for code 888 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================ Unwind Info: @@ -314,7 +309,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 908 (0x00038c)
+ Function Length : 222 (0x000de) Actual length = 888 (0x000378)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.83%) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

@@ -5,38 +5,43 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x6C] do-not-enreg[] -; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x8C] do-not-enreg[] +; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x80] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x78] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] must-init "Reusable Box Helper" -; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>> -; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V10 tmp7 [V10 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V12 tmp9 [V12 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V05 tmp2 [V05 ] ( 1, 1 ) float -> [fp+0x6C] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V08 tmp5 [V08 ] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V10 tmp7 [V10 ] ( 1, 1 ) double -> [fp+0x40] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V12 tmp9 [V12 ] ( 1, 1 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V13 tmp10 [V13 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect" +; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" +; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" +; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 128
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
+ stp fp, lr, [sp, #-0x90]!
mov fp, sp add x9, fp, #16 movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40] - str xzr, [x9, #0x50] - str w0, [fp, #0x6C] // [V00 arg0] - ;; size=36 bbWeight=1 PerfScore 7.50
+ stp q16, q16, [x9, #0x40] + stp xzr, xzr, [x9, #0x60] + str xzr, [x9, #0x70] + str w0, [fp, #0x8C] // [V00 arg0] + ;; size=40 bbWeight=1 PerfScore 8.50
G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x6C] // [V00 arg0]
+ ldr w0, [fp, #0x8C] // [V00 arg0]
cmp w0, #7 bhi G_M5822_IG03
- ldr w0, [fp, #0x6C] // [V00 arg0]
+ ldr w0, [fp, #0x8C] // [V00 arg0]
mov w0, w0 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -53,31 +58,31 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #1 LSL #32 ldr x1, [x0] ; gcrRegs +[x1]
- add x0, fp, #24 // [V11 tmp8]
+ add x0, fp, #48 // [V12 tmp9]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x18] // [V11 tmp8]
+ ldr x0, [fp, #0x30] // [V12 tmp9]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=52 bbWeight=1 PerfScore 14.50 G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str xzr, [fp, #0x40] // [V10 tmp7] + add x1, fp, #64 // [V10 tmp7]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_UNBOX
; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp5] - ldr x0, [fp, #0x30] // [V08 tmp5] - str xzr, [x0, #0x08] - ldr x1, [fp, #0x30] // [V08 tmp5]
+ str x0, [fp, #0x28] // [V13 tmp10] + ldr x1, [fp, #0x28] // [V13 tmp10]
; gcrRegs +[x1]
- add x0, fp, #32 // [V10 tmp7]
+ add x0, fp, #56 // [V11 tmp8]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -85,24 +90,24 @@ G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x20] // [V10 tmp7]
+ ldr x0, [fp, #0x38] // [V11 tmp8]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str xzr, [fp, #0x50] // [V08 tmp5] + add x1, fp, #80 // [V08 tmp5]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_UNBOX
; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp5] - ldr x0, [fp, #0x30] // [V08 tmp5] - str xzr, [x0, #0x08] - ldr x1, [fp, #0x30] // [V08 tmp5]
+ str x0, [fp, #0x20] // [V14 tmp11] + ldr x1, [fp, #0x20] // [V14 tmp11]
; gcrRegs +[x1]
- add x0, fp, #40 // [V09 tmp6]
+ add x0, fp, #72 // [V09 tmp6]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -110,11 +115,11 @@ G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x28] // [V09 tmp6]
+ ldr x0, [fp, #0x48] // [V09 tmp6]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -123,12 +128,12 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_UNBOX
; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V12 tmp9] - ldr x1, [fp, #0x10] // [V12 tmp9]
+ str x0, [fp, #0x18] // [V15 tmp12] + ldr x1, [fp, #0x18] // [V15 tmp12]
; gcrRegs +[x1]
- add x0, fp, #56 // [V07 tmp4]
+ add x0, fp, #88 // [V07 tmp4]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -136,24 +141,24 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x38] // [V07 tmp4]
+ ldr x0, [fp, #0x58] // [V07 tmp4]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=72 bbWeight=1 PerfScore 17.00 G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str wzr, [fp, #0x6C] // [V05 tmp2] + add x1, fp, #108 // [V05 tmp2]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_UNBOX
; gcrRegs +[x0]
- str x0, [fp, #0x48] // [V05 tmp2] - ldr x0, [fp, #0x48] // [V05 tmp2] - str wzr, [x0, #0x08] - ldr x1, [fp, #0x48] // [V05 tmp2]
+ str x0, [fp, #0x10] // [V16 tmp13] + ldr x1, [fp, #0x10] // [V16 tmp13]
; gcrRegs +[x1]
- add x0, fp, #64 // [V06 tmp3]
+ add x0, fp, #96 // [V06 tmp3]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -161,11 +166,11 @@ G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x40] // [V06 tmp3]
+ ldr x0, [fp, #0x60] // [V06 tmp3]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -173,32 +178,32 @@ G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #1 LSL #32 ldr x1, [x0] ; gcrRegs +[x1]
- add x0, fp, #80 // [V04 tmp1]
+ add x0, fp, #112 // [V04 tmp1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x50] // [V04 tmp1]
+ ldr x0, [fp, #0x70] // [V04 tmp1]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=52 bbWeight=1 PerfScore 14.50 G_M5822_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- str xzr, [fp, #0x58] // [V02 loc1] - ldr x0, [fp, #0x58] // [V02 loc1]
+ str xzr, [fp, #0x78] // [V02 loc1] + ldr x0, [fp, #0x78] // [V02 loc1]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
;; size=12 bbWeight=1 PerfScore 4.00 G_M5822_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ...

+16 (+10.00%) : 868.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" @@ -24,10 +24,14 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x2, [fp, #0x28] // [V02 arg2] ;; size=28 bbWeight=1 PerfScore 6.50 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [fp, #0x28] // [V02 arg2] - cbnz w0, G_M26730_IG04 - ldr x0, [fp, #0x38] // [V00 this]
+ add x1, fp, #40 // [V02 arg2] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0]
+ cbnz x0, G_M26730_IG04 + ldr x0, [fp, #0x38] // [V00 this]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x30] // [V01 arg1] ; gcrRegs +[x1] @@ -38,7 +42,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr wzr, [x0] blr x2 ; gcrRegs -[x0-x1]
- ;; size=44 bbWeight=1 PerfScore 18.50
+ ;; size=60 bbWeight=1 PerfScore 19.50
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -53,7 +57,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_BOX_NULLABLE
+ bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0] str x0, [fp, #0x20] // [V04 tmp1] ldr x2, [fp, #0x20] // [V04 tmp1] @@ -74,7 +78,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 160, prolog size 16, PerfScore 53.50, instruction count 40, allocated bytes for code 160 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 176, prolog size 16, PerfScore 54.50, instruction count 44, allocated bytes for code 176 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info: @@ -85,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-44 (-68.75%) : 735.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)

@@ -11,16 +11,15 @@ ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.InteropServices.OSPlatform> ;* V02 tmp2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
-;* V03 tmp3 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V03 tmp3 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String> ;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V06 tmp6 [V06,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V06 tmp6 [V06,T01] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V07 tmp7 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V08 tmp8 [V08,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V08 tmp8 [V08,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp9 [V09 ] ( 0, 0 ) ref -> zero-ref "field V01.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V10 tmp10 [V10,T04] ( 0, 0 ) ref -> zero-ref single-def "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP -; V11 cse0 [V11,T00] ( 2, 2 ) long -> x0 "CSE - aggressive" -; V12 rat0 [V12,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V10 tmp10 [V10,T03] ( 0, 0 ) ref -> zero-ref single-def "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP +;* V11 cse0 [V11,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,30 +27,15 @@ G_M59074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - 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 - ldr w1, [x1] - tbz w1, #0, G_M59074_IG05 - ;; size=32 bbWeight=1 PerfScore 7.00 -G_M59074_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59074_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=1 PerfScore 0.50
-G_M59074_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59074_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M59074_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #6 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M59074_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 64 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
+; Total bytes of code 20, prolog size 8, PerfScore 4.00, instruction count 5, allocated bytes for code 20 (MethodHash=a765193d) for method ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 5 (0x00005) Actual length = 20 (0x000014)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 761.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M31334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M31334_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M31334_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M31334_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M31334_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M31334_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #55 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M31334_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 769.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M24108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M24108_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M24108_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M24108_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M24108_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M24108_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #58 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M24108_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.27%) : 993.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon

@@ -16,7 +16,7 @@ ; V05 loc0 [V05 ] ( 3, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T13] ( 3, 5 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T52] ( 3, 1.50) ref -> x24 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> x21 class-hnd <System.__Canon> @@ -31,7 +31,7 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> x25 class-hnd "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x22 "spilling helperCall"
+; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x24 "spilling helperCall"
; V24 tmp12 [V24,T41] ( 3, 2 ) long -> x25 "spilling helperCall" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -72,7 +72,7 @@ ; V61 rat13 [V61,T24] ( 3, 2.80) long -> x0 "spilling expr" ; V62 rat14 [V62,T34] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V63 rat15 [V63,T25] ( 3, 2.80) long -> x0 "spilling expr"
-; V64 rat16 [V64,T35] ( 3, 2.24) long -> x22 "fgMakeTemp is creating a new local variable"
+; V64 rat16 [V64,T35] ( 3, 2.24) long -> x24 "fgMakeTemp is creating a new local variable"
; V65 rat17 [V65,T26] ( 3, 2.80) long -> x0 "spilling expr" ; V66 rat18 [V66,T36] ( 3, 2.24) long -> x25 "fgMakeTemp is creating a new local variable" ; V67 rat19 [V67,T47] ( 3, 2 ) long -> x0 "runtime lookup" @@ -83,9 +83,9 @@ ; V72 rat24 [V72,T38] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V73 rat25 [V73,T29] ( 3, 2.80) long -> x0 "spilling expr" ; V74 rat26 [V74,T39] ( 3, 2.24) long -> x11 "fgMakeTemp is creating a new local variable"
-; V75 rat27 [V75,T56] ( 3, 1 ) long -> x23 "runtime lookup" -; V76 rat28 [V76,T54] ( 3, 1.40) long -> x0 "spilling expr" -; V77 rat29 [V77,T55] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
+; V75 rat27 [V75,T55] ( 3, 1 ) long -> x23 "runtime lookup" +; V76 rat28 [V76,T53] ( 3, 1.40) long -> x0 "spilling expr" +; V77 rat29 [V77,T54] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -124,7 +124,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M36297_IG05: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz @@ -161,11 +161,11 @@ G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=800000 {x23}, byrefRegs=0000 {} movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x21, x0 @@ -210,13 +210,13 @@ G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x24, x0 @@ -241,7 +241,7 @@ G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x22, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -263,7 +263,7 @@ G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -326,73 +326,71 @@ G_M36297_IG29: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24] - cbz x24, G_M36297_IG44
+ mov x22, x0 + ; gcrRegs +[x22]
ldr x0, [x21, #0x38] ; gcrRegs -[x0] ldr x1, [x0, #0x18] cmp x1, #80 ble G_M36297_IG33
- ;; size=32 bbWeight=0.50 PerfScore 5.25 -G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - ldr x22, [x0, #0x50] - cbz x22, G_M36297_IG33
+ ;; size=28 bbWeight=0.50 PerfScore 4.75 +G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + ldr x24, [x0, #0x50] + cbz x24, G_M36297_IG33
;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG34 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov x22, x0
+ mov x24, x0
;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21, #0x38] ldr x1, [x0, #0x18] cmp x1, #88 ble G_M36297_IG37 ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x25, [x0, #0x58] cbz x25, G_M36297_IG37 ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG38 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - mov x0, x22 - mov x1, x24
+G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + mov x0, x24 + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x24]
+ ; gcrRegs -[x1 x22]
; byrRegs +[x0] ; gcr arg pop 0 mov w2, w1 @@ -428,7 +426,7 @@ G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=400000 {x22}, byref @@ -477,11 +475,11 @@ G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x24, x0 @@ -513,7 +511,7 @@ G_M36297_IG51: ; bbWeight=0.18, gcrefRegs=1580000 {x19 x20 x22 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x11, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -556,7 +554,7 @@ G_M36297_IG57: ; bbWeight=0.09, gcrefRegs=1180000 {x19 x20 x24}, byrefReg movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x23, x0 ;; size=24 bbWeight=0.09 PerfScore 0.32 @@ -709,7 +707,7 @@ G_M36297_IG68: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1460, prolog size 52, PerfScore 319.10, instruction count 365, allocated bytes for code 1460 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 1456, prolog size 52, PerfScore 318.60, instruction count 364, allocated bytes for code 1456 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -720,7 +718,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
+ Function Length : 343 (0x00157) Actual length = 1372 (0x00055c)
---- Epilog scopes ---- ...

+0 (0.00%) : 606.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M51894_IG05
+ cbnz x19, G_M51894_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -61,7 +60,7 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

+0 (0.00%) : 516.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M47281_IG05
+ cbnz x19, G_M47281_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -61,7 +60,7 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

realworld.run.osx.arm64.checked.mch

-44 (-61.11%) : 2254.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)

@@ -15,34 +15,18 @@ G_M41081_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M41081_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M41081_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #7 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=12 bbWeight=1 PerfScore 4.00
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M41081_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M41081_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 13.00, instruction count 18, allocated bytes for code 72 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 28, prolog size 8, PerfScore 7.50, instruction count 7, allocated bytes for code 28 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2141.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M47685_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47685_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M47685_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M47685_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47685_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M47685_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M47685_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M47685_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M47685_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=8aae45ba) for method FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=8aae45ba) for method FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2149.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M17141_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17141_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M17141_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M17141_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17141_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M17141_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M17141_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M17141_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M17141_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=290cbd0a) for method FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=290cbd0a) for method FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.33%) : 4563.dasm - Microsoft.FSharp.Core.FSharpFunc2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[System.Canon,System.Canon],System.__Canon,int):int (FullOpts)

@@ -8,15 +8,15 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ; V03 arg2 [V03,T04] ( 4, 3 ) int -> x21 single-def
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V08 tmp2 [V08,T06] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" ; @@ -47,16 +47,16 @@ G_M27437_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=000 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=16 bbWeight=0.20 PerfScore 0.50 G_M27437_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M27437_IG08
+ cbz x19, G_M27437_IG08
;; size=12 bbWeight=1 PerfScore 2.50 G_M27437_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -74,23 +74,23 @@ G_M27437_IG07: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27437_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M27437_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] + mov x0, xzr
mov x1, x20 ; gcrRegs +[x1]
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x1 x19-x20]
+ ; gcrRegs -[x1 x20] +[x0]
; gcr arg pop 0 mov w1, w21 ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M27437_IG09: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -99,7 +99,7 @@ G_M27437_IG09: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 32, PerfScore 37.45, instruction count 43, allocated bytes for code 172 (MethodHash=abbe94d2) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
+; Total bytes of code 176, prolog size 32, PerfScore 37.70, instruction count 44, allocated bytes for code 176 (MethodHash=abbe94d2) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.78%) : 3044.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T01] ( 4, 3 ) int -> x20 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 2 ) int -> x21 single-def "field V01.idx (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -34,10 +34,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M49388_IG05
+ cbz x19, G_M49388_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -54,22 +54,22 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr
mov w1, w21
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x19]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov w1, w20 ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -78,7 +78,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 144, prolog size 28, PerfScore 29.25, instruction count 36, allocated bytes for code 144 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 29.50, instruction count 37, allocated bytes for code 148 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -89,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.90%) : 2039.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> x1 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -28,15 +28,18 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M19732_IG05 - ;; size=24 bbWeight=1 PerfScore 4.00 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- ldr x2, [x0]
+ cbz x19, G_M19732_IG05 + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + ldr x2, [x19]
ldr x2, [x2, #0x98] ldr x2, [x2, #0x10] ;; size=16 bbWeight=0.50 PerfScore 4.75 @@ -46,21 +49,21 @@ G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19]
+G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x19] + mov x0, xzr + mov x1, xzr + ldr x1, [x1]
ldr x1, [x1, #0x50] ldr x1, [x1, #0x30] blr x1
+ ; gcrRegs +[x0]
; gcr arg pop 0
- mov x1, x19 - ; gcrRegs +[x1]
+ mov x1, xzr
ldr x2, [x0] ldr x2, [x2, #0x98] ldr x2, [x2, #0x10]
- ;; size=36 bbWeight=0.50 PerfScore 10.00
+ ;; size=40 bbWeight=0.50 PerfScore 10.25
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -68,7 +71,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.75, instruction count 29, allocated bytes for code 116 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 26.50, instruction count 31, allocated bytes for code 124 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info: @@ -79,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 44 42 0 2 -3,036 +0
benchmarks.run_pgo.osx.arm64.checked.mch 204 203 1 0 -7,844 +8
benchmarks.run_tiered.osx.arm64.checked.mch 164 162 1 1 -6,704 +8
coreclr_tests.run.osx.arm64.checked.mch 16 16 0 0 -776 +0
libraries.crossgen2.osx.arm64.checked.mch 7 6 0 1 -40 +0
libraries.pmi.osx.arm64.checked.mch 55 54 0 1 -3,484 +0
libraries_tests.run.osx.arm64.Release.mch 107 105 2 0 -2,976 +20
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 77 75 0 2 -4,316 +0
realworld.run.osx.arm64.checked.mch 86 80 5 1 -11,816 +24
760 743 9 8 -40,992 +60

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 1,067 0 1,067 0 (0.00%) 1,378 (48.50%)
benchmarks.run_pgo.osx.arm64.checked.mch 10,291 9,549 742 2 (0.01%) 6,890 (39.20%)
benchmarks.run_tiered.osx.arm64.checked.mch 7,989 6,721 1,268 1 (0.01%) 4,854 (36.66%)
coreclr_tests.run.osx.arm64.checked.mch 1,045 858 187 0 (0.00%) 1,316 (47.73%)
libraries.crossgen2.osx.arm64.checked.mch 108,860 13 108,847 0 (0.00%) 98,385 (47.38%)
libraries.pmi.osx.arm64.checked.mch 7,353 0 7,353 0 (0.00%) 2,963 (27.66%)
libraries_tests.run.osx.arm64.Release.mch 4,622 4,270 352 0 (0.00%) 4,442 (46.96%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 874 0 874 0 (0.00%) 1,403 (52.49%)
realworld.run.osx.arm64.checked.mch 1,649 0 1,649 1 (0.02%) 3,030 (59.70%)
143,750 21,411 122,339 4 (0.00%) 124,661 (45.84%)

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: 189868 (overridden on cmd)
Total bytes of diff: 186832 (overridden on cmd)
Total bytes of delta: -3036 (-1.60 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 687.dasm (-77.27 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -116 : 401.dasm (-35.37 % of base)
        -112 : 719.dasm (-25.45 % of base)
        -112 : 2282.dasm (-27.45 % of base)
        -100 : 2384.dasm (-17.48 % of base)
         -92 : 2768.dasm (-54.76 % of base)
         -88 : 1717.dasm (-26.51 % of base)
         -88 : 2694.dasm (-44.90 % of base)
         -80 : 3050.dasm (-37.04 % of base)
         -72 : 1070.dasm (-52.94 % of base)
         -72 : 233.dasm (-10.53 % of base)
         -68 : 2052.dasm (-36.96 % of base)
         -56 : 2626.dasm (-60.87 % of base)
         -52 : 2336.dasm (-11.11 % of base)
         -48 : 1267.dasm (-17.65 % of base)
         -48 : 1186.dasm (-40.00 % of base)
         -48 : 2437.dasm (-3.13 % of base)
         -44 : 1125.dasm (-12.94 % of base)
         -44 : 1241.dasm (-2.61 % of base)

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

Top method improvements (bytes):
        -544 (-77.27 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -116 (-35.37 % of base) : 401.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -112 (-27.45 % of base) : 2282.dasm - System.HashCode:Add(int):this (FullOpts)
        -112 (-25.45 % of base) : 719.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -100 (-17.48 % of base) : 2384.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
         -92 (-54.76 % of base) : 2768.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (FullOpts)
         -88 (-26.51 % of base) : 1717.dasm - ProtoBuf.Meta.RuntimeTypeModel:EmitProvider(System.Reflection.MemberInfo,System.Reflection.Emit.ILGenerator) (FullOpts)
         -88 (-44.90 % of base) : 2694.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -80 (-37.04 % of base) : 3050.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (FullOpts)
         -72 (-52.94 % of base) : 1070.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -72 (-10.53 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -68 (-36.96 % of base) : 2052.dasm - System.Globalization.GregorianCalendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this (FullOpts)
         -56 (-60.87 % of base) : 2626.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
         -52 (-11.11 % of base) : 2336.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo:NumberHandingIsApplicable():ubyte:this (FullOpts)
         -48 (-3.13 % of base) : 2437.dasm - System.DateTimeFormat:TryFormatO[ubyte](System.DateTime,System.TimeSpan,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -48 (-17.65 % of base) : 1267.dasm - System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this (FullOpts)
         -48 (-40.00 % of base) : 1186.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -44 (-13.58 % of base) : 412.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (FullOpts)
         -44 (-20.75 % of base) : 3016.dasm - Newtonsoft.Json.Serialization.JsonPrimitiveContract:.ctor(System.Type):this (FullOpts)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -56 (-60.87 % of base) : 2626.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
         -44 (-57.89 % of base) : 1321.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
         -92 (-54.76 % of base) : 2768.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (FullOpts)
         -72 (-52.94 % of base) : 1070.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -88 (-44.90 % of base) : 2694.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-44.00 % of base) : 986.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -44 (-40.74 % of base) : 2181.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (FullOpts)
         -48 (-40.00 % of base) : 1186.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -80 (-37.04 % of base) : 3050.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (FullOpts)
         -68 (-36.96 % of base) : 2052.dasm - System.Globalization.GregorianCalendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this (FullOpts)
        -116 (-35.37 % of base) : 401.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
         -44 (-31.43 % of base) : 1006.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (FullOpts)
         -44 (-31.43 % of base) : 1005.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
         -44 (-30.56 % of base) : 2676.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:EnsureNotByRefType(System.Type):System.Type (FullOpts)
        -112 (-27.45 % of base) : 2282.dasm - System.HashCode:Add(int):this (FullOpts)
         -88 (-26.51 % of base) : 1717.dasm - ProtoBuf.Meta.RuntimeTypeModel:EmitProvider(System.Reflection.MemberInfo,System.Reflection.Emit.ILGenerator) (FullOpts)
         -44 (-26.19 % of base) : 1204.dasm - System.Threading.PortableThreadPool+GateThread:EnsureRunningSlow(System.Threading.PortableThreadPool) (FullOpts)
         -44 (-25.58 % of base) : 24.dasm - System.StartupHookProvider:ManagedStartup(ulong) (FullOpts)


benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1297204 (overridden on cmd)
Total bytes of diff: 1289368 (overridden on cmd)
Total bytes of delta: -7836 (-0.60 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 17329.dasm (6.25 % of base)

Top file improvements (bytes):
       -1900 : 13916.dasm (-29.86 % of base)
        -300 : 11841.dasm (-11.70 % of base)
        -256 : 14685.dasm (-32.00 % of base)
        -180 : 4206.dasm (-16.07 % of base)
        -120 : 12723.dasm (-8.80 % of base)
        -116 : 4152.dasm (-8.10 % of base)
        -104 : 11936.dasm (-19.26 % of base)
         -88 : 2642.dasm (-40.74 % of base)
         -88 : 2643.dasm (-40.74 % of base)
         -80 : 13624.dasm (-35.71 % of base)
         -80 : 2941.dasm (-31.25 % of base)
         -72 : 16585.dasm (-22.78 % of base)
         -60 : 18701.dasm (-14.56 % of base)
         -60 : 21.dasm (-22.73 % of base)
         -56 : 7078.dasm (-7.00 % of base)
         -56 : 11412.dasm (-32.56 % of base)
         -52 : 14007.dasm (-27.08 % of base)
         -52 : 7743.dasm (-15.66 % of base)
         -52 : 12870.dasm (-18.84 % of base)
         -48 : 3927.dasm (-34.29 % of base)

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

Top method regressions (bytes):
           8 (6.25 % of base) : 17329.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

Top method improvements (bytes):
       -1900 (-29.86 % of base) : 13916.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -300 (-11.70 % of base) : 11841.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -256 (-32.00 % of base) : 14685.dasm - System.TimeZoneInfo+AdjustmentRule:AdjustDaylightDeltaToExpectedRange(byref,byref) (Tier0)
        -180 (-16.07 % of base) : 4206.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -120 (-8.80 % of base) : 12723.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTimeIso(Newtonsoft.Json.Utilities.StringReference,int,byref):ubyte (Tier0)
        -116 (-8.10 % of base) : 4152.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -104 (-19.26 % of base) : 11936.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (Tier0)
         -88 (-40.74 % of base) : 2643.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2642.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -80 (-31.25 % of base) : 2941.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -80 (-35.71 % of base) : 13624.dasm - System.Net.SocketAddress:.cctor() (Tier0)
         -72 (-22.78 % of base) : 16585.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -60 (-22.73 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -60 (-14.56 % of base) : 18701.dasm - System.Threading.TimerQueueTimer:CallCallback(ubyte):this (Tier0)
         -56 (-7.00 % of base) : 7078.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConditionalExpression(System.Linq.Expressions.Expression,int):this (Tier0)
         -56 (-32.56 % of base) : 11412.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -52 (-15.66 % of base) : 7743.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -52 (-27.08 % of base) : 14007.dasm - System.Diagnostics.Metrics.MeterListener:GetAllListeners():System.Collections.Generic.List`1[System.Diagnostics.Metrics.MeterListener] (Tier0)
         -52 (-18.84 % of base) : 12870.dasm - System.Security.Cryptography.Apple.SafeTemporaryKeychainHandle:TrackKeychain(System.Security.Cryptography.Apple.SafeTemporaryKeychainHandle) (Tier0)
         -48 (-34.29 % of base) : 3927.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (Tier0)

Top method regressions (percentages):
           8 (6.25 % of base) : 17329.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

Top method improvements (percentages):
         -88 (-40.74 % of base) : 2643.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2642.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 13044.dasm - Internal.Cryptography.Helpers:get_HasSymmetricEncryption():ubyte (Tier0)
         -20 (-38.46 % of base) : 2801.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -20 (-38.46 % of base) : 7173.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -20 (-38.46 % of base) : 1054.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-38.46 % of base) : 13989.dasm - System.Diagnostics.Metrics.Instrument:get_SyncObject():System.Object (Tier0)
         -20 (-38.46 % of base) : 13986.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 89.dasm - System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
         -20 (-38.46 % of base) : 68.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 5933.dasm - System.IO.Pipelines.PipeScheduler:get_ThreadPool():System.IO.Pipelines.PipeScheduler (Tier0)
         -20 (-38.46 % of base) : 2072.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-38.46 % of base) : 13957.dasm - System.Net.Http.Headers.AltSvcHeaderParser:get_Parser():System.Net.Http.Headers.AltSvcHeaderParser (Tier0)
         -20 (-38.46 % of base) : 13812.dasm - System.Net.Http.HttpMethod:get_Get():System.Net.Http.HttpMethod (Tier0)
         -20 (-38.46 % of base) : 13977.dasm - System.Net.Http.Metrics.MetricsHandler+SharedMeter:get_Instance():System.Diagnostics.Metrics.Meter (Tier0)
         -20 (-38.46 % of base) : 13635.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -20 (-38.46 % of base) : 16737.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 1703.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 9549.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -20 (-38.46 % of base) : 6801.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)


benchmarks.run_tiered.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1037520 (overridden on cmd)
Total bytes of diff: 1030824 (overridden on cmd)
Total bytes of delta: -6696 (-0.65 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 12741.dasm (6.25 % of base)

Top file improvements (bytes):
       -1900 : 14025.dasm (-29.86 % of base)
        -256 : 14589.dasm (-32.00 % of base)
        -180 : 3097.dasm (-16.07 % of base)
        -120 : 6536.dasm (-8.80 % of base)
        -116 : 3044.dasm (-8.10 % of base)
        -116 : 5997.dasm (-53.70 % of base)
         -88 : 2486.dasm (-40.74 % of base)
         -88 : 2487.dasm (-40.74 % of base)
         -80 : 6150.dasm (-47.62 % of base)
         -80 : 7703.dasm (-35.71 % of base)
         -80 : 6892.dasm (-31.25 % of base)
         -72 : 10849.dasm (-22.78 % of base)
         -60 : 21.dasm (-22.73 % of base)
         -56 : 10097.dasm (-32.56 % of base)
         -56 : 9592.dasm (-7.00 % of base)
         -52 : 12087.dasm (-15.66 % of base)
         -48 : 10586.dasm (-34.29 % of base)
         -44 : 11842.dasm (-8.94 % of base)
         -44 : 4802.dasm (-22.92 % of base)
         -40 : 7906.dasm (-4.48 % of base)

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

Top method regressions (bytes):
           8 (6.25 % of base) : 12741.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

Top method improvements (bytes):
       -1900 (-29.86 % of base) : 14025.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -256 (-32.00 % of base) : 14589.dasm - System.TimeZoneInfo+AdjustmentRule:AdjustDaylightDeltaToExpectedRange(byref,byref) (Tier0)
        -180 (-16.07 % of base) : 3097.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -120 (-8.80 % of base) : 6536.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTimeIso(Newtonsoft.Json.Utilities.StringReference,int,byref):ubyte (Tier0)
        -116 (-8.10 % of base) : 3044.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -116 (-53.70 % of base) : 5997.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
         -88 (-40.74 % of base) : 2487.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2486.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -80 (-31.25 % of base) : 6892.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -80 (-35.71 % of base) : 7703.dasm - System.Net.SocketAddress:.cctor() (Tier0)
         -80 (-47.62 % of base) : 6150.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
         -72 (-22.78 % of base) : 10849.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -60 (-22.73 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -56 (-7.00 % of base) : 9592.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConditionalExpression(System.Linq.Expressions.Expression,int):this (Tier0)
         -56 (-32.56 % of base) : 10097.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -52 (-15.66 % of base) : 12087.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -48 (-34.29 % of base) : 10586.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:GreaterThanOrEqualAllBenchmark():ubyte:this (Tier0)
         -44 (-8.94 % of base) : 11842.dasm - System.MemoryExtensions:IndexOf(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int (Tier1)
         -44 (-22.92 % of base) : 4802.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)
         -40 (-16.39 % of base) : 7997.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+AwaitableSocketAsyncEventArgs:<.ctor>b__2_0(System.Object,System.Net.Sockets.SocketAsyncEventArgs):this (Tier0)

Top method regressions (percentages):
           8 (6.25 % of base) : 12741.dasm - System.Numerics.Tests.Perf_Plane:NormalizeBenchmark():System.Numerics.Plane:this (Tier0)

Top method improvements (percentages):
        -116 (-53.70 % of base) : 5997.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
         -80 (-47.62 % of base) : 6150.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
         -88 (-40.74 % of base) : 2487.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2486.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 13365.dasm - Internal.Cryptography.Helpers:get_HasSymmetricEncryption():ubyte (Tier0)
         -20 (-38.46 % of base) : 9685.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -20 (-38.46 % of base) : 12993.dasm - Microsoft.Extensions.Logging.NullScope:get_Instance():Microsoft.Extensions.Logging.NullScope (Tier0)
         -20 (-38.46 % of base) : 1057.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_DisableFileLocking():ubyte (Tier0)
         -20 (-38.46 % of base) : 89.dasm - System.Diagnostics.Tracing.ActivityTracker:get_Instance():System.Diagnostics.Tracing.ActivityTracker (Tier0)
         -20 (-38.46 % of base) : 68.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 8377.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
         -20 (-38.46 % of base) : 2072.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-38.46 % of base) : 7715.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -20 (-38.46 % of base) : 1245.dasm - System.Reflection.Metadata.MetadataStringDecoder:get_DefaultUTF8():System.Reflection.Metadata.MetadataStringDecoder (Tier0)
         -20 (-38.46 % of base) : 11023.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 1705.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 2809.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
         -20 (-38.46 % of base) : 9177.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -20 (-38.46 % of base) : 6084.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-38.46 % of base) : 7277.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)


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: 247160 (overridden on cmd)
Total bytes of diff: 246384 (overridden on cmd)
Total bytes of delta: -776 (-0.31 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -212 : 197.dasm (-19.49 % of base)
        -152 : 900.dasm (-45.78 % of base)
        -144 : 948.dasm (-59.02 % of base)
         -52 : 24.dasm (-18.06 % of base)
         -32 : 402.dasm (-16.67 % of base)
         -32 : 427.dasm (-14.55 % of base)
         -20 : 232.dasm (-11.36 % of base)
         -20 : 442.dasm (-19.23 % of base)
         -20 : 14.dasm (-18.52 % of base)
         -20 : 235.dasm (-5.95 % of base)
         -20 : 42.dasm (-26.32 % of base)
         -20 : 563.dasm (-38.46 % of base)
         -20 : 17.dasm (-10.20 % of base)
          -4 : 131.dasm (-2.17 % of base)
          -4 : 1803.dasm (-9.09 % of base)
          -4 : 1955.dasm (-7.69 % of base)

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

Top method improvements (bytes):
        -212 (-19.49 % of base) : 197.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
        -152 (-45.78 % of base) : 900.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
        -144 (-59.02 % of base) : 948.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
         -52 (-18.06 % of base) : 24.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -32 (-14.55 % of base) : 427.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -32 (-16.67 % of base) : 402.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -20 (-18.52 % of base) : 14.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -20 (-26.32 % of base) : 42.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
         -20 (-10.20 % of base) : 17.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)
         -20 (-11.36 % of base) : 232.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(long,ubyte):this (Tier0)
         -20 (-5.95 % of base) : 235.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
         -20 (-38.46 % of base) : 563.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
         -20 (-19.23 % of base) : 442.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
          -4 (-7.69 % of base) : 1955.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
          -4 (-9.09 % of base) : 1803.dasm - Helper:Create(int):int (Tier0)
          -4 (-2.17 % of base) : 131.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

Top method improvements (percentages):
        -144 (-59.02 % of base) : 948.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
        -152 (-45.78 % of base) : 900.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
         -20 (-38.46 % of base) : 563.dasm - System.Text.RegularExpressions.Match:get_Empty():System.Text.RegularExpressions.Match (Tier0)
         -20 (-26.32 % of base) : 42.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
        -212 (-19.49 % of base) : 197.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
         -20 (-19.23 % of base) : 442.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
         -20 (-18.52 % of base) : 14.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -52 (-18.06 % of base) : 24.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -32 (-16.67 % of base) : 402.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -32 (-14.55 % of base) : 427.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -20 (-11.36 % of base) : 232.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(long,ubyte):this (Tier0)
         -20 (-10.20 % of base) : 17.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)
          -4 (-9.09 % of base) : 1803.dasm - Helper:Create(int):int (Tier0)
          -4 (-7.69 % of base) : 1955.dasm - Helper:Create(ImplementOneInterface):ImplementOneInterface (Tier0)
         -20 (-5.95 % of base) : 235.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          -4 (-2.17 % of base) : 131.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

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


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: 11447832 (overridden on cmd)
Total bytes of diff: 11447792 (overridden on cmd)
Total bytes of delta: -40 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 23255.dasm (-5.88 % of base)
         -12 : 183360.dasm (-5.88 % of base)
          -4 : 186156.dasm (-2.50 % of base)
          -4 : 23259.dasm (-4.00 % of base)
          -4 : 183364.dasm (-4.00 % of base)
          -4 : 26181.dasm (-2.50 % of base)

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

Top method improvements (bytes):
         -12 (-5.88 % of base) : 23255.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
         -12 (-5.88 % of base) : 183360.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-2.50 % of base) : 186156.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-2.50 % of base) : 26181.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-4.00 % of base) : 23259.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -4 (-4.00 % of base) : 183364.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method improvements (percentages):
         -12 (-5.88 % of base) : 23255.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
         -12 (-5.88 % of base) : 183360.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-4.00 % of base) : 23259.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -4 (-4.00 % of base) : 183364.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -4 (-2.50 % of base) : 186156.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-2.50 % of base) : 26181.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)

6 total methods with Code Size differences (6 improved, 0 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: 708248 (overridden on cmd)
Total bytes of diff: 704764 (overridden on cmd)
Total bytes of delta: -3484 (-0.49 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -272 : 9.dasm (-72.34 % of base)
        -140 : 5369.dasm (-8.93 % of base)
        -116 : 319.dasm (-35.37 % of base)
        -104 : 6784.dasm (-18.44 % of base)
        -104 : 6807.dasm (-18.44 % of base)
        -104 : 6825.dasm (-18.71 % of base)
        -104 : 6801.dasm (-18.44 % of base)
        -100 : 494.dasm (-26.60 % of base)
         -96 : 6813.dasm (-17.02 % of base)
         -96 : 6819.dasm (-16.00 % of base)
         -80 : 7536.dasm (-12.99 % of base)
         -80 : 7537.dasm (-13.42 % of base)
         -80 : 7538.dasm (-14.08 % of base)
         -80 : 7539.dasm (-12.99 % of base)
         -80 : 841.dasm (-30.77 % of base)
         -80 : 7540.dasm (-14.08 % of base)
         -80 : 7541.dasm (-14.08 % of base)
         -76 : 1157.dasm (-41.30 % of base)
         -72 : 728.dasm (-52.94 % of base)
         -64 : 4341.dasm (-35.56 % of base)

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

Top method improvements (bytes):
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -140 (-8.93 % of base) : 5369.dasm - System.DateTimeFormat:TryFormat[ubyte](System.DateTime,System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -116 (-35.37 % of base) : 319.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -104 (-18.44 % of base) : 6807.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
        -104 (-18.71 % of base) : 6825.dasm - System.Lazy`1[long]:CreateValue():long:this (FullOpts)
        -104 (-18.44 % of base) : 6801.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
        -104 (-18.44 % of base) : 6784.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
        -100 (-26.60 % of base) : 494.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -96 (-17.02 % of base) : 6813.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
         -96 (-16.00 % of base) : 6819.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
         -80 (-12.99 % of base) : 7536.dasm - System.MemoryExtensions:Trim(System.Memory`1[ushort]):System.Memory`1[ushort] (FullOpts)
         -80 (-12.99 % of base) : 7539.dasm - System.MemoryExtensions:Trim(System.ReadOnlyMemory`1[ushort]):System.ReadOnlyMemory`1[ushort] (FullOpts)
         -80 (-14.08 % of base) : 7538.dasm - System.MemoryExtensions:TrimEnd(System.Memory`1[ushort]):System.Memory`1[ushort] (FullOpts)
         -80 (-14.08 % of base) : 7541.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlyMemory`1[ushort]):System.ReadOnlyMemory`1[ushort] (FullOpts)
         -80 (-13.42 % of base) : 7537.dasm - System.MemoryExtensions:TrimStart(System.Memory`1[ushort]):System.Memory`1[ushort] (FullOpts)
         -80 (-14.08 % of base) : 7540.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlyMemory`1[ushort]):System.ReadOnlyMemory`1[ushort] (FullOpts)
         -80 (-30.77 % of base) : 841.dasm - System.SR:Format(System.IFormatProvider,System.String,System.Object[]):System.String (FullOpts)
         -76 (-41.30 % of base) : 1157.dasm - System.SR:GetResourceString(System.String):System.String (FullOpts)
         -72 (-52.94 % of base) : 728.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -64 (-35.56 % of base) : 4341.dasm - System.Convert:IsDBNull(System.Object):ubyte (FullOpts)

Top method improvements (percentages):
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -44 (-57.89 % of base) : 7996.dasm - System.Random:get_Shared():System.Random (FullOpts)
         -44 (-57.89 % of base) : 829.dasm - System.SR:UsingResourceKeys():ubyte (FullOpts)
         -44 (-57.89 % of base) : 10096.dasm - System.StringComparer:get_InvariantCulture():System.StringComparer (FullOpts)
         -44 (-57.89 % of base) : 10097.dasm - System.StringComparer:get_InvariantCultureIgnoreCase():System.StringComparer (FullOpts)
         -72 (-52.94 % of base) : 728.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -44 (-47.83 % of base) : 2028.dasm - System.Decimal:System.Numerics.IAdditiveIdentity<System.Decimal,System.Decimal>.get_AdditiveIdentity():System.Decimal (FullOpts)
         -44 (-47.83 % of base) : 2041.dasm - System.Decimal:System.Numerics.IMultiplicativeIdentity<System.Decimal,System.Decimal>.get_MultiplicativeIdentity():System.Decimal (FullOpts)
         -44 (-47.83 % of base) : 2105.dasm - System.Decimal:System.Numerics.ISignedNumber<System.Decimal>.get_NegativeOne():System.Decimal (FullOpts)
         -44 (-42.31 % of base) : 487.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -76 (-41.30 % of base) : 1157.dasm - System.SR:GetResourceString(System.String):System.String (FullOpts)
         -44 (-39.29 % of base) : 577.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -56 (-37.84 % of base) : 520.dasm - System.OrdinalIgnoreCaseComparer:GetHashCode(System.String):int:this (FullOpts)
         -64 (-35.56 % of base) : 4341.dasm - System.Convert:IsDBNull(System.Object):ubyte (FullOpts)
         -44 (-35.48 % of base) : 497.dasm - System.ConsolePal:GetConsoleEncoding():System.Text.Encoding (FullOpts)
        -116 (-35.37 % of base) : 319.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
         -56 (-31.11 % of base) : 6812.dasm - System.Lazy`1[double]:PublicationOnly(System.LazyHelper,double):this (FullOpts)
         -56 (-31.11 % of base) : 6818.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:PublicationOnly(System.LazyHelper,System.Numerics.Vector`1[float]):this (FullOpts)
         -80 (-30.77 % of base) : 841.dasm - System.SR:Format(System.IFormatProvider,System.String,System.Object[]):System.String (FullOpts)
         -48 (-27.91 % of base) : 6824.dasm - System.Lazy`1[long]:PublicationOnly(System.LazyHelper,long):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: 649232 (overridden on cmd)
Total bytes of diff: 646276 (overridden on cmd)
Total bytes of delta: -2956 (-0.46 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 868.dasm (10.00 % of base)
           4 : 8747.dasm (0.83 % of base)

Top file improvements (bytes):
         -92 : 4054.dasm (-21.70 % of base)
         -92 : 7780.dasm (-5.36 % of base)
         -76 : 7109.dasm (-24.05 % of base)
         -68 : 2132.dasm (-23.29 % of base)
         -68 : 934.dasm (-10.69 % of base)
         -64 : 2120.dasm (-16.49 % of base)
         -64 : 2131.dasm (-16.49 % of base)
         -64 : 2135.dasm (-17.98 % of base)
         -64 : 2136.dasm (-16.49 % of base)
         -64 : 2460.dasm (-12.21 % of base)
         -60 : 2342.dasm (-39.47 % of base)
         -60 : 2455.dasm (-39.47 % of base)
         -60 : 2573.dasm (-39.47 % of base)
         -52 : 3059.dasm (-16.05 % of base)
         -52 : 716.dasm (-18.06 % of base)
         -44 : 2526.dasm (-26.19 % of base)
         -40 : 238.dasm (-6.99 % of base)
         -40 : 6853.dasm (-35.71 % of base)
         -40 : 7650.dasm (-25.64 % of base)
         -40 : 863.dasm (-10.00 % of base)

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

Top method regressions (bytes):
          16 (10.00 % of base) : 868.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
           4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

Top method improvements (bytes):
         -92 (-5.36 % of base) : 7780.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprConstant:get_Object():System.Object:this (Tier0)
         -92 (-21.70 % of base) : 4054.dasm - NativeExports.Handles:AllocateHandleCore():long (Tier0)
         -76 (-24.05 % of base) : 7109.dasm - Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon (Tier0)
         -68 (-23.29 % of base) : 2132.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():ulong (Tier0)
         -68 (-10.69 % of base) : 934.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -64 (-17.98 % of base) : 2135.dasm - NativeExports.ComInterfaceGenerator.ArrayMarshalling+MyComWrapper:get_GetIntArrayVTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2120.dasm - NativeExports.ComInterfaceGenerator.GetAndSetInt+MyComWrapper:get_s_comInterface1VTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2131.dasm - NativeExports.ComInterfaceGenerator.GetPoint+ImplementingObject+ABI:get_VTable():ulong (Tier0)
         -64 (-16.49 % of base) : 2136.dasm - NativeExports.ComInterfaceGenerator.StringMarshalling+MyComWrapper:get_S_Utf8VTable():ulong (Tier0)
         -64 (-12.21 % of base) : 2460.dasm - NativeExports.ComInterfaceGenerator.StringMarshallingOverride+MyComWrapper:get_S_DerivedVTable():ulong (Tier0)
         -60 (-39.47 % of base) : 2342.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2455.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2573.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -52 (-16.05 % of base) : 3059.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -52 (-18.06 % of base) : 716.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -44 (-26.19 % of base) : 2526.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():ulong (Tier0)
         -40 (-15.38 % of base) : 18.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-25.64 % of base) : 7650.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:Get(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
         -40 (-35.71 % of base) : 6853.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
         -40 (-10.00 % of base) : 863.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)

Top method regressions (percentages):
          16 (10.00 % of base) : 868.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
           4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

Top method improvements (percentages):
         -60 (-39.47 % of base) : 2342.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2455.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -60 (-39.47 % of base) : 2573.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():ulong (Tier0)
         -20 (-38.46 % of base) : 208.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -20 (-38.46 % of base) : 13.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -20 (-38.46 % of base) : 16.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -20 (-38.46 % of base) : 32.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -20 (-38.46 % of base) : 2688.dasm - SharedTypes.ComInterfaces.MarshallingFails.IStringArrayMarshallingFailsImpl:get_StartingStrings():System.String[] (Tier0)
         -20 (-38.46 % of base) : 3623.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
         -20 (-38.46 % of base) : 5704.dasm - System.Reflection.Metadata.MetadataStringDecoder:get_DefaultUTF8():System.Reflection.Metadata.MetadataStringDecoder (Tier0)
         -20 (-38.46 % of base) : 2067.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:get_DefaultIUnknownInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy (Tier0)
         -20 (-38.46 % of base) : 6114.dasm - System.Security.Cryptography.HMACSHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6116.dasm - System.Security.Cryptography.HMACSHA3_384:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 6118.dasm - System.Security.Cryptography.HMACSHA3_512:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 5996.dasm - System.Security.Cryptography.SHA3_256:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 5994.dasm - System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 5591.dasm - System.Security.Cryptography.SHA3_512:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 5458.dasm - System.Security.Cryptography.Utf8DataEncoding:get_ThrowingUtf8Encoding():System.Text.Encoding (Tier0)
         -20 (-38.46 % of base) : 5551.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -20 (-38.46 % of base) : 5971.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)


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: 102104 (overridden on cmd)
Total bytes of diff: 97788 (overridden on cmd)
Total bytes of delta: -4316 (-4.23 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 67.dasm (-77.27 % of base)
        -280 : 2401.dasm (-67.31 % of base)
        -200 : 1216.dasm (-79.37 % of base)
        -116 : 1824.dasm (-11.98 % of base)
        -112 : 503.dasm (-25.45 % of base)
        -104 : 121.dasm (-18.44 % of base)
        -100 : 343.dasm (-26.88 % of base)
         -88 : 138.dasm (-14.57 % of base)
         -88 : 723.dasm (-44.90 % of base)
         -76 : 965.dasm (-32.76 % of base)
         -72 : 1190.dasm (-30.00 % of base)
         -72 : 10.dasm (-10.53 % of base)
         -52 : 775.dasm (-15.29 % of base)
         -52 : 1942.dasm (-14.29 % of base)
         -44 : 1221.dasm (-52.38 % of base)
         -44 : 1324.dasm (-52.38 % of base)
         -44 : 1438.dasm (-52.38 % of base)
         -44 : 1597.dasm (-52.38 % of base)
         -44 : 1620.dasm (-52.38 % of base)
         -44 : 1684.dasm (-52.38 % of base)

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

Top method improvements (bytes):
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -280 (-67.31 % of base) : 2401.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -200 (-79.37 % of base) : 1216.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -116 (-11.98 % of base) : 1824.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -112 (-25.45 % of base) : 503.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -104 (-18.44 % of base) : 121.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
        -100 (-26.88 % of base) : 343.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -88 (-44.90 % of base) : 723.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -88 (-14.57 % of base) : 138.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -76 (-32.76 % of base) : 965.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -72 (-30.00 % of base) : 1190.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():ulong (FullOpts)
         -72 (-10.53 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -52 (-14.29 % of base) : 1942.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (FullOpts)
         -52 (-15.29 % of base) : 775.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler:AddExecutionOptions(System.String,Xunit.Abstractions.ITestFrameworkExecutionOptions):this (FullOpts)
         -44 (-52.38 % of base) : 1669.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1324.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1310.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1347.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1220.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1438.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)

Top method improvements (percentages):
        -200 (-79.37 % of base) : 1216.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-68.75 % of base) : 735.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
        -280 (-67.31 % of base) : 2401.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
         -44 (-57.89 % of base) : 2091.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -44 (-57.89 % of base) : 1147.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -44 (-57.89 % of base) : 761.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 536.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1863.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 769.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1902.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-52.38 % of base) : 1669.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1324.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1310.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1347.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1220.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1438.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1726.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1620.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1732.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (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: 402548 (overridden on cmd)
Total bytes of diff: 390756 (overridden on cmd)
Total bytes of delta: -11792 (-2.93 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 2039.dasm (6.90 % of base)
           4 : 2202.dasm (2.33 % of base)
           4 : 3044.dasm (2.78 % of base)
           4 : 3127.dasm (2.33 % of base)
           4 : 4563.dasm (2.33 % of base)

Top file improvements (bytes):
       -6416 : 4692.dasm (-73.54 % of base)
        -544 : 687.dasm (-77.27 % of base)
        -292 : 4625.dasm (-62.39 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -212 : 3441.dasm (-43.44 % of base)
        -128 : 2789.dasm (-50.79 % of base)
        -128 : 4538.dasm (-35.56 % of base)
        -116 : 401.dasm (-35.37 % of base)
        -112 : 719.dasm (-25.45 % of base)
        -112 : 2455.dasm (-60.87 % of base)
        -104 : 2553.dasm (-12.56 % of base)
        -100 : 2550.dasm (-8.39 % of base)
         -92 : 3307.dasm (-54.76 % of base)
         -92 : 4552.dasm (-74.19 % of base)
         -92 : 4553.dasm (-74.19 % of base)
         -88 : 3268.dasm (-56.41 % of base)
         -84 : 2558.dasm (-39.62 % of base)
         -76 : 1882.dasm (-41.30 % of base)
         -72 : 1510.dasm (-52.94 % of base)
         -72 : 233.dasm (-10.53 % of base)

63 total files with Code Size differences (58 improved, 5 regressed), 1 unchanged.

Top method regressions (bytes):
           8 (6.90 % of base) : 2039.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 3044.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3127.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 4563.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2202.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (bytes):
       -6416 (-73.54 % of base) : 4692.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -544 (-77.27 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -292 (-62.39 % of base) : 4625.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -212 (-43.44 % of base) : 3441.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -128 (-50.79 % of base) : 2789.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)
        -128 (-35.56 % of base) : 4538.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -116 (-35.37 % of base) : 401.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
        -112 (-60.87 % of base) : 2455.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
        -112 (-25.45 % of base) : 719.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -104 (-12.56 % of base) : 2553.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
        -100 (-8.39 % of base) : 2550.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -92 (-74.19 % of base) : 4553.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 4552.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -92 (-54.76 % of base) : 3307.dasm - Microsoft.Build.Shared.FileSystem.FileSystems:GetFileSystem():Microsoft.Build.Shared.FileSystem.IFileSystem (FullOpts)
         -88 (-56.41 % of base) : 3268.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -84 (-39.62 % of base) : 2558.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
         -76 (-41.30 % of base) : 1882.dasm - System.SR:GetResourceString(System.String):System.String (FullOpts)
         -72 (-52.94 % of base) : 1510.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -72 (-10.53 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
           8 (6.90 % of base) : 2039.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 3044.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3127.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 4563.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2202.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -92 (-74.19 % of base) : 4553.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 4552.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
       -6416 (-73.54 % of base) : 4692.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -292 (-62.39 % of base) : 4625.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
         -44 (-61.11 % of base) : 2254.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
        -112 (-60.87 % of base) : 2455.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -68 (-60.71 % of base) : 4630.dasm - FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions:ErrorLogger.ErrorR(FSharp.Compiler.ErrorLogger+ErrorLogger,System.Exception) (FullOpts)
         -44 (-57.89 % of base) : 2559.dasm - FSComp.SR:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 1716.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2751.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2914.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 4748.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2141.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2149.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2403.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2503.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -44 (-57.89 % of base) : 2492.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2845.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)



windows arm64

Diffs are based on 132,266 contexts (15,289 MinOpts, 116,977 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 115,590 (45.92%)

Overall (-61,336 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 182,012 -2,820
benchmarks.run_pgo.windows.arm64.checked.mch 1,173,228 -6,688
benchmarks.run_tiered.windows.arm64.checked.mch 862,284 -7,268
coreclr_tests.run.windows.arm64.checked.mch 77,860 -676
libraries.crossgen2.windows.arm64.checked.mch 10,005,180 -76
libraries.pmi.windows.arm64.checked.mch 381,864 -8,852
libraries_tests.run.windows.arm64.Release.mch 334,372 -1,272
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 98,900 -4,260
realworld.run.windows.arm64.checked.mch 400,564 -11,784
smoke_tests.nativeaot.windows.arm64.checked.mch 1,012,896 -17,640

MinOpts (-13,448 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 974,380 -6,476
benchmarks.run_tiered.windows.arm64.checked.mch 736,852 -5,780
libraries_tests.run.windows.arm64.Release.mch 241,184 -1,192

FullOpts (-47,888 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 182,012 -2,820
benchmarks.run_pgo.windows.arm64.checked.mch 198,848 -212
benchmarks.run_tiered.windows.arm64.checked.mch 125,432 -1,488
coreclr_tests.run.windows.arm64.checked.mch 77,860 -676
libraries.crossgen2.windows.arm64.checked.mch 10,004,164 -76
libraries.pmi.windows.arm64.checked.mch 381,864 -8,852
libraries_tests.run.windows.arm64.Release.mch 93,188 -80
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 98,900 -4,260
realworld.run.windows.arm64.checked.mch 400,564 -11,784
smoke_tests.nativeaot.windows.arm64.checked.mch 1,012,684 -17,640

Example diffs

benchmarks.run.windows.arm64.checked.mch

-44 (-45.83%) : 2992.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)

@@ -16,14 +16,7 @@ G_M46897_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M46897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M46897_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M46897_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -35,23 +28,13 @@ G_M46897_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] ldr wzr, [x0] ;; size=36 bbWeight=1 PerfScore 12.00
-G_M46897_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M46897_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46897_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M46897_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 21.00, instruction count 24, allocated bytes for code 96 (MethodHash=8a4148ce) for method System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 15.50, instruction count 13, allocated bytes for code 52 (MethodHash=8a4148ce) for method System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +45,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-40.00%) : 2989.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)

@@ -9,81 +9,64 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Threading.Tasks.TaskScheduler>
-; V01 loc0 [V01,T03] ( 4, 3.50) int -> x0 -; V02 loc1 [V02,T00] ( 3, 8.50) int -> x1
+; V01 loc0 [V01,T03] ( 4, 3.50) int -> x1 +; V02 loc1 [V02,T00] ( 3, 8.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V05 cse0 [V05,T05] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive" -; V06 cse1 [V06,T02] ( 2, 4.50) long -> x0 hoist "CSE - aggressive" -; V07 cse2 [V07,T04] ( 4, 3 ) byref -> x19 "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 2, 4.50) long -> x1 hoist "CSE - aggressive" +; V06 cse1 [V06,T04] ( 4, 3 ) byref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M51313_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- add x19, x0, #8 - ; byrRegs +[x19] - ldapr w0, [x19]
+ add x0, x0, #8
; gcrRegs -[x0]
- cbnz w0, G_M51313_IG07
+ ; byrRegs +[x0] + ldapr w1, [x0] + cbnz w1, G_M51313_IG06
;; size=12 bbWeight=1 PerfScore 4.50
-G_M51313_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M51313_IG08 - ;; size=20 bbWeight=0.50 PerfScore 2.75 -G_M51313_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+G_M51313_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M51313_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - mov w1, #1 - ldaddal w1, w1, [x0] - add w1, w1, #1 - cbz w1, G_M51313_IG05
+G_M51313_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w2, #1 + ldaddal w2, w2, [x1] + add w2, w2, #1 + cbz w2, G_M51313_IG04
;; size=16 bbWeight=4 PerfScore 20.00
-G_M51313_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov w0, wzr - casal w0, w1, [x19] - ldapr w0, [x19]
+G_M51313_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + mov w1, wzr + casal w1, w2, [x0] + ldapr w1, [x0]
;; size=12 bbWeight=0.50 PerfScore 3.25
-G_M51313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x19] - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M51313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + mov w0, w1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M51313_IG07: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M51313_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref - ; byrRegs +[x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M51313_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 37.75, instruction count 30, allocated bytes for code 120 (MethodHash=40f8378e) for method System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 32.50, instruction count 18, allocated bytes for code 72 (MethodHash=40f8378e) for method System.Threading.Tasks.TaskScheduler:get_Id():int:this (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 : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -91,10 +74,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-39.29%) : 1275.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)

@@ -17,14 +17,7 @@ G_M6374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M6374_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M6374_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x19, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x19, #0xD1FFAB1E LSL #16 movk x19, #0xD1FFAB1E LSL #32 @@ -37,21 +30,13 @@ G_M6374_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x0 str x0, [x19, #-0xC0] ;; size=44 bbWeight=1 PerfScore 12.00
-G_M6374_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M6374_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-G_M6374_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M6374_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 24.00, instruction count 28, allocated bytes for code 112 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
+; Total bytes of code 68, prolog size 12, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=7617e719) for method System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-2.60%) : 3058.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)

@@ -113,7 +113,7 @@ G_M48248_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 add x20, x0, #24 ; byrRegs +[x20] ldapr w1, [x20]
- tbnz w1, #30, G_M48248_IG41
+ tbnz w1, #30, G_M48248_IG40
ldr x1, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x1] cbz x1, G_M48248_IG03 @@ -123,15 +123,15 @@ G_M48248_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 ; byrRegs +[x1] ldapr w1, [x1] ; byrRegs -[x1]
- cbnz w1, G_M48248_IG44
+ cbnz w1, G_M48248_IG43
;; size=36 bbWeight=1 PerfScore 14.00 G_M48248_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0] cmn w19, #1
- blt G_M48248_IG42
+ blt G_M48248_IG41
ldapr w1, [x20] tst w1, #0xD1FFAB1E
- bne G_M48248_IG14
+ bne G_M48248_IG13
cbnz w19, G_M48248_IG05 mov w0, wzr ;; size=28 bbWeight=1 PerfScore 7.50 @@ -174,7 +174,7 @@ G_M48248_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; gcr arg pop 0 ldapr w0, [x20] tst w0, #0xD1FFAB1E
- bne G_M48248_IG14
+ bne G_M48248_IG13
ldr w0, [fp, #0x48] // [V64 tmp51] cmp w0, #100 blt G_M48248_IG09 @@ -200,7 +200,7 @@ G_M48248_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; byrRegs +[x0] ldapr w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M48248_IG44
+ cbnz w0, G_M48248_IG43
;; size=68 bbWeight=4 PerfScore 86.00 G_M48248_IG09: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz ldr w0, [fp, #0x48] // [V64 tmp51] @@ -219,7 +219,7 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x0 @@ -227,7 +227,7 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b mov x0, x24 ; gcrRegs -[x0] ; byrRegs +[x0]
- cbz x0, G_M48248_IG43
+ cbz x0, G_M48248_IG42
mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0] @@ -236,40 +236,33 @@ G_M48248_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ;; size=52 bbWeight=1 PerfScore 12.50 G_M48248_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1100000 {x20 x24}, byref, isz ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M48248_IG45 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M48248_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1100000 {x20 x24}, 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]
- cbz x1, G_M48248_IG46
+ cbz x1, G_M48248_IG44
ldr x2, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x2]
- cbnz x2, G_M48248_IG16
+ cbnz x2, G_M48248_IG15
mov x25, xzr ; gcrRegs +[x25] mov x26, xzr ;; size=36 bbWeight=1 PerfScore 9.50
-G_M48248_IG13: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref
+G_M48248_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref
; gcrRegs -[x1-x2] str x25, [fp, #0x18] // [V65 tmp52] ; GC ptr vars +{V65} str x26, [fp, #0x30] // [V66 tmp53]
- b G_M48248_IG17
+ b G_M48248_IG16
;; size=12 bbWeight=1 PerfScore 3.00
-G_M48248_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48248_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x25] ; byrRegs -[x20 x24] ; GC ptr vars -{V00 V65} mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M48248_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M48248_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x90] ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -277,7 +270,7 @@ G_M48248_IG15: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0006 {x1 x2}, byrefRegs=1100000 {x20 x24}, gcvars, byref
+G_M48248_IG15: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0006 {x1 x2}, byrefRegs=1100000 {x20 x24}, gcvars, byref
; gcrRegs +[x1-x2] ; byrRegs +[x20 x24] ; GC ptr vars +{V00} @@ -296,9 +289,9 @@ G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 mov x25, x0 ; gcrRegs +[x25] mov x26, x1
- b G_M48248_IG13
+ b G_M48248_IG12
;; size=48 bbWeight=1 PerfScore 11.00
-G_M48248_IG17: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref
+G_M48248_IG16: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars +{V65} ldapr x1, [x24] @@ -307,10 +300,10 @@ G_M48248_IG17: ; bbWeight=1, gcVars=0000000000000104 {V00 V65}, gcrefRegs ; GC ptr vars +{V09} str wzr, [fp, #0x40] // [V10 loc7] ;; size=12 bbWeight=1 PerfScore 5.00
-G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG17: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; gcrRegs -[x1] ldrb w2, [fp, #0x40] // [V10 loc7]
- cbnz w2, G_M48248_IG22
+ cbnz w2, G_M48248_IG21
add x1, fp, #64 // [V10 loc7] ldr x0, [fp, #0x20] // [V09 loc6] ; gcrRegs +[x0] @@ -318,7 +311,7 @@ G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcref ; gcrRegs -[x0] ; gcr arg pop 0 ldrb w0, [fp, #0x40] // [V10 loc7]
- cbnz w0, G_M48248_IG19
+ cbnz w0, G_M48248_IG18
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -332,17 +325,17 @@ G_M48248_IG18: ; bbWeight=1, gcVars=0000000001000104 {V00 V09 V65}, gcref ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=64 bbWeight=1 PerfScore 17.00
-G_M48248_IG19: ; bbWeight=8, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M48248_IG18: ; bbWeight=8, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
ldapr w0, [x20] tst w0, #0xD1FFAB1E
- beq G_M48248_IG23
+ beq G_M48248_IG22
;; size=12 bbWeight=8 PerfScore 36.00
-G_M48248_IG20: ; bbWeight=1, gcVars=0000000001000100 {V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, gcvars, byref
+G_M48248_IG19: ; bbWeight=1, gcVars=0000000001000100 {V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x20 x24] ; GC ptr vars -{V00}
- b G_M48248_IG33
+ b G_M48248_IG32
;; size=4 bbWeight=1 PerfScore 1.00
-G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M48248_IG20: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
add x0, fp, #80 // [V02 arg2] movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this movk x1, #0xD1FFAB1E LSL #16 @@ -352,7 +345,7 @@ G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M48248_IG22: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M48248_IG21: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -361,22 +354,22 @@ G_M48248_IG22: ; bbWeight=0, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M48248_IG23: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG22: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; byrRegs +[x20 x24] ; GC ptr vars +{V00} ldr x0, [fp, #0x50] // [V63 tmp50] ; gcrRegs +[x0]
- cbz x0, G_M48248_IG24
+ cbz x0, G_M48248_IG23
ldr x0, [fp, #0x50] // [V63 tmp50] add x0, x0, #32 ; gcrRegs -[x0] ; byrRegs +[x0] ldapr w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M48248_IG21
+ cbnz w0, G_M48248_IG20
;; size=24 bbWeight=4 PerfScore 38.00
-G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz - cbz w22, G_M48248_IG25
+G_M48248_IG23: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz + cbz w22, G_M48248_IG24
mov w0, w21 mov w1, w19 movz x2, #0xD1FFAB1E // code for System.Threading.TimeoutHelper:UpdateTimeOut(uint,int):int @@ -387,9 +380,9 @@ G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 { ; gcr arg pop 0 sxtw w23, w0 cmp w23, #0
- ble G_M48248_IG30
+ ble G_M48248_IG29
;; size=44 bbWeight=4 PerfScore 38.00
-G_M48248_IG25: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M48248_IG24: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, byref, isz
ldapr w1, [x20] and w1, w1, #0xD1FFAB1E add w1, w1, #1 @@ -404,9 +397,9 @@ G_M48248_IG25: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=1100000 { ; gcr arg pop 0 ldapr w1, [x20] tst w1, #0xD1FFAB1E
- beq G_M48248_IG27
+ beq G_M48248_IG26
;; size=48 bbWeight=4 PerfScore 64.00
-G_M48248_IG26: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x20}, byref
+G_M48248_IG25: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x20}, byref
; byrRegs -[x24] ldapr w1, [x20] and w1, w1, #0xD1FFAB1E @@ -424,9 +417,9 @@ G_M48248_IG26: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=100000 {x ; gcr arg pop 0 mov w0, #1 str w0, [fp, #0x3C] // [V11 loc8]
- b G_M48248_IG34
+ b G_M48248_IG33
;; size=48 bbWeight=1 PerfScore 14.00
-G_M48248_IG27: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
+G_M48248_IG26: ; bbWeight=4, gcVars=0000000001000104 {V00 V09 V65}, gcrefRegs=2000000 {x25}, byrefRegs=1100000 {x20 x24}, gcvars, byref, isz
; byrRegs +[x20 x24] ; GC ptr vars +{V00} ldapr x0, [x24] ...

+0 (0.00%) : 1341.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> x21 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -31,11 +31,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] mov x21, x0 ; gcrRegs +[x21]
- cbz x21, G_M22240_IG05
+ cbz x20, G_M22240_IG05
;; size=28 bbWeight=1 PerfScore 4.50 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x20] @@ -60,8 +60,8 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1 x21] +[x19-x20]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x21] +[x19]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -69,7 +69,7 @@ G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ldr x1, [x1, #0x38] blr x1 ; gcrRegs -[x19]
- cmp x0, x20
+ cmp x0, #0
cset x0, eq ; gcrRegs -[x0] ;; size=28 bbWeight=0.50 PerfScore 5.75

+0 (0.00%) : 1369.dasm - System.DefaultBinder:FindMostSpecificType(System.Type,System.Type,System.Type):int (FullOpts)

@@ -10,16 +10,16 @@ ; ; V00 arg0 [V00,T00] ( 22, 12.50) ref -> x19 class-hnd <System.Type> ; V01 arg1 [V01,T01] ( 22, 12.50) ref -> x20 class-hnd <System.Type>
-; V02 arg2 [V02,T02] ( 5, 3.50) ref -> x21 class-hnd single-def <System.Type> -; V03 loc0 [V03,T04] ( 4, 2 ) ref -> x22 class-hnd single-def <<unknown class>> -; V04 loc1 [V04,T05] ( 4, 2 ) ubyte -> x21
+; V02 arg2 [V02,T02] ( 4, 3 ) ref -> x21 class-hnd single-def <System.Type> +; V03 loc0 [V03,T09] ( 3, 1.50) ref -> x22 class-hnd single-def <<unknown class>> +; V04 loc1 [V04,T04] ( 4, 2 ) ubyte -> x21
; V05 loc2 [V05,T10] ( 3, 1.50) ubyte -> x0 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V08 tmp2 [V08,T09] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V09 cse0 [V09,T06] ( 4, 2 ) long -> x22 "CSE - aggressive"
+; V07 tmp1 [V07,T07] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V08 tmp2 [V08,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V09 cse0 [V09,T05] ( 4, 2 ) long -> x22 "CSE - aggressive"
; V10 cse1 [V10,T03] ( 5, 2.50) long -> registers multi-def "CSE - aggressive"
-; V11 cse2 [V11,T07] ( 4, 2 ) long -> x21 "CSE - moderate"
+; V11 cse2 [V11,T06] ( 4, 2 ) long -> x21 "CSE - moderate"
; ; Lcl frame size = 0 @@ -54,11 +54,11 @@ G_M53685_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] mov x22, x0 ; gcrRegs +[x22]
- cbz x22, G_M53685_IG04
+ cbz x21, G_M53685_IG04
mov x0, x22 mov x1, x19 ; gcrRegs +[x1] @@ -82,29 +82,26 @@ G_M53685_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs cbz w0, G_M53685_IG05 b G_M53685_IG16 ;; size=96 bbWeight=0.50 PerfScore 10.25
-G_M53685_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x21]
+G_M53685_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0]
- mov x1, x21 - ; gcrRegs +[x1]
+ mov x1, xzr
movz x2, #0xD1FFAB1E // code for System.Type:op_Equality(System.Type,System.Type):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0]
cbnz w0, G_M53685_IG18 mov x0, x20 ; gcrRegs +[x0]
- mov x1, x21 - ; gcrRegs +[x1]
+ mov x1, xzr
movz x2, #0xD1FFAB1E // code for System.Type:op_Equality(System.Type,System.Type):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0-x1 x21]
+ ; gcrRegs -[x0]
cbnz w0, G_M53685_IG16 ;; size=64 bbWeight=0.50 PerfScore 7.50 G_M53685_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz

benchmarks.run_pgo.windows.arm64.checked.mch

-48 (-46.15%) : 11777.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:BitwiseOrBenchmark():System.Runtime.Intrinsics.Vector128`1[float]:this (Tier0)

@@ -5,46 +5,33 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] this class-hnd <System.Runtime.Intrinsics.Tests.Perf_Vector128Float>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] this class-hnd <System.Runtime.Intrinsics.Tests.Perf_Vector128Float>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; TEMP_01 simd16 -> [fp+0x18]
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M40664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str x0, [fp, #0x28] // [V00 this]
+ str x0, [fp, #0x18] // [V00 this]
;; size=12 bbWeight=1 PerfScore 2.50 G_M40664_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr q16, [x0]
- str q16, [fp, #0x18] // [TEMP_01] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr q16, [x0] - ldr q17, [fp, #0x18] // [TEMP_01] - orr v0.4s, v17.4s, v16.4s - ;; size=84 bbWeight=1 PerfScore 18.50
+ ldr q17, [x0] + orr v0.4s, v16.4s, v17.4s + ;; size=36 bbWeight=1 PerfScore 9.50
G_M40664_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 23.00, instruction count 26, allocated bytes for code 104 (MethodHash=44ca6127) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Float:BitwiseOrBenchmark():System.Runtime.Intrinsics.Vector128`1[float]:this (Tier0)
+; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=44ca6127) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Float:BitwiseOrBenchmark():System.Runtime.Intrinsics.Vector128`1[float]:this (Tier0)
; ============================================================ Unwind Info: @@ -55,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,7 +50,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end E4 end

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 73.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M9075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M9075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M9075_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.70%) : 10838.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)

@@ -19,8 +19,7 @@ G_M22193_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #43 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -54,13 +53,13 @@ G_M22193_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=128 bbWeight=1 PerfScore 36.00
+ ;; size=124 bbWeight=1 PerfScore 35.50
G_M22193_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 8, PerfScore 40.50, instruction count 37, allocated bytes for code 148 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)
+; Total bytes of code 144, prolog size 8, PerfScore 40.00, instruction count 36, allocated bytes for code 144 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (Tier0)
; ============================================================ Unwind Info: @@ -71,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.90%) : 5207.dasm - System.Xml.Serialization.TypeScope:AddPrimitive(System.Type,System.String,System.String,int) (Tier0)

@@ -37,12 +37,11 @@ G_M36739_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] str x0, [fp, #0x38] // [V07 tmp1] ldr x0, [fp, #0x38] // [V07 tmp1] @@ -68,7 +67,7 @@ G_M36739_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] str x0, [fp, #0x30] // [V08 tmp2] ldr x0, [fp, #0x30] // [V08 tmp2] @@ -128,7 +127,7 @@ G_M36739_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x3, [x3, #0x20] blr x3 ; gcrRegs -[x0-x2]
- ;; size=280 bbWeight=1 PerfScore 98.00
+ ;; size=276 bbWeight=1 PerfScore 97.50
G_M36739_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -174,7 +173,7 @@ G_M36739_IG04: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 444, prolog size 28, PerfScore 151.50, instruction count 111, allocated bytes for code 444 (MethodHash=fb1a707c) for method System.Xml.Serialization.TypeScope:AddPrimitive(System.Type,System.String,System.String,int) (Tier0)
+; Total bytes of code 440, prolog size 28, PerfScore 151.00, instruction count 110, allocated bytes for code 440 (MethodHash=fb1a707c) for method System.Xml.Serialization.TypeScope:AddPrimitive(System.Type,System.String,System.String,int) (Tier0)
; ============================================================ Unwind Info: @@ -185,7 +184,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.60%) : 10965.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)

@@ -32,8 +32,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #70 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
add x0, fp, #64 // [V00 arg0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -107,7 +106,7 @@ G_M1602_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x3] cbz w0, G_M1602_IG06 mov w0, #1
- ;; size=280 bbWeight=1 PerfScore 73.50
+ ;; size=276 bbWeight=1 PerfScore 73.00
G_M1602_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -224,7 +223,7 @@ G_M1602_IG09: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 668, prolog size 16, PerfScore 181.50, instruction count 167, allocated bytes for code 668 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
+; Total bytes of code 664, prolog size 16, PerfScore 181.00, instruction count 166, allocated bytes for code 664 (MethodHash=7785f9bd) for method Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTime(Newtonsoft.Json.Utilities.StringReference,int,System.String,System.Globalization.CultureInfo,byref):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -235,7 +234,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.windows.arm64.checked.mch

-20 (-38.46%) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,23 +14,18 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 73.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M9075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M9075_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M9075_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=4dc8dc8c) for method System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 357.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.74%) : 7365.dasm - ProtoBuf.Serializers.RepeatedSerializers:Add(System.Type,System.Func`4[System.Type,System.Type,System.Type[],System.Reflection.MemberInfo],ubyte) (Tier0)

@@ -41,9 +41,7 @@ G_M17119_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov w1, #11 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
ldr x0, [fp, #0x70] // [V00 arg0] ; gcrRegs +[x0] cbnz x0, G_M17119_IG03 @@ -57,7 +55,7 @@ G_M17119_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x1, [x1] blr x1 ; gcr arg pop 0
- ;; size=60 bbWeight=1 PerfScore 13.00
+ ;; size=56 bbWeight=1 PerfScore 12.50
G_M17119_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 @@ -82,7 +80,7 @@ G_M17119_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x30] // [V09 tmp1] @@ -239,7 +237,7 @@ G_M17119_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 4.00
-; Total bytes of code 540, prolog size 48, PerfScore 171.50, instruction count 135, allocated bytes for code 540 (MethodHash=02bebd20) for method ProtoBuf.Serializers.RepeatedSerializers:Add(System.Type,System.Func`4[System.Type,System.Type,System.Type[],System.Reflection.MemberInfo],ubyte) (Tier0)
+; Total bytes of code 536, prolog size 48, PerfScore 171.00, instruction count 134, allocated bytes for code 536 (MethodHash=02bebd20) for method ProtoBuf.Serializers.RepeatedSerializers:Add(System.Type,System.Func`4[System.Type,System.Type,System.Type[],System.Reflection.MemberInfo],ubyte) (Tier0)
; ============================================================ Unwind Info: @@ -250,7 +248,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 6302.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (Tier1)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> x21 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -31,11 +31,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] mov x21, x0 ; gcrRegs +[x21]
- cbz x21, G_M22240_IG05
+ cbz x20, G_M22240_IG05
;; size=28 bbWeight=1 PerfScore 4.50 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x20] @@ -60,8 +60,8 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1 x21] +[x19-x20]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x21] +[x19]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -69,7 +69,7 @@ G_M22240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ldr x1, [x1, #0x38] blr x1 ; gcrRegs -[x19]
- cmp x0, x20
+ cmp x0, #0
cset x0, eq ; gcrRegs -[x0] ;; size=28 bbWeight=0.50 PerfScore 5.75

+0 (0.00%) : 10262.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object>
; V01 arg1 [V01,T01] ( 3, 2.50) ref -> x20 class-hnd single-def <System.Threading.Thread>
-; V02 loc0 [V02,T02] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T02] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -33,10 +33,10 @@ G_M60059_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M60059_IG05
+ cbz x19, G_M60059_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M60059_IG03: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -52,15 +52,14 @@ G_M60059_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0-x1 x20] +[x19] - mov x1, x19 - ; gcrRegs +[x1]
+G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0-x1 x20] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[x0]
; gcr arg pop 0 cbnz x0, G_M60059_IG06 movz x1, #8 @@ -75,9 +74,8 @@ G_M60059_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=60 bbWeight=0.50 PerfScore 5.75
-G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19 - ; gcrRegs +[x0]
+G_M60059_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov x0, xzr
movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32

coreclr_tests.run.windows.arm64.checked.mch

-44 (-68.75%) : 523.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)

@@ -18,30 +18,15 @@ G_M17591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M17591_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M17591_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17591_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M17591_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M17591_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #15 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M17591_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 9.50, instruction count 16, allocated bytes for code 64 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
+; Total bytes of code 20, prolog size 8, PerfScore 4.00, instruction count 5, allocated bytes for code 20 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -52,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 5 (0x00005) Actual length = 20 (0x000014)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-52.38%) : 184.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)

@@ -8,56 +8,39 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T02] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V02 cse1 [V02,T00] ( 4, 4 ) long -> x19 "CSE - aggressive" -; V03 rat0 [V03,T01] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V01 cse0 [V01,T00] ( 3, 3 ) long -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x19, #0xD1FFAB1E - movk x19, #0xD1FFAB1E LSL #16 - movk x19, #0xD1FFAB1E LSL #32 - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M63990_IG05 - ;; size=36 bbWeight=1 PerfScore 7.50 -G_M63990_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr w0, [x19, #0x44] - add w0, w0, #1 - str w0, [x19, #0x44] - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M63990_IG04: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr w1, [x0, #0x44] + add w1, w1, #1 + str w1, [x0, #0x44] + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M63990_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #14 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M63990_IG03 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 84, prolog size 12, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
+; Total bytes of code 40, prolog size 8, PerfScore 9.50, instruction count 10, allocated bytes for code 40 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (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 : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -65,10 +48,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-44 (-42.31%) : 6.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -13,54 +13,37 @@ ; ; Lcl frame size = 0
-G_M16369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M16369_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M16369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M16369_IG07 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldapr x0, [x0] ; gcrRegs +[x0]
- cbnz x0, G_M16369_IG06
+ cbnz x0, G_M16369_IG05
;; size=20 bbWeight=1 PerfScore 5.50
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M16369_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16369_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x0 ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M16369_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16369_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M16369_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #18 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b G_M16369_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 104, prolog size 8, PerfScore 16.75, instruction count 26, allocated bytes for code 104 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 11.25, instruction count 15, allocated bytes for code 60 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================ Unwind Info: @@ -71,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-22.22%) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T02] ( 3, 1.50) ref -> x0 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T02] ( 2, 1 ) ref -> x0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> x1 "CSE - aggressive" ; @@ -33,41 +33,33 @@ G_M2237_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M2237_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2237_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbz x0, G_M2237_IG07
ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 3.25
+ ;; size=20 bbWeight=0.50 PerfScore 2.75
G_M2237_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M2237_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M2237_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 72, prolog size 8, PerfScore 12.25, instruction count 18, allocated bytes for code 72 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 10.50, instruction count 14, allocated bytes for code 56 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -75,9 +67,6 @@ Unwind Info: ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

-44 (-7.80%) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)

@@ -57,21 +57,14 @@ G_M2789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=40 bbWeight=1 PerfScore 7.50 G_M2789_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr w1, [x1] - tbz w1, #0, G_M2789_IG17 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M2789_IG03: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x0, [x1] ; gcrRegs +[x0]
- cbnz x0, G_M2789_IG05
+ cbnz x0, G_M2789_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M2789_IG03: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w1, w19 mov x0, xzr @@ -81,9 +74,9 @@ G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs= movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- b G_M2789_IG06
+ b G_M2789_IG05
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=700001 {x0 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=700001 {x0 x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov w1, w19 movz x11, #0xD1FFAB1E // code for <unknown method> @@ -93,25 +86,25 @@ G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=700001 {x0 x20 x21 x22}, byrefRe blr x2 ; gcrRegs -[x0] ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M2789_IG06: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - cbz w0, G_M2789_IG16
+G_M2789_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz + cbz w0, G_M2789_IG15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M2789_IG07: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - cbz x20, G_M2789_IG15
+G_M2789_IG06: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M2789_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M2789_IG08: ; bbWeight=0.47, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG07: ; bbWeight=0.47, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x20, #0x08]
- cbz w23, G_M2789_IG15
+ cbz w23, G_M2789_IG14
;; size=8 bbWeight=0.47 PerfScore 1.86
-G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG08: ; bbWeight=0.47, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
sxtw w24, w23 add w0, w24, #7
- tbnz w0, #31, G_M2789_IG18
+ tbnz w0, #31, G_M2789_IG16
bl <unknown method> ; gcrRegs +[x0] mov x25, x0 ; gcrRegs +[x25]
- cbnz x25, G_M2789_IG10
+ cbnz x25, G_M2789_IG09
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -123,10 +116,10 @@ G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=700000 {x20 x21 x22}, byrefRegs= blr x2 ; gcrRegs -[x0] ;; size=60 bbWeight=0.47 PerfScore 5.69
-G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
ldr w0, [x25, #0x08] cmp w0, w23
- bge G_M2789_IG11
+ bge G_M2789_IG10
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -139,7 +132,7 @@ G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byref blr x2 ; gcrRegs -[x0] ;; size=48 bbWeight=0.47 PerfScore 5.69
-G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
add x0, x25, #12 ; byrRegs +[x0] add x1, x20, #12 @@ -156,7 +149,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byref ldr w0, [x25, #0x08] sub w0, w0, w24 cmp w0, #7
- bge G_M2789_IG12
+ bge G_M2789_IG11
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -169,7 +162,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=2700000 {x20 x21 x22 x25}, byref blr x2 ; gcrRegs -[x0] ;; size=88 bbWeight=0.47 PerfScore 9.73
-G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=0000 {}, byref
+G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=0000 {}, byref
add x0, x25, #12 ; byrRegs +[x0] sbfiz x1, x24, #1, #32 @@ -185,7 +178,7 @@ G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs ; gcrRegs +[x0] ; byrRegs -[x0] ;; size=44 bbWeight=0.47 PerfScore 5.69
-G_M2789_IG13: ; bbWeight=0.50, gcrefRegs=600001 {x0 x21 x22}, byrefRegs=0000 {}, byref
+G_M2789_IG12: ; bbWeight=0.50, gcrefRegs=600001 {x0 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x25] mov w1, w19 mov x2, x22 @@ -205,7 +198,7 @@ G_M2789_IG13: ; bbWeight=0.50, gcrefRegs=600001 {x0 x21 x22}, byrefRegs=0 ldr x2, [x2, #0x70] ldr x2, [x2, #0x30] ;; size=56 bbWeight=0.50 PerfScore 8.75
-G_M2789_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M2789_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -213,14 +206,14 @@ G_M2789_IG14: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x50 br x2 ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M2789_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M2789_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M2789_IG13
+ b G_M2789_IG12
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M2789_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M2789_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x21-x22] ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -229,17 +222,7 @@ G_M2789_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M2789_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x20-x22] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #7 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M2789_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M2789_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20-x22]
+G_M2789_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -248,7 +231,7 @@ G_M2789_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 24, PerfScore 72.67, instruction count 141, allocated bytes for code 564 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
+; Total bytes of code 520, prolog size 24, PerfScore 67.17, instruction count 130, allocated bytes for code 520 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
; ============================================================ Unwind Info: @@ -259,7 +242,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 141 (0x0008d) Actual length = 564 (0x000234)
+ 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)

-36 (-7.76%) : 367.dasm - Program:TestEntryPoint():int (FullOpts)

@@ -12,43 +12,41 @@ ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 loc2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Program> ;* V03 loc3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> -; V05 loc5 [V05 ] ( 4, 4 ) struct (16) [fp+0x48] do-not-enreg[SBR] multireg-ret must-init <System.Decimal> -; V06 loc6 [V06 ] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret must-init <System.Decimal>
+; V04 loc4 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def <<unknown class>> +; V05 loc5 [V05 ] ( 4, 4 ) struct (16) [fp+0x48] do-not-enreg[SBR] multireg-ret <System.Decimal> +; V06 loc6 [V06 ] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret <System.Decimal>
;* V07 loc7 [V07 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Program> -; V10 tmp2 [V10,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V11 tmp3 [V11,T12] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V12 tmp4 [V12,T00] ( 8, 12.75) ref -> x19 class-hnd "spilling QMark2" <<unknown class>> -;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> -;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> -; V15 tmp7 [V15 ] ( 10, 10.00) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V16 tmp8 [V16 ] ( 8, 12.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V17 tmp9 [V17,T13] ( 5, 1.00) int -> x0 "Inline return value spill temp" -; V18 tmp10 [V18,T04] ( 2, 4 ) long -> x0 "impAppendStmt" -; V19 tmp11 [V19,T05] ( 2, 2.00) long -> x0 "impAppendStmt" -; V20 tmp12 [V20,T14] ( 3, 1.00) int -> x19 single-def "Inline stloc first use temp" -; V21 tmp13 [V21,T15] ( 2, 0.00) long -> x0 "impAppendStmt" -; V22 tmp14 [V22,T06] ( 2, 2 ) int -> [fp+0x48] do-not-enreg[] "field V05._flags (fldOffset=0x0)" P-DEP -; V23 tmp15 [V23,T07] ( 2, 2 ) int -> [fp+0x4C] do-not-enreg[] "field V05._hi32 (fldOffset=0x4)" P-DEP -; V24 tmp16 [V24,T08] ( 2, 2 ) long -> [fp+0x50] do-not-enreg[] "field V05._lo64 (fldOffset=0x8)" P-DEP -; V25 tmp17 [V25,T09] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[] "field V06._flags (fldOffset=0x0)" P-DEP -; V26 tmp18 [V26,T10] ( 2, 2 ) int -> [fp+0x3C] do-not-enreg[] "field V06._hi32 (fldOffset=0x4)" P-DEP -; V27 tmp19 [V27,T11] ( 2, 2 ) long -> [fp+0x40] do-not-enreg[] "field V06._lo64 (fldOffset=0x8)" P-DEP -;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "field V13._flags (fldOffset=0x0)" P-DEP -;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._hi32 (fldOffset=0x4)" P-DEP -;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "field V13._lo64 (fldOffset=0x8)" P-DEP -;* V31 tmp23 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._flags (fldOffset=0x0)" P-DEP -;* V32 tmp24 [V32 ] ( 0, 0 ) int -> zero-ref "field V14._hi32 (fldOffset=0x4)" P-DEP -;* V33 tmp25 [V33 ] ( 0, 0 ) long -> zero-ref "field V14._lo64 (fldOffset=0x8)" P-DEP -; V34 tmp26 [V34 ] ( 4, 2.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V15._flags (fldOffset=0x0)" P-DEP -; V35 tmp27 [V35 ] ( 4, 2.50) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V15._hi32 (fldOffset=0x4)" P-DEP -; V36 tmp28 [V36 ] ( 4, 2.50) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V15._lo64 (fldOffset=0x8)" P-DEP -; V37 tmp29 [V37 ] ( 4, 2.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V16._flags (fldOffset=0x0)" P-DEP -; V38 tmp30 [V38 ] ( 3, 3.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V16._hi32 (fldOffset=0x4)" P-DEP -; V39 tmp31 [V39 ] ( 3, 3.00) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V16._lo64 (fldOffset=0x8)" P-DEP -; V40 tmp32 [V40,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
+; V09 tmp1 [V09,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Program> +;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> +;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Decimal> +; V12 tmp4 [V12 ] ( 10, 10.00) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V13 tmp5 [V13 ] ( 8, 12.00) struct (16) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V14 tmp6 [V14,T12] ( 5, 1.00) int -> x0 "Inline return value spill temp" +; V15 tmp7 [V15,T04] ( 2, 4 ) long -> x0 "impAppendStmt" +; V16 tmp8 [V16,T05] ( 2, 2.00) long -> x0 "impAppendStmt" +; V17 tmp9 [V17,T13] ( 3, 1.00) int -> x19 single-def "Inline stloc first use temp" +; V18 tmp10 [V18,T14] ( 2, 0.00) long -> x0 "impAppendStmt" +; V19 tmp11 [V19,T06] ( 2, 2 ) int -> [fp+0x48] do-not-enreg[] "field V05._flags (fldOffset=0x0)" P-DEP +; V20 tmp12 [V20,T07] ( 2, 2 ) int -> [fp+0x4C] do-not-enreg[] "field V05._hi32 (fldOffset=0x4)" P-DEP +; V21 tmp13 [V21,T08] ( 2, 2 ) long -> [fp+0x50] do-not-enreg[] "field V05._lo64 (fldOffset=0x8)" P-DEP +; V22 tmp14 [V22,T09] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[] "field V06._flags (fldOffset=0x0)" P-DEP +; V23 tmp15 [V23,T10] ( 2, 2 ) int -> [fp+0x3C] do-not-enreg[] "field V06._hi32 (fldOffset=0x4)" P-DEP +; V24 tmp16 [V24,T11] ( 2, 2 ) long -> [fp+0x40] do-not-enreg[] "field V06._lo64 (fldOffset=0x8)" P-DEP +;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._flags (fldOffset=0x0)" P-DEP +;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._hi32 (fldOffset=0x4)" P-DEP +;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "field V10._lo64 (fldOffset=0x8)" P-DEP +;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "field V11._flags (fldOffset=0x0)" P-DEP +;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "field V11._hi32 (fldOffset=0x4)" P-DEP +;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "field V11._lo64 (fldOffset=0x8)" P-DEP +; V31 tmp23 [V31 ] ( 4, 2.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._flags (fldOffset=0x0)" P-DEP +; V32 tmp24 [V32 ] ( 4, 2.50) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V12._hi32 (fldOffset=0x4)" P-DEP +; V33 tmp25 [V33 ] ( 4, 2.50) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._lo64 (fldOffset=0x8)" P-DEP +; V34 tmp26 [V34 ] ( 4, 2.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V13._flags (fldOffset=0x0)" P-DEP +; V35 tmp27 [V35 ] ( 3, 3.00) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V13._hi32 (fldOffset=0x4)" P-DEP +; V36 tmp28 [V36 ] ( 3, 3.00) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V13._lo64 (fldOffset=0x8)" P-DEP +; V37 tmp29 [V37,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect" +; V38 tmp30 [V38,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 72 @@ -56,14 +54,12 @@ G_M13170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x60]! str x19, [sp, #0x58] mov fp, sp
- stp xzr, xzr, [fp, #0x48] // [V05 loc5], [V05 loc5+0x08] - stp xzr, xzr, [fp, #0x38] // [V06 loc6], [V06 loc6+0x08] - ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M13170_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -100,15 +96,16 @@ G_M13170_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x2 x19] mov x1, x0 ; gcrRegs +[x1]
- mov x19, x1
+ movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION + ; gcrRegs -[x1] +[x0] + mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M13170_IG10 - ;; size=140 bbWeight=1 PerfScore 30.00 -G_M13170_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0-x1]
mov w1, #3 ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
ldr x2, [x19, #0x18] blr x2 ; gcrRegs -[x0] @@ -120,104 +117,85 @@ G_M13170_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x2 ; gcrRegs -[x0 x19] stp x0, x1, [fp, #0x38] // [V06 loc6], [V06 loc6+0x08]
- ldr w0, [fp, #0x48] // [V22 tmp14] - str w0, [fp, #0x28] // [V34 tmp26] - ldr w0, [fp, #0x4C] // [V23 tmp15] - str w0, [fp, #0x2C] // [V35 tmp27] - ldr x0, [fp, #0x50] // [V24 tmp16] - str x0, [fp, #0x30] // [V36 tmp28] - ldr w0, [fp, #0x38] // [V25 tmp17] - str w0, [fp, #0x18] // [V37 tmp29] - ldr w0, [fp, #0x3C] // [V26 tmp18] - str w0, [fp, #0x1C] // [V38 tmp30] - ldr x0, [fp, #0x40] // [V27 tmp19] - str x0, [fp, #0x20] // [V39 tmp31] - ldr x0, [fp, #0x20] // [V39 tmp31] - ldr w1, [fp, #0x1C] // [V38 tmp30]
+ ldr w0, [fp, #0x48] // [V19 tmp11] + str w0, [fp, #0x28] // [V31 tmp23] + ldr w0, [fp, #0x4C] // [V20 tmp12] + str w0, [fp, #0x2C] // [V32 tmp24] + ldr x0, [fp, #0x50] // [V21 tmp13] + str x0, [fp, #0x30] // [V33 tmp25] + ldr w0, [fp, #0x38] // [V22 tmp14] + str w0, [fp, #0x18] // [V34 tmp26] + ldr w0, [fp, #0x3C] // [V23 tmp15] + str w0, [fp, #0x1C] // [V35 tmp27] + ldr x0, [fp, #0x40] // [V24 tmp16] + str x0, [fp, #0x20] // [V36 tmp28] + ldr x0, [fp, #0x20] // [V36 tmp28] + ldr w1, [fp, #0x1C] // [V35 tmp27]
orr x0, x0, x1
- cbz x0, G_M13170_IG08 - ;; size=104 bbWeight=1 PerfScore 40.50 -G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V36 tmp28] - ldr w1, [fp, #0x2C] // [V35 tmp27]
+ cbz x0, G_M13170_IG07 + ;; size=256 bbWeight=1 PerfScore 72.00 +G_M13170_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr x0, [fp, #0x30] // [V33 tmp25] + ldr w1, [fp, #0x2C] // [V32 tmp24]
orr x0, x0, x1
- cbz x0, G_M13170_IG14 - ldr w0, [fp, #0x28] // [V34 tmp26]
+ cbz x0, G_M13170_IG11 + ldr w0, [fp, #0x28] // [V31 tmp23]
asr w0, w0, #31
- ldr w1, [fp, #0x18] // [V37 tmp29]
+ ldr w1, [fp, #0x18] // [V34 tmp26]
sub w19, w0, w1, ASR #31
- cbnz w19, G_M13170_IG15 - add x0, fp, #40 // [V15 tmp7] - add x1, fp, #24 // [V16 tmp8]
+ cbnz w19, G_M13170_IG12 + add x0, fp, #40 // [V12 tmp4] + add x1, fp, #24 // [V13 tmp5]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2 ;; size=64 bbWeight=0.50 PerfScore 9.50
-G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M13170_IG12
+G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M13170_IG09
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #100 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13170_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x58] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M13170_IG08: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x0, [fp, #0x30] // [V36 tmp28] - ldr w1, [fp, #0x2C] // [V35 tmp27]
+G_M13170_IG07: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x0, [fp, #0x30] // [V33 tmp25] + ldr w1, [fp, #0x2C] // [V32 tmp24]
orr x0, x0, x1
- cbz x0, G_M13170_IG06
+ cbz x0, G_M13170_IG05
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M13170_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr w0, [fp, #0x28] // [V34 tmp26]
+G_M13170_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr w0, [fp, #0x28] // [V31 tmp23]
asr w0, w0, #31 orr w0, w0, #1
- b G_M13170_IG05
+ b G_M13170_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-G_M13170_IG10: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x1 x19] - ldr x0, [x19] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M13170_IG03 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M13170_IG11: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x0, x2 - bl CORINFO_HELP_CHKCASTANY - ; gcrRegs -[x1] +[x0] - mov x19, x0 - ; gcrRegs +[x19] - b G_M13170_IG03 - ;; size=16 bbWeight=0.12 PerfScore 0.38 -G_M13170_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19]
+G_M13170_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13170_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x58] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M13170_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ldr w0, [fp, #0x18] // [V37 tmp29]
+G_M13170_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ldr w0, [fp, #0x18] // [V34 tmp26]
asr w0, w0, #31 orr w0, w0, #1 ...

libraries.crossgen2.windows.arm64.checked.mch

-28 (-36.84%) : 21951.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)

@@ -9,53 +9,46 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M14591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M14591_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x11] - blr x0
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M14591_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0] + ldrsb wzr, [x0] + add x0, x0, #24 + ; gcrRegs -[x0]
; byrRegs +[x0]
- ; gcr arg pop 0 - ldrsb wzr, [x19] - add x0, x19, #24
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11]
- ;; size=48 bbWeight=1 PerfScore 16.50
+ ;; size=32 bbWeight=1 PerfScore 11.50
G_M14591_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 16, PerfScore 23.50, instruction count 19, allocated bytes for code 76 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 15.00, instruction count 12, allocated bytes for code 48 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (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 : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,10 +56,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-28 (-35.00%) : 21952.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x2 this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M28675_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M28675_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x11] - blr x0
+ mov x2, x0 + ; gcrRegs +[x2] + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M28675_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ldrsb wzr, [x2] + add x0, x2, #24
; byrRegs +[x0]
- ; gcr arg pop 0 - ldrsb wzr, [x19] - add x0, x19, #24
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1]
- mov x2, x19 - ; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11]
- ;; size=52 bbWeight=1 PerfScore 17.00
+ ;; size=32 bbWeight=1 PerfScore 11.50
G_M28675_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 16, PerfScore 24.00, instruction count 20, allocated bytes for code 80 (MethodHash=2d3d8ffc) for method System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 15.50, instruction count 13, allocated bytes for code 52 (MethodHash=2d3d8ffc) for method System.Threading.PreAllocatedOverlapped:Release():this (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 : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -65,10 +56,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-12 (-5.88%) : 166045.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,8 +15,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> x0 "CSE - aggressive" -; V07 cse1 [V07,T02] ( 5, 3.50) int -> x1 "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> x11 "CSE - aggressive" +; V07 cse1 [V07,T02] ( 5, 3.50) int -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,25 +34,24 @@ G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x0 ; byrRegs +[x0] ldrh w11, [x0]
- uxth w1, w20 - cmp w11, w1
+ uxth w0, w20 + ; byrRegs -[x0] + cmp w11, w0
beq G_M44169_IG04 ;; size=32 bbWeight=1 PerfScore 10.00
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - cmp w1, #47
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp w0, #47
bne G_M44169_IG07 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w11, [x0] - uxth w2, w19 - cmp w11, w2
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + uxth w1, w19 + cmp w11, w1
beq G_M44169_IG05
- uxth w11, w19 - cmp w11, #47
+ uxth w1, w19 + cmp w1, #47
bne G_M44169_IG07
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -60,13 +59,9 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz - ; byrRegs +[x0] - ldrh w0, [x0] - ; byrRegs -[x0] - cmp w0, #47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp w11, #47
beq G_M44169_IG09
- mov w0, w1
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] @@ -79,15 +74,15 @@ G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 cmp w20, w0 cset x0, eq
- ;; size=64 bbWeight=0.50 PerfScore 8.50
+ ;; size=56 bbWeight=0.50 PerfScore 6.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50 G_M44169_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- uxth w0, w19 - cmp w1, w0
+ uxth w1, w19 + cmp w0, w1
cset x0, eq ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -96,7 +91,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 12, PerfScore 31.75, instruction count 51, allocated bytes for code 204 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 28.50, instruction count 48, allocated bytes for code 192 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.50%) : 168839.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> x2 "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> x0 "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> x2 "CSE - moderate"
; ; Lcl frame size = 8 @@ -53,7 +53,6 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldrh w2, [x0] cmp w2, #47 bne G_M45118_IG04
- ldrh w2, [x0]
mov x0, x19 ; gcrRegs +[x0] ; byrRegs -[x0] @@ -73,7 +72,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x1 x20] mov x21, x0 ; gcrRegs +[x21]
- ;; size=84 bbWeight=0.50 PerfScore 13.75
+ ;; size=80 bbWeight=0.50 PerfScore 12.25
G_M45118_IG04: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x21 @@ -86,7 +85,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 31.25, instruction count 40, allocated bytes for code 160 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 156, prolog size 16, PerfScore 29.75, instruction count 39, allocated bytes for code 156 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 23387.dasm - System.Globalization.CalendarData:SystemSupportsTaiwaneseCalendar():ubyte (FullOpts)

@@ -11,7 +11,6 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V02 cse0 [V02,T00] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,25 +27,25 @@ G_M37466_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 ldrb w0, [x0, #0xD1FFAB1E] ; byrRegs -[x0]
- cbnz w0, G_M37466_IG05
+ cbz w0, G_M37466_IG05
;; size=24 bbWeight=1 PerfScore 9.00 G_M37466_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M37466_IG04: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M37466_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M37466_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M37466_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x0 ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M37466_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M37466_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
; Total bytes of code 64, prolog size 8, PerfScore 14.75, instruction count 16, allocated bytes for code 64 (MethodHash=f28a6da5) for method System.Globalization.CalendarData:SystemSupportsTaiwaneseCalendar():ubyte (FullOpts) ; ============================================================

+0 (0.00%) : 28071.dasm - .$Array:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> x19 "value for stsfld with typeinit"
; ; Lcl frame size = 8 @@ -23,13 +22,15 @@ G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] blr x0
- sxtw w19, w0
+ ; byrRegs +[x0] + mov x19, x0 + ; byrRegs +[x19]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11]
+ ; byrRegs -[x0]
blr x0
- ; byrRegs +[x0] - str w19, [x0, #0xD1FFAB1E]
+ str w0, [x19, #0xD1FFAB1E]
;; size=40 bbWeight=1 PerfScore 11.50 G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18]

libraries.pmi.windows.arm64.checked.mch

-44 (-57.89%) : 769.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComTypeDesc:get_EmptyEvents():System.Collections.Generic.Dictionary`2System.String,Microsoft.CSharp.RuntimeBinder.ComInterop.ComEventDesc

@@ -15,35 +15,19 @@ G_M9741_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M9741_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M9741_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M9741_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9741_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M9741_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M9741_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M9741_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #77 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M9741_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=bd7cd9f2) for method Microsoft.CSharp.RuntimeBinder.ComInterop.ComTypeDesc:get_EmptyEvents():System.Collections.Generic.Dictionary`2[System.String,Microsoft.CSharp.RuntimeBinder.ComInterop.ComEventDesc] (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=bd7cd9f2) for method Microsoft.CSharp.RuntimeBinder.ComInterop.ComTypeDesc:get_EmptyEvents():System.Collections.Generic.Dictionary`2[System.String,Microsoft.CSharp.RuntimeBinder.ComInterop.ComEventDesc] (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2213.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScopeSystem.__Canon:System.IDisposable:this (FullOpts)

@@ -19,35 +19,19 @@ G_M13823_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M13823_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M13823_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M13823_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13823_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M13823_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M13823_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M13823_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #4 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M13823_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=2cd5ca00) for method Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[System.__Canon](System.__Canon):System.IDisposable:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=2cd5ca00) for method Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[System.__Canon](System.__Canon):System.IDisposable:this (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2217.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScopedouble:System.IDisposable:this (FullOpts)

@@ -18,35 +18,19 @@ G_M59263_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M59263_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M59263_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59263_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M59263_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59263_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M59263_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #4 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M59263_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=88e01880) for method Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[double](double):System.IDisposable:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=88e01880) for method Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[double](double):System.IDisposable:this (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-6.67%) : 4104.dasm - System.MemoryExtensions:Trimshort:System.ReadOnlyMemory`1short

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 5, 5 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlyMemory`1[short]>
-; V01 arg1 [V01,T04] ( 3, 3 ) short -> x19 single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) short -> x19 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[short]> ; V03 loc1 [V03,T06] ( 4, 4 ) int -> x25 ; V04 loc2 [V04,T10] ( 3, 3 ) int -> x19 @@ -17,7 +17,7 @@ ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[short]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[short]> ; V08 tmp3 [V08,T05] ( 6, 4 ) byref -> x23 "Inline stloc first use temp"
-; V09 tmp4 [V09,T03] ( 7, 5 ) int -> x24 "Inline stloc first use temp"
+; V09 tmp4 [V09,T02] ( 7, 5 ) int -> x24 "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[short]> ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -60,7 +60,7 @@ ; V49 tmp44 [V49,T00] ( 13, 8.50) ref -> x20 single-def "V00.[000..008)" ; V50 tmp45 [V50,T16] ( 3, 2.50) int -> x21 "V00.[008..012)" ; V51 tmp46 [V51,T08] ( 4, 3 ) int -> x22 "V00.[012..016)"
-; V52 cse0 [V52,T02] ( 12, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V52 cse0 [V52,T04] ( 9, 4.50) ref -> x1 multi-def "CSE - aggressive"
; V53 cse1 [V53,T12] ( 3, 3 ) int -> x19 "CSE - aggressive" ; ; Lcl frame size = 40 @@ -83,7 +83,7 @@ G_M25907_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x23, xzr ; byrRegs +[x23] mov w24, wzr
- cbz x20, G_M25907_IG08
+ cbz x20, G_M25907_IG07
;; size=20 bbWeight=1 PerfScore 6.00 G_M25907_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] @@ -96,7 +96,7 @@ G_M25907_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] cbnz x0, G_M25907_IG04 movz x1, #8 @@ -114,32 +114,18 @@ G_M25907_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} add x23, x20, #16 ; byrRegs +[x23] ldr w24, [x20, #0x08]
- b G_M25907_IG07
+ b G_M25907_IG06
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M25907_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25907_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; byrRegs -[x23] mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M25907_IG06 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, 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] - ;; size=60 bbWeight=0.50 PerfScore 5.75 -G_M25907_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x20
- ; gcrRegs +[x0]
ldr x1, [x20] ldr x1, [x1, #0x48] ldr x1, [x1, #0x28] @@ -149,23 +135,23 @@ G_M25907_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov x23, x0 ; byrRegs +[x23] mov w24, w1
- ;; size=28 bbWeight=0.50 PerfScore 5.75 -G_M25907_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 7.25 +G_M25907_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] and w0, w21, #0xD1FFAB1E mov w0, w0 add x1, x0, w22, UXTW mov w2, w24 cmp x1, x2
- bhi G_M25907_IG14
+ bhi G_M25907_IG13
lsl x0, x0, #1 add x23, x23, x0 sxtw w24, w22 ;; size=36 bbWeight=0.50 PerfScore 3.00
-G_M25907_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz - tbz w24, #31, G_M25907_IG10
+G_M25907_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz + tbz w24, #31, G_M25907_IG09
;; size=4 bbWeight=1 PerfScore 1.00
-G_M25907_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
+G_M25907_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -178,7 +164,7 @@ G_M25907_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M25907_IG10: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+G_M25907_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
mov x0, x23 ; byrRegs +[x0] mov w1, w24 @@ -207,32 +193,32 @@ G_M25907_IG10: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=800000 {x2 add x1, x1, w19, UXTW mov w0, w22 cmp x1, x0
- bhi G_M25907_IG15
+ bhi G_M25907_IG14
add w21, w21, w25
- cbz x20, G_M25907_IG12
+ cbz x20, G_M25907_IG11
;; size=108 bbWeight=1 PerfScore 21.00
-G_M25907_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25907_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M25907_IG12
+ cbnz x0, G_M25907_IG11
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] cmp x0, #0 cset x0, ne ; gcrRegs -[x0] tst w0, #255
- bne G_M25907_IG12
+ bne G_M25907_IG11
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -245,13 +231,13 @@ G_M25907_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x2 ; gcrRegs -[x0] ;; size=96 bbWeight=0.50 PerfScore 8.50
-G_M25907_IG12: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M25907_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
str x20, [fp, #0x18] // [V46 tmp41] stp w21, w19, [fp, #0x20] // [V47 tmp42], [V48 tmp43] ldp x0, x1, [fp, #0x18] // [V25 tmp20], [V25 tmp20+0x08] ; gcrRegs +[x0] ;; size=12 bbWeight=1 PerfScore 5.00
-G_M25907_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M25907_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x68] ldp x23, x24, [sp, #0x58] ldp x21, x22, [sp, #0x48] @@ -259,7 +245,7 @@ G_M25907_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M25907_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25907_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 @@ -268,7 +254,7 @@ G_M25907_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { blr x0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M25907_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25907_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #33 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -278,7 +264,7 @@ G_M25907_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 28, PerfScore 86.50, instruction count 150, allocated bytes for code 600 (MethodHash=739e9acc) for method System.MemoryExtensions:Trim[short](System.ReadOnlyMemory`1[short],short):System.ReadOnlyMemory`1[short] (FullOpts)
+; Total bytes of code 560, prolog size 28, PerfScore 82.25, instruction count 140, allocated bytes for code 560 (MethodHash=739e9acc) for method System.MemoryExtensions:Trim[short](System.ReadOnlyMemory`1[short],short):System.ReadOnlyMemory`1[short] (FullOpts)
; ============================================================ Unwind Info: @@ -289,7 +275,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 150 (0x00096) Actual length = 600 (0x000258)
+ Function Length : 140 (0x0008c) Actual length = 560 (0x000230)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-5.82%) : 4169.dasm - System.MemoryExtensions:Trimubyte:System.Memory`1ubyte

@@ -77,7 +77,7 @@ ; V66 tmp61 [V66,T22] ( 2, 1.50) int -> [fp+0x28] do-not-enreg[] "field V33._index (fldOffset=0x8)" P-DEP ; V67 tmp62 [V67,T23] ( 2, 1.50) int -> [fp+0x2C] do-not-enreg[] "field V33._length (fldOffset=0xc)" P-DEP ; V68 tmp63 [V68,T09] ( 4, 2 ) struct (16) [fp+0x10] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Memory`1[ubyte]>
-; V69 cse0 [V69,T01] ( 14, 7 ) ref -> x24 multi-def "CSE - aggressive"
+; V69 cse0 [V69,T01] ( 11, 5.50) ref -> x24 multi-def "CSE - aggressive"
; ; Lcl frame size = 64 @@ -98,7 +98,7 @@ G_M17637_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.50 G_M17637_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cmp w19, #1
- ble G_M17637_IG13
+ ble G_M17637_IG12
;; size=8 bbWeight=1 PerfScore 1.50 G_M17637_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz mov x21, xzr @@ -106,7 +106,7 @@ G_M17637_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} mov w22, wzr ldr x23, [fp, #0x40] // [V00 arg0] ; gcrRegs +[x23]
- cbz x23, G_M17637_IG08
+ cbz x23, G_M17637_IG07
ldr x1, [x23] ldr w1, [x1] tst w1, #0xD1FFAB1E @@ -116,7 +116,7 @@ G_M17637_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; byrRegs -[x21] cbnz x0, G_M17637_IG04 @@ -137,34 +137,18 @@ G_M17637_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=100000 add x21, x23, #16 ; byrRegs +[x21] ldr w22, [x23, #0x08]
- b G_M17637_IG07
+ b G_M17637_IG06
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M17637_IG05: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=100000 {x20}, byref, isz
+G_M17637_IG05: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=100000 {x20}, byref
; byrRegs -[x21] mov x1, x23 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M17637_IG06 - movz x24, #8 - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - mov x0, x24 - mov x1, x24 - ; 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] - ;; size=64 bbWeight=0.50 PerfScore 6.00 -G_M17637_IG06: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=100000 {x20}, byref
mov x0, x23
- ; gcrRegs +[x0]
ldr x1, [x23] ldr x1, [x1, #0x48] ldr x1, [x1, #0x28] @@ -174,8 +158,8 @@ G_M17637_IG06: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=100000 mov x21, x0 ; byrRegs +[x21] mov w22, w1
- ;; size=28 bbWeight=0.50 PerfScore 5.75 -G_M17637_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 7.25 +G_M17637_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
; byrRegs -[x0] ldr w0, [fp, #0x48] // [V00 arg0+0x08] and w0, w0, #0xD1FFAB1E @@ -184,12 +168,12 @@ G_M17637_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 add x2, x0, w1, UXTW mov w3, w22 cmp x2, x3
- bhi G_M17637_IG17
+ bhi G_M17637_IG16
add x21, x21, x0 sxtw w22, w1 ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M17637_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz - tbz w22, #31, G_M17637_IG09
+G_M17637_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz + tbz w22, #31, G_M17637_IG08
movz x24, #8 movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 @@ -214,7 +198,7 @@ G_M17637_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 blr x2 ; gcrRegs -[x0-x1 x24] ;; size=72 bbWeight=0.50 PerfScore 7.75
-G_M17637_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M17637_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
mov x0, x21 ; byrRegs +[x0] mov w1, w22 @@ -246,35 +230,35 @@ G_M17637_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 add x1, x1, w19, UXTW ldr w0, [fp, #0x4C] // [V00 arg0+0x0c] cmp x1, x0
- bhi G_M17637_IG17
+ bhi G_M17637_IG16
;; size=104 bbWeight=0.50 PerfScore 10.75
-G_M17637_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M17637_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x20, [fp, #0x40] // [V00 arg0] ; gcrRegs +[x20] ldr w1, [fp, #0x48] // [V00 arg0+0x08] add w21, w1, w23
- cbz x20, G_M17637_IG11
+ cbz x20, G_M17637_IG10
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M17637_IG11
+ cbnz x0, G_M17637_IG10
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] cmp x0, #0 cset x0, ne ; gcrRegs -[x0] tst w0, #255
- bne G_M17637_IG11
+ bne G_M17637_IG10
movz x24, #8 movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 @@ -289,24 +273,24 @@ G_M17637_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x0-x1] ;; size=116 bbWeight=0.50 PerfScore 11.50
-G_M17637_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M17637_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
str x20, [fp, #0x20] // [V65 tmp60] stp w21, w19, [fp, #0x28] // [V66 tmp61], [V67 tmp62] ldp x0, x1, [fp, #0x20] // [V33 tmp28], [V33 tmp28+0x08] ; gcrRegs +[x0] ;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M17637_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M17637_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M17637_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref, isz
+G_M17637_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref, isz
; gcrRegs -[x0 x20] ; byrRegs +[x20] cmp w19, #1
- bne G_M17637_IG15
+ bne G_M17637_IG14
ldp x0, x1, [fp, #0x40] // [V00 arg0], [V00 arg0+0x08] ; gcrRegs +[x0] ldrb w2, [x20] @@ -327,26 +311,26 @@ G_M17637_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ldp x0, x1, [fp, #0x30] // [V06 tmp1], [V06 tmp1+0x08] ; gcrRegs +[x0] ;; size=68 bbWeight=0.50 PerfScore 13.00
-G_M17637_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M17637_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M17637_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17637_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ldp x0, x1, [fp, #0x40] // [V00 arg0], [V00 arg0+0x08] ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M17637_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M17637_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M17637_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17637_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 @@ -356,7 +340,7 @@ G_M17637_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 756, prolog size 36, PerfScore 95.75, instruction count 189, allocated bytes for code 756 (MethodHash=bbaabb1a) for method System.MemoryExtensions:Trim[ubyte](System.Memory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
+; Total bytes of code 712, prolog size 36, PerfScore 91.25, instruction count 178, allocated bytes for code 712 (MethodHash=bbaabb1a) for method System.MemoryExtensions:Trim[ubyte](System.Memory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
; ============================================================ Unwind Info: @@ -367,7 +351,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 189 (0x000bd) Actual length = 756 (0x0002f4)
+ Function Length : 178 (0x000b2) Actual length = 712 (0x0002c8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-5.35%) : 4172.dasm - System.MemoryExtensions:Trimubyte:System.ReadOnlyMemory`1ubyte

@@ -19,7 +19,7 @@ ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]> ; V09 tmp4 [V09,T07] ( 6, 3 ) byref -> x21 "Inline stloc first use temp" ; V10 tmp5 [V10,T06] ( 7, 3.50) int -> x22 "Inline stloc first use temp"
-; V11 tmp6 [V11,T04] ( 9, 4.50) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V11 tmp6 [V11,T03] ( 9, 4.50) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> @@ -35,13 +35,13 @@ ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26 ] ( 4, 4 ) struct (16) [fp+0x20] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V27 tmp22 [V27,T03] ( 5, 5 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Object>
+; V27 tmp22 [V27,T02] ( 5, 5 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Object>
; V28 tmp23 [V28,T17] ( 2, 1 ) int -> x0 ; V29 tmp24 [V29,T12] ( 2, 2 ) int -> x20 "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp26 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp27 [V32,T05] ( 4, 2.50) byref -> x20 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp28 [V33,T02] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V33 tmp28 [V33,T01] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP ; V36 tmp31 [V36,T19] ( 2, 1.50) ref -> [fp+0x30] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP @@ -64,7 +64,7 @@ ; V53 tmp48 [V53,T23] ( 2, 1.50) int -> [fp+0x28] do-not-enreg[] "field V26._index (fldOffset=0x8)" P-DEP ; V54 tmp49 [V54,T24] ( 2, 1.50) int -> [fp+0x2C] do-not-enreg[] "field V26._length (fldOffset=0xc)" P-DEP ; V55 tmp50 [V55,T10] ( 4, 2 ) struct (16) [fp+0x10] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlyMemory`1[ubyte]>
-; V56 cse0 [V56,T01] ( 12, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V56 cse0 [V56,T04] ( 9, 4.50) ref -> x1 multi-def "CSE - aggressive"
; V57 cse1 [V57,T08] ( 5, 2.50) ref -> x23 multi-def "CSE - aggressive" ; ; Lcl frame size = 64 @@ -86,7 +86,7 @@ G_M11429_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.50 G_M11429_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cmp w19, #1
- ble G_M11429_IG12
+ ble G_M11429_IG11
;; size=8 bbWeight=1 PerfScore 1.50 G_M11429_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz mov x21, xzr @@ -96,7 +96,7 @@ G_M11429_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} ; gcrRegs +[x23] mov x24, x23 ; gcrRegs +[x24]
- cbz x24, G_M11429_IG08
+ cbz x24, G_M11429_IG07
ldr x1, [x24] ldr w1, [x1] tst w1, #0xD1FFAB1E @@ -106,7 +106,7 @@ G_M11429_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; byrRegs -[x21] cbnz x0, G_M11429_IG04 @@ -125,32 +125,18 @@ G_M11429_IG04: ; bbWeight=0.50, gcrefRegs=1800000 {x23 x24}, byrefRegs=10 add x21, x24, #16 ; byrRegs +[x21] ldr w22, [x24, #0x08]
- b G_M11429_IG07
+ b G_M11429_IG06
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M11429_IG05: ; bbWeight=0.50, gcrefRegs=1800000 {x23 x24}, byrefRegs=100000 {x20}, byref, isz
+G_M11429_IG05: ; bbWeight=0.50, gcrefRegs=1800000 {x23 x24}, byrefRegs=100000 {x20}, byref
; byrRegs -[x21] mov x1, x24 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M11429_IG06 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, 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] - ;; size=60 bbWeight=0.50 PerfScore 5.75 -G_M11429_IG06: ; bbWeight=0.50, gcrefRegs=1800000 {x23 x24}, byrefRegs=100000 {x20}, byref
mov x0, x24
- ; gcrRegs +[x0]
ldr x1, [x24] ldr x1, [x1, #0x48] ldr x1, [x1, #0x28] @@ -160,8 +146,8 @@ G_M11429_IG06: ; bbWeight=0.50, gcrefRegs=1800000 {x23 x24}, byrefRegs=10 mov x21, x0 ; byrRegs +[x21] mov w22, w1
- ;; size=28 bbWeight=0.50 PerfScore 5.75 -G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 7.25 +G_M11429_IG06: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
; byrRegs -[x0] ldr w0, [fp, #0x48] // [V00 arg0+0x08] and w0, w0, #0xD1FFAB1E @@ -170,12 +156,12 @@ G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 add x2, x0, w1, UXTW mov w3, w22 cmp x2, x3
- bhi G_M11429_IG16
+ bhi G_M11429_IG15
add x21, x21, x0 sxtw w22, w1 ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M11429_IG08: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz - tbz w22, #31, G_M11429_IG09
+G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz + tbz w22, #31, G_M11429_IG08
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -188,7 +174,7 @@ G_M11429_IG08: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 blr x2 ; gcrRegs -[x0] ;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M11429_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M11429_IG08: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
mov x0, x21 ; byrRegs +[x0] mov w1, w22 @@ -220,31 +206,31 @@ G_M11429_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 add x1, x1, w19, UXTW ldr w0, [fp, #0x4C] // [V00 arg0+0x0c] cmp x1, x0
- bhi G_M11429_IG17
+ bhi G_M11429_IG16
ldr w1, [fp, #0x48] // [V00 arg0+0x08] add w20, w1, w24
- cbz x23, G_M11429_IG10
+ cbz x23, G_M11429_IG09
mov x1, x23 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M11429_IG10
+ cbnz x0, G_M11429_IG09
mov x1, x23 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] cmp x0, #0 cset x0, ne ; gcrRegs -[x0] tst w0, #255
- bne G_M11429_IG10
+ bne G_M11429_IG09
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -257,24 +243,24 @@ G_M11429_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=300000 blr x2 ; gcrRegs -[x0] ;; size=212 bbWeight=0.50 PerfScore 21.00
-G_M11429_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M11429_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
str x23, [fp, #0x20] // [V52 tmp47] stp w20, w19, [fp, #0x28] // [V53 tmp48], [V54 tmp49] ldp x0, x1, [fp, #0x20] // [V26 tmp21], [V26 tmp21+0x08] ; gcrRegs +[x0] ;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M11429_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M11429_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M11429_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref, isz
+G_M11429_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref, isz
; gcrRegs -[x0 x23] ; byrRegs +[x20] cmp w19, #1
- bne G_M11429_IG14
+ bne G_M11429_IG13
ldr x23, [fp, #0x40] // [V00 arg0] ; gcrRegs +[x23] mov x0, x23 @@ -299,26 +285,26 @@ G_M11429_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ldp x0, x1, [fp, #0x30] // [V06 tmp1], [V06 tmp1+0x08] ; gcrRegs +[x0] ;; size=76 bbWeight=0.50 PerfScore 13.75
-G_M11429_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M11429_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M11429_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11429_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ldp x0, x1, [fp, #0x40] // [V00 arg0], [V00 arg0+0x08] ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M11429_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M11429_IG14: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M11429_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11429_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 @@ -327,7 +313,7 @@ G_M11429_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { blr x0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M11429_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11429_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #33 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -337,7 +323,7 @@ G_M11429_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 748, prolog size 36, PerfScore 91.50, instruction count 187, allocated bytes for code 748 (MethodHash=0426d35a) for method System.MemoryExtensions:Trim[ubyte](System.ReadOnlyMemory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
+; Total bytes of code 708, prolog size 36, PerfScore 87.25, instruction count 177, allocated bytes for code 708 (MethodHash=0426d35a) for method System.MemoryExtensions:Trim[ubyte](System.ReadOnlyMemory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
; ============================================================ Unwind Info: @@ -348,7 +334,7 @@ Unwind Info: ...

libraries_tests.run.windows.arm64.Release.mch

-40 (-43.48%) : 5264.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)

@@ -5,16 +5,15 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 24
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 24
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> x0 class-hnd single-def <System.Reflection.Assembly> -; V01 loc0 [V01,T01] ( 2, 2 ) ref -> x0 class-hnd exact <System.Reflection.RuntimeAssembly> -; V02 loc1 [V02,T02] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x0 class-hnd single-def <System.Reflection.Assembly> +; V01 loc0 [V01,T01] ( 2, 2 ) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimeAssembly> +;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
;# 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 "spilling QMark2" <System.Reflection.RuntimeAssembly> -;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -24,58 +23,41 @@ G_M8626_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} ;; size=8 bbWeight=1 PerfScore 1.50 G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- cbz x0, G_M8626_IG05 - ldr x1, [x0] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M8626_IG04 - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M8626_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x0, G_M8626_IG04
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M8626_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 4.00 +G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M8626_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M8626_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0] - ldr x0, [x0, #0x08] - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 10.50, instruction count 23, allocated bytes for code 92 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 52, prolog size 8, PerfScore 7.50, instruction count 13, allocated bytes for code 52 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -83,9 +65,6 @@ Unwind Info: ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

-20 (-38.46%) : 4085.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Instance():Microsoft.Extensions.Configuration.ConfigurationKeyComparer (Tier0)

@@ -14,23 +14,18 @@ G_M6555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M6555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #10 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M6555_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=b203e664) for method Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Instance():Microsoft.Extensions.Configuration.ConfigurationKeyComparer (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=b203e664) for method Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Instance():Microsoft.Extensions.Configuration.ConfigurationKeyComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +36,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-38.46%) : 4901.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)

@@ -14,22 +14,17 @@ G_M7622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #3 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldrb w0, [x0]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M7622_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -40,7 +35,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-3.32%) : 473.dasm - Xunit.DependencyContextAssemblyCache:GetFallbackRuntime(System.String):System.String:this (Tier0)

@@ -5,54 +5,46 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0xB8] do-not-enreg[] this class-hnd <Xunit.DependencyContextAssemblyCache> -; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0xB0] do-not-enreg[] class-hnd <System.String> -; V02 loc0 [V02 ] ( 1, 1 ) ref -> [fp+0xA8] do-not-enreg[] must-init class-hnd <<unknown class>> -; V03 loc1 [V03 ] ( 1, 1 ) ref -> [fp+0xA0] do-not-enreg[] must-init class-hnd <System.String> -; V04 loc2 [V04 ] ( 1, 1 ) ref -> [fp+0x98] do-not-enreg[] must-init class-hnd <System.String> -; V05 loc3 [V05 ] ( 1, 1 ) int -> [fp+0x94] do-not-enreg[] must-init -; V06 loc4 [V06 ] ( 1, 1 ) struct (40) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0xA8] do-not-enreg[] this class-hnd <Xunit.DependencyContextAssemblyCache> +; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0xA0] do-not-enreg[] class-hnd <System.String> +; V02 loc0 [V02 ] ( 1, 1 ) ref -> [fp+0x98] do-not-enreg[] must-init class-hnd <<unknown class>> +; V03 loc1 [V03 ] ( 1, 1 ) ref -> [fp+0x90] do-not-enreg[] must-init class-hnd <System.String> +; V04 loc2 [V04 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] must-init class-hnd <System.String> +; V05 loc3 [V05 ] ( 1, 1 ) int -> [fp+0x84] do-not-enreg[] must-init +; V06 loc4 [V06 ] ( 1, 1 ) struct (40) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] must-init "DUP instruction" -; V09 tmp2 [V09 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] must-init -; V10 tmp3 [V10 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] must-init "DUP instruction" -; V11 tmp4 [V11 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] must-init -; V12 tmp5 [V12 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] must-init -; V13 tmp6 [V13 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>> -; V14 tmp7 [V14 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect" -; V16 tmp9 [V16 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" -; V17 tmp10 [V17 ] ( 1, 1 ) int -> [fp+0x1C] "ReplaceWithLclVar is creating a new local variable"
+; V08 tmp1 [V08 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] must-init "DUP instruction" +; V09 tmp2 [V09 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] must-init +; V10 tmp3 [V10 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] must-init "DUP instruction" +; V11 tmp4 [V11 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] must-init +; V12 tmp5 [V12 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init +; V13 tmp6 [V13 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>> +; V14 tmp7 [V14 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" +; V16 tmp9 [V16 ] ( 1, 1 ) int -> [fp+0x14] "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 176
+; Lcl frame size = 160
G_M17651_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xC0]!
+ stp fp, lr, [sp, #-0xB0]!
mov fp, sp
- add x9, fp, #32
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20] stp q16, q16, [x9, #0x40] stp q16, q16, [x9, #0x60]
- stp xzr, xzr, [x9, #0x80] - str x0, [fp, #0xB8] // [V00 this] - str x1, [fp, #0xB0] // [V01 arg1]
+ str xzr, [x9, #0x80] + str x0, [fp, #0xA8] // [V00 this] + str x1, [fp, #0xA0] // [V01 arg1]
;; size=44 bbWeight=1 PerfScore 9.50 G_M17651_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #39 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V15 tmp8] - ldr x0, [fp, #0x28] // [V15 tmp8] - ldr x1, [fp, #0xB0] // [V01 arg1]
+ ldr x1, [fp, #0xA0] // [V01 arg1]
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -61,34 +53,34 @@ G_M17651_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr wzr, [x0] blr x2 ; gcrRegs -[x1]
- str x0, [fp, #0xA8] // [V02 loc0] - ldr x0, [fp, #0xA8] // [V02 loc0]
+ str x0, [fp, #0x98] // [V02 loc0] + ldr x0, [fp, #0x98] // [V02 loc0]
cbnz x0, G_M17651_IG03
- str xzr, [fp, #0x40] // [V12 tmp5]
+ str xzr, [fp, #0x30] // [V12 tmp5]
b G_M17651_IG06
- ;; size=92 bbWeight=1 PerfScore 27.00
+ ;; size=64 bbWeight=1 PerfScore 21.00
G_M17651_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr x0, [fp, #0xA8] // [V02 loc0]
+ ldr x0, [fp, #0x98] // [V02 loc0]
; gcrRegs +[x0]
- ldr x1, [fp, #0xA8] // [V02 loc0]
+ ldr x1, [fp, #0x98] // [V02 loc0]
; gcrRegs +[x1] ldr x1, [x1] ; gcrRegs -[x1] ldr x1, [x1, #0x48] ldr x1, [x1, #0x20] blr x1
- str x0, [fp, #0x60] // [V08 tmp1] - ldr x0, [fp, #0x60] // [V08 tmp1] - str x0, [fp, #0x58] // [V09 tmp2] - ldr x0, [fp, #0x60] // [V08 tmp1]
+ str x0, [fp, #0x50] // [V08 tmp1] + ldr x0, [fp, #0x50] // [V08 tmp1] + str x0, [fp, #0x48] // [V09 tmp2] + ldr x0, [fp, #0x50] // [V08 tmp1]
cbnz x0, G_M17651_IG04
- str xzr, [fp, #0x40] // [V12 tmp5]
+ str xzr, [fp, #0x30] // [V12 tmp5]
b G_M17651_IG06 ;; size=52 bbWeight=1 PerfScore 23.00 G_M17651_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr x0, [fp, #0x58] // [V09 tmp2]
+ ldr x0, [fp, #0x48] // [V09 tmp2]
; gcrRegs +[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -98,42 +90,42 @@ G_M17651_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- str x0, [fp, #0x50] // [V10 tmp3] - ldr x0, [fp, #0x50] // [V10 tmp3] - str x0, [fp, #0x48] // [V11 tmp4] - ldr x0, [fp, #0x50] // [V10 tmp3]
+ str x0, [fp, #0x40] // [V10 tmp3] + ldr x0, [fp, #0x40] // [V10 tmp3] + str x0, [fp, #0x38] // [V11 tmp4] + ldr x0, [fp, #0x40] // [V10 tmp3]
cbnz x0, G_M17651_IG05
- str xzr, [fp, #0x40] // [V12 tmp5]
+ str xzr, [fp, #0x30] // [V12 tmp5]
b G_M17651_IG06 ;; size=64 bbWeight=1 PerfScore 18.00 G_M17651_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- ldr x0, [fp, #0x48] // [V11 tmp4]
+ ldr x0, [fp, #0x38] // [V11 tmp4]
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- str x0, [fp, #0x40] // [V12 tmp5]
+ str x0, [fp, #0x30] // [V12 tmp5]
;; size=28 bbWeight=1 PerfScore 8.50 G_M17651_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ldr x0, [fp, #0x40] // [V12 tmp5]
+ ldr x0, [fp, #0x30] // [V12 tmp5]
; gcrRegs +[x0]
- str x0, [fp, #0xA0] // [V03 loc1] - str xzr, [fp, #0x98] // [V04 loc2] - ldr x0, [fp, #0xB8] // [V00 this]
+ str x0, [fp, #0x90] // [V03 loc1] + str xzr, [fp, #0x88] // [V04 loc2] + ldr x0, [fp, #0xA8] // [V00 this]
ldr w0, [x0, #0x68] ; gcrRegs -[x0]
- str w0, [fp, #0x94] // [V05 loc3] - ldr w0, [fp, #0x94] // [V05 loc3]
+ str w0, [fp, #0x84] // [V05 loc3] + ldr w0, [fp, #0x84] // [V05 loc3]
sub w0, w0, #1
- str w0, [fp, #0x1C] // [V17 tmp10] - ldr w0, [fp, #0x1C] // [V17 tmp10]
+ str w0, [fp, #0x14] // [V16 tmp9] + ldr w0, [fp, #0x14] // [V16 tmp9]
cmp w0, #2 bhi G_M17651_IG07
- ldr w0, [fp, #0x1C] // [V17 tmp10]
+ ldr w0, [fp, #0x14] // [V16 tmp9]
mov w0, w0 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -145,7 +137,7 @@ G_M17651_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref b G_M17651_IG11 ;; size=4 bbWeight=1 PerfScore 1.00 G_M17651_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x1, [fp, #0xA0] // [V03 loc1]
+ ldr x1, [fp, #0x90] // [V03 loc1]
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -156,12 +148,12 @@ G_M17651_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x98] // [V04 loc2]
+ str x0, [fp, #0x88] // [V04 loc2]
b G_M17651_IG12 ;; size=44 bbWeight=1 PerfScore 11.00 G_M17651_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- ldr x1, [fp, #0xA0] // [V03 loc1]
+ ldr x1, [fp, #0x90] // [V03 loc1]
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -172,12 +164,12 @@ G_M17651_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x98] // [V04 loc2]
+ str x0, [fp, #0x88] // [V04 loc2]
b G_M17651_IG12 ;; size=44 bbWeight=1 PerfScore 11.00 G_M17651_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- ldr x1, [fp, #0xA0] // [V03 loc1]
+ ldr x1, [fp, #0x90] // [V03 loc1]
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -188,7 +180,7 @@ G_M17651_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x98] // [V04 loc2]
+ str x0, [fp, #0x88] // [V04 loc2]
b G_M17651_IG12 ;; size=44 bbWeight=1 PerfScore 11.00 G_M17651_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -196,17 +188,17 @@ G_M17651_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- str x0, [fp, #0x98] // [V04 loc2]
+ str x0, [fp, #0x88] // [V04 loc2]
;; size=16 bbWeight=1 PerfScore 2.50 G_M17651_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0xB8] // [V00 this]
+ ldr x0, [fp, #0xA8] // [V00 this]
; gcrRegs +[x0] ldr x0, [x0, #0x38] cbz x0, G_M17651_IG13
- ldr x0, [fp, #0xB8] // [V00 this]
+ ldr x0, [fp, #0xA8] // [V00 this]
ldr x0, [x0, #0x38]
- str x0, [fp, #0x38] // [V13 tmp6] - add x0, fp, #104 // [V06 loc4]
...

-20 (-2.20%) : 95.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

@@ -74,19 +74,14 @@ G_M3749_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} str x0, [fp, #0x38] // [V16 tmp2] ldr x0, [fp, #0x40] // [V15 tmp1] cbnz x0, G_M3749_IG05
- movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #6 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] str x0, [fp, #0x38] // [V16 tmp2]
- ;; size=100 bbWeight=1 PerfScore 27.50
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ldr x0, [fp, #0x38] // [V16 tmp2] @@ -252,7 +247,7 @@ G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] str x0, [fp, #0x18] // [V20 tmp6] ldr x0, [fp, #0x58] // [V11 loc9] @@ -303,7 +298,7 @@ G_M3749_IG06: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 908, prolog size 44, PerfScore 269.00, instruction count 227, allocated bytes for code 908 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 888, prolog size 44, PerfScore 266.00, instruction count 222, allocated bytes for code 888 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================ Unwind Info: @@ -314,7 +309,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 908 (0x00038c)
+ Function Length : 222 (0x000de) Actual length = 888 (0x000378)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+10.00%) : 2231.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" @@ -24,10 +24,14 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { str x2, [fp, #0x28] // [V02 arg2] ;; size=28 bbWeight=1 PerfScore 6.50 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [fp, #0x28] // [V02 arg2] - cbnz w0, G_M26730_IG04 - ldr x0, [fp, #0x38] // [V00 this]
+ add x1, fp, #40 // [V02 arg2] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0]
+ cbnz x0, G_M26730_IG04 + ldr x0, [fp, #0x38] // [V00 this]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x30] // [V01 arg1] ; gcrRegs +[x1] @@ -38,7 +42,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr wzr, [x0] blr x2 ; gcrRegs -[x0-x1]
- ;; size=44 bbWeight=1 PerfScore 18.50
+ ;; size=60 bbWeight=1 PerfScore 19.50
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -53,7 +57,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX_NULLABLE
+ bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs +[x0] str x0, [fp, #0x20] // [V04 tmp1] ldr x2, [fp, #0x20] // [V04 tmp1] @@ -74,7 +78,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 160, prolog size 16, PerfScore 53.50, instruction count 40, allocated bytes for code 160 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 176, prolog size 16, PerfScore 54.50, instruction count 44, allocated bytes for code 176 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info: @@ -85,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-44 (-57.89%) : 1937.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M50046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M50046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M50046_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M50046_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M50046_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M50046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M50046_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #57 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M50046_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=c0343c81) for method Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=c0343c81) for method Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 1974.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -16,35 +16,19 @@ G_M23230_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23230_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M23230_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M23230_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23230_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M23230_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M23230_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M23230_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #59 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M23230_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=cbe5a541) for method Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=cbe5a541) for method Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2134.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)

@@ -15,35 +15,19 @@ G_M7353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M7353_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M7353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M7353_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M7353_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M7353_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M7353_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 76 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.27%) : 991.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon

@@ -16,7 +16,7 @@ ; V05 loc0 [V05 ] ( 3, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T13] ( 3, 5 ) ref -> x24 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T52] ( 3, 1.50) ref -> x24 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> x24 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> x21 class-hnd <System.__Canon> @@ -31,7 +31,7 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> x25 class-hnd "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x22 "spilling helperCall"
+; V23 tmp11 [V23,T40] ( 3, 2 ) long -> x24 "spilling helperCall"
; V24 tmp12 [V24,T41] ( 3, 2 ) long -> x25 "spilling helperCall" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -72,7 +72,7 @@ ; V61 rat13 [V61,T24] ( 3, 2.80) long -> x0 "spilling expr" ; V62 rat14 [V62,T34] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V63 rat15 [V63,T25] ( 3, 2.80) long -> x0 "spilling expr"
-; V64 rat16 [V64,T35] ( 3, 2.24) long -> x22 "fgMakeTemp is creating a new local variable"
+; V64 rat16 [V64,T35] ( 3, 2.24) long -> x24 "fgMakeTemp is creating a new local variable"
; V65 rat17 [V65,T26] ( 3, 2.80) long -> x0 "spilling expr" ; V66 rat18 [V66,T36] ( 3, 2.24) long -> x25 "fgMakeTemp is creating a new local variable" ; V67 rat19 [V67,T47] ( 3, 2 ) long -> x0 "runtime lookup" @@ -83,9 +83,9 @@ ; V72 rat24 [V72,T38] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable" ; V73 rat25 [V73,T29] ( 3, 2.80) long -> x0 "spilling expr" ; V74 rat26 [V74,T39] ( 3, 2.24) long -> x11 "fgMakeTemp is creating a new local variable"
-; V75 rat27 [V75,T56] ( 3, 1 ) long -> x23 "runtime lookup" -; V76 rat28 [V76,T54] ( 3, 1.40) long -> x0 "spilling expr" -; V77 rat29 [V77,T55] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
+; V75 rat27 [V75,T55] ( 3, 1 ) long -> x23 "runtime lookup" +; V76 rat28 [V76,T53] ( 3, 1.40) long -> x0 "spilling expr" +; V77 rat29 [V77,T54] ( 3, 1.12) long -> x23 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -124,7 +124,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M36297_IG05: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz @@ -161,11 +161,11 @@ G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=800000 {x23}, byrefRegs=0000 {} movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x21, x0 @@ -210,13 +210,13 @@ G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x24, x0 @@ -241,7 +241,7 @@ G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x22, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -263,7 +263,7 @@ G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -326,73 +326,71 @@ G_M36297_IG29: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov x1, x22 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+ bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24] - cbz x24, G_M36297_IG44
+ mov x22, x0 + ; gcrRegs +[x22]
ldr x0, [x21, #0x38] ; gcrRegs -[x0] ldr x1, [x0, #0x18] cmp x1, #80 ble G_M36297_IG33
- ;; size=32 bbWeight=0.50 PerfScore 5.25 -G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - ldr x22, [x0, #0x50] - cbz x22, G_M36297_IG33
+ ;; size=28 bbWeight=0.50 PerfScore 4.75 +G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + ldr x24, [x0, #0x50] + cbz x24, G_M36297_IG33
;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG34 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov x22, x0
+ mov x24, x0
;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21, #0x38] ldr x1, [x0, #0x18] cmp x1, #88 ble G_M36297_IG37 ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x25, [x0, #0x58] cbz x25, G_M36297_IG37 ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M36297_IG38 ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x21 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x25, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz - mov x0, x22 - mov x1, x24
+G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz + mov x0, x24 + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x24]
+ ; gcrRegs -[x1 x22]
; byrRegs +[x0] ; gcr arg pop 0 mov w2, w1 @@ -428,7 +426,7 @@ G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=400000 {x22}, byref @@ -477,11 +475,11 @@ G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=D80000 {x19 x20 x22 x23}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 0.54 G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[x0] ; gcr arg pop 0 mov x24, x0 @@ -513,7 +511,7 @@ G_M36297_IG51: ; bbWeight=0.18, gcrefRegs=1580000 {x19 x20 x22 x24}, byre movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x11, x0 ;; size=24 bbWeight=0.18 PerfScore 0.63 @@ -556,7 +554,7 @@ G_M36297_IG57: ; bbWeight=0.09, gcrefRegs=1180000 {x19 x20 x24}, byrefReg movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov x23, x0 ;; size=24 bbWeight=0.09 PerfScore 0.32 @@ -709,7 +707,7 @@ G_M36297_IG68: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1460, prolog size 52, PerfScore 319.10, instruction count 365, allocated bytes for code 1460 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 1456, prolog size 52, PerfScore 318.60, instruction count 364, allocated bytes for code 1456 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -720,7 +718,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 344 (0x00158) Actual length = 1376 (0x000560)
+ Function Length : 343 (0x00157) Actual length = 1372 (0x00055c)
---- Epilog scopes ---- ...

+0 (0.00%) : 492.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M47281_IG05
+ cbnz x19, G_M47281_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -61,7 +60,7 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

+0 (0.00%) : 592.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 8 @@ -39,14 +39,13 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M51894_IG05
+ cbnz x19, G_M51894_IG05
;; size=52 bbWeight=1 PerfScore 13.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x1, x19 - ; gcrRegs +[x1]
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x1, xzr
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -61,7 +60,7 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1 x19] +[x0]
+ ; gcrRegs +[x0]
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr

realworld.run.windows.arm64.checked.mch

-44 (-57.89%) : 2065.dasm - UtilsStrings.SR:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M14360_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M14360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M14360_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M14360_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M14360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M14360_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M14360_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M14360_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M14360_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=a4ffc7e7) for method UtilsStrings.SR:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=a4ffc7e7) for method UtilsStrings.SR:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2042.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M47685_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47685_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M47685_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M47685_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47685_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M47685_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M47685_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M47685_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M47685_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=8aae45ba) for method FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=8aae45ba) for method FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-57.89%) : 2050.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)

@@ -8,7 +8,6 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T00] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -16,33 +15,18 @@ G_M17141_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17141_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M17141_IG05 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M17141_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17141_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str wzr, [x0] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M17141_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M17141_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M17141_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #0xD1FFAB1E - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M17141_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 11.50, instruction count 19, allocated bytes for code 76 (MethodHash=290cbd0a) for method FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=290cbd0a) for method FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +37,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.33%) : 2104.dasm - Microsoft.FSharp.Core.FSharpFunc2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc2[System.Canon,System.Canon],System.Canon,System.Canon):System.__Canon (FullOpts)

@@ -8,15 +8,15 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ; V03 arg2 [V03,T04] ( 4, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V08 tmp2 [V08,T06] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" ; @@ -48,16 +48,16 @@ G_M55917_IG04: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=16 bbWeight=0.20 PerfScore 0.50 G_M55917_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M55917_IG08
+ cbz x19, G_M55917_IG08
;; size=12 bbWeight=1 PerfScore 2.50 G_M55917_IG06: ; bbWeight=0.50, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -76,24 +76,24 @@ G_M55917_IG07: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M55917_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x2] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M55917_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x2] + mov x0, xzr
mov x1, x20 ; gcrRegs +[x1]
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x1 x19-x20]
+ ; gcrRegs -[x1 x20] +[x0]
; gcr arg pop 0 mov x1, x21 ; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M55917_IG09: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -102,7 +102,7 @@ G_M55917_IG09: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 172, prolog size 32, PerfScore 37.45, instruction count 43, allocated bytes for code 172 (MethodHash=44692592) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 176, prolog size 32, PerfScore 37.70, instruction count 44, allocated bytes for code 176 (MethodHash=44692592) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -113,7 +113,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.78%) : 2992.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T01] ( 4, 3 ) int -> x20 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 2 ) int -> x21 single-def "field V01.idx (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -34,10 +34,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M49388_IG05
+ cbz x19, G_M49388_IG05
;; size=24 bbWeight=1 PerfScore 4.00 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -54,22 +54,22 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0]
+G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr
mov w1, w21
- ldr x2, [x19]
+ mov x2, xzr + ldr x2, [x2]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] blr x2
- ; gcrRegs -[x19]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov w1, w20 ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x20]
- ;; size=40 bbWeight=0.50 PerfScore 10.25
+ ;; size=44 bbWeight=0.50 PerfScore 10.50
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -78,7 +78,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 144, prolog size 28, PerfScore 29.25, instruction count 36, allocated bytes for code 144 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 148, prolog size 28, PerfScore 29.50, instruction count 37, allocated bytes for code 148 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -89,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.90%) : 1940.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> x1 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 8 @@ -28,15 +28,18 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M19732_IG05 - ;; size=24 bbWeight=1 PerfScore 4.00 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- ldr x2, [x0]
+ cbz x19, G_M19732_IG05 + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x19 + ; gcrRegs +[x0] + ldr x2, [x19]
ldr x2, [x2, #0x98] ldr x2, [x2, #0x10] ;; size=16 bbWeight=0.50 PerfScore 4.75 @@ -46,21 +49,21 @@ G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19]
+G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x19] + mov x0, xzr + mov x1, xzr + ldr x1, [x1]
ldr x1, [x1, #0x50] ldr x1, [x1, #0x30] blr x1
+ ; gcrRegs +[x0]
; gcr arg pop 0
- mov x1, x19 - ; gcrRegs +[x1]
+ mov x1, xzr
ldr x2, [x0] ldr x2, [x2, #0x98] ldr x2, [x2, #0x10]
- ;; size=36 bbWeight=0.50 PerfScore 10.00
+ ;; size=40 bbWeight=0.50 PerfScore 10.25
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -68,7 +71,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.75, instruction count 29, allocated bytes for code 116 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 26.50, instruction count 31, allocated bytes for code 124 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info: @@ -79,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)

smoke_tests.nativeaot.windows.arm64.checked.mch

-32 (-57.14%) : 1221.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)

@@ -16,31 +16,19 @@ G_M28146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M28146_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M28146_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x08] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M28146_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M28146_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M28146_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M28146_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
; ============================================================ Unwind Info: @@ -51,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 6 (0x00006) Actual length = 24 (0x000018)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-57.14%) : 18801.dasm - Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)

@@ -15,31 +15,19 @@ G_M31235_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M31235_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M31235_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x10] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M31235_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M31235_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M31235_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=d87085fc) for method Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=d87085fc) for method Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
; ============================================================ Unwind Info: @@ -50,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 6 (0x00006) Actual length = 24 (0x000018)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-57.14%) : 19045.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (FullOpts)

@@ -15,31 +15,19 @@ G_M39592_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M39592_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M39592_IG05 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M39592_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0]
+G_M39592_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[x0]
ldr x0, [x0, #0x08] ; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 7.00 -G_M39592_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x0] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M39592_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M39592_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[x0] - b G_M39592_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 15.50, instruction count 14, allocated bytes for code 56 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (FullOpts)
+; Total bytes of code 24, prolog size 8, PerfScore 7.50, instruction count 6, allocated bytes for code 24 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (FullOpts)
; ============================================================ Unwind Info: @@ -50,7 +38,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 6 (0x00006) Actual length = 24 (0x000018)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-2.74%) : 288.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (FullOpts)

@@ -7,8 +7,8 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 loc0 [V00,T14] ( 9, 33.50) double -> d9 -; V01 loc1 [V01,T15] ( 9, 33.50) double -> d8
+; V00 loc0 [V00,T13] ( 9, 33.50) double -> d9 +; V01 loc1 [V01,T14] ( 9, 33.50) double -> d8
; V02 loc2 [V02,T06] ( 3, 64.50) long -> x20 ; V03 loc3 [V03,T07] ( 4, 12.50) int -> x21 ; V04 loc4 [V04,T01] ( 10,264 ) long -> x23 @@ -18,19 +18,18 @@ ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T16] ( 3, 14 ) double -> d16 "Inline return value spill temp" -; V12 tmp4 [V12,T12] ( 4, 36 ) double -> d16 "Inlining Arg"
+; V11 tmp3 [V11,T15] ( 3, 14 ) double -> d16 "Inline return value spill temp" +; V12 tmp4 [V12,T11] ( 4, 36 ) double -> d16 "Inlining Arg"
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp7 [V15,T17] ( 3, 14 ) double -> d16 "Inline return value spill temp" -; V16 tmp8 [V16,T13] ( 4, 36 ) double -> d16 "Inlining Arg" -; V17 tmp9 [V17,T11] ( 2, 1 ) int -> x0 "Inline return value spill temp"
+; V15 tmp7 [V15,T16] ( 3, 14 ) double -> d16 "Inline return value spill temp" +; V16 tmp8 [V16,T12] ( 4, 36 ) double -> d16 "Inlining Arg" +; V17 tmp9 [V17,T10] ( 2, 1 ) int -> x0 "Inline return value spill temp"
; V18 tmp10 [V18,T08] ( 3, 3 ) int -> x0 "Inlining Arg" ; V19 cse0 [V19,T04] ( 6,129 ) byref -> x19 "CSE - aggressive"
-; V20 cse1 [V20,T18] ( 3, 3 ) double -> d8 "CSE - aggressive"
+; V20 cse1 [V20,T17] ( 3, 3 ) double -> d8 "CSE - aggressive"
; V21 cse2 [V21,T05] ( 12, 96 ) ref -> x1 multi-def "CSE - aggressive"
-; V22 rat0 [V22,T09] ( 3, 3 ) long -> x19 "fgMakeTemp is creating a new local variable" -; V23 rat1 [V23,T10] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
+; V22 rat0 [V22,T09] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -64,14 +63,13 @@ G_M1452_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M1452_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adrp x19, [HIGH RELOC #0xD1FFAB1E] - add x19, x19, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x19, #-0x08] - cbnz x0, G_M1452_IG36 - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M1452_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1452_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[x0] + mov x19, x0 + ; byrRegs +[x19]
ldr x0, [x19]
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -81,17 +79,16 @@ G_M1452_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre add x0, x1, x0, LSR #63 add x20, x0, #1 mov w21, wzr
- ;; size=40 bbWeight=0.50 PerfScore 6.50 -G_M1452_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; byrRegs +[x19]
+ ;; size=48 bbWeight=0.50 PerfScore 7.25 +G_M1452_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov w22, #8 ;; size=4 bbWeight=4 PerfScore 2.00
-G_M1452_IG08: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG07: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
lsl w22, w22, #1 ldrb w0, [x19, #0x08]
- cbnz w0, G_M1452_IG10
+ cbnz w0, G_M1452_IG09
;; size=12 bbWeight=32 PerfScore 160.00
-G_M1452_IG09: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -100,24 +97,24 @@ G_M1452_IG09: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl <unknown method> ; gcrRegs -[x0-x1] ;; size=16 bbWeight=8 PerfScore 20.00
-G_M1452_IG10: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG09: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl System.Diagnostics.Stopwatch:QueryPerformanceCounter():long mov x23, x0 mov w24, wzr cmp w22, #0
- ble G_M1452_IG12
+ ble G_M1452_IG11
;; size=20 bbWeight=32 PerfScore 112.00
-G_M1452_IG11: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG10: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl System.Threading.Thread:GetCurrentProcessorNumber():int add w24, w24, #1 cmp w24, w22
- blt G_M1452_IG11
+ blt G_M1452_IG10
;; size=16 bbWeight=64 PerfScore 192.00
-G_M1452_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG11: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldrb w0, [x19, #0x08]
- cbnz w0, G_M1452_IG14
+ cbnz w0, G_M1452_IG13
;; size=8 bbWeight=32 PerfScore 128.00
-G_M1452_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -126,48 +123,48 @@ G_M1452_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl <unknown method> ; gcrRegs -[x0-x1] ;; size=16 bbWeight=8 PerfScore 20.00
-G_M1452_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG13: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl System.Diagnostics.Stopwatch:QueryPerformanceCounter():long sub x23, x0, x23 cmp x23, x20
- blt G_M1452_IG08
+ blt G_M1452_IG07
;; size=16 bbWeight=32 PerfScore 96.00
-G_M1452_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
scvtf d16, x23 scvtf d17, w22 fdiv d16, d16, d17 fcmp d9, d16
- beq G_M1452_IG18
+ beq G_M1452_IG17
;; size=20 bbWeight=4 PerfScore 96.00
-G_M1452_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
fcmp d9, d9
- bne G_M1452_IG19
+ bne G_M1452_IG18
fcmp d9, d16
- blo G_M1452_IG19
+ blo G_M1452_IG18
;; size=16 bbWeight=2 PerfScore 8.00
-G_M1452_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M1452_IG20
+G_M1452_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + b G_M1452_IG19
;; size=4 bbWeight=8 PerfScore 8.00
-G_M1452_IG18: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG17: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
mov x0, v9.d[0]
- tbz x0, #63, G_M1452_IG17
+ tbz x0, #63, G_M1452_IG16
;; size=8 bbWeight=16 PerfScore 32.00
-G_M1452_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
fmov d16, d9 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M1452_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
fmov d9, d16 asr w0, w22, #31 and w0, w0, #3 add w0, w0, w22 asr w22, w0, #2 ;; size=20 bbWeight=4 PerfScore 14.00
-G_M1452_IG21: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG20: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
lsl w22, w22, #1 ldrb w0, [x19, #0x08]
- cbnz w0, G_M1452_IG23
+ cbnz w0, G_M1452_IG22
;; size=12 bbWeight=32 PerfScore 160.00
-G_M1452_IG22: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG21: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -176,24 +173,24 @@ G_M1452_IG22: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl <unknown method> ; gcrRegs -[x0-x1] ;; size=16 bbWeight=8 PerfScore 20.00
-G_M1452_IG23: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG22: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl System.Diagnostics.Stopwatch:QueryPerformanceCounter():long mov x23, x0 mov w24, wzr cmp w22, #0
- ble G_M1452_IG25
+ ble G_M1452_IG24
;; size=20 bbWeight=32 PerfScore 112.00
-G_M1452_IG24: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG23: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl <unknown method> add w24, w24, #1 cmp w24, w22
- blt G_M1452_IG24
+ blt G_M1452_IG23
;; size=16 bbWeight=64 PerfScore 192.00
-G_M1452_IG25: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG24: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldrb w0, [x19, #0x08]
- cbnz w0, G_M1452_IG27
+ cbnz w0, G_M1452_IG26
;; size=8 bbWeight=32 PerfScore 128.00
-G_M1452_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M1452_IG25: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -202,42 +199,42 @@ G_M1452_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl <unknown method> ; gcrRegs -[x0-x1] ;; size=16 bbWeight=8 PerfScore 20.00
-G_M1452_IG27: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG26: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
bl System.Diagnostics.Stopwatch:QueryPerformanceCounter():long sub x23, x0, x23 cmp x23, x20
- blt G_M1452_IG21
+ blt G_M1452_IG20
;; size=16 bbWeight=32 PerfScore 96.00
-G_M1452_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG27: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
scvtf d16, x23 scvtf d17, w22 fdiv d16, d16, d17 fcmp d8, d16
- beq G_M1452_IG31
+ beq G_M1452_IG30
;; size=20 bbWeight=4 PerfScore 96.00
-G_M1452_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
fcmp d8, d8
- bne G_M1452_IG32
+ bne G_M1452_IG31
fcmp d8, d16
- blo G_M1452_IG32
+ blo G_M1452_IG31
;; size=16 bbWeight=2 PerfScore 8.00
-G_M1452_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M1452_IG33
+G_M1452_IG29: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + b G_M1452_IG32
;; size=4 bbWeight=8 PerfScore 8.00
-G_M1452_IG31: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M1452_IG30: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
mov x0, v8.d[0]
- tbz x0, #63, G_M1452_IG30
...

-20 (-1.93%) : 2645.dasm - System.Globalization.InvariantModeCasing:IndexOfIgnoreCase(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):int (FullOpts)

@@ -9,7 +9,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T38] ( 5, 4.50) long -> x20
+; V02 loc0 [V02,T37] ( 5, 4.50) long -> x20
; V03 loc1 [V03 ] ( 1, 1 ) byref -> [fp+0x28] must-init pinned single-def ; V04 loc2 [V04,T30] ( 4, 10 ) long -> x21 ; V05 loc3 [V05 ] ( 1, 1 ) byref -> [fp+0x20] must-init pinned single-def @@ -94,9 +94,9 @@ ;* V84 tmp73 [V84 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V87 tmp76 [V87,T35] ( 3, 3 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V88 tmp77 [V88,T37] ( 3, 3 ) int -> x22 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V89 tmp78 [V89,T36] ( 3, 3 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V87 tmp76 [V87,T34] ( 3, 3 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V88 tmp77 [V88,T36] ( 3, 3 ) int -> x22 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V89 tmp78 [V89,T35] ( 3, 3 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V90 tmp79 [V90,T32] ( 5, 5 ) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP ;* V91 tmp80 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp81 [V92 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP @@ -126,8 +126,8 @@ ;* V116 tmp105 [V116 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP ;* V117 tmp106 [V117 ] ( 0, 0 ) byref -> zero-ref "field V80._reference (fldOffset=0x0)" P-INDEP ;* V118 tmp107 [V118 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
-; V119 tmp108 [V119,T39] ( 2, 4 ) long -> x20 "Cast away GC" -; V120 tmp109 [V120,T40] ( 2, 4 ) long -> x21 "Cast away GC"
+; V119 tmp108 [V119,T38] ( 2, 4 ) long -> x20 "Cast away GC" +; V120 tmp109 [V120,T39] ( 2, 4 ) long -> x21 "Cast away GC"
; V121 cse0 [V121,T22] ( 3, 24 ) int -> x28 "CSE - moderate" ; V122 cse1 [V122,T23] ( 3, 24 ) int -> x2 "CSE - moderate" ; V123 cse2 [V123,T05] ( 6, 64 ) int -> x26 "CSE - aggressive" @@ -135,8 +135,7 @@ ; V125 cse4 [V125,T24] ( 3, 24 ) int -> x27 "CSE - moderate" ; V126 cse5 [V126,T00] ( 33,196.50) ref -> x1 multi-def "CSE - aggressive" ; V127 cse6 [V127,T10] ( 6, 48 ) byref -> [fp+0x10] multi-def "CSE - aggressive"
-; V128 rat0 [V128,T34] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable" -; V129 rat1 [V129,T41] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
+; V128 rat0 [V128,T40] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -185,16 +184,14 @@ G_M10941_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- adrp x23, [HIGH RELOC #0xD1FFAB1E] - add x23, x23, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x23, #-0x08] - cbnz x0, G_M10941_IG31 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M10941_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz - ldrb w0, [x23] - cbnz w0, G_M10941_IG09 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
+ bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[x0] + ; gcr arg pop 0 + ldrb w0, [x0] + ; byrRegs -[x0] + cbnz w0, G_M10941_IG08 + ;; size=12 bbWeight=1 PerfScore 5.00 +G_M10941_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -204,7 +201,7 @@ G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M10941_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
stp x21, x20, [fp, #0x20] // [V05 loc3], [V03 loc1] sub w0, w22, w19 sbfiz x0, x0, #1, #32 @@ -214,30 +211,30 @@ G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21 sub x19, x0, #2 mov x23, x20 cmp x20, x22
- bhi G_M10941_IG27
+ bhi G_M10941_IG26
;; size=40 bbWeight=1 PerfScore 7.00
-G_M10941_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x20-x21] mov x24, x21 mov x25, x23 cmp x21, x19
- bhi G_M10941_IG26
+ bhi G_M10941_IG25
;; size=16 bbWeight=4 PerfScore 10.00
-G_M10941_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG10: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w26, [x24] movn w0, #0xD1FFAB1E add w0, w26, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG13
+ bhi G_M10941_IG12
;; size=20 bbWeight=16 PerfScore 88.00
-G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x24, x19
- bne G_M10941_IG15
+ bne G_M10941_IG14
;; size=8 bbWeight=8 PerfScore 12.00
-G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w27, [x25] cmp w26, w27
- beq G_M10941_IG14
+ beq G_M10941_IG13
mov w0, w26 bl <unknown method> ; gcr arg pop 0 @@ -255,34 +252,48 @@ G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w0, w26 uxth w0, w0 cmp w0, w27
- bne G_M10941_IG26
+ bne G_M10941_IG25
;; size=72 bbWeight=8 PerfScore 168.00
-G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x28] add x24, x24, #2 add x25, x25, #2
- b G_M10941_IG25
+ b G_M10941_IG24
;; size=12 bbWeight=8 PerfScore 16.00
-G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w27, [x25] movn w0, #0xD1FFAB1E add w0, w27, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
ldrh w28, [x25, #0x02] movn w0, #0xD1FFAB1E add w0, w28, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
ldrh w2, [x24, #0x02] movn w0, #0xD1FFAB1E add w0, w2, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
str w2, [fp, #0x18] // [V46 tmp35] movn w0, #0xD1FFAB1E add w0, w27, w0 cmp w0, #0xD1FFAB1E
+ bls G_M10941_IG15 + adrp x1, [HIGH RELOC #0xD1FFAB1E] + add x1, x1, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + bl <unknown method> + ; gcrRegs -[x0-x1] + ; gcr arg pop 0 + ;; size=96 bbWeight=8 PerfScore 180.00 +G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movn w0, #0xD1FFAB1E + add w0, w28, w0 + cmp w0, #0xD1FFAB1E
bls G_M10941_IG16 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] @@ -291,23 +302,9 @@ G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0-x1]
- ; gcr arg pop 0 - ;; size=96 bbWeight=8 PerfScore 180.00 -G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movn w0, #0xD1FFAB1E - add w0, w28, w0 - cmp w0, #0xD1FFAB1E - bls G_M10941_IG17 - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1 - ; gcrRegs +[x0] - bl <unknown method> - ; gcrRegs -[x0-x1]
; gcr arg pop 0 ;; size=32 bbWeight=8 PerfScore 40.00
-G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, w27 bl System.Text.UnicodeDebug:AssertIsHighSurrogateCodePoint(uint) ; gcr arg pop 0 @@ -320,7 +317,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w28, w0, w27 movn w0, #0xD1FFAB1E LSL #16 cmp w28, w0
- bhi G_M10941_IG32
+ bhi G_M10941_IG30
mov w0, w28 bl <unknown method> ; gcr arg pop 0 @@ -350,7 +347,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movn w0, #0xD1FFAB1E add w0, w2, w0 cmp w0, #0xD1FFAB1E
- bls G_M10941_IG18
+ bls G_M10941_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -360,10 +357,24 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=160 bbWeight=8 PerfScore 224.00
-G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movn w0, #0xD1FFAB1E add w0, w28, w0 cmp w0, #0xD1FFAB1E
+ bls G_M10941_IG18 + adrp x1, [HIGH RELOC #0xD1FFAB1E] + add x1, x1, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + bl <unknown method> + ; gcrRegs -[x0-x1] + ; gcr arg pop 0 + ;; size=32 bbWeight=8 PerfScore 40.00 +G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movn w0, #0xD1FFAB1E + add w0, w26, w0 + cmp w0, #0xD1FFAB1E
bls G_M10941_IG19 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] @@ -376,7 +387,8 @@ G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=32 bbWeight=8 PerfScore 40.00 G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movn w0, #0xD1FFAB1E
- add w0, w26, w0
+ ldr w3, [fp, #0x18] // [V46 tmp35] + add w0, w3, w0
cmp w0, #0xD1FFAB1E ...

-20 (-1.93%) : 8594.dasm - System.Globalization.InvariantModeCasing:IndexOfIgnoreCase(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):int (FullOpts)

@@ -10,7 +10,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T38] ( 5, 4.50) long -> x20
+; V02 loc0 [V02,T37] ( 5, 4.50) long -> x20
; V03 loc1 [V03 ] ( 1, 1 ) byref -> [fp+0x28] must-init pinned single-def ; V04 loc2 [V04,T30] ( 4, 10 ) long -> x21 ; V05 loc3 [V05 ] ( 1, 1 ) byref -> [fp+0x20] must-init pinned single-def @@ -95,9 +95,9 @@ ;* V84 tmp73 [V84 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V87 tmp76 [V87,T35] ( 3, 3 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V88 tmp77 [V88,T37] ( 3, 3 ) int -> x22 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V89 tmp78 [V89,T36] ( 3, 3 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V87 tmp76 [V87,T34] ( 3, 3 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V88 tmp77 [V88,T36] ( 3, 3 ) int -> x22 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V89 tmp78 [V89,T35] ( 3, 3 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V90 tmp79 [V90,T32] ( 5, 5 ) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP ;* V91 tmp80 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp81 [V92 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP @@ -127,8 +127,8 @@ ;* V116 tmp105 [V116 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP ;* V117 tmp106 [V117 ] ( 0, 0 ) byref -> zero-ref "field V80._reference (fldOffset=0x0)" P-INDEP ;* V118 tmp107 [V118 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
-; V119 tmp108 [V119,T39] ( 2, 4 ) long -> x20 "Cast away GC" -; V120 tmp109 [V120,T40] ( 2, 4 ) long -> x21 "Cast away GC"
+; V119 tmp108 [V119,T38] ( 2, 4 ) long -> x20 "Cast away GC" +; V120 tmp109 [V120,T39] ( 2, 4 ) long -> x21 "Cast away GC"
; V121 cse0 [V121,T22] ( 3, 24 ) int -> x28 "CSE - moderate" ; V122 cse1 [V122,T23] ( 3, 24 ) int -> x2 "CSE - moderate" ; V123 cse2 [V123,T05] ( 6, 64 ) int -> x26 "CSE - aggressive" @@ -136,8 +136,7 @@ ; V125 cse4 [V125,T24] ( 3, 24 ) int -> x27 "CSE - moderate" ; V126 cse5 [V126,T00] ( 33,196.50) ref -> x1 multi-def "CSE - aggressive" ; V127 cse6 [V127,T10] ( 6, 48 ) byref -> [fp+0x10] multi-def "CSE - aggressive"
-; V128 rat0 [V128,T34] ( 3, 6 ) long -> x23 "fgMakeTemp is creating a new local variable" -; V129 rat1 [V129,T41] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
+; V128 rat0 [V128,T40] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -186,16 +185,14 @@ G_M10941_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- adrp x23, [HIGH RELOC #0xD1FFAB1E] - add x23, x23, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x23, #-0x08] - cbnz x0, G_M10941_IG31 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M10941_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz - ldrb w0, [x23] - cbnz w0, G_M10941_IG09 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
+ bl CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[x0] + ; gcr arg pop 0 + ldrb w0, [x0] + ; byrRegs -[x0] + cbnz w0, G_M10941_IG08 + ;; size=12 bbWeight=1 PerfScore 5.00 +G_M10941_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -205,7 +202,7 @@ G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M10941_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
stp x21, x20, [fp, #0x20] // [V05 loc3], [V03 loc1] sub w0, w22, w19 sbfiz x0, x0, #1, #32 @@ -215,30 +212,30 @@ G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21 sub x19, x0, #2 mov x23, x20 cmp x20, x22
- bhi G_M10941_IG27
+ bhi G_M10941_IG26
;; size=40 bbWeight=1 PerfScore 7.00
-G_M10941_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x20-x21] mov x24, x21 mov x25, x23 cmp x21, x19
- bhi G_M10941_IG26
+ bhi G_M10941_IG25
;; size=16 bbWeight=4 PerfScore 10.00
-G_M10941_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG10: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w26, [x24] movn w0, #0xD1FFAB1E add w0, w26, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG13
+ bhi G_M10941_IG12
;; size=20 bbWeight=16 PerfScore 88.00
-G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x24, x19
- bne G_M10941_IG15
+ bne G_M10941_IG14
;; size=8 bbWeight=8 PerfScore 12.00
-G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w27, [x25] cmp w26, w27
- beq G_M10941_IG14
+ beq G_M10941_IG13
mov w0, w26 bl <unknown method> ; gcr arg pop 0 @@ -256,34 +253,48 @@ G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w0, w26 uxth w0, w0 cmp w0, w27
- bne G_M10941_IG26
+ bne G_M10941_IG25
;; size=72 bbWeight=8 PerfScore 168.00
-G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x28] add x24, x24, #2 add x25, x25, #2
- b G_M10941_IG25
+ b G_M10941_IG24
;; size=12 bbWeight=8 PerfScore 16.00
-G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w27, [x25] movn w0, #0xD1FFAB1E add w0, w27, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
ldrh w28, [x25, #0x02] movn w0, #0xD1FFAB1E add w0, w28, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
ldrh w2, [x24, #0x02] movn w0, #0xD1FFAB1E add w0, w2, w0 cmp w0, #0xD1FFAB1E
- bhi G_M10941_IG24
+ bhi G_M10941_IG23
str w2, [fp, #0x18] // [V46 tmp35] movn w0, #0xD1FFAB1E add w0, w27, w0 cmp w0, #0xD1FFAB1E
+ bls G_M10941_IG15 + adrp x1, [HIGH RELOC #0xD1FFAB1E] + add x1, x1, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + bl <unknown method> + ; gcrRegs -[x0-x1] + ; gcr arg pop 0 + ;; size=96 bbWeight=8 PerfScore 180.00 +G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movn w0, #0xD1FFAB1E + add w0, w28, w0 + cmp w0, #0xD1FFAB1E
bls G_M10941_IG16 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] @@ -292,23 +303,9 @@ G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0-x1]
- ; gcr arg pop 0 - ;; size=96 bbWeight=8 PerfScore 180.00 -G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movn w0, #0xD1FFAB1E - add w0, w28, w0 - cmp w0, #0xD1FFAB1E - bls G_M10941_IG17 - adrp x1, [HIGH RELOC #0xD1FFAB1E] - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x1] - mov x0, x1 - ; gcrRegs +[x0] - bl <unknown method> - ; gcrRegs -[x0-x1]
; gcr arg pop 0 ;; size=32 bbWeight=8 PerfScore 40.00
-G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, w27 bl System.Text.UnicodeDebug:AssertIsHighSurrogateCodePoint(uint) ; gcr arg pop 0 @@ -321,7 +318,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w28, w0, w27 movn w0, #0xD1FFAB1E LSL #16 cmp w28, w0
- bhi G_M10941_IG32
+ bhi G_M10941_IG30
mov w0, w28 bl <unknown method> ; gcr arg pop 0 @@ -351,7 +348,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movn w0, #0xD1FFAB1E add w0, w2, w0 cmp w0, #0xD1FFAB1E
- bls G_M10941_IG18
+ bls G_M10941_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] @@ -361,10 +358,24 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=160 bbWeight=8 PerfScore 224.00
-G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movn w0, #0xD1FFAB1E add w0, w28, w0 cmp w0, #0xD1FFAB1E
+ bls G_M10941_IG18 + adrp x1, [HIGH RELOC #0xD1FFAB1E] + add x1, x1, [LOW RELOC #0xD1FFAB1E] + ; gcrRegs +[x1] + mov x0, x1 + ; gcrRegs +[x0] + bl <unknown method> + ; gcrRegs -[x0-x1] + ; gcr arg pop 0 + ;; size=32 bbWeight=8 PerfScore 40.00 +G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movn w0, #0xD1FFAB1E + add w0, w26, w0 + cmp w0, #0xD1FFAB1E
bls G_M10941_IG19 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] @@ -377,7 +388,8 @@ G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=32 bbWeight=8 PerfScore 40.00 G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movn w0, #0xD1FFAB1E
- add w0, w26, w0
+ ldr w3, [fp, #0x18] // [V46 tmp35] + add w0, w3, w0
cmp w0, #0xD1FFAB1E ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 44 42 0 2 -2,820 +0
benchmarks.run_pgo.windows.arm64.checked.mch 163 163 0 0 -6,688 +0
benchmarks.run_tiered.windows.arm64.checked.mch 152 150 0 2 -7,268 +0
coreclr_tests.run.windows.arm64.checked.mch 11 11 0 0 -676 +0
libraries.crossgen2.windows.arm64.checked.mch 7 5 0 2 -76 +0
libraries.pmi.windows.arm64.checked.mch 157 157 0 0 -8,852 +0
libraries_tests.run.windows.arm64.Release.mch 43 42 1 0 -1,288 +16
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 73 71 0 2 -4,260 +0
realworld.run.windows.arm64.checked.mch 85 79 5 1 -11,808 +24
smoke_tests.nativeaot.windows.arm64.checked.mch 484 484 0 0 -17,640 +0
1,219 1,204 6 9 -61,376 +40

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 1,132 0 1,132 0 (0.00%) 1,748 (53.36%)
benchmarks.run_pgo.windows.arm64.checked.mch 8,975 7,709 1,266 1 (0.01%) 5,908 (38.67%)
benchmarks.run_tiered.windows.arm64.checked.mch 6,963 5,655 1,308 0 (0.00%) 4,243 (36.57%)
coreclr_tests.run.windows.arm64.checked.mch 310 3 307 0 (0.00%) 870 (55.20%)
libraries.crossgen2.windows.arm64.checked.mch 92,814 12 92,802 1 (0.00%) 81,674 (46.70%)
libraries.pmi.windows.arm64.checked.mch 4,507 0 4,507 0 (0.00%) 2,259 (31.54%)
libraries_tests.run.windows.arm64.Release.mch 2,341 1,904 437 0 (0.00%) 3,209 (53.97%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 858 0 858 0 (0.00%) 1,425 (53.19%)
realworld.run.windows.arm64.checked.mch 1,673 0 1,673 1 (0.02%) 3,035 (59.46%)
smoke_tests.nativeaot.windows.arm64.checked.mch 12,693 6 12,687 0 (0.00%) 11,219 (46.38%)
132,266 15,289 116,977 3 (0.00%) 115,590 (45.92%)

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: 182012 (overridden on cmd)
Total bytes of diff: 179192 (overridden on cmd)
Total bytes of delta: -2820 (-1.55 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 540.dasm (-77.27 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -120 : 847.dasm (-50.00 % of base)
        -112 : 577.dasm (-25.45 % of base)
         -76 : 1757.dasm (-11.24 % of base)
         -72 : 245.dasm (-10.53 % of base)
         -72 : 953.dasm (-52.94 % of base)
         -68 : 3288.dasm (-36.96 % of base)
         -68 : 2251.dasm (-38.64 % of base)
         -64 : 2571.dasm (-40.00 % of base)
         -60 : 1234.dasm (-41.67 % of base)
         -56 : 1141.dasm (-33.33 % of base)
         -56 : 2559.dasm (-60.87 % of base)
         -48 : 1332.dasm (-3.77 % of base)
         -48 : 1401.dasm (-16.22 % of base)
         -48 : 3062.dasm (-17.65 % of base)
         -48 : 1961.dasm (-9.60 % of base)
         -48 : 2989.dasm (-40.00 % of base)
         -48 : 879.dasm (-5.74 % of base)
         -44 : 1820.dasm (-12.50 % of base)

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

Top method improvements (bytes):
        -544 (-77.27 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -120 (-50.00 % of base) : 847.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
        -112 (-25.45 % of base) : 577.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -76 (-11.24 % of base) : 1757.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetGenericMethodBaseDefinition(System.Reflection.MethodBase):System.Reflection.MethodBase (FullOpts)
         -72 (-52.94 % of base) : 953.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -72 (-10.53 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -68 (-36.96 % of base) : 3288.dasm - System.Globalization.GregorianCalendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this (FullOpts)
         -68 (-38.64 % of base) : 2251.dasm - System.SR:GetResourceString(System.String):System.String (FullOpts)
         -64 (-40.00 % of base) : 2571.dasm - System.Xml.Serialization.CodeGenerator:GetVariableType(System.Object):System.Type (FullOpts)
         -60 (-41.67 % of base) : 1234.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (FullOpts)
         -56 (-60.87 % of base) : 2559.dasm - System.Text.RegularExpressions.Regex:.ctor():this (FullOpts)
         -56 (-33.33 % of base) : 1141.dasm - Utf8Json.JsonSerializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
         -48 (-9.60 % of base) : 1961.dasm - Microsoft.Extensions.Logging.EventSourceLoggerFactoryExtensions:AddEventSourceLogger(Microsoft.Extensions.Logging.ILoggingBuilder):Microsoft.Extensions.Logging.ILoggingBuilder (FullOpts)
         -48 (-16.22 % of base) : 1401.dasm - System.Buffers.StringSearchValues:<Create>g__NormalizeIfNeeded|2_1(System.String,ubyte):System.String (FullOpts)
         -48 (-3.77 % of base) : 1332.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (FullOpts)
         -48 (-17.65 % of base) : 3062.dasm - System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this (FullOpts)
         -48 (-5.74 % of base) : 879.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (FullOpts)
         -48 (-40.00 % of base) : 2989.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -44 (-10.19 % of base) : 2032.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:CallSiteBuilt(Microsoft.Extensions.DependencyInjection.ServiceProvider,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (FullOpts)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -56 (-60.87 % of base) : 2559.dasm - System.Text.RegularExpressions.Regex:.ctor():this (FullOpts)
         -72 (-52.94 % of base) : 953.dasm - System.AppDomain:OnProcessExit() (FullOpts)
        -120 (-50.00 % of base) : 847.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -44 (-45.83 % of base) : 2992.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
         -60 (-41.67 % of base) : 1234.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (FullOpts)
         -48 (-40.00 % of base) : 2989.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -64 (-40.00 % of base) : 2571.dasm - System.Xml.Serialization.CodeGenerator:GetVariableType(System.Object):System.Type (FullOpts)
         -44 (-39.29 % of base) : 1275.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -68 (-38.64 % of base) : 2251.dasm - System.SR:GetResourceString(System.String):System.String (FullOpts)
         -68 (-36.96 % of base) : 3288.dasm - System.Globalization.GregorianCalendar:TryToDateTime(int,int,int,int,int,int,int,int,byref):ubyte:this (FullOpts)
         -56 (-33.33 % of base) : 1141.dasm - Utf8Json.JsonSerializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
         -24 (-31.58 % of base) : 3307.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -44 (-31.43 % of base) : 873.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (FullOpts)
         -44 (-31.43 % of base) : 872.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
         -44 (-26.19 % of base) : 3005.dasm - System.Threading.PortableThreadPool+GateThread:EnsureRunningSlow(System.Threading.PortableThreadPool) (FullOpts)
         -24 (-26.09 % of base) : 1998.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this (FullOpts)
         -44 (-25.58 % of base) : 22.dasm - System.StartupHookProvider:ManagedStartup(ulong) (FullOpts)
        -112 (-25.45 % of base) : 577.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

42 total methods with Code Size differences (42 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: 1173228 (overridden on cmd)
Total bytes of diff: 1166540 (overridden on cmd)
Total bytes of delta: -6688 (-0.57 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1900 : 7907.dasm (-29.86 % of base)
        -216 : 11959.dasm (-21.95 % of base)
        -180 : 10450.dasm (-16.07 % of base)
        -116 : 10419.dasm (-8.10 % of base)
         -88 : 13596.dasm (-44.90 % of base)
         -88 : 2543.dasm (-40.74 % of base)
         -88 : 2544.dasm (-40.74 % of base)
         -84 : 14149.dasm (-55.26 % of base)
         -80 : 3450.dasm (-31.25 % of base)
         -76 : 12697.dasm (-44.19 % of base)
         -72 : 13492.dasm (-22.78 % of base)
         -64 : 13227.dasm (-12.21 % of base)
         -60 : 12917.dasm (-17.24 % of base)
         -60 : 21.dasm (-22.73 % of base)
         -56 : 13093.dasm (-20.29 % of base)
         -56 : 8893.dasm (-32.56 % of base)
         -52 : 8011.dasm (-27.08 % of base)
         -52 : 8977.dasm (-15.66 % of base)
         -48 : 11777.dasm (-46.15 % of base)
         -44 : 7273.dasm (-22.92 % of base)

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

Top method improvements (bytes):
       -1900 (-29.86 % of base) : 7907.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -216 (-21.95 % of base) : 11959.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -180 (-16.07 % of base) : 10450.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -116 (-8.10 % of base) : 10419.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
         -88 (-44.90 % of base) : 13596.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
         -88 (-40.74 % of base) : 2544.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2543.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -84 (-55.26 % of base) : 14149.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -80 (-31.25 % of base) : 3450.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -76 (-44.19 % of base) : 12697.dasm - System.Numerics.Tests.Perf_Vector4:ClampBenchmark():System.Numerics.Vector4:this (Tier0)
         -72 (-22.78 % of base) : 13492.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -64 (-12.21 % of base) : 13227.dasm - System.Threading.CancellationTokenSource:CancelAfter(uint):this (Tier0)
         -60 (-22.73 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -60 (-17.24 % of base) : 12917.dasm - System.Text.RegularExpressions.Symbolic.UnicodeCategoryConditions:WordLetterForAnchors(System.Text.RegularExpressions.Symbolic.CharSetSolver):System.Text.RegularExpressions.Symbolic.BDD (Tier0)
         -56 (-20.29 % of base) : 13093.dasm - System.Net.Security.TlsFrameHelper:DecodeString(System.ReadOnlySpan`1[ubyte]):System.String (Tier0)
         -56 (-32.56 % of base) : 8893.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -52 (-15.66 % of base) : 8977.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -52 (-27.08 % of base) : 8011.dasm - System.Diagnostics.Metrics.MeterListener:GetAllListeners():System.Collections.Generic.List`1[System.Diagnostics.Metrics.MeterListener] (Tier0)
         -48 (-46.15 % of base) : 11777.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:BitwiseOrBenchmark():System.Runtime.Intrinsics.Vector128`1[float]:this (Tier0)
         -44 (-22.92 % of base) : 7273.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)

Top method improvements (percentages):
         -84 (-55.26 % of base) : 14149.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -48 (-46.15 % of base) : 11777.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Float:BitwiseOrBenchmark():System.Runtime.Intrinsics.Vector128`1[float]:this (Tier0)
         -88 (-44.90 % of base) : 13596.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
         -76 (-44.19 % of base) : 12697.dasm - System.Numerics.Tests.Perf_Vector4:ClampBenchmark():System.Numerics.Vector4:this (Tier0)
         -88 (-40.74 % of base) : 2544.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2543.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 3177.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -20 (-38.46 % of base) : 4897.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:get_Instance():Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver (Tier0)
         -20 (-38.46 % of base) : 13656.dasm - Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory:get_Instance():Newtonsoft.Json.Utilities.DynamicReflectionDelegateFactory (Tier0)
         -20 (-38.46 % of base) : 13860.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:get_Instance():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier0)
         -20 (-38.46 % of base) : 7544.dasm - System.Diagnostics.LegacyPropagator:get_Instance():System.Diagnostics.DistributedContextPropagator (Tier0)
         -20 (-38.46 % of base) : 7990.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 73.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 2523.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
         -20 (-38.46 % of base) : 425.dasm - System.Globalization.GlobalizationMode:get_UseNls():ubyte (Tier0)
         -20 (-38.46 % of base) : 382.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
         -20 (-38.46 % of base) : 2105.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-38.46 % of base) : 7898.dasm - System.Net.Http.GlobalHttpSettings+DiagnosticsHandler:get_EnableActivityPropagation():ubyte (Tier0)
         -20 (-38.46 % of base) : 7504.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
         -20 (-38.46 % of base) : 7961.dasm - System.Net.Http.Headers.AltSvcHeaderParser:get_Parser():System.Net.Http.Headers.AltSvcHeaderParser (Tier0)


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: 862284 (overridden on cmd)
Total bytes of diff: 855016 (overridden on cmd)
Total bytes of delta: -7268 (-0.84 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1900 : 11290.dasm (-29.86 % of base)
        -544 : 2715.dasm (-77.27 % of base)
        -300 : 7293.dasm (-11.70 % of base)
        -180 : 6199.dasm (-16.07 % of base)
        -136 : 9523.dasm (-54.84 % of base)
        -136 : 9524.dasm (-43.04 % of base)
        -136 : 9525.dasm (-43.59 % of base)
        -128 : 9522.dasm (-55.17 % of base)
        -116 : 6163.dasm (-8.10 % of base)
        -116 : 10238.dasm (-53.70 % of base)
        -112 : 2813.dasm (-25.45 % of base)
        -104 : 7440.dasm (-19.26 % of base)
         -88 : 2302.dasm (-40.74 % of base)
         -88 : 2303.dasm (-40.74 % of base)
         -80 : 10249.dasm (-47.62 % of base)
         -80 : 5026.dasm (-31.25 % of base)
         -60 : 21.dasm (-22.73 % of base)
         -56 : 8438.dasm (-32.56 % of base)
         -44 : 3869.dasm (-7.33 % of base)
         -44 : 8593.dasm (-22.92 % of base)

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

Top method improvements (bytes):
       -1900 (-29.86 % of base) : 11290.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -544 (-77.27 % of base) : 2715.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -300 (-11.70 % of base) : 7293.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -180 (-16.07 % of base) : 6199.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -136 (-43.04 % of base) : 9524.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
        -136 (-54.84 % of base) : 9523.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -136 (-43.59 % of base) : 9525.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
        -128 (-55.17 % of base) : 9522.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
        -116 (-8.10 % of base) : 6163.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -116 (-53.70 % of base) : 10238.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
        -112 (-25.45 % of base) : 2813.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -104 (-19.26 % of base) : 7440.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (Tier0)
         -88 (-40.74 % of base) : 2303.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2302.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -80 (-31.25 % of base) : 5026.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -80 (-47.62 % of base) : 10249.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
         -60 (-22.73 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -56 (-32.56 % of base) : 8438.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -44 (-7.33 % of base) : 3869.dasm - System.MemoryExtensions:Equals(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):ubyte (Tier1)
         -44 (-22.92 % of base) : 8593.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 2715.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -128 (-55.17 % of base) : 9522.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
        -136 (-54.84 % of base) : 9523.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -116 (-53.70 % of base) : 10238.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
         -80 (-47.62 % of base) : 10249.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
        -136 (-43.59 % of base) : 9525.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
        -136 (-43.04 % of base) : 9524.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
         -88 (-40.74 % of base) : 2303.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -88 (-40.74 % of base) : 2302.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -20 (-38.46 % of base) : 9069.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -20 (-38.46 % of base) : 9864.dasm - Microsoft.Extensions.Logging.NullScope:get_Instance():Microsoft.Extensions.Logging.NullScope (Tier0)
         -20 (-38.46 % of base) : 11368.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 73.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -20 (-38.46 % of base) : 2282.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
         -20 (-38.46 % of base) : 400.dasm - System.Globalization.GlobalizationMode:get_UseNls():ubyte (Tier0)
         -20 (-38.46 % of base) : 357.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
         -20 (-38.46 % of base) : 1932.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -20 (-38.46 % of base) : 11208.dasm - System.Net.CredentialCache:get_DefaultCredentials():System.Net.ICredentials (Tier0)
         -20 (-38.46 % of base) : 11283.dasm - System.Net.Http.GlobalHttpSettings+DiagnosticsHandler:get_EnableActivityPropagation():ubyte (Tier0)
         -20 (-38.46 % of base) : 11099.dasm - System.Net.Http.HttpMethod:get_Get():System.Net.Http.HttpMethod (Tier0)


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: 77860 (overridden on cmd)
Total bytes of diff: 77184 (overridden on cmd)
Total bytes of delta: -676 (-0.87 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -216 : 29.dasm (-80.60 % of base)
        -100 : 15.dasm (-26.60 % of base)
         -52 : 60.dasm (-46.43 % of base)
         -44 : 6.dasm (-42.31 % of base)
         -44 : 580.dasm (-39.29 % of base)
         -44 : 523.dasm (-68.75 % of base)
         -44 : 184.dasm (-52.38 % of base)
         -44 : 574.dasm (-7.80 % of base)
         -36 : 367.dasm (-7.76 % of base)
         -36 : 3.dasm (-25.00 % of base)
         -16 : 597.dasm (-22.22 % of base)

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

Top method improvements (bytes):
        -216 (-80.60 % of base) : 29.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -100 (-26.60 % of base) : 15.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -52 (-46.43 % of base) : 60.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -44 (-7.80 % of base) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -44 (-52.38 % of base) : 184.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -44 (-42.31 % of base) : 6.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -44 (-39.29 % of base) : 580.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -44 (-68.75 % of base) : 523.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -36 (-7.76 % of base) : 367.dasm - Program:TestEntryPoint():int (FullOpts)
         -36 (-25.00 % of base) : 3.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -16 (-22.22 % of base) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

Top method improvements (percentages):
        -216 (-80.60 % of base) : 29.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -44 (-68.75 % of base) : 523.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -44 (-52.38 % of base) : 184.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -52 (-46.43 % of base) : 60.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -44 (-42.31 % of base) : 6.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -44 (-39.29 % of base) : 580.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
        -100 (-26.60 % of base) : 15.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -36 (-25.00 % of base) : 3.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -16 (-22.22 % of base) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
         -44 (-7.80 % of base) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -36 (-7.76 % of base) : 367.dasm - Program:TestEntryPoint():int (FullOpts)

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


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: 10005180 (overridden on cmd)
Total bytes of diff: 10005104 (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):
         -28 : 21951.dasm (-36.84 % of base)
         -28 : 21952.dasm (-35.00 % of base)
         -12 : 166045.dasm (-5.88 % of base)
          -4 : 166049.dasm (-4.00 % of base)
          -4 : 168839.dasm (-2.50 % of base)

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

Top method improvements (bytes):
         -28 (-36.84 % of base) : 21951.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
         -28 (-35.00 % of base) : 21952.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
         -12 (-5.88 % of base) : 166045.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-2.50 % of base) : 168839.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -4 (-4.00 % of base) : 166049.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method improvements (percentages):
         -28 (-36.84 % of base) : 21951.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
         -28 (-35.00 % of base) : 21952.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
         -12 (-5.88 % of base) : 166045.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -4 (-4.00 % of base) : 166049.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -4 (-2.50 % of base) : 168839.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)

5 total methods with Code Size differences (5 improved, 0 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: 381864 (overridden on cmd)
Total bytes of diff: 373012 (overridden on cmd)
Total bytes of delta: -8852 (-2.32 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -772 : 566.dasm (-50.66 % of base)
        -356 : 7334.dasm (-43.00 % of base)
        -104 : 3578.dasm (-18.44 % of base)
        -104 : 3600.dasm (-18.71 % of base)
        -104 : 3561.dasm (-18.44 % of base)
        -100 : 25.dasm (-26.60 % of base)
         -96 : 3588.dasm (-17.02 % of base)
         -96 : 3594.dasm (-16.00 % of base)
         -92 : 1318.dasm (-62.16 % of base)
         -92 : 301.dasm (-27.38 % of base)
         -88 : 4170.dasm (-8.00 % of base)
         -80 : 3653.dasm (-11.90 % of base)
         -80 : 4365.dasm (-11.63 % of base)
         -80 : 4366.dasm (-11.90 % of base)
         -80 : 3652.dasm (-11.63 % of base)
         -80 : 4173.dasm (-7.75 % of base)
         -76 : 6975.dasm (-32.20 % of base)
         -72 : 2091.dasm (-36.00 % of base)
         -68 : 2093.dasm (-36.96 % of base)
         -68 : 705.dasm (-26.56 % of base)

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

Top method improvements (bytes):
        -772 (-50.66 % of base) : 566.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinderExtensions:IsEquivalentTo(System.Reflection.MemberInfo,System.Reflection.MemberInfo):ubyte (FullOpts)
        -356 (-43.00 % of base) : 7334.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
        -104 (-18.71 % of base) : 3600.dasm - System.Lazy`1[long]:CreateValue():long:this (FullOpts)
        -104 (-18.44 % of base) : 3578.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
        -104 (-18.44 % of base) : 3561.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
        -100 (-26.60 % of base) : 25.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -96 (-17.02 % of base) : 3588.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
         -96 (-16.00 % of base) : 3594.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
         -92 (-27.38 % of base) : 301.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:DeduceArgumentRestriction(int,Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,System.Dynamic.DynamicMetaObject,Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo):System.Dynamic.BindingRestrictions (FullOpts)
         -92 (-62.16 % of base) : 1318.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:Get(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (FullOpts)
         -88 (-8.00 % of base) : 4170.dasm - System.MemoryExtensions:TrimStart[ubyte](System.Memory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
         -80 (-11.63 % of base) : 3652.dasm - System.Memory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
         -80 (-11.90 % of base) : 3653.dasm - System.Memory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)
         -80 (-7.75 % of base) : 4173.dasm - System.MemoryExtensions:TrimStart[ubyte](System.ReadOnlyMemory`1[ubyte],System.ReadOnlySpan`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
         -80 (-11.63 % of base) : 4365.dasm - System.ReadOnlyMemory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
         -80 (-11.90 % of base) : 4366.dasm - System.ReadOnlyMemory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)
         -76 (-32.20 % of base) : 6975.dasm - System.Threading.Tasks.Task`1[ubyte]:WaitAsync(System.TimeSpan,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte]:this (FullOpts)
         -72 (-36.00 % of base) : 2091.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable:InsertAggregate(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType,Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType) (FullOpts)
         -68 (-26.56 % of base) : 705.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:MarshalType(System.Dynamic.DynamicMetaObject,ubyte):System.Type (FullOpts)
         -68 (-36.96 % of base) : 2093.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable:InsertArray(Microsoft.CSharp.RuntimeBinder.Semantics.CType,int,Microsoft.CSharp.RuntimeBinder.Semantics.ArrayType) (FullOpts)

Top method improvements (percentages):
         -56 (-73.68 % of base) : 274.dasm - System.Runtime.InteropServices.BuiltInInteropVariantExtensions:GetByRefDataRef[ubyte](byref):byref (FullOpts)
         -92 (-62.16 % of base) : 1318.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:Get(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (FullOpts)
         -44 (-57.89 % of base) : 769.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComTypeDesc:get_EmptyEvents():System.Collections.Generic.Dictionary`2[System.String,Microsoft.CSharp.RuntimeBinder.ComInterop.ComEventDesc] (FullOpts)
         -44 (-57.89 % of base) : 691.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.SplatInvokeBinder:get_Instance():Microsoft.CSharp.RuntimeBinder.ComInterop.SplatInvokeBinder (FullOpts)
         -44 (-57.89 % of base) : 350.dasm - Microsoft.CSharp.RuntimeBinder.CSharpConvertBinder:Microsoft.CSharp.RuntimeBinder.ICSharpBinder.GetArgumentInfo(int):Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo:this (FullOpts)
         -44 (-57.89 % of base) : 2217.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[double](double):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2216.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[int](int):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2219.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[long](long):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2215.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[short](short):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2213.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[System.__Canon](System.__Canon):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2218.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2214.dasm - Microsoft.Extensions.Logging.Debug.DebugLogger:BeginScope[ubyte](ubyte):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2200.dasm - Microsoft.Extensions.Logging.NullExternalScopeProvider:get_Instance():Microsoft.Extensions.Logging.IExternalScopeProvider (FullOpts)
         -44 (-57.89 % of base) : 2208.dasm - Microsoft.Extensions.Logging.NullExternalScopeProvider:Microsoft.Extensions.Logging.IExternalScopeProvider.Push(System.Object):System.IDisposable:this (FullOpts)
         -44 (-57.89 % of base) : 2211.dasm - Microsoft.Extensions.Logging.NullScope:get_Instance():Microsoft.Extensions.Logging.NullScope (FullOpts)
         -44 (-57.89 % of base) : 140.dasm - System.SR:UsingResourceKeys():ubyte (FullOpts)
         -44 (-57.89 % of base) : 6680.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
         -44 (-57.89 % of base) : 6896.dasm - System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
         -60 (-57.69 % of base) : 6894.dasm - System.Threading.WindowsThreadPool:GetMaxThreads(byref,byref) (FullOpts)
         -44 (-55.00 % of base) : 6902.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (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: 334372 (overridden on cmd)
Total bytes of diff: 333100 (overridden on cmd)
Total bytes of delta: -1272 (-0.38 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 2231.dasm (10.00 % of base)

Top file improvements (bytes):
        -152 : 3427.dasm (-43.18 % of base)
         -72 : 4196.dasm (-22.78 % of base)
         -68 : 2297.dasm (-10.69 % of base)
         -52 : 1133.dasm (-18.06 % of base)
         -40 : 2226.dasm (-10.00 % of base)
         -40 : 419.dasm (-7.19 % of base)
         -40 : 2746.dasm (-35.71 % of base)
         -40 : 28.dasm (-15.38 % of base)
         -40 : 3677.dasm (-13.16 % of base)
         -40 : 5264.dasm (-43.48 % of base)
         -32 : 2315.dasm (-12.31 % of base)
         -32 : 3490.dasm (-29.63 % of base)
         -32 : 3481.dasm (-24.24 % of base)
         -32 : 4198.dasm (-34.78 % of base)
         -28 : 3480.dasm (-4.40 % of base)
         -28 : 473.dasm (-3.32 % of base)
         -20 : 2406.dasm (-35.71 % of base)
         -20 : 2739.dasm (-35.71 % of base)
         -20 : 2821.dasm (-25.00 % of base)
         -20 : 2848.dasm (-7.14 % of base)

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

Top method regressions (bytes):
          16 (10.00 % of base) : 2231.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (bytes):
        -152 (-43.18 % of base) : 3427.dasm - Microsoft.Extensions.Configuration.Test.ConfigurationTests:WriteTestFiles():this (Tier0)
         -72 (-22.78 % of base) : 4196.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -68 (-10.69 % of base) : 2297.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -52 (-18.06 % of base) : 1133.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -40 (-15.38 % of base) : 28.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-43.48 % of base) : 5264.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -40 (-13.16 % of base) : 3677.dasm - System.Text.Json.JsonElement:ToString():System.String:this (Tier0)
         -40 (-10.00 % of base) : 2226.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -40 (-7.19 % of base) : 419.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -40 (-35.71 % of base) : 2746.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -32 (-29.63 % of base) : 3490.dasm - Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationProvider:Normalize(System.String):System.String (Tier0)
         -32 (-24.24 % of base) : 3481.dasm - Microsoft.Extensions.FileProviders.Physical.Internal.PathUtils:HasInvalidPathChars(System.String):ubyte (Tier0)
         -32 (-34.78 % of base) : 4198.dasm - System.ComponentModel.WeakHashtable:.ctor():this (Tier0)
         -32 (-12.31 % of base) : 2315.dasm - Xunit.Sdk.TestFramework:.ctor(Xunit.Abstractions.IMessageSink):this (Tier0)
         -28 (-4.40 % of base) : 3480.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProvider:GetFileInfo(System.String):Microsoft.Extensions.FileProviders.IFileInfo:this (Tier0)
         -28 (-3.32 % of base) : 473.dasm - Xunit.DependencyContextAssemblyCache:GetFallbackRuntime(System.String):System.String:this (Tier0)
         -20 (-26.32 % of base) : 309.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -20 (-38.46 % of base) : 306.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -20 (-2.20 % of base) : 95.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
         -20 (-38.46 % of base) : 23.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)

Top method regressions (percentages):
          16 (10.00 % of base) : 2231.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (percentages):
         -40 (-43.48 % of base) : 5264.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
        -152 (-43.18 % of base) : 3427.dasm - Microsoft.Extensions.Configuration.Test.ConfigurationTests:WriteTestFiles():this (Tier0)
         -20 (-38.46 % of base) : 306.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -20 (-38.46 % of base) : 23.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -20 (-38.46 % of base) : 26.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -20 (-38.46 % of base) : 58.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -20 (-38.46 % of base) : 4083.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Comparison():System.Comparison`1[System.String] (Tier0)
         -20 (-38.46 % of base) : 4085.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Instance():Microsoft.Extensions.Configuration.ConfigurationKeyComparer (Tier0)
         -20 (-38.46 % of base) : 4901.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -40 (-35.71 % of base) : 2746.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -20 (-35.71 % of base) : 2731.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -20 (-35.71 % of base) : 2406.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -20 (-35.71 % of base) : 2739.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -20 (-35.71 % of base) : 2270.dasm - Xunit.Xunit2Discoverer:GetSupportedPlatformSuffixes(int):System.String[] (Tier0)
         -32 (-34.78 % of base) : 4198.dasm - System.ComponentModel.WeakHashtable:.ctor():this (Tier0)
         -32 (-29.63 % of base) : 3490.dasm - Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationProvider:Normalize(System.String):System.String (Tier0)
         -20 (-26.32 % of base) : 309.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -20 (-26.32 % of base) : 2714.dasm - Microsoft.DotNet.XUnitExtensions.DiscovererHelpers:get_IsMonoRuntime():ubyte (Tier0)
         -20 (-25.00 % of base) : 2831.dasm - Xunit.Sdk.ExecutionContextHelper:get_IsSupported():ubyte (Tier0)
         -20 (-25.00 % of base) : 2821.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (Tier0)

43 total methods with Code Size differences (42 improved, 1 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: 98900 (overridden on cmd)
Total bytes of diff: 94640 (overridden on cmd)
Total bytes of delta: -4260 (-4.31 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -544 : 67.dasm (-77.27 % of base)
        -280 : 2401.dasm (-67.31 % of base)
        -200 : 1186.dasm (-79.37 % of base)
        -120 : 1161.dasm (-58.82 % of base)
        -116 : 1870.dasm (-11.98 % of base)
        -112 : 479.dasm (-25.45 % of base)
        -104 : 121.dasm (-18.44 % of base)
        -100 : 546.dasm (-26.60 % of base)
         -88 : 139.dasm (-14.57 % of base)
         -88 : 709.dasm (-44.90 % of base)
         -76 : 963.dasm (-32.76 % of base)
         -72 : 1326.dasm (-30.00 % of base)
         -72 : 10.dasm (-10.53 % of base)
         -52 : 2014.dasm (-14.29 % of base)
         -52 : 774.dasm (-15.29 % of base)
         -48 : 721.dasm (-32.43 % of base)
         -44 : 124.dasm (-10.38 % of base)
         -44 : 1274.dasm (-52.38 % of base)
         -44 : 1298.dasm (-52.38 % of base)
         -44 : 1338.dasm (-52.38 % of base)

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

Top method improvements (bytes):
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -280 (-67.31 % of base) : 2401.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -200 (-79.37 % of base) : 1186.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -120 (-58.82 % of base) : 1161.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
        -116 (-11.98 % of base) : 1870.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -112 (-25.45 % of base) : 479.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -104 (-18.44 % of base) : 121.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
        -100 (-26.60 % of base) : 546.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -88 (-44.90 % of base) : 709.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -88 (-14.57 % of base) : 139.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -76 (-32.76 % of base) : 963.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -72 (-30.00 % of base) : 1326.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():ulong (FullOpts)
         -72 (-10.53 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -52 (-14.29 % of base) : 2014.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (FullOpts)
         -52 (-15.29 % of base) : 774.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler:AddExecutionOptions(System.String,Xunit.Abstractions.ITestFrameworkExecutionOptions):this (FullOpts)
         -48 (-32.43 % of base) : 721.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests:get_IsSupported():ubyte (FullOpts)
         -44 (-52.38 % of base) : 1379.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1428.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1824.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1396.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)

Top method improvements (percentages):
        -200 (-79.37 % of base) : 1186.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -544 (-77.27 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -280 (-67.31 % of base) : 2401.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -120 (-58.82 % of base) : 1161.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -44 (-57.89 % of base) : 2134.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -44 (-57.89 % of base) : 760.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 512.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1937.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 768.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-57.89 % of base) : 1974.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -44 (-52.38 % of base) : 1379.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1428.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1824.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1396.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1298.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1185.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1756.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1611.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1763.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-52.38 % of base) : 1851.dasm - <SharedTypes_ComInterfaces_IJaggedIntArray>F9E7186D7D1C2305121E3CFFB9B96C704885894333BE2F6EA823FE55F12BCB2F5__InterfaceInformation:get_Iid():System.Guid (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: 400564 (overridden on cmd)
Total bytes of diff: 388780 (overridden on cmd)
Total bytes of delta: -11784 (-2.94 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 1940.dasm (6.90 % of base)
           4 : 2104.dasm (2.33 % of base)
           4 : 2992.dasm (2.78 % of base)
           4 : 3030.dasm (2.33 % of base)
           4 : 4475.dasm (2.33 % of base)

Top file improvements (bytes):
       -6416 : 4604.dasm (-73.54 % of base)
        -544 : 539.dasm (-77.27 % of base)
        -292 : 4537.dasm (-62.39 % of base)
        -272 : 9.dasm (-72.34 % of base)
        -212 : 3353.dasm (-43.44 % of base)
        -128 : 2688.dasm (-50.79 % of base)
        -128 : 4450.dasm (-35.56 % of base)
        -120 : 839.dasm (-50.00 % of base)
        -112 : 576.dasm (-25.45 % of base)
        -112 : 2347.dasm (-60.87 % of base)
        -104 : 2445.dasm (-12.44 % of base)
        -100 : 2442.dasm (-8.36 % of base)
         -92 : 4464.dasm (-74.19 % of base)
         -92 : 4465.dasm (-74.19 % of base)
         -88 : 3212.dasm (-53.66 % of base)
         -84 : 2450.dasm (-39.62 % of base)
         -84 : 3240.dasm (-10.94 % of base)
         -72 : 945.dasm (-52.94 % of base)
         -72 : 245.dasm (-10.53 % of base)
         -68 : 4542.dasm (-58.62 % of base)

61 total files with Code Size differences (56 improved, 5 regressed), 1 unchanged.

Top method regressions (bytes):
           8 (6.90 % of base) : 1940.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 2992.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3030.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 4475.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2104.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (bytes):
       -6416 (-73.54 % of base) : 4604.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -544 (-77.27 % of base) : 539.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -292 (-62.39 % of base) : 4537.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -212 (-43.44 % of base) : 3353.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -128 (-50.79 % of base) : 2688.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)
        -128 (-35.56 % of base) : 4450.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -120 (-50.00 % of base) : 839.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
        -112 (-60.87 % of base) : 2347.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
        -112 (-25.45 % of base) : 576.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -104 (-12.44 % of base) : 2445.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
        -100 (-8.36 % of base) : 2442.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -92 (-74.19 % of base) : 4465.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 4464.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -88 (-53.66 % of base) : 3212.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -84 (-39.62 % of base) : 2450.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
         -84 (-10.94 % of base) : 3240.dasm - Microsoft.Build.Shared.FrameworkLocationHelper:GenerateProgramFilesReferenceAssemblyRoot():System.String (FullOpts)
         -72 (-52.94 % of base) : 945.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -72 (-10.53 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -68 (-58.62 % of base) : 4542.dasm - FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions:ErrorLogger.ErrorR(FSharp.Compiler.ErrorLogger+ErrorLogger,System.Exception) (FullOpts)

Top method regressions (percentages):
           8 (6.90 % of base) : 1940.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.78 % of base) : 2992.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.33 % of base) : 3030.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.33 % of base) : 4475.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.33 % of base) : 2104.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (percentages):
        -544 (-77.27 % of base) : 539.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -92 (-74.19 % of base) : 4465.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -92 (-74.19 % of base) : 4464.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
       -6416 (-73.54 % of base) : 4604.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -272 (-72.34 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -292 (-62.39 % of base) : 4537.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -112 (-60.87 % of base) : 2347.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -68 (-58.62 % of base) : 4542.dasm - FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions:ErrorLogger.ErrorR(FSharp.Compiler.ErrorLogger+ErrorLogger,System.Exception) (FullOpts)
         -44 (-57.89 % of base) : 2451.dasm - FSComp.SR:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 1595.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2643.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2802.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 4660.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2042.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2050.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2304.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2395.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -44 (-57.89 % of base) : 2384.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 2744.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
         -44 (-57.89 % of base) : 4459.dasm - FSharp.Compiler.Lexer:.cctor() (FullOpts)


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: 1012896 (overridden on cmd)
Total bytes of diff: 995256 (overridden on cmd)
Total bytes of delta: -17640 (-1.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -260 : 11017.dasm (-51.59 % of base)
        -260 : 5740.dasm (-51.59 % of base)
        -128 : 11425.dasm (-13.33 % of base)
        -128 : 5291.dasm (-13.33 % of base)
        -108 : 14156.dasm (-5.31 % of base)
        -108 : 4485.dasm (-16.17 % of base)
        -108 : 8663.dasm (-5.31 % of base)
        -108 : 1091.dasm (-16.17 % of base)
         -96 : 13741.dasm (-45.28 % of base)
         -96 : 1828.dasm (-45.28 % of base)
         -96 : 3855.dasm (-13.04 % of base)
         -96 : 5675.dasm (-45.28 % of base)
         -96 : 8008.dasm (-45.28 % of base)
         -96 : 823.dasm (-13.04 % of base)
         -92 : 22084.dasm (-44.23 % of base)
         -88 : 10128.dasm (-11.89 % of base)
         -88 : 4706.dasm (-11.89 % of base)
         -84 : 22190.dasm (-42.86 % of base)
         -84 : 5745.dasm (-36.21 % of base)
         -84 : 11021.dasm (-36.21 % of base)

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

Top method improvements (bytes):
        -260 (-51.59 % of base) : 11017.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -260 (-51.59 % of base) : 5740.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -128 (-13.33 % of base) : 11425.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -128 (-13.33 % of base) : 5291.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -108 (-5.31 % of base) : 14156.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
        -108 (-5.31 % of base) : 8663.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
        -108 (-16.17 % of base) : 4485.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
        -108 (-16.17 % of base) : 1091.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-45.28 % of base) : 1828.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -96 (-45.28 % of base) : 5675.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -96 (-13.04 % of base) : 3855.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-13.04 % of base) : 823.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-45.28 % of base) : 13741.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (FullOpts)
         -96 (-45.28 % of base) : 8008.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (FullOpts)
         -92 (-44.23 % of base) : 22084.dasm - System.Runtime.CompilerServices.TaskAwaiter:OnCompletedInternal(System.Threading.Tasks.Task,System.Action,ubyte,ubyte) (FullOpts)
         -88 (-11.89 % of base) : 10128.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -88 (-11.89 % of base) : 4706.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -84 (-42.86 % of base) : 22190.dasm - System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte) (FullOpts)
         -84 (-36.21 % of base) : 5745.dasm - System.Threading.Tasks.Task:CancellationCleanupLogic():this (FullOpts)
         -84 (-36.21 % of base) : 11021.dasm - System.Threading.Tasks.Task:CancellationCleanupLogic():this (FullOpts)

Top method improvements (percentages):
         -32 (-57.14 % of base) : 17123.dasm - Internal.Reflection.Execution.AssemblyBinderImplementation:get_Instance():Internal.Reflection.Execution.AssemblyBinderImplementation (FullOpts)
         -32 (-57.14 % of base) : 1221.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
         -32 (-57.14 % of base) : 6390.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -32 (-57.14 % of base) : 11738.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -32 (-57.14 % of base) : 18802.dasm - Internal.TypeSystem.TypeSystemContext:get_ByRefTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -32 (-57.14 % of base) : 18801.dasm - Internal.TypeSystem.TypeSystemContext:get_PointerTypesCache():Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -32 (-57.14 % of base) : 21298.dasm - System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] (FullOpts)
         -32 (-57.14 % of base) : 23438.dasm - System.Globalization.CultureData:GetCalendar(ushort):System.Globalization.CalendarData:this (FullOpts)
         -32 (-57.14 % of base) : 20681.dasm - System.Globalization.CultureInfo:get_UserDefaultLocaleName():System.String (FullOpts)
         -32 (-57.14 % of base) : 18167.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (FullOpts)
         -32 (-57.14 % of base) : 20254.dasm - System.IO.StreamWriter:get_UTF8NoBOM():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19413.dasm - System.Random:get_Shared():System.Random (FullOpts)
         -32 (-57.14 % of base) : 15714.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
         -32 (-57.14 % of base) : 19705.dasm - System.Text.DecoderFallback:get_ReplacementFallback():System.Text.DecoderFallback (FullOpts)
         -32 (-57.14 % of base) : 19047.dasm - System.Text.Encoding:get_ASCII():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19045.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19044.dasm - System.Text.Encoding:get_Default():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19050.dasm - System.Text.Encoding:get_Latin1():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19046.dasm - System.Text.Encoding:get_Unicode():System.Text.Encoding (FullOpts)
         -32 (-57.14 % of base) : 19049.dasm - System.Text.Encoding:get_UTF32():System.Text.Encoding (FullOpts)



windows x64

Diffs are based on 135,677 contexts (21,464 MinOpts, 114,213 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 120,821 (46.32%)

Overall (-82,504 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 514,620 -8,573
benchmarks.run.windows.x64.checked.mch 125,820 -3,462
benchmarks.run_pgo.windows.x64.checked.mch 877,224 -6,482
benchmarks.run_tiered.windows.x64.checked.mch 758,568 -9,407
coreclr_tests.run.windows.x64.checked.mch 51,809 -514
libraries.crossgen2.windows.x64.checked.mch 6,763,269 -61
libraries.pmi.windows.x64.checked.mch 104,569 -26,214
libraries_tests.run.windows.x64.Release.mch 406,472 -2,539
librariestestsnotieredcompilation.run.windows.x64.Release.mch 68,102 -3,732
realworld.run.windows.x64.checked.mch 433,308 -10,928
smoke_tests.nativeaot.windows.x64.checked.mch 453,425 -10,592

MinOpts (-18,807 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 333,087 -2,957
benchmarks.run_pgo.windows.x64.checked.mch 624,409 -6,359
benchmarks.run_tiered.windows.x64.checked.mch 674,908 -7,044
libraries_tests.run.windows.x64.Release.mch 326,705 -2,447

FullOpts (-63,697 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 181,533 -5,616
benchmarks.run.windows.x64.checked.mch 125,746 -3,462
benchmarks.run_pgo.windows.x64.checked.mch 252,815 -123
benchmarks.run_tiered.windows.x64.checked.mch 83,660 -2,363
coreclr_tests.run.windows.x64.checked.mch 51,809 -514
libraries.crossgen2.windows.x64.checked.mch 6,762,519 -61
libraries.pmi.windows.x64.checked.mch 104,569 -26,214
libraries_tests.run.windows.x64.Release.mch 79,767 -92
librariestestsnotieredcompilation.run.windows.x64.Release.mch 68,102 -3,732
realworld.run.windows.x64.checked.mch 433,308 -10,928
smoke_tests.nativeaot.windows.x64.checked.mch 453,379 -10,592

Example diffs

aspnet.run.windows.x64.checked.mch

-30 (-69.77%) : 1849.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M39340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M39340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 134 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M39340_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=ac0c6653) for method System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=ac0c6653) for method System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 2045.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 620 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 2749.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M58517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M58517_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 366 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax, qword ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M58517_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=6f6f1b6a) for method System.Marvin:get_DefaultSeed():ulong (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=6f6f1b6a) for method System.Marvin:get_DefaultSeed():ulong (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+0 (0.00%) : 5785.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper1System.__Canon

@@ -50,7 +50,7 @@ G_M65267_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -95,14 +95,14 @@ G_M65267_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; <unknown class> mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- call [CORINFO_HELP_CHKCASTCLASS]
+ call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rdx] +[rax] mov gword ptr [rbp-0x48], rax mov rax, qword ptr [rbp+0x10] @@ -116,7 +116,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x40] ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_CHKCASTCLASS]
+ call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rdx] mov gword ptr [rbp-0x50], rax mov rcx, gword ptr [rbp-0x48] @@ -129,7 +129,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x58] ; gcrRegs +[rdx] mov rcx, qword ptr [rbp-0x28]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rdx] mov gword ptr [rbp-0x10], rax jmp SHORT G_M65267_IG10 @@ -137,7 +137,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M65267_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, qword ptr [rbp+0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rcx, gword ptr [rbp-0x20]

+0 (0.00%) : 2915.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[],int,int):this (Tier0)

@@ -71,7 +71,7 @@ G_M12399_IG07: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M12399_IG08: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x10], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M12399_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -121,7 +121,7 @@ G_M12399_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M12399_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M12399_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

+0 (0.00%) : 4732.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[]):this (Tier0)

@@ -59,7 +59,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x10], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -94,7 +94,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

benchmarks.run.windows.x64.checked.mch

-36 (-56.25%) : 1854.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)

@@ -8,41 +8,27 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Newtonsoft.Json.JsonWriter>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rcx this class-hnd single-def <Newtonsoft.Json.JsonWriter>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22193_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M22193_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M22193_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M22193_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor ecx, ecx - mov qword ptr [rbx+0x20], rcx - mov dword ptr [rbx+0x2C], 3 - mov word ptr [rbx+0x38], 257
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25 +G_M22193_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rcx] + xor eax, eax + mov qword ptr [rcx+0x20], rax + mov dword ptr [rcx+0x2C], 3 + mov word ptr [rcx+0x38], 257
;; size=19 bbWeight=1 PerfScore 3.25
-G_M22193_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M22193_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 40
ret
- ;; size=6 bbWeight=1 PerfScore 1.75 -G_M22193_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E - mov edx, 43 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M22193_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 64, prolog size 5, PerfScore 10.50, instruction count 16, allocated bytes for code 64 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 4.75, instruction count 7, allocated bytes for code 28 (MethodHash=7b84a94e) for method Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
; ============================================================ Unwind Info: @@ -50,10 +36,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-44 (-53.01%) : 1471.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)

@@ -8,47 +8,29 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Intrinsics.Tests.Perf_Vector128Int>
-; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rbx single-def -; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 cse0 [V03,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V01 RetBuf [V01,T00] ( 4, 4 ) byref -> rdx single-def +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M40456_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32
vzeroupper
- mov rbx, rdx - ; byrRegs +[rbx] - ;; size=11 bbWeight=1 PerfScore 2.50 -G_M40456_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M40456_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M40456_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=3 bbWeight=1 PerfScore 1.00 +G_M40456_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref + ; byrRegs +[rdx]
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> vmovups xmm0, xmmword ptr [rcx] vpcmpgtd xmm0, xmm0, xmmword ptr [rax]
- vmovups xmmword ptr [rbx], xmm0 - mov rax, rbx
+ vmovups xmmword ptr [rdx], xmm0 + mov rax, rdx
; byrRegs +[rax] ;; size=35 bbWeight=1 PerfScore 9.75
-G_M40456_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M40456_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=6 bbWeight=1 PerfScore 1.75 -G_M40456_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz - ; byrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 411 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M40456_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 8, PerfScore 18.00, instruction count 19, allocated bytes for code 83 (MethodHash=567561f7) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)
+; Total bytes of code 39, prolog size 3, PerfScore 11.75, instruction count 8, allocated bytes for code 39 (MethodHash=567561f7) for method System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)
; ============================================================ Unwind Info: @@ -56,10 +38,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-47 (-52.81%) : 870.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)

@@ -7,60 +7,44 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 cse0 [V01,T01] ( 3, 1.50) int -> rcx "CSE - moderate" ; V02 cse1 [V02,T00] ( 3, 2.50) int -> rax "CSE - aggressive"
-;* V03 cse2 [V03,T02] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M41971_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25
+G_M41971_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00
G_M41971_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M41971_IG10 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M41971_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movsx rax, word ptr [(reloc)] ; static handle test eax, eax
- jle SHORT G_M41971_IG08
+ jle SHORT G_M41971_IG07
;; size=12 bbWeight=1 PerfScore 5.25
-G_M41971_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M41971_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movsx rcx, word ptr [(reloc)] ; static handle test ecx, ecx
- jle SHORT G_M41971_IG06
+ jle SHORT G_M41971_IG05
cmp eax, ecx setle al movzx rax, al ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M41971_IG05: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40
+G_M41971_IG04: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M41971_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M41971_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M41971_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40
+G_M41971_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M41971_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M41971_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M41971_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40
+G_M41971_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M41971_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E - mov edx, 985 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M41971_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 89, prolog size 4, PerfScore 15.00, instruction count 24, allocated bytes for code 89 (MethodHash=9fd75c0c) for method System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
+; Total bytes of code 42, prolog size 0, PerfScore 10.38, instruction count 14, allocated bytes for code 42 (MethodHash=9fd75c0c) for method System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -68,9 +52,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+0 (0.00%) : 1592.dasm - System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rsi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> rbx class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> rdi class-hnd single-def <System.Type>
-; V03 loc0 [V03,T03] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T03] ( 2, 1.50) ref -> rcx class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 32 @@ -31,26 +31,26 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M17128_IG04 - ;; size=23 bbWeight=1 PerfScore 2.75 -G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx]
mov rcx, rax ; gcrRegs +[rcx]
+ test rbx, rbx + je SHORT G_M17128_IG04 + ;; size=26 bbWeight=1 PerfScore 3.00 +G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx]
mov rdx, rdi ; gcrRegs +[rdx] mov r8, rsi ; gcrRegs +[r8] call [System.Text.Json.Serialization.JsonConverterFactory:GetConverterInternal(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this]
- ; gcrRegs -[rcx rdx rsi rdi r8]
+ ; gcrRegs -[rcx rdx rsi rdi r8] +[rax]
; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- ;; size=18 bbWeight=0.50 PerfScore 2.00
+ ;; size=15 bbWeight=0.50 PerfScore 1.88
G_M17128_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, rbx @@ -64,7 +64,7 @@ G_M17128_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 68, prolog size 7, PerfScore 11.75, instruction count 23, allocated bytes for code 68 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
+; Total bytes of code 68, prolog size 7, PerfScore 11.88, instruction count 23, allocated bytes for code 68 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
; ============================================================ Unwind Info:

+0 (0.00%) : 2120.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 11, 7 ) ref -> rsi class-hnd single-def <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T01] ( 10, 6.50) ref -> rsi class-hnd single-def <System.Reflection.MemberInfo>
; V01 arg1 [V01,T00] ( 13, 7.50) int -> rbx single-def ; V02 arg2 [V02,T03] ( 3, 3 ) ubyte -> rdi single-def ; V03 arg3 [V03,T04] ( 3, 2.50) ubyte -> rbp single-def ; V04 arg4 [V04,T15] ( 2, 1 ) ubyte -> [rsp+0x80] single-def ; V05 arg5 [V05,T05] ( 6, 3.50) ref -> r14 class-hnd single-def <System.String> ; V06 arg6 [V06,T16] ( 1, 0.50) ubyte -> [rsp+0x90] single-def
-; V07 loc0 [V07,T08] ( 4, 2 ) ubyte -> r15 -; V08 loc1 [V08,T07] ( 5, 2.50) ref -> rbx class-hnd single-def <System.Reflection.MethodInfo>
+; V07 loc0 [V07,T07] ( 4, 2 ) ubyte -> r13 +; V08 loc1 [V08,T12] ( 3, 1.50) ref -> rbx class-hnd single-def <System.Reflection.MethodInfo>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T12] ( 2, 1 ) int -> r15
+; V10 tmp1 [V10,T13] ( 2, 1 ) int -> r15
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp5 [V14,T09] ( 4, 2 ) ubyte -> r15 "Inline return value spill temp" -; V15 tmp6 [V15,T02] ( 5, 5 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V14 tmp5 [V14,T08] ( 4, 2 ) ubyte -> r15 "Inline return value spill temp" +; V15 tmp6 [V15,T02] ( 6, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V16 tmp7 [V16,T11] ( 2, 2 ) byref -> rcx single-def "impAppendStmt" ;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -33,21 +33,22 @@ ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 cse0 [V25,T10] ( 4, 2 ) long -> rdi "CSE - aggressive" -; V26 cse1 [V26,T13] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V25 cse0 [V25,T09] ( 4, 2 ) long -> r15 "CSE - aggressive" +; V26 cse1 [V26,T14] ( 3, 1.50) long -> rsi "CSE - moderate"
; V27 cse2 [V27,T06] ( 6, 3 ) ref -> rdx multi-def "CSE - aggressive"
-; V28 cse3 [V28,T14] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V28 cse3 [V28,T10] ( 4, 2 ) long -> rdi "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M7707_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push r15 push r14
+ push r13
push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx ; gcrRegs +[rsi] mov ebx, edx @@ -55,7 +56,7 @@ G_M7707_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} mov ebp, r9d mov r14, gword ptr [rsp+0x88] ; gcrRegs +[r14]
- ;; size=31 bbWeight=1 PerfScore 8.25
+ ;; size=33 bbWeight=1 PerfScore 9.25
G_M7707_IG02: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz test rsi, rsi jne SHORT G_M7707_IG04 @@ -100,6 +101,7 @@ G_M7707_IG06: ; bbWeight=0.50, gcrefRegs=4041 {rax rsi r14}, byrefRegs=00 G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=4041 {rax rsi r14}, byrefRegs=0000 {}, byref lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
+ mov r8d, dword ptr [rax+0x08]
add r8d, r8d lea rdx, bword ptr [r14+0x0C] ; byrRegs +[rdx] @@ -108,7 +110,7 @@ G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=4041 {rax rsi r14}, byrefRegs=00 ; byrRegs -[rcx rdx] ; gcr arg pop 0 mov r15d, eax
- ;; size=20 bbWeight=0.50 PerfScore 2.25
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
G_M7707_IG08: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz test r15b, r15b jne SHORT G_M7707_IG09 @@ -136,62 +138,61 @@ G_M7707_IG11: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 { G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz mov rcx, rsi ; gcrRegs +[rcx]
- mov rax, qword ptr [rsi] - mov rdi, qword ptr [rax+0x48] - call [rdi+0x38]<unknown method>
+ mov rdi, qword ptr [rsi] + mov r15, qword ptr [rdi+0x48] + call [r15+0x38]<unknown method>
; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15]
+ mov r13, rax + ; gcrRegs +[r13]
mov rcx, rsi ; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rdi+0x50]
; gcrRegs -[rax]
- mov rax, qword ptr [rax+0x50]
call [rax]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp r15, rax - setne r15b - ; gcrRegs -[r15] - movzx r15, r15b
+ cmp r13, rax + setne r13b + ; gcrRegs -[r13] + movzx r13, r13b
xor ecx, ecx test bl, 2 setne cl
- test ecx, r15d
+ test ecx, r13d
jne G_M7707_IG16 mov rcx, rsi ; gcrRegs +[rcx]
- call [rdi+0x28]<unknown method>
+ call [r15+0x28]<unknown method>
; gcrRegs -[rax rcx] ; gcr arg pop 0 cmp eax, 32 je SHORT G_M7707_IG14 mov rcx, rsi ; gcrRegs +[rcx]
- call [rdi+0x28]<unknown method>
+ call [r15+0x28]<unknown method>
; gcrRegs -[rcx] ; gcr arg pop 0 cmp eax, 128 je SHORT G_M7707_IG14
- movzx rdi, byte ptr [rsp+0x80] - test dil, dil
+ movzx r15, byte ptr [rsp+0x80] + test r15b, r15b
je SHORT G_M7707_IG13 xor r8d, r8d test bl, 64 sete r8b
- test r8d, r15d
+ test r8d, r13d
jne G_M7707_IG16 test bl, 8
- mov dword ptr [rsp+0x80], edi
+ mov dword ptr [rsp+0x80], r15d
jne SHORT G_M7707_IG14 jmp G_M7707_IG16
- ;; size=130 bbWeight=0.50 PerfScore 18.62 -G_M7707_IG13: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+ ;; size=131 bbWeight=0.50 PerfScore 17.62 +G_M7707_IG13: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
test bl, 4
- mov dword ptr [rsp+0x80], edi - je G_M7707_IG16 - ;; size=16 bbWeight=0.50 PerfScore 1.12
+ mov dword ptr [rsp+0x80], r15d + je SHORT G_M7707_IG16 + ;; size=13 bbWeight=0.50 PerfScore 1.12
G_M7707_IG14: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rsp+0x90], 0 je SHORT G_M7707_IG15 @@ -211,7 +212,7 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b xor edx, edx test bl, 2 sete dl
- and edx, r15d
+ and edx, r13d
movzx rcx, bpl test edx, ecx je SHORT G_M7707_IG18 @@ -224,20 +225,16 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; System.Reflection.MethodInfo
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx rsi] +[rax] ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- test rbx, rbx - je SHORT G_M7707_IG16
mov rcx, rbx ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx] - ; gcrRegs -[rax] - mov rsi, qword ptr [rax+0x58]
+ mov rsi, qword ptr [rdi+0x58]
call [rsi+0x20]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0 test al, 64 jne SHORT G_M7707_IG18 @@ -248,35 +245,37 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b ; gcr arg pop 0 test eax, 0x400 jne SHORT G_M7707_IG18
- ;; size=95 bbWeight=0.50 PerfScore 12.38
+ ;; size=87 bbWeight=0.50 PerfScore 10.75
G_M7707_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M7707_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
+ pop r13
pop r14 pop r15 ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M7707_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M7707_IG19: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
+ pop r13
pop r14 pop r15 ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 492, prolog size 12, PerfScore 72.12, instruction count 148, allocated bytes for code 492 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
+; Total bytes of code 492, prolog size 14, PerfScore 72.00, instruction count 148, allocated bytes for code 492 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -284,15 +283,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C
...

+6 (+3.24%) : 1570.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> rsi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> rsi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) long -> rbx single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T12] ( 3, 1.50) ref -> rax -; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> rax
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> rax +; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> rax
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V11 tmp8 [V11,T04] ( 2, 4 ) long -> rcx "argument with side effect" ; V12 rat0 [V12,T03] ( 3, 4 ) long -> rcx "runtime lookup" ; V13 rat1 [V13,T02] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) long -> rcx "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) long -> rcx "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) long -> rcx "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -49,41 +49,45 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M17047_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi ; gcrRegs +[rdx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M17047_IG07
+ test rsi, rsi + je SHORT G_M17047_IG08
;; size=13 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rsi]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov rax, rsi + ; gcrRegs +[rax] + ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17047_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rsi] - mov rcx, rsi
+G_M17047_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rsi] + xor rcx, rcx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x50] call [rax+0x20]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor rax, rax
- jmp SHORT G_M17047_IG09 - ;; size=22 bbWeight=0.50 PerfScore 5.38 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M17047_IG10 + ;; size=26 bbWeight=0.50 PerfScore 5.38 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rcx, rax ; gcrRegs +[rcx] mov rdx, rbx @@ -91,46 +95,46 @@ G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov rcx, qword ptr [rbx+0x38] cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, qword ptr [rcx+0x18] test rcx, rcx
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx]
- mov rdx, rsi
+ xor rdx, rdx
; gcrRegs +[rdx] call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[rax rcx rdx rsi]
+ ; gcrRegs -[rax rcx rdx]
; gcr arg pop 0 mov rax, rbx ; gcrRegs +[rax]
- ;; size=23 bbWeight=0.50 PerfScore 2.50 -G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=22 bbWeight=0.50 PerfScore 2.50 +G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 40 pop rbx @@ -138,7 +142,7 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 185, prolog size 11, PerfScore 31.21, instruction count 57, allocated bytes for code 185 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 191, prolog size 11, PerfScore 31.33, instruction count 58, allocated bytes for code 191 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-30 (-69.77%) : 373.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 621 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 2165.dasm - System.Threading.ThreadPool:get_UseWindowsThreadPool():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M46586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M46586_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 820 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M46586_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=2a624a05) for method System.Threading.ThreadPool:get_UseWindowsThreadPool():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=2a624a05) for method System.Threading.ThreadPool:get_UseWindowsThreadPool():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 4377.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M7622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 440 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M7622_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+0 (0.00%) : 3764.dasm - System.Collections.Generic.ArraySortHelper2[System.__Canon,System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper2System.Canon,System.Canon

@@ -54,7 +54,7 @@ G_M9235_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M9235_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M9235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -99,14 +99,14 @@ G_M9235_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M9235_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; <unknown class> mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax] mov gword ptr [rbp-0x50], rax mov rax, qword ptr [rbp+0x10] @@ -120,7 +120,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x40] ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] mov gword ptr [rbp-0x58], rax mov rax, qword ptr [rbp+0x10] @@ -134,7 +134,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x48] ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] mov gword ptr [rbp-0x60], rax mov rcx, gword ptr [rbp-0x50] @@ -149,7 +149,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x68] ; gcrRegs +[rdx] mov rcx, qword ptr [rbp-0x28]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rdx] mov gword ptr [rbp-0x10], rax jmp SHORT G_M9235_IG10 @@ -157,7 +157,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9235_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, qword ptr [rbp+0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rcx, gword ptr [rbp-0x20]

+0 (0.00%) : 3952.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper1System.__Canon

@@ -51,7 +51,7 @@ G_M65267_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -96,14 +96,14 @@ G_M65267_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; <unknown class> mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax] mov gword ptr [rbp-0x48], rax mov rax, qword ptr [rbp+0x10] @@ -117,7 +117,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x40] ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] mov gword ptr [rbp-0x50], rax mov rcx, gword ptr [rbp-0x48] @@ -130,7 +130,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x58] ; gcrRegs +[rdx] mov rcx, qword ptr [rbp-0x28]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rdx] mov gword ptr [rbp-0x10], rax jmp SHORT G_M65267_IG10 @@ -138,7 +138,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M65267_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, qword ptr [rbp+0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rcx, gword ptr [rbp-0x20]

+0 (0.00%) : 12228.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Instrumented Tier0)

@@ -59,12 +59,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x30] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x20], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x20]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x18], rax mov rcx, gword ptr [rbp+0x10]

benchmarks.run_tiered.windows.x64.checked.mch

-30 (-71.43%) : 10433.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M54325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M54325_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 46 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [(reloc)] ; static handle
- ;; size=26 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M54325_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 42, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 42 (MethodHash=836e2bca) for method System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
+; Total bytes of code 12, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 12 (MethodHash=836e2bca) for method System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 3601.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M44918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M44918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 10 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M44918_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=78e75089) for method Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=78e75089) for method Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 3997.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M7622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M7622_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 440 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M7622_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=cd77e239) for method System.SR:UsingResourceKeys():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+0 (0.00%) : 1587.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[]):this (Tier0)

@@ -59,7 +59,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x10], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -94,7 +94,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M63343_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

+0 (0.00%) : 5119.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)

@@ -59,12 +59,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x30] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x20], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x20]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x18], rax mov rcx, gword ptr [rbp+0x10]

+0 (0.00%) : 6415.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper1System.__Canon

@@ -51,7 +51,7 @@ G_M65267_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x18], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -96,14 +96,14 @@ G_M65267_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M65267_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov qword ptr [rbp-0x28], rax ;; size=23 bbWeight=0.20 PerfScore 0.65 G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; <unknown class> mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax] mov gword ptr [rbp-0x48], rax mov rax, qword ptr [rbp+0x10] @@ -117,7 +117,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x40] ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTCLASS
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] mov gword ptr [rbp-0x50], rax mov rcx, gword ptr [rbp-0x48] @@ -130,7 +130,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdx, gword ptr [rbp-0x58] ; gcrRegs +[rdx] mov rcx, qword ptr [rbp-0x28]
- call [CORINFO_HELP_CHKCASTINTERFACE]
+ call [CORINFO_HELP_CHKCASTCLASS]
; gcrRegs -[rdx] mov gword ptr [rbp-0x10], rax jmp SHORT G_M65267_IG10 @@ -138,7 +138,7 @@ G_M65267_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M65267_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, qword ptr [rbp+0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov gword ptr [rbp-0x20], rax mov rcx, gword ptr [rbp-0x20]

coreclr_tests.run.windows.x64.checked.mch

-31 (-68.89%) : 522.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)

@@ -17,26 +17,15 @@ G_M17591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M17591_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M17591_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25
-G_M17591_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M17591_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M17591_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E - mov edx, 15 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M17591_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 4, PerfScore 5.75, instruction count 10, allocated bytes for code 45 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
+; Total bytes of code 14, prolog size 4, PerfScore 1.75, instruction count 4, allocated bytes for code 14 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
; ============================================================ Unwind Info:

-43 (-63.24%) : 33.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -7,47 +7,32 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 3, 5 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>> ;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref single-def ;
-; Lcl frame size = 40
+; Lcl frame size = 0
-G_M16369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25
+G_M16369_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M16369_IG06 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] test rax, rax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=18 bbWeight=1 PerfScore 3.50
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- add rsp, 40
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=10 bbWeight=0.50 PerfScore 1.12 -G_M16369_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[rax]
- add rsp, 40
ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M16369_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 18 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M16369_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 68, prolog size 4, PerfScore 9.50, instruction count 15, allocated bytes for code 68 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 25, prolog size 0, PerfScore 5.00, instruction count 6, allocated bytes for code 25 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================ Unwind Info: @@ -55,9 +40,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-31 (-59.62%) : 225.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
@@ -8,35 +8,23 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 cse0 [V01,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V02 cse1 [V02,T00] ( 3, 3 ) long -> rcx "CSE - aggressive"
+; V01 cse0 [V01,T00] ( 3, 3 ) long -> rax "CSE - aggressive"
; ; Lcl frame size = 40 G_M63990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M63990_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M63990_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - inc dword ptr [rcx]
+G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + inc dword ptr [rax]
;; size=12 bbWeight=1 PerfScore 3.25
-G_M63990_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M63990_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E - mov edx, 14 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M63990_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 4, PerfScore 8.75, instruction count 11, allocated bytes for code 52 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
+; Total bytes of code 21, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 21 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
; ============================================================ Unwind Info:

-15 (-25.86%) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T02] ( 3, 1.50) ref -> rax class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T02] ( 2, 1 ) ref -> rax class-hnd single-def <<unknown class>>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 cse0 [V03,T01] ( 3, 2.50) ref -> rdx "CSE - aggressive" ; @@ -33,30 +33,21 @@ G_M2237_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M2237_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2237_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M2237_IG07
mov eax, dword ptr [rax+0x10] ; gcrRegs -[rax]
- ;; size=23 bbWeight=0.50 PerfScore 2.25
+ ;; size=18 bbWeight=0.50 PerfScore 1.62
G_M2237_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M2237_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M2237_IG08: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - ret - ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 58, prolog size 4, PerfScore 7.88, instruction count 17, allocated bytes for code 58 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
+; Total bytes of code 43, prolog size 4, PerfScore 6.50, instruction count 12, allocated bytes for code 43 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
; ============================================================ Unwind Info:

-38 (-9.64%) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)

@@ -59,18 +59,14 @@ G_M2789_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdi, r9 ; gcrRegs +[rdi] ;; size=25 bbWeight=1 PerfScore 8.25
-G_M2789_IG02: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref - test byte ptr [(reloc)], 1 ; global ptr - je G_M2789_IG20 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M2789_IG03: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG02: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rcx, gword ptr [rdx] ; gcrRegs +[rcx] test rcx, rcx
- jne SHORT G_M2789_IG05
+ jne SHORT G_M2789_IG04
;; size=18 bbWeight=1 PerfScore 3.50
-G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov edx, ebx xor rcx, rcx @@ -80,9 +76,9 @@ G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=00 call [<unknown method>] ; gcrRegs -[rcx r8] ; gcr arg pop 0
- jmp SHORT G_M2789_IG06
+ jmp SHORT G_M2789_IG05
;; size=15 bbWeight=0.50 PerfScore 2.88
-G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=00E2 {rcx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00E2 {rcx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx] mov edx, ebx mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -90,31 +86,31 @@ G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=00E2 {rcx rbp rsi rdi}, byrefReg ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M2789_IG06: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M2789_IG05: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
test eax, eax
- je G_M2789_IG19
+ je G_M2789_IG18
;; size=8 bbWeight=1 PerfScore 1.25
-G_M2789_IG07: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG06: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M2789_IG13
+ je SHORT G_M2789_IG12
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M2789_IG08: ; bbWeight=0.46, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG07: ; bbWeight=0.46, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rsi+0x08] test r14d, r14d
- je SHORT G_M2789_IG13
+ je SHORT G_M2789_IG12
;; size=9 bbWeight=0.46 PerfScore 1.50
-G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG08: ; bbWeight=0.47, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r15d, r14d lea ecx, [r15+0x07] test ecx, ecx
- jl G_M2789_IG21
+ jl G_M2789_IG19
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13] test r13, r13
- jne SHORT G_M2789_IG10
+ jne SHORT G_M2789_IG09
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -123,9 +119,9 @@ G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=00 ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; size=47 bbWeight=0.47 PerfScore 3.79
-G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r13+0x08], r14d
- jge SHORT G_M2789_IG11
+ jge SHORT G_M2789_IG10
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -134,7 +130,7 @@ G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefReg ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=25 bbWeight=0.47 PerfScore 3.55
-G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [r13+0x0C] ; byrRegs +[rcx] lea rdx, bword ptr [rsi+0x0C] @@ -142,23 +138,23 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=20E0 {rbp rsi rdi r13}, byrefReg mov r8d, r14d add r8, r8 cmp r8, 6
- jne SHORT G_M2789_IG16
+ jne SHORT G_M2789_IG15
;; size=20 bbWeight=0.47 PerfScore 1.30
-G_M2789_IG12: ; bbWeight=0.24, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0006 {rcx rdx}, byref, isz
+G_M2789_IG11: ; bbWeight=0.24, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0006 {rcx rdx}, byref, isz
; gcrRegs -[rsi] mov eax, dword ptr [rdx] mov r8d, dword ptr [rdx+0x02] mov dword ptr [rcx], eax mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M2789_IG17
+ jmp SHORT G_M2789_IG16
;; size=14 bbWeight=0.24 PerfScore 1.90
-G_M2789_IG13: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref
+G_M2789_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] ; byrRegs -[rcx rdx] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M2789_IG14: ; bbWeight=0.50, gcrefRegs=00A2 {rcx rbp rdi}, byrefRegs=0000 {}, byref
+G_M2789_IG13: ; bbWeight=0.50, gcrefRegs=00A2 {rcx rbp rdi}, byrefRegs=0000 {}, byref
mov edx, ebx mov r8, rbp ; gcrRegs +[r8] @@ -172,7 +168,7 @@ G_M2789_IG14: ; bbWeight=0.50, gcrefRegs=00A2 {rcx rbp rdi}, byrefRegs=00 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x70] ;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M2789_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M2789_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -183,18 +179,18 @@ G_M2789_IG15: ; bbWeight=0.50, epilog, nogc, extend pop r15 tail.jmp [rax+0x30]<unknown method> ;; size=18 bbWeight=0.50 PerfScore 2.88
-G_M2789_IG16: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+G_M2789_IG15: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0006 {rcx rdx}, gcvars, byref
; gcrRegs -[rcx rdx] +[rbp r13] ; byrRegs +[rcx rdx] call [<unknown method>] ; byrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=6 bbWeight=0.47 PerfScore 1.42
-G_M2789_IG17: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG16: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [r13+0x08] sub ecx, r15d cmp ecx, 7
- jge SHORT G_M2789_IG18
+ jge SHORT G_M2789_IG17
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -203,7 +199,7 @@ G_M2789_IG17: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=00 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=31 bbWeight=0.47 PerfScore 3.32
-G_M2789_IG18: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M2789_IG17: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref, isz
movsxd rcx, r15d lea rcx, bword ptr [r13+2*rcx+0x0C] ; byrRegs +[rcx] @@ -216,9 +212,9 @@ G_M2789_IG18: ; bbWeight=0.47, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=00 mov rcx, r13 ; gcrRegs +[rcx] ; byrRegs -[rcx]
- jmp SHORT G_M2789_IG14
+ jmp SHORT G_M2789_IG13
;; size=37 bbWeight=0.47 PerfScore 5.10
-G_M2789_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M2789_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rbp rdi r13] ; byrRegs -[rdx] add rsp, 32 @@ -231,22 +227,13 @@ G_M2789_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre pop r15 ret ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M2789_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbp rsi rdi] - mov rcx, 0xD1FFAB1E - mov edx, 7 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp G_M2789_IG03 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M2789_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp rsi rdi]
+G_M2789_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 394, prolog size 14, PerfScore 53.50, instruction count 109, allocated bytes for code 394 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
+; Total bytes of code 356, prolog size 14, PerfScore 49.50, instruction count 103, allocated bytes for code 356 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
; ============================================================ Unwind Info:

-26 (-6.90%) : 494.dasm - Program:TestEntryPoint():int (FullOpts)

@@ -12,35 +12,33 @@ ;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 loc2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Program> ;* V03 loc3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V04 loc4 [V04,T02] ( 5, 5 ) ref -> rbx class-hnd single-def <<unknown class>>
; V05 loc5 [V05 ] ( 2, 2 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed <System.Decimal> ; V06 loc6 [V06 ] ( 2, 2 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed <System.Decimal> ;* V07 loc7 [V07 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V08 OutArgs [V08 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T01] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Program> -; V10 tmp2 [V10,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V11 tmp3 [V11,T06] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V12 tmp4 [V12,T00] ( 8, 12.75) ref -> rbx class-hnd "spilling QMark2" <<unknown class>> -; V13 tmp5 [V13 ] ( 8, 6.00) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V14 tmp6 [V14 ] ( 6, 8.00) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V15 tmp7 [V15,T07] ( 5, 1.00) int -> rax "Inline return value spill temp" -; V16 tmp8 [V16,T04] ( 2, 4 ) long -> rcx "impAppendStmt" -; V17 tmp9 [V17,T05] ( 2, 2.00) long -> rcx "impAppendStmt" -; V18 tmp10 [V18,T08] ( 3, 1.00) int -> rax single-def "Inline stloc first use temp" -; V19 tmp11 [V19,T09] ( 2, 0.00) long -> rcx "impAppendStmt" -; V20 tmp12 [V20 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP -; V21 tmp13 [V21 ] ( 2, 2 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP -; V22 tmp14 [V22 ] ( 2, 2 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP -; V23 tmp15 [V23 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP -; V24 tmp16 [V24 ] ( 2, 2 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP -; V25 tmp17 [V25 ] ( 2, 2 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP -; V26 tmp18 [V26 ] ( 4, 3.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V13._flags (fldOffset=0x0)" P-DEP -; V27 tmp19 [V27 ] ( 4, 3.50) int -> [rbp-0x34] do-not-enreg[X] addr-exposed "field V13._hi32 (fldOffset=0x4)" P-DEP -; V28 tmp20 [V28 ] ( 4, 3.50) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V13._lo64 (fldOffset=0x8)" P-DEP -; V29 tmp21 [V29 ] ( 4, 3.50) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V14._flags (fldOffset=0x0)" P-DEP -; V30 tmp22 [V30 ] ( 3, 4.00) int -> [rbp-0x44] do-not-enreg[X] addr-exposed "field V14._hi32 (fldOffset=0x4)" P-DEP -; V31 tmp23 [V31 ] ( 3, 4.00) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V14._lo64 (fldOffset=0x8)" P-DEP -; V32 tmp24 [V32,T02] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+; V09 tmp1 [V09,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Program> +; V10 tmp2 [V10 ] ( 8, 6.00) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V11 tmp3 [V11 ] ( 6, 8.00) struct (16) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V12 tmp4 [V12,T06] ( 5, 1.00) int -> rax "Inline return value spill temp" +; V13 tmp5 [V13,T04] ( 2, 4 ) long -> rcx "impAppendStmt" +; V14 tmp6 [V14,T05] ( 2, 2.00) long -> rcx "impAppendStmt" +; V15 tmp7 [V15,T07] ( 3, 1.00) int -> rax single-def "Inline stloc first use temp" +; V16 tmp8 [V16,T08] ( 2, 0.00) long -> rcx "impAppendStmt" +; V17 tmp9 [V17 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP +; V18 tmp10 [V18 ] ( 2, 2 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP +; V19 tmp11 [V19 ] ( 2, 2 ) long -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP +; V20 tmp12 [V20 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP +; V21 tmp13 [V21 ] ( 2, 2 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP +; V22 tmp14 [V22 ] ( 2, 2 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP +; V23 tmp15 [V23 ] ( 4, 3.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V10._flags (fldOffset=0x0)" P-DEP +; V24 tmp16 [V24 ] ( 4, 3.50) int -> [rbp-0x34] do-not-enreg[X] addr-exposed "field V10._hi32 (fldOffset=0x4)" P-DEP +; V25 tmp17 [V25 ] ( 4, 3.50) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V10._lo64 (fldOffset=0x8)" P-DEP +; V26 tmp18 [V26 ] ( 4, 3.50) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V11._flags (fldOffset=0x0)" P-DEP +; V27 tmp19 [V27 ] ( 3, 4.00) int -> [rbp-0x44] do-not-enreg[X] addr-exposed "field V11._hi32 (fldOffset=0x4)" P-DEP +; V28 tmp20 [V28 ] ( 3, 4.00) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._lo64 (fldOffset=0x8)" P-DEP +; V29 tmp21 [V29,T01] ( 3, 6 ) ref -> rax single-def "argument with side effect" +; V30 tmp22 [V30,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; ; Lcl frame size = 136 @@ -57,7 +55,7 @@ G_M13170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 7.33 G_M13170_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, 0xD1FFAB1E ; Program
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] mov rbx, rax ; gcrRegs +[rbx] @@ -71,7 +69,7 @@ G_M13170_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rax rcx] mov gword ptr [rsp+0x30], rcx ;; size=5 bbWeight=1 PerfScore 1.00
-G_M13170_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M13170_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rsp+0x38], rcx mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] @@ -92,19 +90,19 @@ G_M13170_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rax, qword ptr [rax+0x70] call [rax+0x18]<unknown method> ; gcrRegs -[rcx rdx rbx r8] +[rax]
+ mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOF_EXCEPTION + ; gcrRegs -[rdx]
mov rbx, rax ; gcrRegs +[rbx]
- test rbx, rbx - jne G_M13170_IG12 - ;; size=81 bbWeight=1 PerfScore 14.25 -G_M13170_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
lea rdx, [rbp-0x18] mov r8d, 3 mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] call [rbx+0x18]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
lea rdx, [rbp-0x28] mov r8d, 3 mov rcx, gword ptr [rbx+0x08] @@ -118,86 +116,69 @@ G_M13170_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rcx, qword ptr [rbp-0x40] mov edx, dword ptr [rbp-0x44] or rcx, rdx
- je SHORT G_M13170_IG10 - ;; size=66 bbWeight=1 PerfScore 22.75 -G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M13170_IG09 + ;; size=156 bbWeight=1 PerfScore 37.25 +G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rbp-0x30] mov edx, dword ptr [rbp-0x34] or rcx, rdx
- je SHORT G_M13170_IG16
+ je SHORT G_M13170_IG13
mov eax, dword ptr [rbp-0x38] sar eax, 31 mov ecx, dword ptr [rbp-0x48] sar ecx, 31 sub eax, ecx
- jne SHORT G_M13170_IG17
+ jne SHORT G_M13170_IG14
lea rcx, [rbp-0x38] lea rdx, [rbp-0x48] call [<unknown method>] ;; size=42 bbWeight=0.50 PerfScore 5.75
-G_M13170_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M13170_IG14
+ jne SHORT G_M13170_IG11
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M13170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13170_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 136 pop rbx pop rbp ret ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M13170_IG10: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M13170_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, qword ptr [rbp-0x30] mov edx, dword ptr [rbp-0x34] or rcx, rdx
- je SHORT G_M13170_IG08
+ je SHORT G_M13170_IG07
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M13170_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M13170_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp-0x38] sar eax, 31 or eax, 1
- jmp SHORT G_M13170_IG07
+ jmp SHORT G_M13170_IG06
;; size=11 bbWeight=0 PerfScore 0.00
-G_M13170_IG12: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rax rbx] - mov rcx, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rbx], rcx - je G_M13170_IG05 - ;; size=19 bbWeight=0.25 PerfScore 1.06 -G_M13170_IG13: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rdx, rax - ; gcrRegs +[rdx] - call CORINFO_HELP_CHKCASTANY - ; gcrRegs -[rdx] - mov rbx, rax - ; gcrRegs +[rbx] - jmp G_M13170_IG05 - ;; size=16 bbWeight=0.12 PerfScore 0.44 -G_M13170_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx]
+G_M13170_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 136 pop rbx pop rbp ret ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M13170_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M13170_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, dword ptr [rbp-0x48] sar eax, 31 or eax, 1 neg eax
- jmp SHORT G_M13170_IG07
+ jmp SHORT G_M13170_IG06
;; size=13 bbWeight=0 PerfScore 0.00
-G_M13170_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M13170_IG07
+G_M13170_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M13170_IG06
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 377, prolog size 36, PerfScore 60.46, instruction count 94, allocated bytes for code 377 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
+; Total bytes of code 351, prolog size 36, PerfScore 59.21, instruction count 88, allocated bytes for code 351 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-19 (-45.24%) : 29747.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)

@@ -9,35 +9,27 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Threading.PreAllocatedOverlapped> -; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T00] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Threading.PreAllocatedOverlapped> +;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M14591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M14591_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] - ; byrRegs +[rax] - ; gcr arg pop 0 - cmp byte ptr [rbx], bl - lea rcx, bword ptr [rbx+0x18]
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M14591_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rcx] + cmp byte ptr [rcx], cl + add rcx, 24 + ; gcrRegs -[rcx]
; byrRegs +[rcx] mov rdx, qword ptr [(reloc)] ; <unknown class> lea rax, [(reloc)] ; function address
- ; byrRegs -[rax] - ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=20 bbWeight=1 PerfScore 5.75
G_M14591_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32 - pop rbx
tail.jmp [rax]System.Threading.DeferredDisposableLifetime`1[System.__Canon]:AddRef():ubyte:this
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 42, prolog size 8, PerfScore 13.25, instruction count 11, allocated bytes for code 42 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
+; Total bytes of code 23, prolog size 0, PerfScore 7.75, instruction count 5, allocated bytes for code 23 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,10 +37,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-18 (-40.00%) : 29748.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)

@@ -9,37 +9,27 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Threading.PreAllocatedOverlapped> -; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T00] ( 5, 5 ) ref -> r8 this class-hnd single-def <System.Threading.PreAllocatedOverlapped> +;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M28675_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M28675_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] - ; byrRegs +[rax] - ; gcr arg pop 0 - cmp byte ptr [rbx], bl - lea rcx, bword ptr [rbx+0x18]
+ mov r8, rcx + ; gcrRegs +[r8] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M28675_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref + cmp byte ptr [r8], r8b + lea rcx, bword ptr [r8+0x18]
; byrRegs +[rcx] mov rdx, qword ptr [(reloc)] ; <unknown class>
- mov r8, rbx - ; gcrRegs +[r8]
lea rax, [(reloc)] ; function address
- ; byrRegs -[rax] - ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=21 bbWeight=1 PerfScore 6.00
G_M28675_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32 - pop rbx
tail.jmp [rax]<unknown method>
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 45, prolog size 8, PerfScore 13.50, instruction count 12, allocated bytes for code 45 (MethodHash=2d3d8ffc) for method System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
+; Total bytes of code 27, prolog size 3, PerfScore 8.25, instruction count 6, allocated bytes for code 27 (MethodHash=2d3d8ffc) for method System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
; ============================================================ Unwind Info: @@ -47,10 +37,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-6 (-4.96%) : 153501.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)

@@ -15,7 +15,7 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V05 tmp3 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 cse0 [V06,T03] ( 4, 3 ) byref -> rax "CSE - aggressive"
+; V06 cse0 [V06,T03] ( 4, 3 ) int -> rcx "CSE - aggressive"
; V07 cse1 [V07,T02] ( 5, 3.50) int -> rdx "CSE - aggressive" ; ; Lcl frame size = 40 @@ -28,7 +28,7 @@ G_M44169_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov ebx, edx ;; size=10 bbWeight=1 PerfScore 2.75 G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0 movzx rcx, word ptr [rax] @@ -36,21 +36,20 @@ G_M44169_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp ecx, edx je SHORT G_M44169_IG04 ;; size=16 bbWeight=1 PerfScore 6.50
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax]
cmp edx, 47 jne SHORT G_M44169_IG07 ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz - movzx rcx, word ptr [rax] - movzx r8, bx - cmp ecx, r8d
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movzx rax, bx + cmp ecx, eax
je SHORT G_M44169_IG05
- movzx rcx, bx - cmp ecx, 47
+ movzx rax, bx + cmp eax, 47
jne SHORT G_M44169_IG07
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=15 bbWeight=0.50 PerfScore 1.50
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rax]
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -59,13 +58,11 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - ; byrRegs +[rax] - cmp word ptr [rax], 47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + cmp ecx, 47
je SHORT G_M44169_IG09 mov ecx, edx call [<unknown method>]
- ; byrRegs -[rax]
; gcr arg pop 0 mov esi, eax movzx rcx, bx @@ -74,7 +71,7 @@ G_M44169_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmp esi, eax sete al movzx rax, al
- ;; size=33 bbWeight=0.50 PerfScore 6.12
+ ;; size=32 bbWeight=0.50 PerfScore 4.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 pop rbx @@ -94,7 +91,7 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 121, prolog size 6, PerfScore 22.88, instruction count 46, allocated bytes for code 121 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 115, prolog size 6, PerfScore 20.50, instruction count 45, allocated bytes for code 115 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================ Unwind Info:

+0 (0.00%) : 156332.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -15,7 +15,7 @@ ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 2 ) int -> r8 "argument with side effect" ; V05 tmp2 [V05,T03] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V06 cse0 [V06,T05] ( 3, 1.50) byref -> rax "CSE - moderate"
+; V06 cse0 [V06,T05] ( 3, 1.50) int -> r8 "CSE - moderate"
; ; Lcl frame size = 32 @@ -44,12 +44,12 @@ G_M45118_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ;; size=20 bbWeight=1 PerfScore 5.00 G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- cmp word ptr [rax], 47 - jne SHORT G_M45118_IG04
movzx r8, word ptr [rax]
+ cmp r8d, 47 + jne SHORT G_M45118_IG04
mov rcx, rbx ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address @@ -68,7 +68,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi]
- ;; size=51 bbWeight=0.50 PerfScore 9.88
+ ;; size=51 bbWeight=0.50 PerfScore 8.50
G_M45118_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, rdi @@ -82,7 +82,7 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 95, prolog size 7, PerfScore 21.62, instruction count 31, allocated bytes for code 95 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 95, prolog size 7, PerfScore 20.25, instruction count 31, allocated bytes for code 95 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================ Unwind Info:

+1 (+3.23%) : 3523.dasm - .$Array:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> rbx "value for stsfld with typeinit"
; ; Lcl frame size = 32 @@ -18,21 +17,23 @@ G_M35347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [<unknown method>] - ; gcr arg pop 0 - mov ebx, eax - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x0E10], ebx - ;; size=20 bbWeight=1 PerfScore 7.25
+ mov rbx, rax + ; byrRegs +[rbx] + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + mov dword ptr [rbx+0x0E10], eax + ;; size=21 bbWeight=1 PerfScore 7.25
G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 31, prolog size 5, PerfScore 10.25, instruction count 9, allocated bytes for code 31 (MethodHash=db6175ec) for method <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 5, PerfScore 10.25, instruction count 9, allocated bytes for code 32 (MethodHash=db6175ec) for method <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
; ============================================================ Unwind Info:

+1 (+3.23%) : 170656.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

@@ -9,7 +9,6 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> rbx "value for stsfld with typeinit"
; ; Lcl frame size = 32 @@ -18,21 +17,23 @@ G_M7219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M7219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [<unknown method>] - ; gcr arg pop 0 - mov ebx, eax - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x220], ebx - ;; size=20 bbWeight=1 PerfScore 7.25
+ mov rbx, rax + ; byrRegs +[rbx] + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + mov dword ptr [rbx+0x220], eax + ;; size=21 bbWeight=1 PerfScore 7.25
G_M7219_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 31, prolog size 5, PerfScore 10.25, instruction count 9, allocated bytes for code 31 (MethodHash=ab7fe3cc) for method Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)
+; Total bytes of code 32, prolog size 5, PerfScore 10.25, instruction count 9, allocated bytes for code 32 (MethodHash=ab7fe3cc) for method Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.windows.x64.checked.mch

-44 (-91.67%) : 1425.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)

@@ -8,39 +8,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag> -; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag> +;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T01] ( 2, 2 ) int -> rax "Inline return value spill temp" ;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M40059_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40059_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M40059_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M40059_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov eax, dword ptr [rbx+0x08]
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M40059_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rcx] + mov eax, dword ptr [rcx+0x08]
;; size=3 bbWeight=1 PerfScore 2.00
-G_M40059_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 32 - pop rbx
+G_M40059_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=6 bbWeight=1 PerfScore 1.75 -G_M40059_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E - mov edx, 0x87F - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M40059_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 5, PerfScore 9.25, instruction count 13, allocated bytes for code 48 (MethodHash=21e16384) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
+; Total bytes of code 4, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 4 (MethodHash=21e16384) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
; ============================================================ Unwind Info: @@ -48,10 +32,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-39 (-73.58%) : 1357.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_ActivePatternResult():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)

@@ -7,36 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M35839_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M35839_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M35839_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M35839_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M35839_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M35839_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M35839_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M35839_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 156 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M35839_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=ae3c7400) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_ActivePatternResult():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=ae3c7400) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_ActivePatternResult():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
; ============================================================ Unwind Info: @@ -44,9 +30,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-73.58%) : 1361.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Class():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
@@ -7,36 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M21340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M21340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M21340_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M21340_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M21340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M21340_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M21340_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M21340_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 156 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M21340_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=3b9aaca3) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Class():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=3b9aaca3) for method Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Class():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
; ============================================================ Unwind Info: @@ -44,9 +30,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+4 (+3.77%) : 371.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]]>
; V01 arg1 [V01,T01] ( 4, 3 ) int -> rsi single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rsp+0x50] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 40 @@ -30,10 +30,10 @@ G_M49112_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M49112_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M49112_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -52,15 +52,15 @@ G_M49112_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rsi tail.jmp [rax+0x28]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx] +[rbx] - mov rcx, rbx
+G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + xor rcx, rcx
; gcrRegs +[rcx] mov edx, esi
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -68,7 +68,7 @@ G_M49112_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M49112_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 pop rbx @@ -76,7 +76,7 @@ G_M49112_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 106, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 106 (MethodHash=653e4027) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
+; Total bytes of code 110, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 110 (MethodHash=653e4027) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.77%) : 372.dasm - Microsoft.FSharp.Core.FSharpFunc2[int,System.Nullable1[int]]:InvokeFastshort:short (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]]>
; V01 arg1 [V01,T01] ( 4, 3 ) int -> rsi single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rsp+0x50] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 40 @@ -30,10 +30,10 @@ G_M61269_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M61269_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M61269_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -52,15 +52,15 @@ G_M61269_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rsi tail.jmp [rax+0x28]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M61269_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx] +[rbx] - mov rcx, rbx
+G_M61269_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + xor rcx, rcx
; gcrRegs +[rcx] mov edx, esi
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -68,7 +68,7 @@ G_M61269_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M61269_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 pop rbx @@ -76,7 +76,7 @@ G_M61269_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 106, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 106 (MethodHash=beac10aa) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
+; Total bytes of code 110, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 110 (MethodHash=beac10aa) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.77%) : 376.dasm - Microsoft.FSharp.Core.FSharpFunc2[int,System.Nullable1[int]]:InvokeFastlong:long (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]]>
; V01 arg1 [V01,T01] ( 4, 3 ) int -> rsi single-def ; V02 arg2 [V02,T02] ( 4, 3 ) struct ( 8) [rsp+0x50] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V06 tmp1 [V06,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 40 @@ -30,10 +30,10 @@ G_M749_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M749_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M749_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -52,15 +52,15 @@ G_M749_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rsi tail.jmp [rax+0x28]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M749_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx] +[rbx] - mov rcx, rbx
+G_M749_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + xor rcx, rcx
; gcrRegs +[rcx] mov edx, esi
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -68,7 +68,7 @@ G_M749_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=30 bbWeight=0.50 PerfScore 6.38
+ ;; size=34 bbWeight=0.50 PerfScore 6.38
G_M749_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 pop rbx @@ -76,7 +76,7 @@ G_M749_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 106, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 106 (MethodHash=f06afd12) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
+; Total bytes of code 110, prolog size 16, PerfScore 18.88, instruction count 33, allocated bytes for code 110 (MethodHash=f06afd12) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-30 (-71.43%) : 253.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M27576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M27576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 35 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [(reloc)] ; static handle
- ;; size=26 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M27576_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 42, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 42 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
+; Total bytes of code 12, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 12 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-71.43%) : 1783.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M27576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M27576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 35 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [(reloc)] ; static handle
- ;; size=26 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M27576_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 42, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 42 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
+; Total bytes of code 12, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 12 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-30 (-69.77%) : 5009.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)

@@ -5,28 +5,23 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M41143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- sub rsp, 32 - lea rbp, [rsp+0x20] - ;; size=10 bbWeight=1 PerfScore 1.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M41143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E - mov edx, 1 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movzx rax, byte ptr [(reloc)] ; static handle
- ;; size=27 bbWeight=1 PerfScore 3.50
+ ;; size=7 bbWeight=1 PerfScore 2.00
G_M41143_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
pop rbp ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 10, PerfScore 7.00, instruction count 10, allocated bytes for code 43 (MethodHash=c8a55f48) for method System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
+; Total bytes of code 13, prolog size 4, PerfScore 4.75, instruction count 5, allocated bytes for code 13 (MethodHash=c8a55f48) for method System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -34,10 +29,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-20 (-3.03%) : 1638.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

@@ -70,15 +70,12 @@ G_M3749_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} mov gword ptr [rbp-0x70], rax cmp gword ptr [rbp-0x68], 0 jne SHORT G_M3749_IG05
- mov rcx, 0xD1FFAB1E - mov edx, 6 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcrRegs -[rax]
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ ; gcrRegs -[rax]
mov rax, gword ptr [rax] ; gcrRegs +[rax] mov gword ptr [rbp-0x70], rax
- ;; size=78 bbWeight=1 PerfScore 18.00
+ ;; size=58 bbWeight=1 PerfScore 16.50
G_M3749_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rbp-0x70] @@ -190,7 +187,7 @@ G_M3749_IG06: ; bbWeight=1, extend ; gcrRegs -[rcx] mov gword ptr [rbp-0x88], rax mov rcx, 0xD1FFAB1E ; Internal.Microsoft.Extensions.DependencyModel.CompilationOptions
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
mov gword ptr [rbp-0x90], rax mov rcx, gword ptr [rbp-0x50] ; gcrRegs +[rcx] @@ -239,7 +236,7 @@ G_M3749_IG07: ; bbWeight=1, epilog, nogc, extend ret ;; size=9 bbWeight=1 PerfScore 1.75
-; Total bytes of code 660, prolog size 57, PerfScore 181.08, instruction count 133, allocated bytes for code 660 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 640, prolog size 57, PerfScore 179.58, instruction count 130, allocated bytes for code 640 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================ Unwind Info:

+16 (+12.40%) : 2498.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [rbp+0x10] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp+0x18] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp+0x20] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp+0x20] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] must-init "argument with side effect" @@ -26,11 +26,13 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov qword ptr [rbp+0x20], r8 ;; size=32 bbWeight=1 PerfScore 7.00 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rbp+0x20] - test eax, eax
+ lea rdx, [rbp+0x20] + mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte] + call CORINFO_HELP_UNBOX_NULLABLE + ; gcrRegs +[rax] + test rax, rax
jne SHORT G_M26730_IG04 mov rax, gword ptr [rbp+0x10]
- ; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] mov rdx, gword ptr [rbp+0x18] @@ -39,7 +41,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rax rcx rdx] nop
- ;; size=29 bbWeight=1 PerfScore 12.50
+ ;; size=45 bbWeight=1 PerfScore 13.25
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbp @@ -52,7 +54,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov gword ptr [rbp-0x10], rax lea rdx, [rbp+0x20] mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_BOX_NULLABLE
+ call CORINFO_HELP_UNBOX_NULLABLE
mov gword ptr [rbp-0x08], rax mov r8, gword ptr [rbp-0x08] ; gcrRegs +[r8] @@ -71,7 +73,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 129, prolog size 20, PerfScore 39.00, instruction count 37, allocated bytes for code 129 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 145, prolog size 20, PerfScore 39.75, instruction count 39, allocated bytes for code 145 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info:

+16 (+12.40%) : 4675.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [rbp+0x10] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp+0x18] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp+0x20] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp+0x20] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] must-init "argument with side effect" ; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] must-init "argument with side effect" @@ -26,11 +26,13 @@ G_M26730_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov qword ptr [rbp+0x20], r8 ;; size=32 bbWeight=1 PerfScore 7.00 G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rbp+0x20] - test eax, eax
+ lea rdx, [rbp+0x20] + mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte] + call CORINFO_HELP_UNBOX_NULLABLE + ; gcrRegs +[rax] + test rax, rax
jne SHORT G_M26730_IG04 mov rax, gword ptr [rbp+0x10]
- ; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] mov rdx, gword ptr [rbp+0x18] @@ -39,7 +41,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rax rcx rdx] nop
- ;; size=29 bbWeight=1 PerfScore 12.50
+ ;; size=45 bbWeight=1 PerfScore 13.25
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbp @@ -52,7 +54,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov gword ptr [rbp-0x10], rax lea rdx, [rbp+0x20] mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_BOX_NULLABLE
+ call CORINFO_HELP_UNBOX_NULLABLE
mov gword ptr [rbp-0x08], rax mov r8, gword ptr [rbp-0x08] ; gcrRegs +[r8] @@ -71,7 +73,7 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 129, prolog size 20, PerfScore 39.00, instruction count 37, allocated bytes for code 129 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 145, prolog size 20, PerfScore 39.75, instruction count 39, allocated bytes for code 145 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-39 (-73.58%) : 485.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -8,36 +8,22 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Xunit.TestAssemblyDiscoveryStarting>
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M52532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M52532_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M52532_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M52532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M52532_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M52532_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M52532_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 56 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M52532_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=5fc132cb) for method Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,9 +31,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-73.58%) : 737.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -8,36 +8,22 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Xunit.TestAssemblyDiscoveryFinished>
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M31334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M31334_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M31334_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M31334_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M31334_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M31334_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 55 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M31334_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,9 +31,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-73.58%) : 745.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -8,36 +8,22 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Xunit.TestAssemblyExecutionStarting>
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M24108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M24108_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M24108_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M24108_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M24108_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M24108_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 58 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M24108_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,9 +31,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-1 (-1.41%) : 465.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 32 @@ -32,18 +32,18 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
jne SHORT G_M47281_IG05 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdx, rbx
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx] + xor rdx, rdx
; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown method>
- ;; size=13 bbWeight=0.50 PerfScore 0.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.25
G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx @@ -51,13 +51,13 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=11 bbWeight=0.50 PerfScore 1.38 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdx rbx] +[rax]
+ ; gcrRegs -[rdx] +[rax]
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 71, prolog size 5, PerfScore 11.75, instruction count 18, allocated bytes for code 71 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 70, prolog size 5, PerfScore 11.75, instruction count 18, allocated bytes for code 70 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================ Unwind Info:

-1 (-1.41%) : 567.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 32 @@ -32,18 +32,18 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
jne SHORT G_M51894_IG05 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdx, rbx
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx] + xor rdx, rdx
; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown method>
- ;; size=13 bbWeight=0.50 PerfScore 0.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.25
G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx @@ -51,13 +51,13 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=11 bbWeight=0.50 PerfScore 1.38 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdx rbx] +[rax]
+ ; gcrRegs -[rdx] +[rax]
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 71, prolog size 5, PerfScore 11.75, instruction count 18, allocated bytes for code 71 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 70, prolog size 5, PerfScore 11.75, instruction count 18, allocated bytes for code 70 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================ Unwind Info:

-9 (-0.73%) : 969.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon

@@ -16,7 +16,7 @@ ; V05 loc0 [V05 ] ( 3, 2 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T11] ( 3, 5 ) ref -> r13 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T55] ( 3, 1.50) ref -> r13 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T56] ( 3, 1.50) ref -> r13 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T59] ( 2, 1 ) ref -> r14 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 2, 1 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [rbp-0xA0] class-hnd EH-live single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> rdi class-hnd <System.__Canon> @@ -31,7 +31,7 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> r12 class-hnd "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T39] ( 3, 2 ) long -> r14 "spilling helperCall"
+; V23 tmp11 [V23,T39] ( 3, 2 ) long -> r13 "spilling helperCall"
; V24 tmp12 [V24,T40] ( 3, 2 ) long -> r12 "spilling helperCall" ; V25 tmp13 [V25 ] ( 2, 2 ) struct (16) [rbp-0x68] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -73,7 +73,7 @@ ; V62 rat13 [V62,T22] ( 3, 2.80) long -> rcx "spilling expr" ; V63 rat14 [V63,T32] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable" ; V64 rat15 [V64,T23] ( 3, 2.80) long -> rcx "spilling expr"
-; V65 rat16 [V65,T33] ( 3, 2.24) long -> r14 "fgMakeTemp is creating a new local variable"
+; V65 rat16 [V65,T33] ( 3, 2.24) long -> r13 "fgMakeTemp is creating a new local variable"
; V66 rat17 [V66,T24] ( 3, 2.80) long -> rcx "spilling expr" ; V67 rat18 [V67,T34] ( 3, 2.24) long -> r12 "fgMakeTemp is creating a new local variable" ; V68 rat19 [V68,T46] ( 3, 2 ) long -> rcx "runtime lookup" @@ -84,9 +84,9 @@ ; V73 rat24 [V73,T36] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable" ; V74 rat25 [V74,T27] ( 3, 2.80) long -> rcx "spilling expr" ; V75 rat26 [V75,T37] ( 3, 2.24) long -> r11 "fgMakeTemp is creating a new local variable"
-; V76 rat27 [V76,T59] ( 3, 1 ) long -> r15 "runtime lookup" -; V77 rat28 [V77,T57] ( 3, 1.40) long -> rcx "spilling expr" -; V78 rat29 [V78,T58] ( 3, 1.12) long -> r15 "fgMakeTemp is creating a new local variable"
+; V76 rat27 [V76,T58] ( 3, 1 ) long -> r15 "runtime lookup" +; V77 rat28 [V77,T56] ( 3, 1.40) long -> rcx "spilling expr" +; V78 rat29 [V78,T57] ( 3, 1.12) long -> r15 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 152 @@ -137,7 +137,7 @@ G_M36297_IG03: ; bbWeight=0.80, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 @@ -170,12 +170,12 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] ; gcr arg pop 0 mov rdi, rax @@ -220,14 +220,14 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz mov rdx, r14 ; gcrRegs +[rdx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 mov r13, rax @@ -250,7 +250,7 @@ G_M36297_IG18: ; bbWeight=0.32, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRe G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r14, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 @@ -270,7 +270,7 @@ G_M36297_IG22: ; bbWeight=0.32, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRe G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r12, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 @@ -330,67 +330,65 @@ G_M36297_IG30: ; bbWeight=0.32, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe G_M36297_IG31: ; bbWeight=0.18, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG32: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz mov rdx, r14 ; gcrRegs +[rdx]
- call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rdx] +[rax]
+ call CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[rdx r14] +[rax]
; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13] - test r13, r13 - je G_M36297_IG49
+ mov r14, rax + ; gcrRegs +[r14]
mov rcx, qword ptr [rdi+0x38] cmp qword ptr [rcx+0x18], 80 jle SHORT G_M36297_IG35
- ;; size=31 bbWeight=0.50 PerfScore 4.38 -G_M36297_IG33: ; bbWeight=0.40, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax r14] - mov r14, qword ptr [rcx+0x50] - test r14, r14
+ ;; size=22 bbWeight=0.50 PerfScore 3.75 +G_M36297_IG33: ; bbWeight=0.40, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov r13, qword ptr [rcx+0x50] + test r13, r13
je SHORT G_M36297_IG35 ;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG34: ; bbWeight=0.32, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.32, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M36297_IG36 ;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG35: ; bbWeight=0.18, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
+G_M36297_IG35: ; bbWeight=0.18, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r14, rax
+ mov r13, rax
;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M36297_IG36: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG36: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rdi+0x38] cmp qword ptr [rcx+0x18], 88 jle SHORT G_M36297_IG39 ;; size=11 bbWeight=0.50 PerfScore 3.00
-G_M36297_IG37: ; bbWeight=0.40, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG37: ; bbWeight=0.40, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov r12, qword ptr [rcx+0x58] test r12, r12 je SHORT G_M36297_IG39 ;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG38: ; bbWeight=0.32, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.32, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M36297_IG40 ;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG39: ; bbWeight=0.18, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
+G_M36297_IG39: ; bbWeight=0.18, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r12, rax ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M36297_IG40: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
+G_M36297_IG40: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x68]
- mov rdx, r14 - mov r8, r13
+ mov rdx, r13 + mov r8, r14
; gcrRegs +[r8] call [System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]]
- ; gcrRegs -[r8 r13]
+ ; gcrRegs -[r8 r14]
; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.00 G_M36297_IG41: ; bbWeight=0.50, nogc, extend @@ -418,7 +416,7 @@ G_M36297_IG44: ; bbWeight=0.32, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0 G_M36297_IG45: ; bbWeight=0.18, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 @@ -468,12 +466,12 @@ G_M36297_IG51: ; bbWeight=0.32, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRe G_M36297_IG52: ; bbWeight=0.18, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 G_M36297_IG53: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[rax] ; gcr arg pop 0 mov r13, rax @@ -501,7 +499,7 @@ G_M36297_IG55: ; bbWeight=0.32, gcrefRegs=6048 {rbx rsi r13 r14}, byrefRe G_M36297_IG56: ; bbWeight=0.18, gcrefRegs=6048 {rbx rsi r13 r14}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r11, rax ;; size=21 bbWeight=0.18 PerfScore 0.32 @@ -543,7 +541,7 @@ G_M36297_IG61: ; bbWeight=0.16, gcrefRegs=6048 {rbx rsi r13 r14}, byrefRe G_M36297_IG62: ; bbWeight=0.09, gcrefRegs=6048 {rbx rsi r13 r14}, byrefRegs=0000 {}, byref mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r15, rax ;; size=21 bbWeight=0.09 PerfScore 0.16 @@ -690,7 +688,7 @@ G_M36297_IG74: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1236, prolog size 84, PerfScore 238.71, instruction count 337, allocated bytes for code 1236 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 1227, prolog size 84, PerfScore 238.09, instruction count 335, allocated bytes for code 1227 (MethodHash=28597236) for method System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-39 (-73.58%) : 2989.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)

@@ -7,36 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M34240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M34240_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M34240_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M34240_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 0x3CAB - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M34240_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================ Unwind Info: @@ -44,9 +30,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-73.58%) : 2632.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
@@ -7,36 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M41081_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M41081_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M41081_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] ;; size=13 bbWeight=1 PerfScore 2.25
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M41081_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E - mov edx, 0x52D - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M41081_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 53, prolog size 4, PerfScore 7.75, instruction count 11, allocated bytes for code 53 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================ Unwind Info: @@ -44,9 +30,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-65.00%) : 2781.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
@@ -8,38 +8,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M46897_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M46897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test byte ptr [(reloc)], 1 ; global ptr - je SHORT G_M46897_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M46897_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M46897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rcx, gword ptr [rcx] ; gcrRegs +[rcx] cmp dword ptr [rcx], ecx ;; size=15 bbWeight=1 PerfScore 5.25
-G_M46897_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M46897_IG03: ; bbWeight=1, epilog, nogc, extend
tail.jmp [System.Threading.PortableThreadPool:RequestWorker():this] ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 2.25 -G_M46897_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E - mov edx, 985 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M46897_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 60 (MethodHash=8a4148ce) for method System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
+; Total bytes of code 21, prolog size 0, PerfScore 7.25, instruction count 4, allocated bytes for code 21 (MethodHash=8a4148ce) for method System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
; ============================================================ Unwind Info: @@ -47,9 +33,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+4 (+2.96%) : 3667.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
@@ -8,15 +8,15 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
; V02 arg1 [V02,T04] ( 4, 3 ) int -> rdi single-def ; V03 arg2 [V03,T03] ( 4, 3 ) ref -> rsi class-hnd single-def <System.__Canon>
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; 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,T06] ( 2, 4 ) long -> rcx "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) long -> rcx "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable" ; @@ -46,17 +46,17 @@ G_M46648_IG03: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ;; size=5 bbWeight=0.80 PerfScore 1.80 G_M46648_IG04: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov rcx, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M46648_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rbx ; gcrRegs +[rdx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M46648_IG08 ;; size=13 bbWeight=1 PerfScore 2.50 G_M46648_IG06: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref @@ -77,15 +77,15 @@ G_M46648_IG07: ; bbWeight=0.50, epilog, nogc, extend pop rdi tail.jmp [rax+0x28]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx r8] +[rbx] - mov rcx, rbx
+G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx r8] + xor rcx, rcx
; gcrRegs +[rcx] mov edx, edi
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -94,7 +94,7 @@ G_M46648_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=28 bbWeight=0.50 PerfScore 6.00
+ ;; size=32 bbWeight=0.50 PerfScore 6.00
G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend add rsp, 48 pop rbx @@ -103,7 +103,7 @@ G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 135, prolog size 21, PerfScore 26.98, instruction count 45, allocated bytes for code 135 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 139, prolog size 21, PerfScore 26.98, instruction count 45, allocated bytes for code 139 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

+3 (+3.19%) : 2354.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> rdx class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 32 @@ -25,50 +25,50 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax - je SHORT G_M19732_IG05 - ;; size=23 bbWeight=1 PerfScore 2.75 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - mov rcx, rax - ; gcrRegs +[rcx] - mov rdx, rbx
+ mov rdx, rax
; gcrRegs +[rdx]
- mov rax, qword ptr [rax]
+ test rbx, rbx + je SHORT G_M19732_IG05 + ;; size=26 bbWeight=1 PerfScore 3.00 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, rbx + ; gcrRegs +[rcx] + mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x98]
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx tail.jmp [rax+0x10]<unknown method> ;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx rdx] - mov rcx, rbx
+G_M19732_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx rdx rbx] + xor rcx, rcx
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x50] call [rax+0x30]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx]
- mov rdx, rbx
+ xor rdx, rdx
; gcrRegs +[rdx] mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x98]
- ;; size=29 bbWeight=0.50 PerfScore 5.88
+ ;; size=32 bbWeight=0.50 PerfScore 5.88
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx tail.jmp [rax+0x10]<unknown method> ;; size=9 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 94, prolog size 8, PerfScore 15.12, instruction count 26, allocated bytes for code 94 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 97, prolog size 8, PerfScore 15.25, instruction count 26, allocated bytes for code 97 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info:

+4 (+3.92%) : 3629.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T01] ( 4, 3 ) int -> rsi single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> rax class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 3, 2 ) int -> rdi single-def "field V01.idx (fldOffset=0x0)" P-INDEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
; ; Lcl frame size = 32 @@ -32,10 +32,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- test rax, rax
+ test rbx, rbx
je SHORT G_M49388_IG05 ;; size=23 bbWeight=1 PerfScore 2.75 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref @@ -55,15 +55,15 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rdi tail.jmp [rax+0x28]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx] +[rbx] - mov rcx, rbx
+G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + xor rcx, rcx
; gcrRegs +[rcx] mov edx, edi
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [0x0000]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -71,7 +71,7 @@ G_M49388_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rax, qword ptr [rax] ; gcrRegs -[rax] mov rax, qword ptr [rax+0x48]
- ;; size=27 bbWeight=0.50 PerfScore 6.00
+ ;; size=31 bbWeight=0.50 PerfScore 6.00
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx @@ -80,7 +80,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 102, prolog size 15, PerfScore 18.88, instruction count 36, allocated bytes for code 102 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 106, prolog size 15, PerfScore 18.88, instruction count 36, allocated bytes for code 106 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.windows.x64.checked.mch

-23 (-56.10%) : 11613.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)

@@ -15,29 +15,20 @@ G_M47143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M47143_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M47143_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M47143_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M47143_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M47143_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M47143_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 41, prolog size 4, PerfScore 10.00, instruction count 10, allocated bytes for code 41 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
+; Total bytes of code 18, prolog size 4, PerfScore 4.50, instruction count 5, allocated bytes for code 18 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
; ============================================================ Unwind Info:

-23 (-56.10%) : 4570.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)

@@ -16,29 +16,20 @@ G_M28146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M28146_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M28146_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M28146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M28146_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M28146_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M28146_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M28146_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 41, prolog size 4, PerfScore 10.00, instruction count 10, allocated bytes for code 41 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
+; Total bytes of code 18, prolog size 4, PerfScore 4.50, instruction count 5, allocated bytes for code 18 (MethodHash=6de6920d) for method Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
; ============================================================ Unwind Info:

-23 (-56.10%) : 6386.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)

@@ -16,29 +16,20 @@ G_M47143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea rax, [(reloc)] - cmp qword ptr [rax-0x08], 0 - jne SHORT G_M47143_IG05 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M47143_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, qword ptr [(reloc)]
+G_M47143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0
mov rax, gword ptr [rax+0x08] ; gcrRegs +[rax]
- ;; size=11 bbWeight=1 PerfScore 4.00 -G_M47143_IG04: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[rax] + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M47143_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M47143_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp SHORT G_M47143_IG03 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 41, prolog size 4, PerfScore 10.00, instruction count 10, allocated bytes for code 41 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
+; Total bytes of code 18, prolog size 4, PerfScore 4.50, instruction count 5, allocated bytes for code 18 (MethodHash=9ea447d8) for method Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
; ============================================================ Unwind Info:

-27 (-3.10%) : 12016.dasm - System.DateTimeFormat:TryFormatInvariantGushort:ubyte (FullOpts)

@@ -210,13 +210,12 @@ G_M22798_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; byrRegs -[rbx] ; gcr arg pop 0 ;; size=187 bbWeight=0.50 PerfScore 18.00
-G_M22798_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rcx, [(reloc)] - cmp qword ptr [rcx-0x08], 0 - jne G_M22798_IG18 - ;; size=18 bbWeight=0.50 PerfScore 2.25 -G_M22798_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r13, qword ptr [(reloc)]
+G_M22798_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE + ; byrRegs +[rax] + ; gcr arg pop 0 + mov r13, rax + ; byrRegs +[r13]
mov rcx, gword ptr [r13+0x38] ; gcrRegs +[rcx] cmp byte ptr [rcx], cl @@ -228,17 +227,17 @@ G_M22798_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov word ptr [rbx+0x04], 47 mov r15d, dword ptr [rsp+0x30] cmp r15d, 99
- jbe SHORT G_M22798_IG08
+ jbe SHORT G_M22798_IG07
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] ; gcrRegs +[rdx] call <unknown method> ; gcrRegs -[rcx rdx]
- ; byrRegs +[r13]
+ ; byrRegs -[rax]
; gcr arg pop 0
- ;; size=62 bbWeight=0.50 PerfScore 8.00 -G_M22798_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+ ;; size=63 bbWeight=0.50 PerfScore 7.62 +G_M22798_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
lea rcx, [rbx+0x06] mov rdx, gword ptr [r13+0x38] ; gcrRegs +[rdx] @@ -252,7 +251,7 @@ G_M22798_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov r15d, dword ptr [rsp+0x40] lea r12, [rbx+0x0C] cmp r15d, 0x270F
- jbe SHORT G_M22798_IG09
+ jbe SHORT G_M22798_IG08
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -261,7 +260,7 @@ G_M22798_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=66 bbWeight=0.50 PerfScore 7.50
-G_M22798_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov ecx, r15d imul rcx, rcx, 0xD1FFAB1E shr rcx, 37 @@ -282,7 +281,7 @@ G_M22798_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov dword ptr [r12+0x04], ecx mov word ptr [rbx+0x14], 32 cmp r14d, 99
- jbe SHORT G_M22798_IG10
+ jbe SHORT G_M22798_IG09
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -292,7 +291,7 @@ G_M22798_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=86 bbWeight=0.50 PerfScore 10.88
-G_M22798_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
lea rcx, [rbx+0x16] mov rdx, gword ptr [r13+0x38] ; gcrRegs +[rdx] @@ -304,7 +303,7 @@ G_M22798_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov dword ptr [rcx], edx mov word ptr [rbx+0x1A], 58 cmp ebp, 99
- jbe SHORT G_M22798_IG11
+ jbe SHORT G_M22798_IG10
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -313,7 +312,7 @@ G_M22798_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=53 bbWeight=0.50 PerfScore 6.75
-G_M22798_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
lea rcx, [rbx+0x1C] mov rdx, gword ptr [r13+0x38] ; gcrRegs +[rdx] @@ -325,7 +324,7 @@ G_M22798_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov dword ptr [rcx], edx mov word ptr [rbx+0x20], 58 cmp edi, 99
- jbe SHORT G_M22798_IG12
+ jbe SHORT G_M22798_IG11
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -334,7 +333,7 @@ G_M22798_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=51 bbWeight=0.50 PerfScore 6.75
-G_M22798_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
lea rax, [rbx+0x22] mov rdx, gword ptr [r13+0x38] ; gcrRegs +[rdx] @@ -346,7 +345,7 @@ G_M22798_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov dword ptr [rax], edx mov rax, 0xD1FFAB1E cmp rsi, rax
- je G_M22798_IG16
+ je G_M22798_IG15
mov rdx, 0xD1FFAB1E mov rax, rdx imul rdx:rax, rsi @@ -356,11 +355,11 @@ G_M22798_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, add rsi, rdx mov ecx, 43 test esi, esi
- jge SHORT G_M22798_IG13
+ jge SHORT G_M22798_IG12
mov ecx, 45 neg esi ;; size=86 bbWeight=0.50 PerfScore 8.88
-G_M22798_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov edx, 0xD1FFAB1E mov eax, edx imul edx:eax, esi @@ -374,7 +373,7 @@ G_M22798_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov word ptr [rbx+0x26], 32 mov word ptr [rbx+0x28], cx cmp edi, 99
- jbe SHORT G_M22798_IG14
+ jbe SHORT G_M22798_IG13
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -383,7 +382,7 @@ G_M22798_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=60 bbWeight=0.50 PerfScore 6.38
-G_M22798_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M22798_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
lea rcx, [rbx+0x2A] mov rdx, gword ptr [r13+0x38] ; gcrRegs +[rdx] @@ -395,7 +394,7 @@ G_M22798_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov dword ptr [rcx], edx mov word ptr [rbx+0x2E], 58 cmp esi, 99
- jbe SHORT G_M22798_IG15
+ jbe SHORT G_M22798_IG14
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -404,7 +403,7 @@ G_M22798_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=51 bbWeight=0.50 PerfScore 6.75
-G_M22798_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M22798_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
add rbx, 48 mov rax, gword ptr [r13+0x38] ; gcrRegs +[rax] @@ -415,13 +414,13 @@ G_M22798_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; gcrRegs -[rax] mov dword ptr [rbx], eax ;; size=21 bbWeight=0.50 PerfScore 4.50
-G_M22798_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22798_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13] xor eax, eax mov bword ptr [rsp+0x28], rax mov eax, 1 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M22798_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M22798_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72 pop rbx pop rbp @@ -433,14 +432,8 @@ G_M22798_IG17: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M22798_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - call CORINFO_HELP_READYTORUN_GCSTATIC_BASE - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp G_M22798_IG07 - ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 870, prolog size 23, PerfScore 109.50, instruction count 227, allocated bytes for code 870 (MethodHash=ef1aa6f1) for method System.DateTimeFormat:TryFormatInvariantG[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 843, prolog size 23, PerfScore 106.88, instruction count 223, allocated bytes for code 843 (MethodHash=ef1aa6f1) for method System.DateTimeFormat:TryFormatInvariantG[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================ Unwind Info:

-24 (-2.18%) : 2650.dasm - System.Globalization.InvariantModeCasing:IndexOfIgnoreCase(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):int (FullOpts)

@@ -9,13 +9,13 @@ ; ; V00 arg0 [V00,T27] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T28] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T34] ( 5, 4.50) long -> rdi
+; V02 loc0 [V02,T33] ( 5, 4.50) long -> rdi
; V03 loc1 [V03 ] ( 1, 1 ) byref -> [rsp+0x50] must-init pinned single-def ; V04 loc2 [V04,T29] ( 4, 10 ) long -> rbx ; V05 loc3 [V05 ] ( 1, 1 ) byref -> [rsp+0x48] must-init pinned single-def
-; V06 loc4 [V06,T31] ( 3, 6 ) long -> r14
+; V06 loc4 [V06,T31] ( 3, 6 ) long -> rbp
; V07 loc5 [V07,T12] ( 5, 33 ) long -> rsi
-; V08 loc6 [V08,T22] ( 6, 17.50) long -> rbp
+; V08 loc6 [V08,T22] ( 6, 17.50) long -> r14
; V09 loc7 [V09,T00] ( 12,104 ) long -> r15 ; V10 loc8 [V10,T01] ( 11, 84 ) long -> r13 ; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -94,10 +94,10 @@ ;* V84 tmp73 [V84 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V87 tmp76 [V87,T37] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V88 tmp77 [V88,T39] ( 3, 3 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP -; V89 tmp78 [V89,T38] ( 3, 3 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V90 tmp79 [V90,T33] ( 5, 5 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
+; V87 tmp76 [V87,T36] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V88 tmp77 [V88,T38] ( 3, 3 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP +; V89 tmp78 [V89,T37] ( 3, 3 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V90 tmp79 [V90,T32] ( 5, 5 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
;* V91 tmp80 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp81 [V92 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V93 tmp82 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP @@ -128,14 +128,13 @@ ;* V118 tmp107 [V118 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP ;* V119 tmp108 [V119 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ;* V120 tmp109 [V120 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V121 tmp110 [V121,T35] ( 2, 4 ) long -> rdi "Cast away GC" -; V122 tmp111 [V122,T36] ( 2, 4 ) long -> rbx "Cast away GC"
+; V121 tmp110 [V121,T34] ( 2, 4 ) long -> rdi "Cast away GC" +; V122 tmp111 [V122,T35] ( 2, 4 ) long -> rbx "Cast away GC"
; V123 cse0 [V123,T20] ( 3, 24 ) int -> r8 "CSE - moderate" ; V124 cse1 [V124,T21] ( 3, 24 ) int -> r10 "CSE - moderate" ; V125 cse2 [V125,T04] ( 6, 64 ) int -> r12 "CSE - aggressive" ; V126 cse3 [V126,T09] ( 6, 48 ) int -> rax multi-def "CSE - aggressive"
-; V127 rat0 [V127,T32] ( 3, 6 ) long -> r14 "fgMakeTemp is creating a new local variable" -; V128 rat1 [V128,T40] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V127 rat0 [V127,T39] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 88 @@ -187,16 +186,15 @@ G_M10941_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref - lea r14, [(reloc)] - cmp qword ptr [r14-0x08], 0 - jne G_M10941_IG32 - ;; size=18 bbWeight=1 PerfScore 4.50 -G_M10941_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz - cmp byte ptr [r14], 0 - jne SHORT G_M10941_IG09 - ;; size=6 bbWeight=1 PerfScore 4.00 -G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[rax] + ; gcr arg pop 0 + cmp byte ptr [rax], 0 + jne SHORT G_M10941_IG08 + ;; size=10 bbWeight=1 PerfScore 5.00 +G_M10941_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref + ; byrRegs -[rax]
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -205,39 +203,39 @@ G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M10941_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
mov bword ptr [rsp+0x50], rdi mov bword ptr [rsp+0x48], rbx sub ebp, esi movsxd rcx, ebp
- lea r14, [rdi+2*rcx]
+ lea rbp, [rdi+2*rcx]
mov ecx, esi lea rsi, [rbx+2*rcx-0x02]
- mov rbp, rdi - cmp rdi, r14 - ja G_M10941_IG28
+ mov r14, rdi + cmp rdi, rbp + ja G_M10941_IG27
;; size=38 bbWeight=1 PerfScore 5.75
-G_M10941_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi] mov r15, rbx
- mov r13, rbp
+ mov r13, r14
cmp rbx, rsi
- ja G_M10941_IG27
+ ja G_M10941_IG26
;; size=15 bbWeight=4 PerfScore 7.00
-G_M10941_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG10: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, word ptr [r15] lea ecx, [r12-0xD800] cmp ecx, 0x3FF
- ja SHORT G_M10941_IG13
+ ja SHORT G_M10941_IG12
;; size=20 bbWeight=16 PerfScore 60.00
-G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r15, rsi
- jne SHORT G_M10941_IG15
+ jne SHORT G_M10941_IG14
;; size=5 bbWeight=8 PerfScore 10.00
-G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rax, word ptr [r13] cmp r12d, eax
- je SHORT G_M10941_IG14
+ je SHORT G_M10941_IG13
mov ecx, r12d call <unknown method> ; gcr arg pop 0 @@ -259,32 +257,32 @@ G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add ecx, dword ptr [rsp+0x44] movzx rcx, cx cmp ecx, r12d
- jne G_M10941_IG27
+ jne G_M10941_IG26
;; size=81 bbWeight=8 PerfScore 174.00
-G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r15, 2 add r13, 2
- jmp G_M10941_IG26
+ jmp G_M10941_IG25
;; size=13 bbWeight=8 PerfScore 20.00
-G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, word ptr [r13] lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
movzx r8, word ptr [r13+0x02] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
movzx r10, word ptr [r15+0x02] lea ecx, [r10-0xDC00] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
mov dword ptr [rsp+0x40], eax mov dword ptr [rsp+0x3C], r8d mov dword ptr [rsp+0x30], r10d lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- jbe G_M10941_IG24
+ jbe G_M10941_IG23
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -294,11 +292,11 @@ G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov eax, dword ptr [rsp+0x40] ;; size=126 bbWeight=8 PerfScore 152.00
-G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rsp+0x3C] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
- jbe SHORT G_M10941_IG17
+ jbe SHORT G_M10941_IG16
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -308,7 +306,7 @@ G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov eax, dword ptr [rsp+0x40] ;; size=43 bbWeight=8 PerfScore 46.00
-G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ecx, eax call System.Text.UnicodeDebug:AssertIsHighSurrogateCodePoint(uint) ; gcr arg pop 0 @@ -321,7 +319,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, lea eax, [rcx+rax+D1FFAB1EH] mov dword ptr [rsp+0x24], eax cmp eax, 0xD1FFAB1E
- ja G_M10941_IG33
+ ja G_M10941_IG31
mov ecx, eax call <unknown method> ; gcr arg pop 0 @@ -349,7 +347,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov dword ptr [rsp+0x34], r8d lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- jbe SHORT G_M10941_IG18
+ jbe SHORT G_M10941_IG17
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -358,10 +356,22 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=168 bbWeight=8 PerfScore 206.00
-G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rsp+0x34] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
+ jbe SHORT G_M10941_IG18 + lea rcx, gword ptr [(reloc)] + ; gcrRegs +[rcx] + lea rdx, gword ptr [(reloc)] + ; gcrRegs +[rdx] + call <unknown method> + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=39 bbWeight=8 PerfScore 38.00 +G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lea ecx, [r12-0xD800] + cmp ecx, 0x3FF
jbe SHORT G_M10941_IG19 lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] @@ -370,9 +380,10 @@ G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call <unknown method> ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=39 bbWeight=8 PerfScore 38.00
+ ;; size=35 bbWeight=8 PerfScore 30.00
G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea ecx, [r12-0xD800]
+ mov r10d, dword ptr [rsp+0x30] + lea ecx, [r10-0xDC00]
cmp ecx, 0x3FF jbe SHORT G_M10941_IG20 lea rcx, gword ptr [(reloc)] @@ -381,22 +392,9 @@ G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ...

-24 (-2.18%) : 8611.dasm - System.Globalization.InvariantModeCasing:IndexOfIgnoreCase(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):int (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 arg0 [V00,T27] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T28] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T34] ( 5, 4.50) long -> rdi
+; V02 loc0 [V02,T33] ( 5, 4.50) long -> rdi
; V03 loc1 [V03 ] ( 1, 1 ) byref -> [rsp+0x50] must-init pinned single-def ; V04 loc2 [V04,T29] ( 4, 10 ) long -> rbx ; V05 loc3 [V05 ] ( 1, 1 ) byref -> [rsp+0x48] must-init pinned single-def
-; V06 loc4 [V06,T31] ( 3, 6 ) long -> r14
+; V06 loc4 [V06,T31] ( 3, 6 ) long -> rbp
; V07 loc5 [V07,T12] ( 5, 33 ) long -> rsi
-; V08 loc6 [V08,T22] ( 6, 17.50) long -> rbp
+; V08 loc6 [V08,T22] ( 6, 17.50) long -> r14
; V09 loc7 [V09,T00] ( 12,104 ) long -> r15 ; V10 loc8 [V10,T01] ( 11, 84 ) long -> r13 ; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -95,10 +95,10 @@ ;* V84 tmp73 [V84 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V85 tmp74 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V87 tmp76 [V87,T37] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V88 tmp77 [V88,T39] ( 3, 3 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP -; V89 tmp78 [V89,T38] ( 3, 3 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V90 tmp79 [V90,T33] ( 5, 5 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
+; V87 tmp76 [V87,T36] ( 3, 3 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V88 tmp77 [V88,T38] ( 3, 3 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP +; V89 tmp78 [V89,T37] ( 3, 3 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V90 tmp79 [V90,T32] ( 5, 5 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
;* V91 tmp80 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp81 [V92 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V93 tmp82 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP @@ -129,14 +129,13 @@ ;* V118 tmp107 [V118 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP ;* V119 tmp108 [V119 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ;* V120 tmp109 [V120 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V121 tmp110 [V121,T35] ( 2, 4 ) long -> rdi "Cast away GC" -; V122 tmp111 [V122,T36] ( 2, 4 ) long -> rbx "Cast away GC"
+; V121 tmp110 [V121,T34] ( 2, 4 ) long -> rdi "Cast away GC" +; V122 tmp111 [V122,T35] ( 2, 4 ) long -> rbx "Cast away GC"
; V123 cse0 [V123,T20] ( 3, 24 ) int -> r8 "CSE - moderate" ; V124 cse1 [V124,T21] ( 3, 24 ) int -> r10 "CSE - moderate" ; V125 cse2 [V125,T04] ( 6, 64 ) int -> r12 "CSE - aggressive" ; V126 cse3 [V126,T09] ( 6, 48 ) int -> rax multi-def "CSE - aggressive"
-; V127 rat0 [V127,T32] ( 3, 6 ) long -> r14 "fgMakeTemp is creating a new local variable" -; V128 rat1 [V128,T40] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V127 rat0 [V127,T39] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 88 @@ -188,16 +187,15 @@ G_M10941_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref - lea r14, [(reloc)] - cmp qword ptr [r14-0x08], 0 - jne G_M10941_IG32 - ;; size=18 bbWeight=1 PerfScore 4.50 -G_M10941_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz - cmp byte ptr [r14], 0 - jne SHORT G_M10941_IG09 - ;; size=6 bbWeight=1 PerfScore 4.00 -G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M10941_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz + call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[rax] + ; gcr arg pop 0 + cmp byte ptr [rax], 0 + jne SHORT G_M10941_IG08 + ;; size=10 bbWeight=1 PerfScore 5.00 +G_M10941_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref + ; byrRegs -[rax]
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -206,39 +204,39 @@ G_M10941_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M10941_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M10941_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
mov bword ptr [rsp+0x50], rdi mov bword ptr [rsp+0x48], rbx sub ebp, esi movsxd rcx, ebp
- lea r14, [rdi+2*rcx]
+ lea rbp, [rdi+2*rcx]
mov ecx, esi lea rsi, [rbx+2*rcx-0x02]
- mov rbp, rdi - cmp rdi, r14 - ja G_M10941_IG28
+ mov r14, rdi + cmp rdi, rbp + ja G_M10941_IG27
;; size=38 bbWeight=1 PerfScore 5.75
-G_M10941_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi] mov r15, rbx
- mov r13, rbp
+ mov r13, r14
cmp rbx, rsi
- ja G_M10941_IG27
+ ja G_M10941_IG26
;; size=15 bbWeight=4 PerfScore 7.00
-G_M10941_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG10: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, word ptr [r15] lea ecx, [r12-0xD800] cmp ecx, 0x3FF
- ja SHORT G_M10941_IG13
+ ja SHORT G_M10941_IG12
;; size=20 bbWeight=16 PerfScore 60.00
-G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r15, rsi
- jne SHORT G_M10941_IG15
+ jne SHORT G_M10941_IG14
;; size=5 bbWeight=8 PerfScore 10.00
-G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG12: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rax, word ptr [r13] cmp r12d, eax
- je SHORT G_M10941_IG14
+ je SHORT G_M10941_IG13
mov ecx, r12d call <unknown method> ; gcr arg pop 0 @@ -260,32 +258,32 @@ G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add ecx, dword ptr [rsp+0x44] movzx rcx, cx cmp ecx, r12d
- jne G_M10941_IG27
+ jne G_M10941_IG26
;; size=81 bbWeight=8 PerfScore 174.00
-G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r15, 2 add r13, 2
- jmp G_M10941_IG26
+ jmp G_M10941_IG25
;; size=13 bbWeight=8 PerfScore 20.00
-G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10941_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, word ptr [r13] lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
movzx r8, word ptr [r13+0x02] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
movzx r10, word ptr [r15+0x02] lea ecx, [r10-0xDC00] cmp ecx, 0x3FF
- ja G_M10941_IG25
+ ja G_M10941_IG24
mov dword ptr [rsp+0x40], eax mov dword ptr [rsp+0x3C], r8d mov dword ptr [rsp+0x30], r10d lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- jbe G_M10941_IG24
+ jbe G_M10941_IG23
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -295,11 +293,11 @@ G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov eax, dword ptr [rsp+0x40] ;; size=126 bbWeight=8 PerfScore 152.00
-G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rsp+0x3C] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
- jbe SHORT G_M10941_IG17
+ jbe SHORT G_M10941_IG16
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -309,7 +307,7 @@ G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov eax, dword ptr [rsp+0x40] ;; size=43 bbWeight=8 PerfScore 46.00
-G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ecx, eax call System.Text.UnicodeDebug:AssertIsHighSurrogateCodePoint(uint) ; gcr arg pop 0 @@ -322,7 +320,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, lea eax, [rcx+rax+D1FFAB1EH] mov dword ptr [rsp+0x24], eax cmp eax, 0xD1FFAB1E
- ja G_M10941_IG33
+ ja G_M10941_IG31
mov ecx, eax call <unknown method> ; gcr arg pop 0 @@ -350,7 +348,7 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov dword ptr [rsp+0x34], r8d lea ecx, [rax-0xD800] cmp ecx, 0x3FF
- jbe SHORT G_M10941_IG18
+ jbe SHORT G_M10941_IG17
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -359,10 +357,22 @@ G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=168 bbWeight=8 PerfScore 206.00
-G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M10941_IG17: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rsp+0x34] lea ecx, [r8-0xDC00] cmp ecx, 0x3FF
+ jbe SHORT G_M10941_IG18 + lea rcx, gword ptr [(reloc)] + ; gcrRegs +[rcx] + lea rdx, gword ptr [(reloc)] + ; gcrRegs +[rdx] + call <unknown method> + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=39 bbWeight=8 PerfScore 38.00 +G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lea ecx, [r12-0xD800] + cmp ecx, 0x3FF
jbe SHORT G_M10941_IG19 lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] @@ -371,9 +381,10 @@ G_M10941_IG18: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call <unknown method> ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=39 bbWeight=8 PerfScore 38.00
+ ;; size=35 bbWeight=8 PerfScore 30.00
G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea ecx, [r12-0xD800]
+ mov r10d, dword ptr [rsp+0x30] + lea ecx, [r10-0xDC00]
cmp ecx, 0x3FF jbe SHORT G_M10941_IG20 lea rcx, gword ptr [(reloc)] @@ -382,22 +393,9 @@ G_M10941_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 178 175 0 3 -8,573 +0
benchmarks.run.windows.x64.checked.mch 43 39 1 3 -3,468 +6
benchmarks.run_pgo.windows.x64.checked.mch 139 134 0 5 -6,482 +0
benchmarks.run_tiered.windows.x64.checked.mch 176 173 0 3 -9,407 +0
coreclr_tests.run.windows.x64.checked.mch 11 11 0 0 -514 +0
libraries.crossgen2.windows.x64.checked.mch 10 6 2 2 -63 +2
libraries.pmi.windows.x64.checked.mch 682 631 49 2 -26,410 +196
libraries_tests.run.windows.x64.Release.mch 87 85 2 0 -2,571 +32
librariestestsnotieredcompilation.run.windows.x64.Release.mch 73 73 0 0 -3,732 +0
realworld.run.windows.x64.checked.mch 85 79 5 1 -10,947 +19
smoke_tests.nativeaot.windows.x64.checked.mch 314 314 0 0 -10,592 +0
1,798 1,720 59 19 -82,759 +255

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 5,875 4,005 1,870 0 (0.00%) 4,769 (43.20%)
benchmarks.run.windows.x64.checked.mch 917 1 916 0 (0.00%) 1,177 (47.27%)
benchmarks.run_pgo.windows.x64.checked.mch 8,531 7,017 1,514 0 (0.00%) 5,906 (39.82%)
benchmarks.run_tiered.windows.x64.checked.mch 8,164 7,053 1,111 0 (0.00%) 4,895 (36.38%)
coreclr_tests.run.windows.x64.checked.mch 312 3 309 0 (0.00%) 870 (55.13%)
libraries.crossgen2.windows.x64.checked.mch 97,270 11 97,259 0 (0.00%) 86,292 (46.91%)
libraries.pmi.windows.x64.checked.mch 2,546 0 2,546 0 (0.00%) 1,380 (31.93%)
libraries_tests.run.windows.x64.Release.mch 3,957 3,371 586 0 (0.00%) 3,972 (47.71%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 851 0 851 0 (0.00%) 1,395 (52.80%)
realworld.run.windows.x64.checked.mch 1,764 0 1,764 1 (0.02%) 3,120 (59.09%)
smoke_tests.nativeaot.windows.x64.checked.mch 5,490 3 5,487 0 (0.00%) 7,045 (54.48%)
135,677 21,464 114,213 1 (0.00%) 120,821 (46.32%)

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: 514620 (overridden on cmd)
Total bytes of diff: 506047 (overridden on cmd)
Total bytes of delta: -8573 (-1.67 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -370 : 10996.dasm (-33.64 % of base)
        -215 : 1054.dasm (-65.35 % of base)
        -194 : 10141.dasm (-62.99 % of base)
        -194 : 9458.dasm (-62.99 % of base)
        -192 : 7737.dasm (-62.34 % of base)
        -192 : 9861.dasm (-62.34 % of base)
        -176 : 10174.dasm (-76.19 % of base)
        -176 : 978.dasm (-76.19 % of base)
        -176 : 9843.dasm (-76.19 % of base)
        -176 : 7763.dasm (-76.19 % of base)
        -176 : 9414.dasm (-76.19 % of base)
        -164 : 9021.dasm (-74.89 % of base)
        -159 : 1053.dasm (-74.30 % of base)
        -155 : 9855.dasm (-73.81 % of base)
        -155 : 8980.dasm (-73.81 % of base)
        -154 : 10140.dasm (-73.68 % of base)
        -154 : 7740.dasm (-73.68 % of base)
        -154 : 9459.dasm (-73.68 % of base)
        -106 : 4461.dasm (-63.10 % of base)
        -106 : 4462.dasm (-63.10 % of base)

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

Top method improvements (bytes):
        -370 (-33.64 % of base) : 10996.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
        -215 (-65.35 % of base) : 1054.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_Result():Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult:this (Tier1)
        -194 (-62.99 % of base) : 10141.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_Result():Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult:this (Tier1)
        -194 (-62.99 % of base) : 9458.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_Result():Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult:this (Tier1)
        -192 (-62.34 % of base) : 7737.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_Result():Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult:this (Tier1)
        -192 (-62.34 % of base) : 9861.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_Result():Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult:this (Tier1)
        -176 (-76.19 % of base) : 10174.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 978.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 9843.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 7763.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 9414.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -164 (-74.89 % of base) : 9021.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -159 (-74.30 % of base) : 1053.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -155 (-73.81 % of base) : 9855.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -155 (-73.81 % of base) : 8980.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 10140.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 7740.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 9459.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -106 (-63.10 % of base) : 4462.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 4461.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)

Top method improvements (percentages):
        -176 (-76.19 % of base) : 10174.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 978.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 9843.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 7763.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -176 (-76.19 % of base) : 9414.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -164 (-74.89 % of base) : 9021.dasm - System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:get_IsCompleted():ubyte:this (Tier1)
        -159 (-74.30 % of base) : 1053.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -155 (-73.81 % of base) : 9855.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -155 (-73.81 % of base) : 8980.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 10140.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 7740.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
        -154 (-73.68 % of base) : 9459.dasm - System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketOperationResult]:get_IsCompleted():ubyte:this (Tier1)
         -30 (-69.77 % of base) : 4062.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -30 (-69.77 % of base) : 4856.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 1622.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 1849.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
         -30 (-69.77 % of base) : 2060.dasm - System.Globalization.GlobalizationMode:get_UseNls():ubyte (Tier0)
         -30 (-69.77 % of base) : 2045.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
         -30 (-69.77 % of base) : 2749.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -30 (-69.77 % of base) : 3551.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv6():ubyte (Tier0)


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: 125820 (overridden on cmd)
Total bytes of diff: 122358 (overridden on cmd)
Total bytes of delta: -3462 (-2.75 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 1570.dasm (3.24 % of base)

Top file improvements (bytes):
        -526 : 1957.dasm (-88.40 % of base)
        -486 : 555.dasm (-80.46 % of base)
        -440 : 2529.dasm (-68.75 % of base)
        -222 : 1255.dasm (-67.68 % of base)
        -217 : 9.dasm (-70.45 % of base)
        -168 : 2379.dasm (-9.31 % of base)
        -122 : 2553.dasm (-25.79 % of base)
        -105 : 845.dasm (-65.62 % of base)
        -100 : 588.dasm (-30.12 % of base)
         -76 : 1744.dasm (-20.32 % of base)
         -74 : 1536.dasm (-25.87 % of base)
         -72 : 233.dasm (-13.53 % of base)
         -55 : 951.dasm (-52.88 % of base)
         -47 : 871.dasm (-52.81 % of base)
         -47 : 870.dasm (-52.81 % of base)
         -44 : 1471.dasm (-53.01 % of base)
         -43 : 1361.dasm (-48.86 % of base)
         -42 : 877.dasm (-7.16 % of base)
         -41 : 1886.dasm (-38.68 % of base)
         -41 : 2089.dasm (-10.43 % of base)

39 total files with Code Size differences (38 improved, 1 regressed), 3 unchanged.

Top method regressions (bytes):
           6 (3.24 % of base) : 1570.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

Top method improvements (bytes):
        -526 (-88.40 % of base) : 1957.dasm - Newtonsoft.Json.Linq.JValue:GetValueType(System.Nullable`1[int],System.Object):int (FullOpts)
        -486 (-80.46 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -440 (-68.75 % of base) : 2529.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
        -222 (-67.68 % of base) : 1255.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -217 (-70.45 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -168 (-9.31 % of base) : 2379.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLogger:ToJson(System.Collections.Generic.IReadOnlyList`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]):System.String (FullOpts)
        -122 (-25.79 % of base) : 2553.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -105 (-65.62 % of base) : 845.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
        -100 (-30.12 % of base) : 588.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -76 (-20.32 % of base) : 1744.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[ubyte]():System.Text.Json.Serialization.JsonConverter`1[ubyte]:this (FullOpts)
         -74 (-25.87 % of base) : 1536.dasm - System.HashCode:Add(int):this (FullOpts)
         -72 (-13.53 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -55 (-52.88 % of base) : 951.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -47 (-52.81 % of base) : 871.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (FullOpts)
         -47 (-52.81 % of base) : 870.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
         -44 (-53.01 % of base) : 1471.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)
         -43 (-48.86 % of base) : 1361.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -42 (-7.16 % of base) : 877.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (FullOpts)
         -41 (-10.43 % of base) : 2089.dasm - Microsoft.Extensions.Logging.EventSourceLoggerFactoryExtensions:AddEventSourceLogger(Microsoft.Extensions.Logging.ILoggingBuilder):Microsoft.Extensions.Logging.ILoggingBuilder (FullOpts)
         -41 (-38.68 % of base) : 1886.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:GetCharEscapeFlags(int,ushort):ubyte[] (FullOpts)

Top method regressions (percentages):
           6 (3.24 % of base) : 1570.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
        -526 (-88.40 % of base) : 1957.dasm - Newtonsoft.Json.Linq.JValue:GetValueType(System.Nullable`1[int],System.Object):int (FullOpts)
        -486 (-80.46 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -217 (-70.45 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -440 (-68.75 % of base) : 2529.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
        -222 (-67.68 % of base) : 1255.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -105 (-65.62 % of base) : 845.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -36 (-56.25 % of base) : 1854.dasm - Newtonsoft.Json.JsonWriter:.ctor():this (FullOpts)
         -44 (-53.01 % of base) : 1471.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (FullOpts)
         -55 (-52.88 % of base) : 951.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -47 (-52.81 % of base) : 871.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (FullOpts)
         -47 (-52.81 % of base) : 870.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (FullOpts)
         -43 (-48.86 % of base) : 1361.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -41 (-38.68 % of base) : 1886.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:GetCharEscapeFlags(int,ushort):ubyte[] (FullOpts)
         -31 (-33.70 % of base) : 23.dasm - System.StartupHookProvider:ManagedStartup(ulong) (FullOpts)
        -100 (-30.12 % of base) : 588.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -31 (-29.52 % of base) : 2512.dasm - System.Threading.PortableThreadPool+GateThread:EnsureRunningSlow(System.Threading.PortableThreadPool) (FullOpts)
         -74 (-25.87 % of base) : 1536.dasm - System.HashCode:Add(int):this (FullOpts)
        -122 (-25.79 % of base) : 2553.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
         -13 (-25.00 % of base) : 1198.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -23 (-24.73 % of base) : 2174.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (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: 877224 (overridden on cmd)
Total bytes of diff: 870742 (overridden on cmd)
Total bytes of delta: -6482 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1933 : 14982.dasm (-35.60 % of base)
        -185 : 12625.dasm (-20.46 % of base)
        -123 : 4325.dasm (-12.65 % of base)
        -117 : 12577.dasm (-13.43 % of base)
        -106 : 2203.dasm (-63.10 % of base)
        -106 : 2204.dasm (-63.10 % of base)
         -90 : 4560.dasm (-50.00 % of base)
         -68 : 13910.dasm (-10.86 % of base)
         -67 : 14674.dasm (-7.03 % of base)
         -66 : 9744.dasm (-53.66 % of base)
         -65 : 10808.dasm (-39.16 % of base)
         -60 : 21.dasm (-32.43 % of base)
         -60 : 11783.dasm (-54.55 % of base)
         -58 : 11411.dasm (-35.15 % of base)
         -56 : 5933.dasm (-40.58 % of base)
         -54 : 5429.dasm (-21.34 % of base)
         -52 : 8470.dasm (-55.32 % of base)
         -46 : 5663.dasm (-31.51 % of base)
         -42 : 6115.dasm (-16.03 % of base)
         -41 : 5767.dasm (-6.08 % of base)

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

Top method improvements (bytes):
       -1933 (-35.60 % of base) : 14982.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -185 (-20.46 % of base) : 12625.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -123 (-12.65 % of base) : 4325.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:TryParseDateTimeIso(Newtonsoft.Json.Utilities.StringReference,int,byref):ubyte (Tier0)
        -117 (-13.43 % of base) : 12577.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -106 (-63.10 % of base) : 2204.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 2203.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -90 (-50.00 % of base) : 4560.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -68 (-10.86 % of base) : 13910.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConditionalExpression(System.Linq.Expressions.Expression,int):this (Tier0)
         -67 (-7.03 % of base) : 14674.dasm - System.Diagnostics.Tracing.ActivityTracker:OnStart(System.String,System.String,int,byref,byref,int,ubyte):this (Tier0)
         -66 (-53.66 % of base) : 9744.dasm - System.Xml.XmlUTF8NodeWriter:.ctor():this (Tier0)
         -65 (-39.16 % of base) : 10808.dasm - Microsoft.Extensions.Logging.ScopesOverheadBenchmark:NotFiltered():this (Tier0)
         -60 (-32.43 % of base) : 21.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -60 (-54.55 % of base) : 11783.dasm - System.Numerics.Tests.Perf_Vector2:AddFunctionBenchmark():System.Numerics.Vector2:this (Tier0)
         -58 (-35.15 % of base) : 11411.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
         -56 (-40.58 % of base) : 5933.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -54 (-21.34 % of base) : 5429.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -52 (-55.32 % of base) : 8470.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<>c:<Setup>b__11_9(int):System.AlignedMemory:this (Tier0)
         -46 (-31.51 % of base) : 5663.dasm - System.Threading.Thread+StartHelper:Run():this (Tier0)
         -42 (-16.03 % of base) : 6115.dasm - System.Net.Security.TlsFrameHelper:DecodeString(System.ReadOnlySpan`1[ubyte]):System.String (Tier0)
         -41 (-6.08 % of base) : 5767.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier0)

Top method improvements (percentages):
         -30 (-69.77 % of base) : 10543.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -30 (-69.77 % of base) : 15054.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 59.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 2183.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
         -30 (-69.77 % of base) : 422.dasm - System.Globalization.GlobalizationMode:get_UseNls():ubyte (Tier0)
         -30 (-69.77 % of base) : 373.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
         -30 (-69.77 % of base) : 1788.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -30 (-69.77 % of base) : 5256.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -30 (-69.77 % of base) : 1379.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 4377.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -30 (-69.77 % of base) : 4542.dasm - System.Text.Json.AppContextSwitchHelper:get_IsSourceGenReflectionFallbackEnabled():ubyte (Tier0)
         -30 (-69.77 % of base) : 4538.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -30 (-69.77 % of base) : 2158.dasm - System.Threading.Lock:get_ContentionCount():long (Tier0)
         -30 (-69.77 % of base) : 2165.dasm - System.Threading.ThreadPool:get_UseWindowsThreadPool():ubyte (Tier0)
         -30 (-63.83 % of base) : 9438.dasm - System.HashCode:MixEmptyState():uint (Tier0)
        -106 (-63.10 % of base) : 2204.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 2203.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -30 (-61.22 % of base) : 25.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -30 (-61.22 % of base) : 6489.dasm - System.Text.EncoderFallback:get_ReplacementFallback():System.Text.EncoderFallback (Tier0)
         -30 (-61.22 % of base) : 6484.dasm - System.Text.Encoding:get_ASCII():System.Text.Encoding (Tier0)


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: 758568 (overridden on cmd)
Total bytes of diff: 749161 (overridden on cmd)
Total bytes of delta: -9407 (-1.24 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1933 : 10610.dasm (-35.60 % of base)
        -486 : 2993.dasm (-80.46 % of base)
        -440 : 9832.dasm (-68.75 % of base)
        -185 : 5721.dasm (-20.46 % of base)
        -122 : 12514.dasm (-25.79 % of base)
        -122 : 9822.dasm (-25.79 % of base)
        -117 : 5673.dasm (-13.43 % of base)
        -110 : 9803.dasm (-31.34 % of base)
        -106 : 2176.dasm (-63.10 % of base)
        -106 : 2175.dasm (-63.10 % of base)
        -103 : 12511.dasm (-55.08 % of base)
        -103 : 9637.dasm (-55.08 % of base)
         -97 : 12510.dasm (-54.80 % of base)
         -97 : 9788.dasm (-54.80 % of base)
         -97 : 9816.dasm (-54.80 % of base)
         -94 : 9720.dasm (-50.27 % of base)
         -94 : 9846.dasm (-50.27 % of base)
         -94 : 9864.dasm (-50.27 % of base)
         -92 : 12533.dasm (-44.66 % of base)
         -92 : 12532.dasm (-44.23 % of base)

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

Top method improvements (bytes):
       -1933 (-35.60 % of base) : 10610.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate[System.Net.Http.Headers.KnownHeaders+StringAccessor](System.Net.Http.Headers.KnownHeaders+StringAccessor):System.Net.Http.Headers.KnownHeader (Tier0)
        -486 (-80.46 % of base) : 2993.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -440 (-68.75 % of base) : 9832.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
        -185 (-20.46 % of base) : 5721.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier0)
        -122 (-25.79 % of base) : 9822.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -122 (-25.79 % of base) : 12514.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -117 (-13.43 % of base) : 5673.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
        -110 (-31.34 % of base) : 9803.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -106 (-63.10 % of base) : 2176.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
        -106 (-63.10 % of base) : 2175.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
        -103 (-55.08 % of base) : 9637.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
        -103 (-55.08 % of base) : 12511.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -97 (-54.80 % of base) : 9788.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:get_IsCompleted():ubyte:this (Tier1)
         -97 (-54.80 % of base) : 9816.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:get_IsCompleted():ubyte:this (Tier1)
         -97 (-54.80 % of base) : 12510.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -94 (-50.27 % of base) : 9846.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:GetResult():this (Tier1)
         -94 (-50.27 % of base) : 9864.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:GetResult():this (Tier1)
         -94 (-50.27 % of base) : 9720.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -92 (-44.23 % of base) : 12532.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:GetResult():int:this (Tier1)
         -92 (-44.66 % of base) : 12533.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)

Top method improvements (percentages):
        -486 (-80.46 % of base) : 2993.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
         -30 (-71.43 % of base) : 10433.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
         -30 (-69.77 % of base) : 3601.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:get_DisableDynamicEngine():ubyte (Tier0)
         -30 (-69.77 % of base) : 10678.dasm - System.Diagnostics.Metrics.Meter:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 59.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 2539.dasm - System.Environment:get_IsWindows8OrAbove():ubyte (Tier0)
         -30 (-69.77 % of base) : 415.dasm - System.Globalization.GlobalizationMode:get_UseNls():ubyte (Tier0)
         -30 (-69.77 % of base) : 368.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier0)
         -30 (-69.77 % of base) : 1760.dasm - System.Marvin:get_DefaultSeed():ulong (Tier0)
         -30 (-69.77 % of base) : 10604.dasm - System.Net.Http.GlobalHttpSettings+DiagnosticsHandler:get_EnableActivityPropagation():ubyte (Tier0)
         -30 (-69.77 % of base) : 10324.dasm - System.Net.SocketProtocolSupportPal:get_OSSupportsIPv4():ubyte (Tier0)
         -30 (-69.77 % of base) : 1338.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 11908.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -30 (-69.77 % of base) : 3997.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -30 (-69.77 % of base) : 6866.dasm - System.Text.Json.AppContextSwitchHelper:get_IsSourceGenReflectionFallbackEnabled():ubyte (Tier0)
         -30 (-69.77 % of base) : 6862.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -30 (-69.77 % of base) : 2131.dasm - System.Threading.Lock:get_ContentionCount():long (Tier0)
         -30 (-69.77 % of base) : 2138.dasm - System.Threading.ThreadPool:get_UseWindowsThreadPool():ubyte (Tier0)
        -440 (-68.75 % of base) : 9832.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
        -106 (-63.10 % of base) : 2176.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)


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: 51809 (overridden on cmd)
Total bytes of diff: 51295 (overridden on cmd)
Total bytes of delta: -514 (-0.99 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -178 : 9.dasm (-81.65 % of base)
         -69 : 42.dasm (-29.87 % of base)
         -43 : 33.dasm (-63.24 % of base)
         -38 : 574.dasm (-9.64 % of base)
         -31 : 580.dasm (-36.47 % of base)
         -31 : 225.dasm (-59.62 % of base)
         -31 : 522.dasm (-68.89 % of base)
         -31 : 332.dasm (-31.96 % of base)
         -26 : 494.dasm (-6.90 % of base)
         -21 : 63.dasm (-29.17 % of base)
         -15 : 597.dasm (-25.86 % of base)

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

Top method improvements (bytes):
        -178 (-81.65 % of base) : 9.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -69 (-29.87 % of base) : 42.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -43 (-63.24 % of base) : 33.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -38 (-9.64 % of base) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -31 (-59.62 % of base) : 225.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -31 (-36.47 % of base) : 580.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -31 (-31.96 % of base) : 332.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -31 (-68.89 % of base) : 522.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -26 (-6.90 % of base) : 494.dasm - Program:TestEntryPoint():int (FullOpts)
         -21 (-29.17 % of base) : 63.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -15 (-25.86 % of base) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

Top method improvements (percentages):
        -178 (-81.65 % of base) : 9.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -31 (-68.89 % of base) : 522.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -43 (-63.24 % of base) : 33.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -31 (-59.62 % of base) : 225.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -31 (-36.47 % of base) : 580.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -31 (-31.96 % of base) : 332.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -69 (-29.87 % of base) : 42.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -21 (-29.17 % of base) : 63.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -15 (-25.86 % of base) : 597.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
         -38 (-9.64 % of base) : 574.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -26 (-6.90 % of base) : 494.dasm - Program:TestEntryPoint():int (FullOpts)

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


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: 6763269 (overridden on cmd)
Total bytes of diff: 6763208 (overridden on cmd)
Total bytes of delta: -61 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           1 : 3523.dasm (3.23 % of base)
           1 : 170656.dasm (3.23 % of base)

Top file improvements (bytes):
         -19 : 29747.dasm (-45.24 % of base)
         -18 : 29748.dasm (-40.00 % of base)
         -12 : 15565.dasm (-2.78 % of base)
          -7 : 153036.dasm (-3.98 % of base)
          -6 : 153501.dasm (-4.96 % of base)
          -1 : 153505.dasm (-1.72 % of base)

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

Top method regressions (bytes):
           1 (3.23 % of base) : 3523.dasm - <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
           1 (3.23 % of base) : 170656.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

Top method improvements (bytes):
         -19 (-45.24 % of base) : 29747.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
         -18 (-40.00 % of base) : 29748.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
         -12 (-2.78 % of base) : 15565.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -7 (-3.98 % of base) : 153036.dasm - System.Data.OleDb.PropertyIDSet:.ctor(System.Guid,int):this (FullOpts)
          -6 (-4.96 % of base) : 153501.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -1 (-1.72 % of base) : 153505.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method regressions (percentages):
           1 (3.23 % of base) : 3523.dasm - <StartupCode$FSharp-Core>.$Array:.cctor() (FullOpts)
           1 (3.23 % of base) : 170656.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)

Top method improvements (percentages):
         -19 (-45.24 % of base) : 29747.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
         -18 (-40.00 % of base) : 29748.dasm - System.Threading.PreAllocatedOverlapped:Release():this (FullOpts)
          -6 (-4.96 % of base) : 153501.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -7 (-3.98 % of base) : 153036.dasm - System.Data.OleDb.PropertyIDSet:.ctor(System.Guid,int):this (FullOpts)
         -12 (-2.78 % of base) : 15565.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -1 (-1.72 % of base) : 153505.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

8 total methods with Code Size differences (6 improved, 2 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: 104569 (overridden on cmd)
Total bytes of diff: 78355 (overridden on cmd)
Total bytes of delta: -26214 (-25.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 312.dasm (2.86 % of base)
           4 : 316.dasm (2.86 % of base)
           4 : 340.dasm (2.82 % of base)
           4 : 343.dasm (3.64 % of base)
           4 : 344.dasm (3.64 % of base)
           4 : 356.dasm (3.64 % of base)
           4 : 358.dasm (3.64 % of base)
           4 : 359.dasm (3.64 % of base)
           4 : 360.dasm (3.25 % of base)
           4 : 371.dasm (3.77 % of base)
           4 : 372.dasm (3.77 % of base)
           4 : 373.dasm (3.77 % of base)
           4 : 374.dasm (3.77 % of base)
           4 : 375.dasm (3.33 % of base)
           4 : 376.dasm (3.77 % of base)
           4 : 387.dasm (3.39 % of base)
           4 : 388.dasm (3.39 % of base)
           4 : 391.dasm (3.39 % of base)
           4 : 400.dasm (2.86 % of base)
           4 : 401.dasm (3.67 % of base)

Top file improvements (bytes):
        -156 : 3014.dasm (-36.62 % of base)
         -85 : 397.dasm (-35.86 % of base)
         -84 : 352.dasm (-36.36 % of base)
         -84 : 367.dasm (-36.36 % of base)
         -84 : 394.dasm (-36.21 % of base)
         -84 : 395.dasm (-36.21 % of base)
         -84 : 568.dasm (-50.00 % of base)
         -83 : 398.dasm (-36.24 % of base)
         -83 : 399.dasm (-36.24 % of base)
         -83 : 412.dasm (-36.24 % of base)
         -83 : 427.dasm (-36.24 % of base)
         -82 : 353.dasm (-37.27 % of base)
         -82 : 354.dasm (-37.27 % of base)
         -82 : 368.dasm (-37.27 % of base)
         -82 : 369.dasm (-37.27 % of base)
         -82 : 382.dasm (-36.44 % of base)
         -82 : 396.dasm (-35.96 % of base)
         -81 : 366.dasm (-36.99 % of base)
         -81 : 413.dasm (-37.16 % of base)
         -81 : 429.dasm (-37.16 % of base)

87 total files with Code Size differences (56 improved, 31 regressed), 2 unchanged.

Top method regressions (bytes):
           4 (3.39 % of base) : 388.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],double,System.Nullable`1[int]):int (FullOpts)
           4 (3.39 % of base) : 391.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],double,System.Nullable`1[int]):long (FullOpts)
           4 (3.39 % of base) : 387.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],double,System.Nullable`1[int]):short (FullOpts)
           4 (3.77 % of base) : 374.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],int,System.Nullable`1[int]):double (FullOpts)
           4 (3.77 % of base) : 373.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],int,System.Nullable`1[int]):int (FullOpts)
           4 (3.77 % of base) : 376.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
           4 (3.77 % of base) : 372.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
           4 (3.33 % of base) : 375.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.Numerics.Vector`1[float]]],int,System.Nullable`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           4 (3.77 % of base) : 371.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.67 % of base) : 419.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],long,System.Nullable`1[int]):double (FullOpts)
           4 (3.67 % of base) : 418.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
           4 (3.67 % of base) : 421.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
           4 (3.67 % of base) : 417.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],long,System.Nullable`1[int]):short (FullOpts)
           4 (2.86 % of base) : 415.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[long,System.__Canon],long,System.Nullable`1[int]):System.__Canon (FullOpts)
           4 (3.31 % of base) : 420.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.Numerics.Vector`1[float]]],long,System.Nullable`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           4 (3.67 % of base) : 416.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],long,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.64 % of base) : 359.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],short,System.Nullable`1[int]):double (FullOpts)
           4 (3.64 % of base) : 358.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],short,System.Nullable`1[int]):int (FullOpts)
           4 (3.25 % of base) : 360.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.Numerics.Vector`1[float]]],short,System.Nullable`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           4 (3.64 % of base) : 356.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],short,System.Nullable`1[int]):ubyte (FullOpts)

Top method improvements (bytes):
        -156 (-36.62 % of base) : 3014.dasm - Microsoft.FSharp.Linq.QueryModule:|ZeroOnElseBranch|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -85 (-35.86 % of base) : 397.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],double,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -84 (-36.21 % of base) : 395.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[short,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]]],double,System.Nullable`1[int],short):System.Nullable`1[int] (FullOpts)
         -84 (-36.21 % of base) : 394.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[ubyte,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]]],double,System.Nullable`1[int],ubyte):System.Nullable`1[int] (FullOpts)
         -84 (-36.36 % of base) : 367.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],short,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -84 (-36.36 % of base) : 352.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -84 (-50.00 % of base) : 568.dasm - Microsoft.FSharp.Core.FSharpResult`2[ubyte,System.Nullable`1[int]]:CompareTo(Microsoft.FSharp.Core.FSharpResult`2[ubyte,System.Nullable`1[int]]):int:this (FullOpts)
         -83 (-36.24 % of base) : 399.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],double,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -83 (-36.24 % of base) : 398.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],double,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -83 (-36.24 % of base) : 427.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],long,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -83 (-36.24 % of base) : 412.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -82 (-35.96 % of base) : 396.dasm - Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]:InvokeFast[int,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[double,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]]],double,System.Nullable`1[int],int):System.Nullable`1[int] (FullOpts)
         -82 (-36.44 % of base) : 382.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[double,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[double,System.Nullable`1[int]]]],int,System.Nullable`1[int],double):System.Nullable`1[int] (FullOpts)
         -82 (-37.27 % of base) : 369.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],short,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -82 (-37.27 % of base) : 368.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],short,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -82 (-37.27 % of base) : 354.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -82 (-37.27 % of base) : 353.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)
         -81 (-37.16 % of base) : 429.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],long,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
         -81 (-36.99 % of base) : 366.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[int,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]]],short,System.Nullable`1[int],int):System.Nullable`1[int] (FullOpts)
         -81 (-37.16 % of base) : 413.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[System.Numerics.Vector`1[float],System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]],System.Numerics.Vector`1[float],System.Nullable`1[int],System.Numerics.Vector`1[float]):System.Nullable`1[int] (FullOpts)

Top method regressions (percentages):
           4 (3.77 % of base) : 374.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],int,System.Nullable`1[int]):double (FullOpts)
           4 (3.77 % of base) : 373.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],int,System.Nullable`1[int]):int (FullOpts)
           4 (3.77 % of base) : 376.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],int,System.Nullable`1[int]):long (FullOpts)
           4 (3.77 % of base) : 372.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],int,System.Nullable`1[int]):short (FullOpts)
           4 (3.77 % of base) : 371.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],int,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.67 % of base) : 419.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],long,System.Nullable`1[int]):double (FullOpts)
           4 (3.67 % of base) : 418.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],long,System.Nullable`1[int]):int (FullOpts)
           4 (3.67 % of base) : 421.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],long,System.Nullable`1[int]):long (FullOpts)
           4 (3.67 % of base) : 417.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],long,System.Nullable`1[int]):short (FullOpts)
           4 (3.67 % of base) : 416.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],long,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.67 % of base) : 404.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],System.Numerics.Vector`1[float],System.Nullable`1[int]):double (FullOpts)
           4 (3.67 % of base) : 403.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],System.Numerics.Vector`1[float],System.Nullable`1[int]):int (FullOpts)
           4 (3.67 % of base) : 406.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[long](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],long]],System.Numerics.Vector`1[float],System.Nullable`1[int]):long (FullOpts)
           4 (3.67 % of base) : 402.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[short](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],short]],System.Numerics.Vector`1[float],System.Nullable`1[int]):short (FullOpts)
           4 (3.67 % of base) : 401.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],System.Numerics.Vector`1[float],System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.64 % of base) : 359.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],short,System.Nullable`1[int]):double (FullOpts)
           4 (3.64 % of base) : 358.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],short,System.Nullable`1[int]):int (FullOpts)
           4 (3.64 % of base) : 356.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],ubyte]],short,System.Nullable`1[int]):ubyte (FullOpts)
           4 (3.64 % of base) : 344.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[double](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],double]],ubyte,System.Nullable`1[int]):double (FullOpts)
           4 (3.64 % of base) : 343.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],int]],ubyte,System.Nullable`1[int]):int (FullOpts)

Top method improvements (percentages):
         -44 (-91.67 % of base) : 1425.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:GetHashCode():int:this (FullOpts)
         -55 (-74.32 % of base) : 3563.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+CleanupLeaf@294:Invoke(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Quotations.FSharpExpr:this (FullOpts)
         -39 (-73.58 % of base) : 1943.dasm - Microsoft.FSharp.Control.AsyncReturn:get_AsyncReturn():Microsoft.FSharp.Control.AsyncReturn (FullOpts)
         -39 (-73.58 % of base) : 2633.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators:get_DefaultAsyncBuilder():Microsoft.FSharp.Control.FSharpAsyncBuilder (FullOpts)
         -39 (-73.58 % of base) : 1618.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AddressOfOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1622.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AddressSetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1562.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_AppOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1564.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_IfThenElseOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1570.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1568.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetRecCombOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1566.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_LetRecOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1616.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_SequentialOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1628.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_TryFinallyOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1626.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_TryWithOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1620.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_VarSetOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1632.dasm - Microsoft.FSharp.Quotations.ExprConstInfo:get_WhileLoopOp():Microsoft.FSharp.Quotations.ExprConstInfo (FullOpts)
         -39 (-73.58 % of base) : 1357.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_ActivePatternResult():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
         -39 (-73.58 % of base) : 1359.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Alias():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
         -39 (-73.58 % of base) : 1361.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Class():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (FullOpts)
         -39 (-73.58 % of base) : 1369.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag:get_Enum():Microsoft.FSharp.Text.StructuredPrintfImpl.TextTag (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: 406472 (overridden on cmd)
Total bytes of diff: 403933 (overridden on cmd)
Total bytes of delta: -2539 (-0.62 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 2498.dasm (12.40 % of base)
          16 : 4675.dasm (12.40 % of base)

Top file improvements (bytes):
         -83 : 4743.dasm (-17.93 % of base)
         -80 : 2595.dasm (-17.28 % of base)
         -67 : 8434.dasm (-25.67 % of base)
         -60 : 6947.dasm (-11.95 % of base)
         -54 : 4254.dasm (-21.34 % of base)
         -54 : 6238.dasm (-21.34 % of base)
         -53 : 935.dasm (-23.25 % of base)
         -53 : 2759.dasm (-23.25 % of base)
         -41 : 8406.dasm (-21.81 % of base)
         -40 : 5165.dasm (-44.44 % of base)
         -40 : 1587.dasm (-22.99 % of base)
         -40 : 1838.dasm (-8.75 % of base)
         -40 : 317.dasm (-8.81 % of base)
         -40 : 2493.dasm (-13.07 % of base)
         -40 : 20.dasm (-22.99 % of base)
         -40 : 3074.dasm (-44.44 % of base)
         -40 : 4670.dasm (-13.07 % of base)
         -32 : 2613.dasm (-18.50 % of base)
         -32 : 4761.dasm (-18.50 % of base)
         -30 : 1582.dasm (-61.22 % of base)

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

Top method regressions (bytes):
          16 (12.40 % of base) : 2498.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
          16 (12.40 % of base) : 4675.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (bytes):
         -83 (-17.93 % of base) : 4743.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -80 (-17.28 % of base) : 2595.dasm - Xunit.Sdk.SerializationHelper:GetType(System.String,System.String):System.Type (Tier0)
         -67 (-25.67 % of base) : 8434.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)
         -60 (-11.95 % of base) : 6947.dasm - Interop+BCrypt+BCryptAlgorithmCache:IsBCryptAlgorithmSupported(System.String,int):ubyte (Tier0)
         -54 (-21.34 % of base) : 4254.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -54 (-21.34 % of base) : 6238.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -53 (-23.25 % of base) : 935.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -53 (-23.25 % of base) : 2759.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -41 (-21.81 % of base) : 8406.dasm - Microsoft.Extensions.Configuration.InternalConfigurationRootExtensions+<>c__DisplayClass0_0:<GetChildrenImplementation>b__1(System.String):Microsoft.Extensions.Configuration.IConfigurationSection:this (Tier0)
         -40 (-22.99 % of base) : 1587.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-22.99 % of base) : 20.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-13.07 % of base) : 2493.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -40 (-13.07 % of base) : 4670.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -40 (-8.75 % of base) : 1838.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -40 (-8.81 % of base) : 317.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -40 (-44.44 % of base) : 5165.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -40 (-44.44 % of base) : 3074.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -32 (-18.50 % of base) : 2613.dasm - Xunit.Sdk.TestFramework:.ctor(Xunit.Abstractions.IMessageSink):this (Tier0)
         -32 (-18.50 % of base) : 4761.dasm - Xunit.Sdk.TestFramework:.ctor(Xunit.Abstractions.IMessageSink):this (Tier0)
         -30 (-71.43 % of base) : 1783.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)

Top method regressions (percentages):
          16 (12.40 % of base) : 2498.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
          16 (12.40 % of base) : 4675.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)

Top method improvements (percentages):
         -30 (-71.43 % of base) : 1783.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -30 (-71.43 % of base) : 253.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -30 (-69.77 % of base) : 6853.dasm - Interop+BCrypt:get_PseudoHandlesSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 5009.dasm - System.Globalization.Tests.InvariantModeTests:get_PredefinedCulturesOnlyIsDisabled():ubyte (Tier0)
         -30 (-69.77 % of base) : 7545.dasm - System.Security.Cryptography.HMACSHA3_256:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 7548.dasm - System.Security.Cryptography.HMACSHA3_384:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 7550.dasm - System.Security.Cryptography.HMACSHA3_512:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 7383.dasm - System.Security.Cryptography.SHA3_256:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 7373.dasm - System.Security.Cryptography.SHA3_384:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 6944.dasm - System.Security.Cryptography.SHA3_512:get_IsSupported():ubyte (Tier0)
         -30 (-69.77 % of base) : 6898.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -30 (-69.77 % of base) : 7348.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -30 (-61.22 % of base) : 1582.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -30 (-61.22 % of base) : 15.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -30 (-61.22 % of base) : 18.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -30 (-61.22 % of base) : 1585.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -30 (-61.22 % of base) : 34.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -30 (-61.22 % of base) : 1601.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -30 (-61.22 % of base) : 8394.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:get_Comparison():System.Comparison`1[System.String] (Tier0)
         -30 (-61.22 % of base) : 7073.dasm - System.Reflection.Metadata.MetadataStringDecoder:get_DefaultUTF8():System.Reflection.Metadata.MetadataStringDecoder (Tier0)


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: 68102 (overridden on cmd)
Total bytes of diff: 64370 (overridden on cmd)
Total bytes of delta: -3732 (-5.48 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -486 : 66.dasm (-80.46 % of base)
        -222 : 2322.dasm (-67.68 % of base)
        -177 : 1170.dasm (-81.57 % of base)
        -111 : 1765.dasm (-13.21 % of base)
        -105 : 1130.dasm (-69.54 % of base)
        -100 : 452.dasm (-30.12 % of base)
         -88 : 120.dasm (-22.11 % of base)
         -80 : 138.dasm (-17.66 % of base)
         -72 : 9.dasm (-13.53 % of base)
         -69 : 519.dasm (-29.87 % of base)
         -68 : 686.dasm (-45.95 % of base)
         -58 : 1131.dasm (-42.65 % of base)
         -56 : 941.dasm (-35.90 % of base)
         -44 : 1149.dasm (-63.77 % of base)
         -44 : 1249.dasm (-63.77 % of base)
         -44 : 1267.dasm (-63.77 % of base)
         -44 : 1277.dasm (-63.77 % of base)
         -44 : 1338.dasm (-63.77 % of base)
         -44 : 1370.dasm (-63.77 % of base)
         -44 : 1398.dasm (-63.77 % of base)

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

Top method improvements (bytes):
        -486 (-80.46 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -222 (-67.68 % of base) : 2322.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -177 (-81.57 % of base) : 1170.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -111 (-13.21 % of base) : 1765.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -105 (-69.54 % of base) : 1130.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
        -100 (-30.12 % of base) : 452.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -88 (-22.11 % of base) : 120.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
         -80 (-17.66 % of base) : 138.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -72 (-13.53 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -69 (-29.87 % of base) : 519.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -68 (-45.95 % of base) : 686.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -58 (-42.65 % of base) : 1131.dasm - System.Runtime.InteropServices.Marshalling.UniqueComInterfaceMarshaller`1[System.__Canon]:ConvertToManaged(ulong):System.__Canon (FullOpts)
         -56 (-35.90 % of base) : 941.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -44 (-63.77 % of base) : 1591.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1398.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1277.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1718.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1410.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1150.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1794.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)

Top method improvements (percentages):
        -177 (-81.57 % of base) : 1170.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -486 (-80.46 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -39 (-73.58 % of base) : 2099.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -39 (-73.58 % of base) : 737.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -39 (-73.58 % of base) : 485.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -39 (-73.58 % of base) : 1898.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -39 (-73.58 % of base) : 745.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -39 (-73.58 % of base) : 1938.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
        -105 (-69.54 % of base) : 1130.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
        -222 (-67.68 % of base) : 2322.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
         -44 (-63.77 % of base) : 1591.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1398.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1277.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1718.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1410.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1150.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1794.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1648.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1537.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -44 (-63.77 % of base) : 1654.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (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: 433308 (overridden on cmd)
Total bytes of diff: 422380 (overridden on cmd)
Total bytes of delta: -10928 (-2.52 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 2553.dasm (2.92 % of base)
           4 : 3629.dasm (3.92 % of base)
           4 : 3667.dasm (2.96 % of base)
           4 : 5139.dasm (2.94 % of base)
           3 : 2354.dasm (3.19 % of base)

Top file improvements (bytes):
       -6444 : 5267.dasm (-75.66 % of base)
        -486 : 530.dasm (-80.46 % of base)
        -286 : 5201.dasm (-70.62 % of base)
        -217 : 9.dasm (-70.45 % of base)
        -217 : 1611.dasm (-70.45 % of base)
        -202 : 4013.dasm (-35.82 % of base)
        -105 : 835.dasm (-65.62 % of base)
        -105 : 5111.dasm (-36.97 % of base)
        -100 : 567.dasm (-30.12 % of base)
         -85 : 3036.dasm (-10.46 % of base)
         -80 : 2950.dasm (-25.24 % of base)
         -76 : 3050.dasm (-11.67 % of base)
         -76 : 3896.dasm (-13.50 % of base)
         -74 : 2940.dasm (-57.81 % of base)
         -74 : 3852.dasm (-62.18 % of base)
         -72 : 233.dasm (-13.53 % of base)
         -72 : 1835.dasm (-13.53 % of base)
         -63 : 3309.dasm (-44.37 % of base)
         -62 : 5127.dasm (-73.81 % of base)
         -62 : 5126.dasm (-73.81 % of base)

60 total files with Code Size differences (55 improved, 5 regressed), 1 unchanged.

Top method regressions (bytes):
           4 (3.92 % of base) : 3629.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           4 (2.96 % of base) : 3667.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.94 % of base) : 5139.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.92 % of base) : 2553.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
           3 (3.19 % of base) : 2354.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

Top method improvements (bytes):
       -6444 (-75.66 % of base) : 5267.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -486 (-80.46 % of base) : 530.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -286 (-70.62 % of base) : 5201.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -217 (-70.45 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -217 (-70.45 % of base) : 1611.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -202 (-35.82 % of base) : 4013.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -105 (-36.97 % of base) : 5111.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -105 (-65.62 % of base) : 835.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
        -100 (-30.12 % of base) : 567.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -85 (-10.46 % of base) : 3036.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -80 (-25.24 % of base) : 2950.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
         -76 (-13.50 % of base) : 3896.dasm - Microsoft.Build.Shared.FrameworkLocationHelper:GenerateProgramFilesReferenceAssemblyRoot():System.String (FullOpts)
         -76 (-11.67 % of base) : 3050.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -74 (-62.18 % of base) : 3852.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -74 (-57.81 % of base) : 2940.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -72 (-13.53 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-13.53 % of base) : 1835.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -63 (-44.37 % of base) : 3309.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)
         -62 (-73.81 % of base) : 5127.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -62 (-73.81 % of base) : 5126.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)

Top method regressions (percentages):
           4 (3.92 % of base) : 3629.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
           3 (3.19 % of base) : 2354.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           4 (2.96 % of base) : 3667.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
           4 (2.94 % of base) : 5139.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
           4 (2.92 % of base) : 2553.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)

Top method improvements (percentages):
        -486 (-80.46 % of base) : 530.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
       -6444 (-75.66 % of base) : 5267.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
         -55 (-74.32 % of base) : 5206.dasm - FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions:ErrorLogger.ErrorR(FSharp.Compiler.ErrorLogger+ErrorLogger,System.Exception) (FullOpts)
         -62 (-73.81 % of base) : 5127.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -62 (-73.81 % of base) : 5126.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -39 (-73.58 % of base) : 2989.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -39 (-73.58 % of base) : 2632.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
        -286 (-70.62 % of base) : 5201.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
        -217 (-70.45 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -217 (-70.45 % of base) : 1611.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -105 (-65.62 % of base) : 835.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -39 (-65.00 % of base) : 2781.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
         -31 (-64.58 % of base) : 3057.dasm - FSComp.SR:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 1926.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 3261.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 3429.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 5326.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 2461.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 2471.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -31 (-64.58 % of base) : 2882.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (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: 453425 (overridden on cmd)
Total bytes of diff: 442833 (overridden on cmd)
Total bytes of delta: -10592 (-2.34 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -250 : 11050.dasm (-54.95 % of base)
        -250 : 5766.dasm (-54.95 % of base)
        -218 : 8678.dasm (-9.61 % of base)
        -121 : 5301.dasm (-12.32 % of base)
        -121 : 11452.dasm (-12.32 % of base)
        -107 : 1783.dasm (-40.53 % of base)
        -103 : 4112.dasm (-14.74 % of base)
        -103 : 927.dasm (-14.74 % of base)
         -96 : 4603.dasm (-16.00 % of base)
         -96 : 1051.dasm (-16.00 % of base)
         -84 : 10123.dasm (-10.12 % of base)
         -84 : 4756.dasm (-10.12 % of base)
         -72 : 3183.dasm (-15.86 % of base)
         -72 : 679.dasm (-15.86 % of base)
         -69 : 11226.dasm (-17.83 % of base)
         -69 : 1836.dasm (-43.67 % of base)
         -69 : 5708.dasm (-43.67 % of base)
         -69 : 5988.dasm (-17.83 % of base)
         -68 : 2371.dasm (-22.59 % of base)
         -68 : 7734.dasm (-22.59 % of base)

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

Top method improvements (bytes):
        -250 (-54.95 % of base) : 11050.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -250 (-54.95 % of base) : 5766.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -218 (-9.61 % of base) : 8678.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
        -121 (-12.32 % of base) : 5301.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -121 (-12.32 % of base) : 11452.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (FullOpts)
        -107 (-40.53 % of base) : 1783.dasm - System.Runtime.InteropServices.ComWrappers+ManagedObjectWrapper:AsRuntimeDefined(byref):long:this (FullOpts)
        -103 (-14.74 % of base) : 4112.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
        -103 (-14.74 % of base) : 927.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-16.00 % of base) : 4603.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -96 (-16.00 % of base) : 1051.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -84 (-10.12 % of base) : 10123.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -84 (-10.12 % of base) : 4756.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CompareMethodSignatures(Internal.Runtime.CompilerServices.RuntimeSignature,Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
         -72 (-15.86 % of base) : 3183.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
         -72 (-15.86 % of base) : 679.dasm - System.Number:TryUInt64ToDecStr[ushort](ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
         -69 (-17.83 % of base) : 11226.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[],byref):long (FullOpts)
         -69 (-17.83 % of base) : 5988.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[],byref):long (FullOpts)
         -69 (-43.67 % of base) : 1836.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -69 (-43.67 % of base) : 5708.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -68 (-22.59 % of base) : 2371.dasm - System.Globalization.CompareInfo:NlsEndsWith(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong):ubyte:this (FullOpts)
         -68 (-22.59 % of base) : 7734.dasm - System.Globalization.CompareInfo:NlsEndsWith(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong):ubyte:this (FullOpts)

Top method improvements (percentages):
         -65 (-61.90 % of base) : 10314.dasm - System.Threading.SpinWait:.cctor() (FullOpts)
         -65 (-61.90 % of base) : 7837.dasm - System.Threading.SpinWait:.cctor() (FullOpts)
         -23 (-56.10 % of base) : 4570.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
         -23 (-56.10 % of base) : 1203.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:get_AssemblyBinder():Internal.Reflection.Core.AssemblyBinder:this (FullOpts)
         -23 (-56.10 % of base) : 6386.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -23 (-56.10 % of base) : 11613.dasm - Internal.TypeSystem.TypeDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
         -23 (-56.10 % of base) : 11910.dasm - System.Linq.Expressions.BlockExpression:GetOrMakeVariables():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:this (FullOpts)
        -250 (-54.95 % of base) : 11050.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
        -250 (-54.95 % of base) : 5766.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (FullOpts)
         -23 (-53.49 % of base) : 7996.dasm - System.Threading.Tasks.Task:LogFinishCompletionNotification() (FullOpts)
         -23 (-52.27 % of base) : 10064.dasm - System.Linq.Expressions.ConditionalExpression:GetFalse():System.Linq.Expressions.Expression:this (FullOpts)
         -18 (-51.43 % of base) : 12456.dasm - System.Globalization.JapaneseCalendar:get_MinSupportedDateTime():System.DateTime:this (FullOpts)
         -18 (-51.43 % of base) : 7024.dasm - System.Globalization.JapaneseCalendar:get_MinSupportedDateTime():System.DateTime:this (FullOpts)
         -18 (-51.43 % of base) : 12467.dasm - System.Globalization.TaiwanCalendar:get_MinSupportedDateTime():System.DateTime:this (FullOpts)
         -18 (-51.43 % of base) : 7042.dasm - System.Globalization.TaiwanCalendar:get_MinSupportedDateTime():System.DateTime:this (FullOpts)
         -42 (-47.73 % of base) : 1915.dasm - System.Globalization.CultureInfo:GetUserDefaultCulture():System.Globalization.CultureInfo (FullOpts)
         -42 (-47.73 % of base) : 4903.dasm - System.Globalization.CultureInfo:GetUserDefaultCulture():System.Globalization.CultureInfo (FullOpts)
         -18 (-46.15 % of base) : 8544.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:Finalize():this (FullOpts)
         -41 (-46.07 % of base) : 1260.dasm - System.Threading.Thread:DecrementRunningForeground() (FullOpts)
         -41 (-46.07 % of base) : 4628.dasm - System.Threading.Thread:DecrementRunningForeground() (FullOpts)