Assembly Diffs

linux arm

Diffs are based on 104,802 contexts (10,727 MinOpts, 94,075 FullOpts).

MISSED contexts: base: 826 (0.42%), diff: 90,575 (45.53%)

Overall (-47,582 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 181,946 -5,784
benchmarks.run_pgo.linux.arm.checked.mch 756,482 -2,682
benchmarks.run_tiered.linux.arm.checked.mch 610,796 -6,806
coreclr_tests.run.linux.arm.checked.mch 295,714 -1,684
libraries.crossgen2.linux.arm.checked.mch 5,931,272 -10
libraries.pmi.linux.arm.checked.mch 578,368 -11,164
libraries_tests.run.linux.arm.Release.mch 298,006 -1,746
librariestestsnotieredcompilation.run.linux.arm.Release.mch 59,390 -4,270
realworld.run.linux.arm.checked.mch 1,727,516 -13,436

MinOpts (-7,502 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 264,396 -2,394
benchmarks.run_tiered.linux.arm.checked.mch 428,430 -3,448
coreclr_tests.run.linux.arm.checked.mch 219,190 -596
libraries_tests.run.linux.arm.Release.mch 163,882 -1,064

FullOpts (-40,080 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 177,482 -5,784
benchmarks.run_pgo.linux.arm.checked.mch 492,086 -288
benchmarks.run_tiered.linux.arm.checked.mch 182,366 -3,358
coreclr_tests.run.linux.arm.checked.mch 76,524 -1,088
libraries.crossgen2.linux.arm.checked.mch 5,930,504 -10
libraries.pmi.linux.arm.checked.mch 578,368 -11,164
libraries_tests.run.linux.arm.Release.mch 134,124 -682
librariestestsnotieredcompilation.run.linux.arm.Release.mch 59,390 -4,270
realworld.run.linux.arm.checked.mch 1,723,000 -13,436

Example diffs

benchmarks.run.linux.arm.checked.mch

-40 (-90.91%) : 3275.dasm - Interop+Ssl:.cctor() (FullOpts)

@@ -15,46 +15,24 @@ G_M51578_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M51578_IG04 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M51578_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51578_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 16 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M51578_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 2, PerfScore 8.00, instruction count 15, allocated bytes for code 44 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
+; Total bytes of code 4, prolog size 2, PerfScore 2.00, instruction count 2, allocated bytes for code 4 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 2 (0x00002) Actual length = 4 (0x000004) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-40 (-74.07%) : 1012.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b_10():Perfolizer.Horology.IClock:this (FullOpts)

@@ -15,53 +15,30 @@ G_M52807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M52807_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M52807_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M52807_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52807_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 70 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M52807_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-42 (-61.76%) : 1039.dasm - Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)

@@ -20,15 +20,7 @@ G_M25463_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M25463_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M25463_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M25463_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25463_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff ldr r0, [r1] @@ -38,38 +30,24 @@ G_M25463_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_LNG2DBL ; gcr arg pop 0 ;; size=22 bbWeight=1 PerfScore 7.00
-G_M25463_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M25463_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M25463_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M25463_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 2, PerfScore 15.00, instruction count 22, allocated bytes for code 68 (MethodHash=4b259c88) for method Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
+; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=4b259c88) for method Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

+0 (0.00%) : 2031.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 -> r5 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r5 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> r4 class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> r6 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> r6 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 -> r1 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; ; Lcl frame size = 4 @@ -30,11 +30,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] mov r6, r0 ; gcrRegs +[r6]
- cmp r6, 0
+ cmp r5, 0
beq SHORT G_M22240_IG05 ;; size=26 bbWeight=1 PerfScore 9.00 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref @@ -58,8 +58,8 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 r6] +[r4-r5]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0-r1 r6] +[r4]
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r4] @@ -67,14 +67,13 @@ G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5 ldr r3, [r3+0x1C] blx r3 // <unknown method> ; gcrRegs -[r4]
- cmp r0, r5
+ cmp r0, 0
beq SHORT G_M22240_IG06 movs r0, 0 ; gcrRegs -[r0] b SHORT G_M22240_IG07 ;; size=18 bbWeight=0.50 PerfScore 4.50 G_M22240_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M22240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc

+4 (+0.36%) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)

@@ -9,53 +9,51 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 19, 27 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T15] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T14] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 13, 22.50) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T07] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T06] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 13, 33.50) ref -> r9 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T14] ( 3, 8.50) int -> r10 -; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r1 -; V07 loc7 [V07,T26] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
+; V05 loc5 [V05,T12] ( 3, 8.50) int -> r10 +; V06 loc6 [V06,T24] ( 2, 2 ) ubyte -> r1 +; V07 loc7 [V07,T25] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
; V08 loc8 [V08 ] ( 3, 1.50) ubyte -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc9 [V09,T05] ( 5, 20 ) int -> r4 ; V10 loc10 [V10 ] ( 3, 4.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> -; V14 tmp3 [V14,T19] ( 4, 3.50) ref -> r7 -; V15 tmp4 [V15,T20] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> +; V14 tmp3 [V14,T18] ( 4, 3.50) ref -> r7 +; V15 tmp4 [V15,T19] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp6 [V17,T27] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V18 tmp7 [V18,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V19 tmp8 [V19,T22] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V17 tmp6 [V17,T26] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V18 tmp7 [V18,T20] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V19 tmp8 [V19,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V21 tmp10 [V21,T24] ( 2, 2 ) byref -> r0 "Inlining Arg" -; V22 tmp11 [V22,T16] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> -; V23 tmp12 [V23,T23] ( 3, 3 ) byref -> r0 "Inlining Arg"
+; V21 tmp10 [V21,T23] ( 2, 2 ) byref -> r0 "Inlining Arg" +; V22 tmp11 [V22,T15] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> +; V23 tmp12 [V23,T22] ( 3, 3 ) byref -> r0 "Inlining Arg"
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V26 tmp15 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V27 tmp16 [V27,T04] ( 4, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object> -; V28 tmp17 [V28,T11] ( 4, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V27 tmp16 [V27,T04] ( 3, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object> +; V28 tmp17 [V28,T13] ( 3, 8 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V29 tmp18 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V31 tmp20 [V31,T12] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> -; V32 tmp21 [V32,T08] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread> -; V33 tmp22 [V33,T10] ( 4, 14 ) ref -> r3
+; V31 tmp20 [V31,T10] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> +; V32 tmp21 [V32,T07] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread> +; V33 tmp22 [V33,T09] ( 4, 14 ) ref -> r3
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V36 tmp25 [V36,T00] ( 6, 44 ) ref -> [sp+0x00] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool> ;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp28 [V39,T06] ( 3, 18 ) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V43 tmp32 [V43,T13] ( 3, 10 ) int -> r0 "Inline stloc first use temp" -;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> -; V45 cse0 [V45,T17] ( 3, 6 ) ref -> r0 "CSE - moderate" -; V46 cse1 [V46,T09] ( 9, 14 ) int -> r5 "CSE - aggressive" -; V47 cse2 [V47,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
+;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V41 tmp30 [V41,T11] ( 3, 10 ) int -> r0 "Inline stloc first use temp" +;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> +; V43 cse0 [V43,T16] ( 3, 6 ) ref -> r0 "CSE - moderate" +; V44 cse1 [V44,T08] ( 9, 14 ) int -> r5 "CSE - aggressive" +; V45 cse2 [V45,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 20 @@ -77,7 +75,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0] ldr r7, [r0+0x20] ; gcrRegs +[r7] @@ -187,7 +185,7 @@ G_M63069_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {} add r0, r6, 92 ; byrRegs +[r0] cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1 movs r2, 0 movw r3, 0xd1ff @@ -218,7 +216,7 @@ G_M63069_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 add r0, r6, 92 ; byrRegs +[r0] cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1 movs r2, 0 movw r3, 0xd1ff @@ -297,7 +295,7 @@ G_M63069_IG18: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 str r0, [sp+0x0C] // [V02 loc2] ldr r0, [sp+0x0C] // [V02 loc2] cmp r0, 0
- beq G_M63069_IG49
+ beq G_M63069_IG48
;; size=32 bbWeight=2 PerfScore 26.00 G_M63069_IG19: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -328,9 +326,9 @@ G_M63069_IG21: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M63069_IG23 ;; size=26 bbWeight=4 PerfScore 36.00 G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz @@ -344,16 +342,14 @@ G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0 ; gcrRegs -[r0-r1] b SHORT G_M63069_IG25 ;; size=12 bbWeight=2 PerfScore 12.00
-G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1]
+G_M63069_IG23: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz + movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[r0]
cmp r0, 0 bne SHORT G_M63069_IG24 movw r1, 0xd1ff @@ -365,15 +361,12 @@ G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0 blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=46 bbWeight=2 PerfScore 30.00
-G_M63069_IG24: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref - mov r0, r4 - ; gcrRegs +[r0]
+G_M63069_IG24: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref + movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=2 PerfScore 10.00 G_M63069_IG25: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref movs r0, 0 @@ -412,7 +405,7 @@ G_M63069_IG29: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 movw r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0] ldr r3, [r0+0x10] ; gcrRegs +[r3] @@ -508,41 +501,40 @@ G_M63069_IG38: ; bbWeight=2, gcVars=00000001 {V36}, gcrefRegs=03C0 {r6 r7 ; gcrRegs -[r0] ;; size=22 bbWeight=2 PerfScore 14.00 G_M63069_IG39: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r8 - ; gcrRegs +[r0]
+ mov r1, r8 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[r1] +[r0]
cmp r0, 0
- beq SHORT G_M63069_IG41 - ;; size=6 bbWeight=4 PerfScore 12.00 -G_M63069_IG40: ; bbWeight=1, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz - ldr r0, [r0]
+ bne SHORT G_M63069_IG41 + ;; size=24 bbWeight=4 PerfScore 32.00 +G_M63069_IG40: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1 - beq SHORT G_M63069_IG42 - ;; size=14 bbWeight=1 PerfScore 5.00 -G_M63069_IG41: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 ; gcrRegs +[r0]
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method>
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; gcrRegs -[r0] ;; size=22 bbWeight=2 PerfScore 14.00
-G_M63069_IG42: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG41: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x10] adds r0, r0, 1 cmp r0, 0
- beq SHORT G_M63069_IG44
+ beq SHORT G_M63069_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG42: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
str r0, [r8+0x10]
- b SHORT G_M63069_IG45
+ b SHORT G_M63069_IG44
;; size=6 bbWeight=2 PerfScore 4.00
-G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r8 ; gcrRegs +[r0] movs r1, 1 @@ -552,7 +544,7 @@ G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=16 bbWeight=2 PerfScore 12.00
-G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG44: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp] ; gcrRegs +[r3] str r4, [r3+0xD0] @@ -565,9 +557,9 @@ G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 blx r2 // System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this ; gcrRegs -[r0 r3] ...

+4 (+2.33%) : 1919.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 -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> r4 single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> r0 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 ) int -> zero-ref "spilling helperCall" ; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> r0 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 -> r0 -; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> r0
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> r0 +; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> r0
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V11 tmp8 [V11,T04] ( 2, 4 ) int -> r0 "argument with side effect" ; V12 rat0 [V12,T03] ( 3, 4 ) int -> r0 "runtime lookup" ; V13 rat1 [V13,T02] ( 3, 5.60) int -> r0 "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) int -> r0 "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) int -> r0 "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) int -> r0 "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -51,37 +51,42 @@ G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 1.20 G_M17047_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0 - beq SHORT G_M17047_IG07
+ cmp r5, 0 + beq SHORT G_M17047_IG08
;; size=16 bbWeight=1 PerfScore 6.00
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r5] - pop {r2,r3,r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] +[r5]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0]
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r5]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0 r5] + movs r0, 0 + movs r3, 0 + ldr r3, [r3]
ldr r3, [r3+0x30] ldr r3, [r3+0x10] blx r3 // <unknown method>
+ ; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M17047_IG08
+ bne SHORT G_M17047_IG09
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M17047_IG09 - ;; size=18 bbWeight=0.50 PerfScore 4.50 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
+ b SHORT G_M17047_IG10 + ;; size=20 bbWeight=0.50 PerfScore 5.00 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0] mov r1, r4 movw r3, 0xd1ff @@ -89,55 +94,54 @@ G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M17047_IG14
+ bne SHORT G_M17047_IG15
ldr r0, [r4+0x20] ; gcrRegs -[r0] ldr r1, [r0+0x04] cmp r1, 12
- ble SHORT G_M17047_IG12
+ ble SHORT G_M17047_IG13
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [r0+0x0C] cmp r0, 0
- beq SHORT G_M17047_IG12
+ beq SHORT G_M17047_IG13
;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4 movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.18 PerfScore 1.08
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] mov r4, r0 ; gcrRegs +[r4] mov r0, r4
- mov r1, r5 - ; gcrRegs +[r1]
+ movs r1, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this
- ; gcrRegs -[r0-r1 r5]
+ ; gcrRegs -[r0]
mov r0, r4 ; gcrRegs +[r0] ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 172, prolog size 12, PerfScore 36.10, instruction count 65, allocated bytes for code 172 (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 176, prolog size 12, PerfScore 37.10, instruction count 67, allocated bytes for code 176 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -149,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.linux.arm.checked.mch

-22 (-50.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -14,22 +14,16 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - mov r1, 384 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff movt r3, 0xd1ff ldr r0, [r3] ; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +35,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-22 (-50.00%) : 493.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)

@@ -14,22 +14,16 @@ G_M58834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M58834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - mov r1, 940 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff movt r3, 0xd1ff ldr r0, [r3] ; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M58834_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +35,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-22 (-50.00%) : 4413.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)

@@ -14,22 +14,16 @@ G_M39385_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M39385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff movt r3, 0xd1ff ldr r0, [r3] ; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M39385_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=12e56626) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=12e56626) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +35,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

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

@@ -66,14 +66,14 @@ G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x0C] // [V04 tmp3] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp+0x0C] // [V04 tmp3] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] str r0, [sp+0x10] // [V03 tmp2] ldr r0, [sp+0x18] // [V00 this]

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

@@ -82,7 +82,7 @@ G_M12399_IG08: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x08] // [V06 tmp1] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M12399_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -158,7 +158,7 @@ G_M12399_IG14: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x04] // [V07 tmp2] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M12399_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref

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

@@ -58,7 +58,7 @@ G_M9235_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x28] // [V03 tmp1] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M9235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -112,7 +112,7 @@ G_M9235_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x20] // [V05 tmp3] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -122,7 +122,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs +[r0] str r0, [sp+0x0C] // [V10 tmp8] ldr r3, [sp+0x30] // [V00 TypeCtx] @@ -142,7 +142,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0] str r0, [sp+0x08] // [V11 tmp9] ldr r3, [sp+0x30] // [V00 TypeCtx] @@ -162,7 +162,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0] str r0, [sp+0x04] // [V12 tmp10] ldr r0, [sp+0x0C] // [V10 tmp8] @@ -182,7 +182,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTINTERFACE
+ blx r3 // CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[r1] +[r0] str r0, [sp+0x2C] // [V01 loc0] b SHORT G_M9235_IG10 @@ -192,7 +192,7 @@ G_M9235_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp+0x30] // [V00 TypeCtx] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] str r0, [sp+0x24] // [V04 tmp2] ldr r0, [sp+0x24] // [V04 tmp2]

benchmarks.run_tiered.linux.arm.checked.mch

-42 (-75.00%) : 311.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)

@@ -15,51 +15,29 @@ G_M9787_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M9787_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M9787_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldrb r0, [r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M9787_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M9787_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M9787_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M9787_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=70bdd9c4) for method System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (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 : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-42 (-75.00%) : 312.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)

@@ -14,51 +14,29 @@ G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M4853_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M4853_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldrb r0, [r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M4853_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4853_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M4853_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (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 : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-48 (-53.33%) : 8721.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data @@ -10,17 +10,17 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M44136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+G_M44136_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M44136_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Newtonsoft.Json.Serialization.JsonTypeReflector:get_DynamicCodeGeneration():ubyte
+ ; gcr arg pop 0
cmp r0, 0 beq SHORT G_M44136_IG05 ;; size=16 bbWeight=1 PerfScore 6.00 @@ -31,38 +31,20 @@ G_M44136_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[r0] ;; size=10 bbWeight=0.50 PerfScore 1.50 G_M44136_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M44136_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ pop {r3,pc} + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M44136_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M44136_IG08 - ;; size=18 bbWeight=0.50 PerfScore 3.00 -G_M44136_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M44136_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M44136_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 90 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b SHORT G_M44136_IG06 - ;; size=22 bbWeight=0 PerfScore 0.00
+G_M44136_IG06: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 90, prolog size 6, PerfScore 15.00, instruction count 29, allocated bytes for code 90 (MethodHash=ef705397) for method Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
+; Total bytes of code 42, prolog size 2, PerfScore 11.00, instruction count 15, allocated bytes for code 42 (MethodHash=ef705397) for method Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
; ============================================================ Unwind Info: @@ -74,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -86,7 +68,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

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

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> r5 this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> r4 class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r6 class-hnd single-def <System.Type>
-; V03 loc0 [V03,T03] ( 3, 2.50) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T03] ( 2, 1.50) ref -> r0 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 = 0 @@ -31,10 +31,10 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M17128_IG04 ;; size=24 bbWeight=1 PerfScore 8.00 G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref

+4 (+0.36%) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)

@@ -9,53 +9,51 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 19, 27 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T15] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T14] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 13, 22.50) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T07] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T06] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 13, 33.50) ref -> r9 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T14] ( 3, 8.50) int -> r10 -; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r1 -; V07 loc7 [V07,T26] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
+; V05 loc5 [V05,T12] ( 3, 8.50) int -> r10 +; V06 loc6 [V06,T24] ( 2, 2 ) ubyte -> r1 +; V07 loc7 [V07,T25] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
; V08 loc8 [V08 ] ( 3, 1.50) ubyte -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op ; V09 loc9 [V09,T05] ( 5, 20 ) int -> r4 ; V10 loc10 [V10 ] ( 3, 4.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> -; V14 tmp3 [V14,T19] ( 4, 3.50) ref -> r7 -; V15 tmp4 [V15,T20] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> +; V14 tmp3 [V14,T18] ( 4, 3.50) ref -> r7 +; V15 tmp4 [V15,T19] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp6 [V17,T27] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V18 tmp7 [V18,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V19 tmp8 [V19,T22] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V17 tmp6 [V17,T26] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V18 tmp7 [V18,T20] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V19 tmp8 [V19,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V21 tmp10 [V21,T24] ( 2, 2 ) byref -> r0 "Inlining Arg" -; V22 tmp11 [V22,T16] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> -; V23 tmp12 [V23,T23] ( 3, 3 ) byref -> r0 "Inlining Arg"
+; V21 tmp10 [V21,T23] ( 2, 2 ) byref -> r0 "Inlining Arg" +; V22 tmp11 [V22,T15] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> +; V23 tmp12 [V23,T22] ( 3, 3 ) byref -> r0 "Inlining Arg"
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V26 tmp15 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V27 tmp16 [V27,T04] ( 4, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object> -; V28 tmp17 [V28,T11] ( 4, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V27 tmp16 [V27,T04] ( 3, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object> +; V28 tmp17 [V28,T13] ( 3, 8 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V29 tmp18 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V31 tmp20 [V31,T12] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> -; V32 tmp21 [V32,T08] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread> -; V33 tmp22 [V33,T10] ( 4, 14 ) ref -> r3
+; V31 tmp20 [V31,T10] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> +; V32 tmp21 [V32,T07] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread> +; V33 tmp22 [V33,T09] ( 4, 14 ) ref -> r3
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V36 tmp25 [V36,T00] ( 6, 44 ) ref -> [sp+0x00] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool> ;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp28 [V39,T06] ( 3, 18 ) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V43 tmp32 [V43,T13] ( 3, 10 ) int -> r0 "Inline stloc first use temp" -;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> -; V45 cse0 [V45,T17] ( 3, 6 ) ref -> r0 "CSE - moderate" -; V46 cse1 [V46,T09] ( 9, 14 ) int -> r5 "CSE - aggressive" -; V47 cse2 [V47,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
+;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V41 tmp30 [V41,T11] ( 3, 10 ) int -> r0 "Inline stloc first use temp" +;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> +; V43 cse0 [V43,T16] ( 3, 6 ) ref -> r0 "CSE - moderate" +; V44 cse1 [V44,T08] ( 9, 14 ) int -> r5 "CSE - aggressive" +; V45 cse2 [V45,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 20 @@ -77,7 +75,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0] ldr r7, [r0+0x20] ; gcrRegs +[r7] @@ -187,7 +185,7 @@ G_M63069_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {} add r0, r6, 92 ; byrRegs +[r0] cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1 movs r2, 0 movw r3, 0xd1ff @@ -218,7 +216,7 @@ G_M63069_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 add r0, r6, 92 ; byrRegs +[r0] cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1 movs r2, 0 movw r3, 0xd1ff @@ -297,7 +295,7 @@ G_M63069_IG18: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 str r0, [sp+0x0C] // [V02 loc2] ldr r0, [sp+0x0C] // [V02 loc2] cmp r0, 0
- beq G_M63069_IG49
+ beq G_M63069_IG48
;; size=32 bbWeight=2 PerfScore 26.00 G_M63069_IG19: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -328,9 +326,9 @@ G_M63069_IG21: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M63069_IG23 ;; size=26 bbWeight=4 PerfScore 36.00 G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz @@ -344,16 +342,14 @@ G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0 ; gcrRegs -[r0-r1] b SHORT G_M63069_IG25 ;; size=12 bbWeight=2 PerfScore 12.00
-G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1]
+G_M63069_IG23: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz + movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[r0]
cmp r0, 0 bne SHORT G_M63069_IG24 movw r1, 0xd1ff @@ -365,15 +361,12 @@ G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0 blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=46 bbWeight=2 PerfScore 30.00
-G_M63069_IG24: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref - mov r0, r4 - ; gcrRegs +[r0]
+G_M63069_IG24: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref + movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=2 PerfScore 10.00 G_M63069_IG25: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref movs r0, 0 @@ -412,7 +405,7 @@ G_M63069_IG29: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 movw r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0] ldr r3, [r0+0x10] ; gcrRegs +[r3] @@ -508,41 +501,40 @@ G_M63069_IG38: ; bbWeight=2, gcVars=00000001 {V36}, gcrefRegs=03C0 {r6 r7 ; gcrRegs -[r0] ;; size=22 bbWeight=2 PerfScore 14.00 G_M63069_IG39: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r8 - ; gcrRegs +[r0]
+ mov r1, r8 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[r1] +[r0]
cmp r0, 0
- beq SHORT G_M63069_IG41 - ;; size=6 bbWeight=4 PerfScore 12.00 -G_M63069_IG40: ; bbWeight=1, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz - ldr r0, [r0]
+ bne SHORT G_M63069_IG41 + ;; size=24 bbWeight=4 PerfScore 32.00 +G_M63069_IG40: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1 - beq SHORT G_M63069_IG42 - ;; size=14 bbWeight=1 PerfScore 5.00 -G_M63069_IG41: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 ; gcrRegs +[r0]
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method>
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; gcrRegs -[r0] ;; size=22 bbWeight=2 PerfScore 14.00
-G_M63069_IG42: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG41: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x10] adds r0, r0, 1 cmp r0, 0
- beq SHORT G_M63069_IG44
+ beq SHORT G_M63069_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG42: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
str r0, [r8+0x10]
- b SHORT G_M63069_IG45
+ b SHORT G_M63069_IG44
;; size=6 bbWeight=2 PerfScore 4.00
-G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r8 ; gcrRegs +[r0] movs r1, 1 @@ -552,7 +544,7 @@ G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=16 bbWeight=2 PerfScore 12.00
-G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG44: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp] ; gcrRegs +[r3] str r4, [r3+0xD0] @@ -565,9 +557,9 @@ G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 blx r2 // System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this ; gcrRegs -[r0 r3] ...

+4 (+2.33%) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)

@@ -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 -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> r4 single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> r0 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 ) int -> zero-ref "spilling helperCall" ; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> r0 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 -> r0 -; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> r0
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> r0 +; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> r0
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V11 tmp8 [V11,T04] ( 2, 4 ) int -> r0 "argument with side effect" ; V12 rat0 [V12,T03] ( 3, 4 ) int -> r0 "runtime lookup" ; V13 rat1 [V13,T02] ( 3, 5.60) int -> r0 "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) int -> r0 "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) int -> r0 "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) int -> r0 "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -51,37 +51,42 @@ G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 1.20 G_M17047_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0 - beq SHORT G_M17047_IG07
+ cmp r5, 0 + beq SHORT G_M17047_IG08
;; size=16 bbWeight=1 PerfScore 6.00
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r5] - pop {r2,r3,r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] +[r5]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0]
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r5]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0 r5] + movs r0, 0 + movs r3, 0 + ldr r3, [r3]
ldr r3, [r3+0x30] ldr r3, [r3+0x10] blx r3 // <unknown method>
+ ; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M17047_IG08
+ bne SHORT G_M17047_IG09
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M17047_IG09 - ;; size=18 bbWeight=0.50 PerfScore 4.50 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
+ b SHORT G_M17047_IG10 + ;; size=20 bbWeight=0.50 PerfScore 5.00 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0] mov r1, r4 movw r3, 0xd1ff @@ -89,55 +94,54 @@ G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M17047_IG14
+ bne SHORT G_M17047_IG15
ldr r0, [r4+0x20] ; gcrRegs -[r0] ldr r1, [r0+0x04] cmp r1, 12
- ble SHORT G_M17047_IG12
+ ble SHORT G_M17047_IG13
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [r0+0x0C] cmp r0, 0
- beq SHORT G_M17047_IG12
+ beq SHORT G_M17047_IG13
;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4 movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.18 PerfScore 1.08
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] mov r4, r0 ; gcrRegs +[r4] mov r0, r4
- mov r1, r5 - ; gcrRegs +[r1]
+ movs r1, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this
- ; gcrRegs -[r0-r1 r5]
+ ; gcrRegs -[r0]
mov r0, r4 ; gcrRegs +[r0] ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 172, prolog size 12, PerfScore 36.10, instruction count 65, allocated bytes for code 172 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 37.10, instruction count 67, allocated bytes for code 176 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -149,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm.checked.mch

-34 (-37.78%) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)

@@ -5,39 +5,25 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] -; V01 loc0 [V01 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[] +; V01 loc0 [V01 ] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64400_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04] // [V03 tmp1] - str r0, [sp+0x0C] // [V00 arg0] - ;; size=16 bbWeight=1 PerfScore 6.00
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16 + str r0, [sp+0x04] + ;; size=10 bbWeight=1 PerfScore 3.00
G_M64400_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 116
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; gcrRegs +[r3] - str r3, [sp+0x04] // [V03 tmp1] - ldr r0, [sp+0x04] // [V03 tmp1]
+ ldr r0, [r3]
; gcrRegs +[r0]
- add r2, sp, 8 // [V01 loc0] - ldr r1, [sp+0x0C] // [V00 arg0]
+ add r2, sp, 0 + ldr r1, [sp+0x04]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] ldr r4, [r0] @@ -46,20 +32,18 @@ G_M64400_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp r0, 0 bne SHORT G_M64400_IG04 mov r0, -1
- ;; size=60 bbWeight=1 PerfScore 21.00
+ ;; size=36 bbWeight=1 PerfScore 13.00
G_M64400_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M64400_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ldr r0, [sp+0x08] // [V01 loc0]
+ ldr r0, [sp]
;; size=2 bbWeight=1 PerfScore 1.00 G_M64400_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 14, PerfScore 32.00, instruction count 32, allocated bytes for code 90 (MethodHash=5ad4046f) for method System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
+; Total bytes of code 56, prolog size 8, PerfScore 19.00, instruction count 19, allocated bytes for code 56 (MethodHash=5ad4046f) for method System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
; ============================================================ Unwind Info: @@ -71,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -83,7 +67,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

-20 (-32.26%) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)

@@ -14,12 +14,6 @@ G_M36161_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 22 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff movt r3, 0xd1ff ldrb r3, [r3] @@ -30,12 +24,12 @@ G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=50 bbWeight=1 PerfScore 16.00
+ ;; size=30 bbWeight=1 PerfScore 10.00
G_M36161_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 19.00, instruction count 19, allocated bytes for code 62 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
+; Total bytes of code 42, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 42 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
; ============================================================ Unwind Info: @@ -47,7 +41,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-22 (-29.73%) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)

@@ -16,16 +16,9 @@ G_M63990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff
- movs r1, 14
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 14 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -33,12 +26,12 @@ G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r2, 0xd1ff movt r2, 0xd1ff str r3, [r2]
- ;; size=62 bbWeight=1 PerfScore 19.00
+ ;; size=40 bbWeight=1 PerfScore 12.00
G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 22, allocated bytes for code 74 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
+; Total bytes of code 52, prolog size 8, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
; ============================================================ Unwind Info: @@ -50,7 +43,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-2 (-1.52%) : 558.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)

@@ -16,10 +16,9 @@ G_M17591_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff
- movs r1, 15
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -54,7 +53,7 @@ G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, beq SHORT G_M17591_IG03 movs r0, 0 b SHORT G_M17591_IG04
- ;; size=112 bbWeight=1 PerfScore 40.00
+ ;; size=110 bbWeight=1 PerfScore 39.00
G_M17591_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 @@ -68,7 +67,7 @@ G_M17591_IG06: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 46.00, instruction count 46, allocated bytes for code 132 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
+; Total bytes of code 130, prolog size 8, PerfScore 45.00, instruction count 45, allocated bytes for code 130 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
; ============================================================ Unwind Info: @@ -80,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.31%) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

@@ -10,64 +10,62 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T10] ( 19, 8.49) ref -> r5 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T14] ( 8, 4 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T13] ( 8, 4 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 11, 9.39) ref -> [sp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T13] ( 6, 4.41) ref -> r7 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T12] ( 6, 4.41) ref -> r7 class-hnd single-def <System.Object>
; V04 loc4 [V04,T07] ( 14, 31.90) ref -> r8 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T27] ( 3, 1.49) int -> r9 -; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r2
+; V05 loc5 [V05,T25] ( 3, 1.49) int -> r9 +; V06 loc6 [V06,T23] ( 2, 2 ) ubyte -> r2
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc8 [V08 ] ( 3, 2.49) ubyte -> [sp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T17] ( 5, 3.90) int -> r4
+; V09 loc9 [V09,T16] ( 5, 3.90) int -> r4
; V10 loc10 [V10 ] ( 3, 2.46) ubyte -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T15] ( 2, 4 ) ref -> r6 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> -; V14 tmp3 [V14,T20] ( 4, 3.00) ref -> r6 -; V15 tmp4 [V15,T28] ( 3, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> -; V16 tmp5 [V16,T29] ( 3, 0 ) byref -> r0 single-def "Inlining Arg" -; V17 tmp6 [V17,T19] ( 3, 3.07) byref -> r0 single-def "Inlining Arg" -; V18 tmp7 [V18,T16] ( 6, 3.96) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.PortableThreadPool> -; V19 tmp8 [V19,T23] ( 3, 2.37) byref -> r0 single-def "Inlining Arg"
+; V13 tmp2 [V13,T14] ( 2, 4 ) ref -> r6 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals> +; V14 tmp3 [V14,T19] ( 4, 3.00) ref -> r6 +; V15 tmp4 [V15,T27] ( 3, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue> +; V16 tmp5 [V16,T28] ( 3, 0 ) byref -> r0 single-def "Inlining Arg" +; V17 tmp6 [V17,T18] ( 3, 3.07) byref -> r0 single-def "Inlining Arg" +; V18 tmp7 [V18,T15] ( 6, 3.96) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.PortableThreadPool> +; V19 tmp8 [V19,T22] ( 3, 2.37) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V22 tmp11 [V22,T30] ( 2, 0 ) byref -> r0 "Inlining Arg"
+; V22 tmp11 [V22,T29] ( 2, 0 ) byref -> r0 "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V24 tmp13 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp14 [V25,T11] ( 4, 7.54) ref -> r4 class-hnd "Inlining Arg" <System.Object> -; V26 tmp15 [V26,T24] ( 6, 2.18) ref -> r0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V25 tmp14 [V25,T11] ( 3, 5.85) ref -> r4 class-hnd "Inlining Arg" <System.Object> +; V26 tmp15 [V26,T26] ( 5, 1.20) ref -> r0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Tasks.Task> ;* V29 tmp18 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T26] ( 4, 1.99) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> -; V31 tmp20 [V31,T18] ( 2, 3.90) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
+; V30 tmp19 [V30,T24] ( 4, 1.99) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext> +; V31 tmp20 [V31,T17] ( 2, 3.90) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
; V32 tmp21 [V32,T09] ( 4, 13.66) ref -> r3 ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V35 tmp24 [V35,T06] ( 9, 76.12) ref -> r10 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool> ;* V36 tmp25 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp27 [V38,T12] ( 3, 4.88) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V40 tmp29 [V40,T20] ( 3, 2.93) int -> r0 "Inline stloc first use temp" +;* V41 tmp30 [V41,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp31 [V42,T21] ( 3, 2.93) int -> r0 "Inline stloc first use temp"
-;* V43 tmp32 [V43,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V44 tmp33 [V44,T22] ( 3, 2.93) int -> r0 "Inline stloc first use temp" -;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V46 tmp35 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V47 tmp36 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts> -; V48 tmp37 [V48,T02] ( 2,124.88) int -> [sp+0x10] spill-single-def "impAppendStmt" -; V49 tmp38 [V49,T03] ( 3, 93.66) short -> [sp+0x0C] spill-single-def "Inline stloc first use temp" -;* V50 tmp39 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V45 tmp34 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts> +; V46 tmp35 [V46,T02] ( 2,124.88) int -> [sp+0x10] spill-single-def "impAppendStmt" +; V47 tmp36 [V47,T03] ( 3, 93.66) short -> [sp+0x0C] spill-single-def "Inline stloc first use temp" +;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V50 tmp39 [V50,T04] ( 3, 93.66) short -> [sp+0x08] spill-single-def "Inline stloc first use temp"
;* V51 tmp40 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V52 tmp41 [V52,T04] ( 3, 93.66) short -> [sp+0x08] spill-single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V55 tmp44 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> -; V56 tmp45 [V56,T05] ( 3, 93.66) long -> [sp+0x00] do-not-enreg[F] "field V47._data (fldOffset=0x0)" P-INDEP -; V57 cse0 [V57,T01] ( 21,151.39) ref -> r1 multi-def "CSE - aggressive" -; V58 rat0 [V58,T00] ( 3,187.32) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+;* V52 tmp41 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V53 tmp42 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> +; V54 tmp43 [V54,T05] ( 3, 93.66) long -> [sp+0x00] do-not-enreg[F] "field V45._data (fldOffset=0x0)" P-INDEP +; V55 cse0 [V55,T01] ( 21,151.39) ref -> r1 multi-def "CSE - aggressive" +; V56 rat0 [V56,T00] ( 3,187.32) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 36 @@ -89,7 +87,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0] ldr r6, [r0+0x20] ; gcrRegs +[r6] @@ -106,7 +104,7 @@ G_M63069_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b str r2, [sp+0x1C] // [V02 loc2] ldrb r2, [r5+0x1D] cmp r2, 0
- bne G_M63069_IG63
+ bne G_M63069_IG62
;; size=10 bbWeight=1 PerfScore 4.00 G_M63069_IG05: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x1C] // [V02 loc2] @@ -135,7 +133,7 @@ G_M63069_IG06: ; bbWeight=0.49, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0 r6] ldrb r0, [sp+0x18] // [V08 loc8] cmp r0, 0
- bne G_M63069_IG64
+ bne G_M63069_IG63
;; size=10 bbWeight=0.49 PerfScore 1.46 G_M63069_IG07: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r5] @@ -156,12 +154,12 @@ G_M63069_IG09: ; bbWeight=15.61, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r ldr r2, [r2] blx r2 // <unknown method> ; gcrRegs -[r0]
- ldr r3, [sp+0x0C] // [V49 tmp38]
+ ldr r3, [sp+0x0C] // [V47 tmp36]
;; size=24 bbWeight=15.61 PerfScore 124.88 G_M63069_IG10: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
- str r3, [sp+0x10] // [V48 tmp37] - ldrsh r2, [sp+0x04] // [V56 tmp45+0x04] - str r2, [sp+0x08] // [V52 tmp41]
+ str r3, [sp+0x10] // [V46 tmp35] + ldrsh r2, [sp+0x04] // [V54 tmp43+0x04] + str r2, [sp+0x08] // [V50 tmp39]
cmp r2, 0 bgt SHORT G_M63069_IG12 ;; size=12 bbWeight=31.22 PerfScore 156.10 @@ -177,8 +175,8 @@ G_M63069_IG11: ; bbWeight=15.61, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefR ; gcrRegs -[r0] ;; size=24 bbWeight=15.61 PerfScore 109.27 G_M63069_IG12: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] // [V48 tmp37] - ldr r2, [sp+0x08] // [V52 tmp41]
+ ldr r3, [sp+0x10] // [V46 tmp35] + ldr r2, [sp+0x08] // [V50 tmp39]
cmp r3, r2 bgt SHORT G_M63069_IG14 ;; size=8 bbWeight=31.22 PerfScore 124.88 @@ -196,10 +194,10 @@ G_M63069_IG14: ; bbWeight=0.98, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe blx r3 // System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte ; gcrRegs -[r0 r10] cmp r0, 0
- bne G_M63069_IG61
+ bne G_M63069_IG60
sub r0, r4, r9 cmp r0, 30
- bhs G_M63069_IG66
+ bhs G_M63069_IG65
;; size=30 bbWeight=0.98 PerfScore 9.76 G_M63069_IG15: ; bbWeight=1.49, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x1C] // [V02 loc2] @@ -225,13 +223,13 @@ G_M63069_IG16: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0 ldr r1, [sp+0x1C] // [V02 loc2] ; gcrRegs +[r1] cmp r1, 0
- beq G_M63069_IG57
+ beq G_M63069_IG56
;; size=32 bbWeight=0.98 PerfScore 12.68 G_M63069_IG17: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0-r1] ldrb r1, [r5+0x1C] cmp r1, 0
- bne G_M63069_IG68
+ bne G_M63069_IG67
;; size=8 bbWeight=0.98 PerfScore 2.93 G_M63069_IG18: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz ldr r4, [sp+0x1C] // [V02 loc2] @@ -242,25 +240,24 @@ G_M63069_IG18: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0 movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M63069_IG25 ;; size=26 bbWeight=0.98 PerfScore 8.78
-G_M63069_IG19: ; bbWeight=0.91, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - mov r1, r4 - ; gcrRegs +[r1]
+G_M63069_IG19: ; bbWeight=0.91, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r4] + movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs +[r0]
cmp r0, 0 bne SHORT G_M63069_IG21 ;; size=24 bbWeight=0.91 PerfScore 7.27
-G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref
+G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r1, 0xd1ff movt r1, 0xd1ff @@ -272,15 +269,12 @@ G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefReg blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=3.63 PerfScore 25.43
-G_M63069_IG21: ; bbWeight=0.91, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref - mov r0, r4 - ; gcrRegs +[r0]
+G_M63069_IG21: ; bbWeight=0.91, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref + movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=0.91 PerfScore 4.54 G_M63069_IG22: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref movs r0, 0 @@ -330,10 +324,10 @@ G_M63069_IG27: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefR ldr r1, [r0] ldr r0, [r0+0x04] ; byrRegs -[r0]
- str r1, [sp] // [V56 tmp45] - str r0, [sp+0x04] // [V56 tmp45+0x04] - ldrsh r3, [sp] // [V56 tmp45] - str r3, [sp+0x0C] // [V49 tmp38]
+ str r1, [sp] // [V54 tmp43] + str r0, [sp+0x04] // [V54 tmp43+0x04] + ldrsh r3, [sp] // [V54 tmp43] + str r3, [sp+0x0C] // [V47 tmp36]
cmp r3, 0 bge G_M63069_IG10 ;; size=24 bbWeight=31.22 PerfScore 280.98 ...

+2 (+1.11%) : 2334.dasm - System.Globalization.NumberFormatInfo:g_GetProviderNonNull|590(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)

@@ -8,16 +8,16 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 6, 3 ) ref -> r4 class-hnd single-def <System.IFormatProvider> -; V01 loc0 [V01,T03] ( 6, 4 ) ref -> r0 class-hnd single-def <System.Globalization.CultureInfo>
+; V00 arg0 [V00,T00] ( 9, 5 ) ref -> r4 class-hnd single-def <System.IFormatProvider> +; V01 loc0 [V01,T03] ( 4, 2 ) ref -> r0 class-hnd single-def <System.Globalization.CultureInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> -; V04 tmp2 [V04,T04] ( 5, 0 ) ref -> r0 -; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> -; V06 tmp4 [V06,T01] ( 3, 6 ) ref -> r1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+;* V03 tmp1 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V04 tmp2 [V04,T04] ( 4, 0 ) ref -> r0 +; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V06 tmp4 [V06,T02] ( 3, 6 ) ref -> r1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V09 rat0 [V09,T00] ( 5, 7 ) ref -> r0 "replacement local"
+; V08 tmp6 [V08,T06] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V09 rat0 [V09,T01] ( 5, 7 ) ref -> r0 "replacement local"
; ; Lcl frame size = 4 @@ -48,14 +48,14 @@ G_M57757_IG04: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00 G_M57757_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M57757_IG07
- ldrb r1, [r0+0x31]
+ ldrb r1, [r4+0x31]
cmp r1, 0 bne SHORT G_M57757_IG07 ldr r1, [r0+0x0C] @@ -75,12 +75,14 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0 - bne SHORT G_M57757_IG09
mov r0, r4
+ cmp r4, 0 + bne SHORT G_M57757_IG09 + movs r0, 0 + ; gcrRegs -[r0]
movw r4, 0xd1ff ; gcrRegs -[r4] movt r4, 0xd1ff @@ -88,6 +90,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr movt r1, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
+ ; gcrRegs +[r0]
; gcr arg pop 0 mov r1, r0 ; gcrRegs +[r1] @@ -96,7 +99,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0 @@ -104,7 +107,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=82 bbWeight=0 PerfScore 0.00
G_M57757_IG08: ; bbWeight=0, epilog, nogc, extend add sp, 4 pop {r4,r11,lr} @@ -126,7 +129,7 @@ G_M57757_IG11: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 10, PerfScore 18.50, instruction count 63, allocated bytes for code 180 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
+; Total bytes of code 182, prolog size 10, PerfScore 18.50, instruction count 64, allocated bytes for code 182 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
; ============================================================ Unwind Info: @@ -138,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
+ Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.linux.arm.checked.mch

-8 (-1.76%) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)

@@ -9,28 +9,28 @@ ; 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 -> r5 -; V01 loc1 [V01,T14] ( 3, 2.50) int -> r7
+; V00 loc0 [V00,T07] ( 3, 2.50) int -> r5 +; V01 loc1 [V01,T08] ( 3, 2.50) int -> r7
; V02 loc2 [V02,T04] ( 5, 4 ) int -> r4
-; V03 loc3 [V03,T15] ( 3, 2.50) short -> r5
+; V03 loc3 [V03,T09] ( 3, 2.50) short -> r5
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 4 ) int -> r5 "value for stsfld with typeinit" -; V06 tmp2 [V06,T06] ( 3, 4 ) int -> r0 "value for stsfld with typeinit" -; V07 tmp3 [V07,T09] ( 2, 4 ) int -> r0 "value for stsfld with typeinit" -; V08 tmp4 [V08,T10] ( 2, 4 ) int -> r0 "value for stsfld with typeinit" -; V09 tmp5 [V09,T07] ( 3, 4 ) int -> r2 "value for stsfld with typeinit" -; V10 tmp6 [V10,T08] ( 3, 4 ) int -> r2 "value for stsfld with typeinit" -; V11 tmp7 [V11 ] ( 2, 1.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V12 tmp8 [V12 ] ( 2, 1.50) ubyte -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V13 tmp9 [V13,T11] ( 4, 2.50) int -> r7 "Inline return value spill temp" -; V14 tmp10 [V14,T16] ( 4, 2 ) int -> r2 "Inline return value spill temp" -; V15 tmp11 [V15,T01] ( 3, 5 ) int -> r3 "Inlining Arg" -; V16 tmp12 [V16,T12] ( 4, 2.50) int -> r2 "Inline return value spill temp" -; V17 tmp13 [V17,T02] ( 3, 5 ) int -> r3 "Inlining Arg" -; V18 tmp14 [V18,T03] ( 3, 5 ) int -> r2 "Inlining Arg" -; V19 tmp15 [V19,T17] ( 2, 2 ) int -> r0 "argument with side effect" -; V20 tmp16 [V20,T18] ( 2, 2 ) int -> r0 "argument with side effect" -; V21 cse0 [V21,T00] ( 19, 17 ) byref -> r6 "CSE - aggressive"
+; V05 tmp1 [V05,T13] ( 3, 2 ) ubyte -> r5 "Inline return value spill temp" +; V06 tmp2 [V06 ] ( 2, 1.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V07 tmp3 [V07,T14] ( 3, 2 ) ubyte -> r0 "Inline return value spill temp" +; V08 tmp4 [V08 ] ( 2, 1.50) ubyte -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V09 tmp5 [V09,T05] ( 4, 2.50) int -> r7 "Inline return value spill temp" +; V10 tmp6 [V10,T12] ( 4, 2 ) int -> r2 "Inline return value spill temp" +; V11 tmp7 [V11,T01] ( 3, 5 ) int -> r3 "Inlining Arg" +; V12 tmp8 [V12,T15] ( 3, 2 ) int -> r2 "Inline return value spill temp" +; V13 tmp9 [V13,T06] ( 4, 2.50) int -> r2 "Inline return value spill temp" +; V14 tmp10 [V14,T02] ( 3, 5 ) int -> r3 "Inlining Arg" +; V15 tmp11 [V15,T03] ( 3, 5 ) int -> r2 "Inlining Arg" +; V16 tmp12 [V16,T16] ( 3, 2 ) int -> r2 "Inline return value spill temp" +; V17 tmp13 [V17,T17] ( 2, 2 ) int -> r0 "argument with side effect" +; V18 tmp14 [V18,T18] ( 2, 2 ) int -> r0 "argument with side effect" +; V19 cse0 [V19,T10] ( 3, 2.50) int -> r0 "CSE - moderate" +; V20 cse1 [V20,T11] ( 3, 2.50) int -> r0 "CSE - moderate" +; V21 cse2 [V21,T00] ( 17, 16 ) byref -> r6 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,7 +67,7 @@ G_M39812_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0] mov r6, r0 ; byrRegs +[r6] @@ -162,7 +162,7 @@ G_M39812_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0] ldr r4, [r0+0xA10] mul r0, r4, r5 @@ -174,7 +174,6 @@ G_M39812_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre bgt SHORT G_M39812_IG10 ;; size=182 bbWeight=1 PerfScore 65.00 G_M39812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
- ldrsh r0, [r6+0xB00]
mov r1, r4 movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E @@ -183,7 +182,7 @@ G_M39812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b blx r3 // CORINFO_HELP_DIV cmp r0, r5 beq SHORT G_M39812_IG11
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M39812_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref movw r0, 0xd1ff strh r0, [r6+0xB00] @@ -211,7 +210,6 @@ G_M39812_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre bgt SHORT G_M39812_IG16 ;; size=30 bbWeight=1 PerfScore 10.00 G_M39812_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
- ldrsh r0, [r6+0xB02]
mov r1, r4 movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E @@ -220,7 +218,7 @@ G_M39812_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b blx r3 // CORINFO_HELP_DIV cmp r0, r7 beq SHORT G_M39812_IG17
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M39812_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref strh r5, [r6+0xB02] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -274,7 +272,7 @@ G_M39812_IG29: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 454, prolog size 8, PerfScore 144.00, instruction count 164, allocated bytes for code 454 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
+; Total bytes of code 446, prolog size 8, PerfScore 143.00, instruction count 162, allocated bytes for code 446 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -286,7 +284,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 454 (0x0001c6)
+ Function Length : 223 (0x000df) Actual length = 446 (0x0001be)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-2 (-1.52%) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)

@@ -9,11 +9,11 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r5 class-hnd single-def <System.Text.StringBuilder>
-; V01 loc0 [V01,T04] ( 3, 1.50) ushort -> r6
+; V01 loc0 [V01,T03] ( 3, 1.50) ushort -> r6
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 2 ) int -> r1 "argument with side effect" ; V04 tmp2 [V04,T02] ( 2, 2 ) int -> r1 "argument with side effect"
-; V05 cse0 [V05,T03] ( 3, 1.50) byref -> r7 "CSE - moderate"
+; V05 cse0 [V05,T04] ( 3, 1.50) int -> r7 "CSE - moderate"
; ; Lcl frame size = 0 @@ -59,22 +59,20 @@ G_M4843_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, by movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0]
- mov r7, r0 - ; byrRegs +[r7] - ldrh r3, [r7] - cmp r3, r6
+ ldrh r7, [r0] + cmp r7, r6
beq SHORT G_M4843_IG04 movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
ldrh r1, [r0] cmp r1, r6 beq SHORT G_M4843_IG04
- ldrh r1, [r7]
+ mov r1, r7
mov r0, r5 ; gcrRegs +[r0] ; byrRegs -[r0] @@ -84,14 +82,13 @@ G_M4843_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, by ldr r3, [r4] blx r3 // <unknown method> ; gcrRegs -[r5]
- ; byrRegs -[r7] - ;; size=96 bbWeight=0.50 PerfScore 19.00
+ ;; size=94 bbWeight=0.50 PerfScore 18.50
G_M4843_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r0] pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 32.00, instruction count 51, allocated bytes for code 132 (MethodHash=0b61ed14) for method System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
+; Total bytes of code 130, prolog size 8, PerfScore 31.50, instruction count 50, allocated bytes for code 130 (MethodHash=0b61ed14) for method System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +100,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+0 (0.00%) : 3077.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 -> r5 "value for stsfld with typeinit"
; ; Lcl frame size = 4 @@ -21,17 +20,19 @@ G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // <unknown method>
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[r0]
; gcr arg pop 0 mov r5, r0
+ ; byrRegs +[r5]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE - ; byrRegs +[r0]
+ blx r3 // <unknown method> + ; byrRegs -[r0]
; gcr arg pop 0
- str r5, [r0+0xDF8]
+ str r0, [r5+0xDF8]
;; size=34 bbWeight=1 PerfScore 12.00 G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r5,pc}

+0 (0.00%) : 130293.dasm - Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)

@@ -14,7 +14,8 @@ ; V03 loc1 [V03,T00] ( 5, 17 ) int -> r7 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 16 ) int -> r2 "argument with side effect"
-; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> r8 "argument with side effect"
+; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> r1 "argument with side effect" +; V07 cse0 [V07,T06] ( 2, 4.50) byref -> r8 hoist "CSE - aggressive"
; ; Lcl frame size = 4 @@ -38,9 +39,20 @@ G_M38544_IG02: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- ble SHORT G_M38544_IG04
+ ble SHORT G_M38544_IG05
;; size=28 bbWeight=1 PerfScore 11.00
-G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M38544_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[r0] + mov r8, r0 + ; byrRegs +[r8] + ;; size=16 bbWeight=0.50 PerfScore 3.00 +G_M38544_IG04: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz + ; byrRegs -[r0]
mov r0, r6 ; gcrRegs +[r0] mov r1, r7 @@ -49,30 +61,19 @@ G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b add r4, pc ldr r3, [r4] blx r3 // <unknown method>
- mov r8, r0 - ; gcrRegs +[r8] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE - ; gcrRegs -[r0] - ; byrRegs +[r0] - ldr r2, [r0+0x110] - mov r1, r8
+ mov r1, r0
; gcrRegs +[r1]
+ ldr r2, [r8+0x110]
mov r0, r5
- ; gcrRegs +[r0] - ; byrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r0] ldr lr, [r4] blx lr // <unknown method>
- ; gcrRegs -[r0-r1 r8]
+ ; gcrRegs -[r0-r1]
cmp r0, 0
- bne SHORT G_M38544_IG06
+ bne SHORT G_M38544_IG07
adds r7, r7, 1 mov r0, r6 ; gcrRegs +[r0] @@ -83,23 +84,24 @@ G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, r7
- bgt SHORT G_M38544_IG03 - ;; size=86 bbWeight=4 PerfScore 132.00 -G_M38544_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt SHORT G_M38544_IG04 + ;; size=70 bbWeight=4 PerfScore 108.00 +G_M38544_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5-r6]
+ ; byrRegs -[r8]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M38544_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38544_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M38544_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 136, prolog size 8, PerfScore 148.00, instruction count 51, allocated bytes for code 136 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 127.00, instruction count 51, allocated bytes for code 136 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
; ============================================================ Unwind Info:

+0 (0.00%) : 124604.dasm - Newtonsoft.Json.DefaultJsonNameTable:.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 -> r5 "value for stsfld with typeinit"
; ; Lcl frame size = 4 @@ -21,17 +20,19 @@ G_M7219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // <unknown method>
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR + ; byrRegs +[r0]
; gcr arg pop 0 mov r5, r0
+ ; byrRegs +[r5]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE - ; byrRegs +[r0]
+ blx r3 // <unknown method> + ; byrRegs -[r0]
; gcr arg pop 0
- str r5, [r0+0x208]
+ str r0, [r5+0x208]
;; size=34 bbWeight=1 PerfScore 12.00 G_M7219_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r5,pc}

libraries.pmi.linux.arm.checked.mch

-46 (-88.46%) : 8557.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)

@@ -7,64 +7,40 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) byref -> r4 this single-def -; V01 arg1 [V01,T01] ( 3, 3 ) int -> r5 single-def
+; V00 this [V00,T00] ( 3, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M624_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr} - mov r4, r0 - ; byrRegs +[r4] - mov r5, r1 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M624_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M624_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M624_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - strh r5, [r4]
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M624_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,pc}
+G_M624_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + ; byrRegs +[r0] + strh r1, [r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M624_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M624_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M624_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 52 (MethodHash=d9cffd8f) for method System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
+; Total bytes of code 6, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 6 (MethodHash=d9cffd8f) for method System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 3 (0x00003) Actual length = 6 (0x000006) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-46 (-82.14%) : 8558.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRefubyte:byref:this (FullOpts)

@@ -8,69 +8,43 @@ ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) byref -> r4 this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02,T01] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V03 tmp2 [V03,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M281_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr} - mov r4, r0 - ; byrRegs +[r4] - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M281_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M281_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M281_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ldrsb r0, [r4] - add r0, r4, 8 - ; byrRegs +[r0] - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M281_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc}
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M281_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + ; byrRegs +[r0] + ldrsb r3, [r0] + adds r0, 8 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M281_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M281_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz - ; byrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M281_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=8a4ffee6) for method System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
+; Total bytes of code 10, prolog size 2, PerfScore 4.00, instruction count 4, allocated bytes for code 10 (MethodHash=8a4ffee6) for method System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 5 (0x00005) Actual length = 10 (0x00000a) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-42 (-75.00%) : 6305.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)

@@ -14,53 +14,30 @@ G_M32434_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M32434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M32434_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M32434_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M32434_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M32434_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M32434_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M32434_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

+0 (0.00%) : 5377.dasm - System.Threading.ProcessorIdCache:GetCurrentProcessorId():int (FullOpts)

@@ -10,7 +10,7 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T00] ( 4, 7 ) int -> r4 "dup spill"
-; V03 cse0 [V03,T01] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3, 3 ) byref -> r0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,7 +23,8 @@ G_M12048_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r1, 820 movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_DYNAMICCLASS + ; byrRegs +[r0]
; gcr arg pop 0 ldr r4, [r0+0xA04] subs r3, r4, 1 @@ -33,6 +34,7 @@ G_M12048_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bne SHORT G_M12048_IG05 ;; size=38 bbWeight=1 PerfScore 12.00 G_M12048_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]

+0 (0.00%) : 8953.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 -> r4 class-hnd single-def <System.Object> -; V01 loc0 [V01,T01] ( 3, 2.50) ref -> r0 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Object> +; V01 loc0 [V01,T01] ( 2, 1.50) ref -> r0 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 = 0 @@ -25,22 +25,21 @@ G_M50446_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M50446_IG05 ;; size=24 bbWeight=1 PerfScore 8.00
-G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - mov r0, r4 - ; gcrRegs +[r0]
+G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r4] + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M50446_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r4,pc} ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M50446_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]

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

@@ -8,82 +8,78 @@ ; 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 -> r1 class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd exact EH-live <<unknown class>> -; V03 loc1 [V03,T02] ( 4, 4 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T00] ( 6, 6 ) ref -> r4 class-hnd single-def <System.Object> +; V02 loc0 [V02,T01] ( 8, 4 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <<unknown class>> +; V03 loc1 [V03,T02] ( 4, 4 ) ref -> r6 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[Z] EH-live ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V06 loc4 [V06,T06] ( 4, 0 ) ref -> r4 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,T07] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V10 tmp3 [V10 ] ( 2, 0 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> -;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken> -; V12 tmp5 [V12 ] ( 2, 0 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V10._source (fldOffset=0x0)" P-DEP -; V13 tmp6 [V13,T08] ( 2, 0 ) ref -> r1 "field V11._source (fldOffset=0x0)" P-INDEP -; V14 tmp7 [V14,T03] ( 2, 4 ) int -> r1 "argument with side effect" -; V15 PSPSym [V15,T05] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V09 tmp2 [V09 ] ( 2, 0 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> +;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken> +; V11 tmp4 [V11 ] ( 2, 0 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V09._source (fldOffset=0x0)" P-DEP +; V12 tmp5 [V12,T08] ( 2, 0 ) ref -> r1 "field V10._source (fldOffset=0x0)" P-INDEP +; V13 tmp6 [V13,T03] ( 2, 4 ) int -> r1 "argument with side effect" +; V14 PSPSym [V14,T05] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M26575_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - sub sp, 24
+ push {r4,r5,r6,r11,lr} + sub sp, 20
add r11, sp, 32 movs r2, 0
- str r2, [sp+0x08] // [V10 tmp3]
+ str r2, [sp+0x08] // [V09 tmp2]
add r2, sp, 40
- str r2, [sp+0x14] // [V15 PSPSym] - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M26575_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ str r2, [sp+0x10] // [V14 PSPSym] + mov r4, r1 + ; gcrRegs +[r4] + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M26575_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r1, r4
; gcrRegs +[r1]
- str r1, [sp+0x04] // [V02 loc0] - ; GC ptr vars +{V02} - cmp r1, 0 - beq SHORT G_M26575_IG05 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M26575_IG03: ; bbWeight=0.50, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr r0, [r1]
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff
- cmp r0, r3 - bne SHORT G_M26575_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M26575_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz - ldr r0, [sp+0x04] // [V02 loc0] - ; gcrRegs +[r0] - ldr r5, [r0+0x24]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[r1] +[r0] + ; gcr arg pop 0 + mov r5, r0
; gcrRegs +[r5]
- cmp r5, 0 - bne SHORT G_M26575_IG07 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M26575_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r5]
+ str r5, [sp+0x04] + ; GC ptr vars +{V02} + cmp r4, 0 + beq SHORT G_M26575_IG03 + ldr r6, [r4+0x24] + ; gcrRegs +[r6] + cmp r6, 0 + bne SHORT G_M26575_IG05 + ;; size=34 bbWeight=1 PerfScore 13.00 +G_M26575_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r5-r6]
; GC ptr vars -{V02}
- mov r0, r1
+ mov r0, r4
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0 r4]
; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 5.00
-G_M26575_IG06: ; bbWeight=1, epilog, nogc, extend - add sp, 24 - pop {r4,r5,r11,pc}
+G_M26575_IG04: ; bbWeight=1, epilog, nogc, extend + add sp, 20 + pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M26575_IG07: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r5]
+G_M26575_IG05: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r5-r6]
; GC ptr vars +{V01 V02}
- ldr r1, [sp+0x04] // [V02 loc0] - ; gcrRegs +[r1] - movs r0, 0 - str r0, [r1+0x24] - ldr r1, [sp+0x04] // [V02 loc0] - ldrsh r1, [r1+0x28] - ; gcrRegs -[r1] - mov r0, r5
+ movs r1, 0 + str r1, [r5+0x24] + ldrsh r1, [r5+0x28] + mov r0, r6
; gcrRegs +[r0] movw r4, 0xd1ff movt r4, 0xd1ff @@ -92,22 +88,19 @@ G_M26575_IG07: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0020 {r5}, ; gcrRegs -[r0] ; gcr arg pop 0 str r0, [sp+0x0C] // [V04 loc2]
- ;; size=28 bbWeight=1 PerfScore 11.00 -G_M26575_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - ldr r1, [sp+0x04] // [V02 loc0] - ; gcrRegs +[r1] - ldrsh r1, [r1+0x28] - ; gcrRegs -[r1] - mov r0, r5
+ ;; size=24 bbWeight=1 PerfScore 9.00 +G_M26575_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref + ldrsh r1, [r5+0x28] + mov r0, r6
; gcrRegs +[r0] movw r4, 0xd1ff movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r0 r5]
+ ; gcrRegs -[r0 r6]
; gcr arg pop 0 mov r1, r0
- ldr r0, [sp+0x04] // [V02 loc0]
+ mov r0, r5
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff @@ -115,37 +108,38 @@ G_M26575_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 13.00 -G_M26575_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ;; size=34 bbWeight=1 PerfScore 12.00 +G_M26575_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc + ; gcrRegs -[r5]
; GC ptr vars -{V01 V02}
- add sp, 24 - pop {r4,r5,r11,pc}
+ add sp, 20 + pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M26575_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26575_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[r0]
- push {r2,r3,r4,r5,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
- str r3, [sp+0x04]
+ str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26575_IG09: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V02} mov r1, r0 ; gcrRegs +[r1] ldr r0, [r11-0x14] // [V04 loc2] ; gcrRegs -[r0] cmp r0, 3
- bne SHORT G_M26575_IG13
+ bne SHORT G_M26575_IG11
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0 mov r4, r0 ; gcrRegs +[r4] cmp r4, 0
- beq SHORT G_M26575_IG12
+ beq SHORT G_M26575_IG10
mov r0, r4 movw r3, 0xd1ff movt r3, 0xd1ff @@ -164,11 +158,11 @@ G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0}, blx r3 // <unknown method> ; gcrRegs -[r0-r2 r4] ; gcr arg pop 0
- b SHORT G_M26575_IG14
+ b SHORT G_M26575_IG12
;; size=70 bbWeight=0 PerfScore 0.00
-G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26575_IG10: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V02}
- subw r0, r11, 24 // [V10 tmp3]
+ subw r0, r11, 24 // [V09 tmp2]
movs r1, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -177,7 +171,7 @@ G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, by ; gcr arg pop 0 ldr r0, [r11-0x1C] // [V02 loc0] ; gcrRegs +[r0]
- ldr r1, [r11-0x18] // [V12 tmp5]
+ ldr r1, [r11-0x18] // [V11 tmp4]
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -186,9 +180,9 @@ G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, by blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; gcr arg pop 0
- b SHORT G_M26575_IG14
+ b SHORT G_M26575_IG12
;; size=40 bbWeight=0 PerfScore 0.00
-G_M26575_IG13: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r1] ; GC ptr vars +{V01 V02} ldr r0, [r11-0x1C] // [V02 loc0] @@ -201,15 +195,15 @@ G_M26575_IG13: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, ; gcrRegs -[r0-r1] ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00 ...

libraries_tests.run.linux.arm.Release.mch

-32 (-50.00%) : 1162.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)

@@ -3,39 +3,27 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
; 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 -> r0 class-hnd single-def <System.Reflection.Assembly> -; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly> -; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly> +; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 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
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M8626_IG05 - ldr r1, [r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M8626_IG04 - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ beq SHORT G_M8626_IG04
mov r1, r0 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -43,39 +31,34 @@ G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0 - bne SHORT G_M8626_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0 + ;; size=24 bbWeight=1 PerfScore 8.00 +G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8626_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r0] - ldr r0, [r0+0x04]
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (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
F bit : 0 E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,13 +68,9 @@ Unwind Info: Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 0 (0x00)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-32 (-50.00%) : 4838.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)

@@ -3,39 +3,27 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 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 -> r0 class-hnd single-def <System.Reflection.Assembly> -; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly> -; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly> +; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 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
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M8626_IG05 - ldr r1, [r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M8626_IG04 - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ beq SHORT G_M8626_IG04
mov r1, r0 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -43,39 +31,34 @@ G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0 - bne SHORT G_M8626_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0 + ;; size=24 bbWeight=1 PerfScore 8.00 +G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8626_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r0] - ldr r0, [r0+0x04]
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (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
F bit : 0 E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,13 +68,9 @@ Unwind Info: Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 0 (0x00)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-32 (-50.00%) : 6400.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)

@@ -3,41 +3,29 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
; 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 -> r0 class-hnd single-def <System.Reflection.Assembly> -; V01 loc0 [V01,T01] ( 2, 2.00) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly> -; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly> +; V01 loc0 [V01,T01] ( 2, 2.00) ref -> r0 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
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M8626_IG06
+ beq SHORT G_M8626_IG05
;; size=4 bbWeight=1 PerfScore 2.00
-G_M8626_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r1, [r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M8626_IG05 - ;; size=14 bbWeight=1.00 PerfScore 5.00 -G_M8626_IG04: ; bbWeight=1.00, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8626_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
mov r1, r0 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -45,39 +33,34 @@ G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0 - bne SHORT G_M8626_IG08 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8626_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0 + ;; size=20 bbWeight=1.00 PerfScore 6.00 +G_M8626_IG04: ; bbWeight=1.00, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1.00 PerfScore 1.00 +G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG07: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8626_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r0] - ldr r0, [r0+0x04]
+G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG09: ; bbWeight=0, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (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
F bit : 0 E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -87,13 +70,9 @@ Unwind Info: Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 0 (0x00)
- ---- Scope 2 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-6 (-1.74%) : 3763.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

@@ -5,41 +5,45 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[] -; V01 loc0 [V01 ] ( 1, 1 ) struct ( 4) [sp+0x30] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V02 loc1 [V02 ] ( 1, 1 ) struct ( 4) [sp+0x2C] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x4C] do-not-enreg[] +; V01 loc0 [V01 ] ( 1, 1 ) struct ( 4) [sp+0x48] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V02 loc1 [V02 ] ( 1, 1 ) struct ( 4) [sp+0x44] 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 ( 4) [sp+0x28] 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 -> [sp+0x24] do-not-enreg[] must-init "Reusable Box Helper" -; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 4) [sp+0x20] 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 ( 4) [sp+0x1C] 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 -> [sp+0x18] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>> -; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 4) [sp+0x14] 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 ( 4) [sp+0x10] 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 ( 4) [sp+0x0C] 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 -> [sp+0x08] do-not-enreg[] must-init "argument with side effect" -; V13 tmp10 [V13 ] ( 1, 1 ) byref -> [sp+0x04] must-init "ReplaceWithLclVar is creating a new local variable"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 4) [sp+0x40] 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 -> [sp+0x3C] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 4) [sp+0x38] 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 ( 4) [sp+0x34] 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 -> [sp+0x28] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 4) [sp+0x24] 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 -> [sp+0x18] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 4) [sp+0x14] 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 ( 4) [sp+0x10] 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 -> [sp+0x0C] do-not-enreg[] must-init "argument with side effect" +; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [sp+0x08] do-not-enreg[] must-init "argument with side effect" +; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect" +; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [sp+0x00] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 80
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r10,r11,lr}
- sub sp, 56 - add r11, sp, 64 - sub r3, r11, 60 - movs r4, 6
+ sub sp, 80 + add r11, sp, 88 + sub r3, r11, 88 + movs r4, 9
movs r1, 0 movs r2, 0 stm r3!, {r1,r2} subs r4, 1 bhi SHORT pc-6 (-3 instructions)
- str r0, [sp+0x34] // [V00 arg0] - ;; size=28 bbWeight=1 PerfScore 11.00
+ str r1, [r3] + str r0, [sp+0x4C] // [V00 arg0] + ;; size=30 bbWeight=1 PerfScore 12.00
G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x34]
+ ldr r3, [sp+0x4C]
cmp r3, 7 bhi SHORT G_M5822_IG03
- ldr r3, [sp+0x34]
+ ldr r3, [sp+0x4C]
movw r2, LOW ADDRESS J_M5822_DS00 movt r2, HIGH ADDRESS J_M5822_DS00 @@ -62,85 +66,73 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r1, [r3] ; gcrRegs +[r1]
- add r0, sp, 12
+ add r0, sp, 16
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r1]
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x10]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11 ;; size=30 bbWeight=1 PerfScore 11.00 G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3]
+ movs r2, 0 + movs r3, 0 + vmov.i2d d4, r2, r3 + vstr d4, [sp+0x18] // [V10 tmp7] + add r1, sp, 24 // [V10 tmp7]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x18] // [V08 tmp5] - ldr r3, [sp+0x18] // [V08 tmp5] - ; gcrRegs +[r3] - movs r1, 0 - movs r2, 0 - vmov.i2d d4, r1, r2 - vstr d4, [r3+0x04] - ldr r1, [sp+0x18] // [V08 tmp5]
+ str r0, [sp+0x0C] // [V13 tmp10] + ldr r1, [sp+0x0C] // [V13 tmp10]
; gcrRegs +[r1]
- add r0, sp, 16 // [V10 tmp7]
+ add r0, sp, 20 // [V11 tmp8]
; gcrRegs -[r0] movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r1]
- ldr r3, [sp+0x10] // [V10 tmp7]
+ ldr r3, [sp+0x14] // [V11 tmp8]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11 ;; size=56 bbWeight=1 PerfScore 20.00 G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3]
+ movs r3, 0 + movs r2, 0 + str r3, [sp+0x28] // [V08 tmp5] + str r2, [sp+0x2C] // [V08 tmp5+0x04] + add r1, sp, 40 // [V08 tmp5]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x18] // [V08 tmp5] - ldr r3, [sp+0x18] // [V08 tmp5] - ; gcrRegs +[r3] - adds r3, r3, 4 - ; gcrRegs -[r3] - ; byrRegs +[r3] - str r3, [sp+0x04] // [V13 tmp10] - ldr r3, [sp+0x04] // [V13 tmp10] - movs r2, 0 - str r2, [r3] - movs r3, 0 - ; byrRegs -[r3] - ldr r2, [sp+0x04] // [V13 tmp10] - ; byrRegs +[r2] - str r3, [r2+0x04] - ldr r1, [sp+0x18] // [V08 tmp5]
+ str r0, [sp+0x08] // [V14 tmp11] + ldr r1, [sp+0x08] // [V14 tmp11]
; gcrRegs +[r1]
- add r0, sp, 20 // [V09 tmp6]
+ add r0, sp, 36 // [V09 tmp6]
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r1]
- ; byrRegs -[r2] - ldr r3, [sp+0x14] // [V09 tmp6]
+ ldr r3, [sp+0x24] // [V09 tmp6]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
- ;; size=60 bbWeight=1 PerfScore 24.00
+ ;; size=52 bbWeight=1 PerfScore 20.00
G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] movw r3, 0xd1ff @@ -154,50 +146,48 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r3, 0xd1ff ; gcrRegs -[r3] movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_BOX
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0] ; byrRegs -[r1]
- str r0, [sp+0x08] // [V12 tmp9] - ldr r1, [sp+0x08] // [V12 tmp9]
+ str r0, [sp+0x04] // [V15 tmp12] + ldr r1, [sp+0x04] // [V15 tmp12]
; gcrRegs +[r1]
- add r0, sp, 28 // [V07 tmp4]
+ add r0, sp, 52 // [V07 tmp4]
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r1]
- ldr r3, [sp+0x1C] // [V07 tmp4]
+ ldr r3, [sp+0x34] // [V07 tmp4]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11 ;; size=54 bbWeight=1 PerfScore 19.00 G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3]
+ movs r3, 0 + str r3, [sp+0x3C] // [V05 tmp2] + add r1, sp, 60 // [V05 tmp2]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x24] // [V05 tmp2] - ldr r3, [sp+0x24] // [V05 tmp2] - ; gcrRegs +[r3] - movs r2, 0 - str r2, [r3+0x04] - ldr r1, [sp+0x24] // [V05 tmp2]
+ str r0, [sp] // [V16 tmp13] + ldr r1, [sp] // [V16 tmp13]
; gcrRegs +[r1]
- add r0, sp, 32 // [V06 tmp3]
+ add r0, sp, 56 // [V06 tmp3]
; gcrRegs -[r0] movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r1]
- ldr r3, [sp+0x20] // [V06 tmp3]
+ ldr r3, [sp+0x38] // [V06 tmp3]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11 ;; size=48 bbWeight=1 PerfScore 18.00 G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -206,32 +196,32 @@ G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r1, [r3] ; gcrRegs +[r1] ...

+0 (0.00%) : 3418.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:Significant(System.Linq.Expressions.Expression):ubyte (Tier0-FullOpts)

@@ -7,8 +7,8 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 5, 4 ) ref -> r4 class-hnd single-def <System.Linq.Expressions.Expression> -; V01 loc0 [V01,T01] ( 6, 11 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T03] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Linq.Expressions.Expression> +; V01 loc0 [V01,T01] ( 5, 10 ) ref -> r5 class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T00] ( 5, 16.50) int -> r4 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 cse0 [V04,T02] ( 4, 9 ) int -> r6 "CSE - aggressive" @@ -28,11 +28,11 @@ G_M45010_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] mov r5, r0 ; gcrRegs +[r5]
- cmp r5, 0
+ cmp r4, 0
beq SHORT G_M45010_IG09 ;; size=26 bbWeight=1 PerfScore 9.00 G_M45010_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz @@ -83,25 +83,21 @@ G_M45010_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by G_M45010_IG08: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r0, r4 - ; gcrRegs +[r0]
+G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Linq.Expressions.Compiler.LambdaCompiler:NotEmpty(System.Linq.Expressions.Expression):ubyte
- ; gcrRegs -[r0]
cmp r0, 0 beq SHORT G_M45010_IG05
- mov r1, r4 - ; gcrRegs +[r1]
+ movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1 r4] +[r0]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs +[r0]
cmp r0, 0 beq SHORT G_M45010_IG10 movs r0, 0

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

@@ -66,14 +66,14 @@ G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x0C] // [V04 tmp3] ;; size=22 bbWeight=0.20 PerfScore 1.40 G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp+0x0C] // [V04 tmp3] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] str r0, [sp+0x10] // [V03 tmp2] ldr r0, [sp+0x18] // [V00 this]

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-42 (-75.00%) : 2052.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)

@@ -14,53 +14,30 @@ G_M7353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M7353_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M7353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M7353_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M7353_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7353_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - mov r1, 432 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M7353_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-40 (-74.07%) : 773.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -15,53 +15,30 @@ G_M31334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M31334_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M31334_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M31334_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M31334_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M31334_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 55 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M31334_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-40 (-74.07%) : 781.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -15,53 +15,30 @@ G_M24108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M24108_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M24108_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M24108_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M24108_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M24108_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 58 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M24108_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-2 (-0.20%) : 1008.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 -> [sp+0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T11] ( 3, 5 ) ref -> r9 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T51] ( 3, 1.50) ref -> r9 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T52] ( 3, 1.50) ref -> r9 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T59] ( 2, 1 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 3, 1.50) struct ( 8) [sp+0x28] do-not-enreg[XSA] multireg-arg must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [sp+0x10] class-hnd EH-live single-def <<unknown class>> ; V11 loc6 [V11,T06] ( 3, 12 ) ref -> r4 class-hnd <System.__Canon> @@ -31,7 +31,7 @@ ; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> [sp+0x0C] class-hnd spill-single-def "non-inline candidate call" <System.__Canon> ;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V22 tmp10 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T39] ( 3, 2 ) int -> r4 "spilling helperCall"
+; V23 tmp11 [V23,T39] ( 3, 2 ) int -> r9 "spilling helperCall"
; V24 tmp12 [V24,T40] ( 3, 2 ) int -> [sp+0x24] "spilling helperCall" ; V25 tmp13 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x1C] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V26 tmp14 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -44,10 +44,10 @@ ;* V33 tmp21 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V34 tmp22 [V34 ] ( 2, 1 ) byref -> [sp+0x28] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP ; V35 tmp23 [V35 ] ( 2, 1 ) int -> [sp+0x2C] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x4)" P-DEP
-; V36 tmp24 [V36,T53] ( 2, 1.50) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP -; V37 tmp25 [V37,T55] ( 2, 1.50) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP -; V38 tmp26 [V38,T54] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V29._reference (fldOffset=0x0)" P-DEP -; V39 tmp27 [V39,T56] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V29._length (fldOffset=0x4)" P-DEP
+; V36 tmp24 [V36,T52] ( 2, 1.50) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP +; V37 tmp25 [V37,T54] ( 2, 1.50) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP +; V38 tmp26 [V38,T53] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V29._reference (fldOffset=0x0)" P-DEP +; V39 tmp27 [V39,T55] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V29._length (fldOffset=0x4)" P-DEP
; V40 tmp28 [V40,T14] ( 2, 4 ) int -> r0 "argument with side effect" ; V41 tmp29 [V41,T48] ( 2, 2 ) int -> r0 "argument with side effect" ; V42 tmp30 [V42,T49] ( 2, 2 ) int -> r0 "argument with side effect" @@ -71,7 +71,7 @@ ; V60 rat13 [V60,T22] ( 3, 2.80) int -> r0 "spilling expr" ; V61 rat14 [V61,T32] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable" ; V62 rat15 [V62,T23] ( 3, 2.80) int -> r0 "spilling expr"
-; V63 rat16 [V63,T33] ( 3, 2.24) int -> r4 "fgMakeTemp is creating a new local variable"
+; V63 rat16 [V63,T33] ( 3, 2.24) int -> r9 "fgMakeTemp is creating a new local variable"
; V64 rat17 [V64,T24] ( 3, 2.80) int -> r0 "spilling expr" ; V65 rat18 [V65,T34] ( 3, 2.24) int -> r3 "fgMakeTemp is creating a new local variable" ; V66 rat19 [V66,T46] ( 3, 2 ) int -> r0 "runtime lookup" @@ -82,9 +82,9 @@ ; V71 rat24 [V71,T36] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable" ; V72 rat25 [V72,T27] ( 3, 2.80) int -> r0 "spilling expr" ; V73 rat26 [V73,T37] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
-; V74 rat27 [V74,T59] ( 3, 1 ) int -> r7 "runtime lookup" -; V75 rat28 [V75,T57] ( 3, 1.40) int -> r0 "spilling expr" -; V76 rat29 [V76,T58] ( 3, 1.12) int -> r4 "fgMakeTemp is creating a new local variable"
+; V74 rat27 [V74,T58] ( 3, 1 ) int -> r7 "runtime lookup" +; V75 rat28 [V75,T56] ( 3, 1.40) int -> r0 "spilling expr" +; V76 rat29 [V76,T57] ( 3, 1.12) int -> r4 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 60 @@ -133,7 +133,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.20 PerfScore 1.20 G_M36297_IG05: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz @@ -173,13 +173,13 @@ G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 1.08 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] ; gcr arg pop 0 mov r7, r0 @@ -222,7 +222,7 @@ G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 1.08 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz @@ -230,7 +230,7 @@ G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFARRAY
+ blx r3 // CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[r1] +[r0] ; gcr arg pop 0 mov r9, r0 @@ -258,7 +258,7 @@ G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r4, r0 ;; size=22 bbWeight=0.18 PerfScore 1.26 @@ -283,7 +283,7 @@ G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 mov r7, r0 ;; size=22 bbWeight=0.18 PerfScore 1.26 @@ -341,7 +341,7 @@ G_M36297_IG29: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 1.08 G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz @@ -349,73 +349,70 @@ G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[r1 r4] +[r0]
; gcr arg pop 0
- mov r9, r0 - ; gcrRegs +[r9] - cmp r9, 0 - beq SHORT G_M36297_IG44
+ mov r4, r0 + ; gcrRegs +[r4]
ldr r0, [r7+0x20] ; gcrRegs -[r0] ldr r1, [r0+0x0C] cmp r1, 40 ble SHORT G_M36297_IG33
- ;; size=28 bbWeight=0.50 PerfScore 5.50 -G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - ldr r4, [r0+0x28] - cmp r4, 0
+ ;; size=22 bbWeight=0.50 PerfScore 4.50 +G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz + ldr r9, [r0+0x28] + cmp r9, 0
beq SHORT G_M36297_IG33
- ;; size=6 bbWeight=0.40 PerfScore 1.20 -G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=0.40 PerfScore 1.20 +G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M36297_IG34 ;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
mov r0, r7 movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r4, r0
+ mov r9, r0
;; size=22 bbWeight=0.18 PerfScore 1.26
-G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x20] ldr r1, [r0+0x0C] cmp r1, 44 ble SHORT G_M36297_IG37 ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0+0x2C] cmp r3, 0 beq SHORT G_M36297_IG37 ;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
str r3, [sp+0x24] b SHORT G_M36297_IG38 ;; size=4 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
mov r0, r7 movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 str r0, [sp+0x24] // [V24 tmp12] ;; size=22 bbWeight=0.18 PerfScore 1.26
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
add r0, sp, 28 // [V25 tmp13]
- mov r1, r4 - mov r2, r9
+ mov r1, r9 + mov r2, r4
; gcrRegs +[r2] movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] blx lr // System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
- ; gcrRegs -[r2 r9]
+ ; gcrRegs -[r2 r4]
; gcr arg pop 0 ldr r2, [sp+0x1C] // [V36 tmp24] ; byrRegs +[r2] @@ -447,7 +444,7 @@ G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 1.08 G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref @@ -493,13 +490,13 @@ G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=20 bbWeight=0.18 PerfScore 1.08 G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0] ; gcr arg pop 0 mov r9, r0 @@ -534,7 +531,7 @@ G_M36297_IG51: ; bbWeight=0.18, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0 movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff ...

+0 (0.00%) : 515.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 -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 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 -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 4 @@ -38,15 +38,14 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M47281_IG05 ;; size=40 bbWeight=1 PerfScore 14.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - mov r1, r4 - ; gcrRegs +[r1]
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r4] + movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -59,7 +58,7 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend bx r3 // System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] ;; size=8 bbWeight=0.50 PerfScore 1.50 G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1 r4] +[r0]
+ ; gcrRegs +[r0]
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50

+0 (0.00%) : 607.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 -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 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 -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; ; Lcl frame size = 4 @@ -38,15 +38,14 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M51894_IG05 ;; size=40 bbWeight=1 PerfScore 14.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - mov r1, r4 - ; gcrRegs +[r1]
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r4] + movs r1, 0
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -59,7 +58,7 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend bx r3 // System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] ;; size=8 bbWeight=0.50 PerfScore 1.50 G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1 r4] +[r0]
+ ; gcrRegs +[r0]
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50

realworld.run.linux.arm.checked.mch

-42 (-75.00%) : 3198.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)

@@ -14,53 +14,30 @@ G_M41081_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M41081_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M41081_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M41081_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M41081_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-42 (-75.00%) : 3446.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)

@@ -14,53 +14,30 @@ G_M34240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M34240_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M34240_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M34240_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M34240_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

-40 (-74.07%) : 1090.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b_10():Perfolizer.Horology.IClock:this (FullOpts)

@@ -15,53 +15,30 @@ G_M52807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - and r0, r0, 1 - cmp r0, 1 - bne SHORT G_M52807_IG05 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M52807_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0] ;; size=10 bbWeight=1 PerfScore 3.00
-G_M52807_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52807_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 70 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - b SHORT G_M52807_IG03 - ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- ED 08 pop {r3,lr} ; opsize 16

+2 (+1.79%) : 4028.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) int -> r0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
; V02 arg1 [V02,T04] ( 4, 3 ) int -> r6 single-def ; V03 arg2 [V03,T03] ( 4, 3 ) ref -> r5 class-hnd single-def <System.__Canon>
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> r0 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 ) int -> zero-ref "spilling helperCall" ; V08 tmp2 [V08,T06] ( 2, 4 ) int -> r0 "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) int -> r0 "runtime lookup" ; V11 rat1 [V11,T02] ( 3, 5.60) int -> r3 "fgMakeTemp is creating a new local variable" ; @@ -48,7 +48,7 @@ G_M46648_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0 ;; size=18 bbWeight=0.20 PerfScore 1.00 G_M46648_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz @@ -56,10 +56,10 @@ G_M46648_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M46648_IG08 ;; size=16 bbWeight=1 PerfScore 6.00 G_M46648_IG06: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref @@ -77,23 +77,23 @@ G_M46648_IG07: ; bbWeight=0.50, epilog, nogc, extend bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M46648_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r2] +[r4] - mov r0, r4 - ; gcrRegs +[r0]
+G_M46648_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r2] + movs r0, 0
mov r1, r6
- ldr r3, [r4]
+ movs r3, 0 + ldr r3, [r3]
ldr r3, [r3+0x2C] ldr r3, [r3+0x10] blx r3 // <unknown method>
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
; gcr arg pop 0 mov r1, r5 ; gcrRegs +[r1] ldr r3, [r0] ldr r3, [r3+0x2C] ldr r3, [r3+0x10]
- ;; size=20 bbWeight=0.50 PerfScore 5.00
+ ;; size=22 bbWeight=0.50 PerfScore 5.50
G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend add sp, 12 pop {r4,r5,r6,r11,lr} @@ -101,7 +101,7 @@ G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 112, prolog size 20, PerfScore 30.10, instruction count 45, allocated bytes for code 112 (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 114, prolog size 20, PerfScore 30.60, instruction count 46, allocated bytes for code 114 (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: @@ -113,7 +113,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 112 (0x000070)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+2 (+2.27%) : 3989.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 -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
; V01 arg1 [V01 ] ( 5, 4 ) struct ( 4) [sp+0x14] single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName> ; V02 arg2 [V02,T02] ( 4, 3 ) int -> r5 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> r0 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,T01] ( 5, 4 ) int -> [sp+0x14] do-not-enreg[] single-def "field V01.idx (fldOffset=0x0)" P-DEP -; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V06 tmp1 [V06,T00] ( 5, 4 ) int -> [sp+0x14] do-not-enreg[] single-def "field V01.idx (fldOffset=0x0)" P-DEP +; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
; ; Lcl frame size = 4 @@ -33,10 +33,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M49388_IG05 ;; size=24 bbWeight=1 PerfScore 8.00 G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref @@ -54,22 +54,22 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend bx r3 // <unknown method> ; gcr arg pop 0 ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M49388_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] +[r4] - mov r0, r4 - ; gcrRegs +[r0]
+G_M49388_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0] + movs r0, 0
ldr r1, [sp+0x14]
- ldr r3, [r4]
+ movs r3, 0 + ldr r3, [r3]
ldr r3, [r3+0x2C] ldr r3, [r3+0x10] blx r3 // <unknown method>
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
; gcr arg pop 0 mov r1, r5 ldr r3, [r0] ldr r3, [r3+0x2C] ldr r3, [r3+0x10]
- ;; size=20 bbWeight=0.50 PerfScore 5.00
+ ;; size=22 bbWeight=0.50 PerfScore 5.50
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend add sp, 4 pop {r4,r5,r11,lr} @@ -78,7 +78,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=10 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 14, PerfScore 24.50, instruction count 36, allocated bytes for code 88 (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 90, prolog size 14, PerfScore 25.00, instruction count 37, allocated bytes for code 90 (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: @@ -90,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+5.26%) : 2976.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 -> r4 this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> r1 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 -> r0 single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
; ; Lcl frame size = 4 @@ -28,16 +28,19 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0] ; gcr arg pop 0
- cmp r0, 0 - beq SHORT G_M19732_IG05 - ;; size=24 bbWeight=1 PerfScore 8.00 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref - mov r1, r4
+ mov r1, r0
; gcrRegs +[r1]
- ldr r3, [r0]
+ cmp r4, 0 + beq SHORT G_M19732_IG05 + ;; size=26 bbWeight=1 PerfScore 9.00 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + mov r0, r4 + ; gcrRegs +[r0] + ldr r3, [r4]
ldr r3, [r3+0x54] ldr r3, [r3+0x08] ;; size=8 bbWeight=0.50 PerfScore 2.00 @@ -47,21 +50,21 @@ G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0-r1] - mov r0, r4 - ; gcrRegs +[r0] - ldr r3, [r4]
+G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0-r1 r4] + movs r0, 0 + movs r3, 0 + ldr r3, [r3]
ldr r3, [r3+0x30] ldr r3, [r3+0x18] blx r3 // <unknown method>
+ ; gcrRegs +[r0]
; gcr arg pop 0
- mov r1, r4 - ; gcrRegs +[r1]
+ movs r1, 0
ldr r3, [r0] ldr r3, [r3+0x54] ldr r3, [r3+0x08]
- ;; size=18 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend add sp, 4 pop {r4,r11,lr} @@ -69,7 +72,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 76, prolog size 10, PerfScore 20.50, instruction count 30, allocated bytes for code 76 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 80, prolog size 10, PerfScore 22.00, instruction count 32, allocated bytes for code 80 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 40 (0x00028) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 92 87 2 3 -5,792 +8
benchmarks.run_pgo.linux.arm.checked.mch 92 87 0 5 -2,682 +0
benchmarks.run_tiered.linux.arm.checked.mch 145 138 2 5 -6,814 +8
coreclr_tests.run.linux.arm.checked.mch 32 30 2 0 -1,690 +6
libraries.crossgen2.linux.arm.checked.mch 5 2 0 3 -10 +0
libraries.pmi.linux.arm.checked.mch 231 228 1 2 -11,166 +2
libraries_tests.run.linux.arm.Release.mch 56 54 0 2 -1,746 +0
librariestestsnotieredcompilation.run.linux.arm.Release.mch 76 74 0 2 -4,270 +0
realworld.run.linux.arm.checked.mch 107 100 5 2 -13,448 +12
836 800 12 24 -47,618 +36

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 1,465 61 1,404 107 (2.70%) 2,100 (53.02%)
benchmarks.run_pgo.linux.arm.checked.mch 4,984 3,224 1,760 186 (2.01%) 3,859 (41.77%)
benchmarks.run_tiered.linux.arm.checked.mch 6,978 4,459 2,519 103 (0.90%) 4,023 (35.30%)
coreclr_tests.run.linux.arm.checked.mch 1,767 1,078 689 45 (1.10%) 1,936 (47.22%)
libraries.crossgen2.linux.arm.checked.mch 77,019 10 77,009 1 (0.00%) 67,802 (46.69%)
libraries.pmi.linux.arm.checked.mch 6,918 0 6,918 26 (0.26%) 2,667 (26.72%)
libraries_tests.run.linux.arm.Release.mch 2,602 1,838 764 125 (1.96%) 3,385 (53.03%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 814 0 814 87 (3.28%) 1,444 (54.41%)
realworld.run.linux.arm.checked.mch 2,255 57 2,198 146 (2.43%) 3,359 (55.89%)
104,802 10,727 94,075 826 (0.42%) 90,575 (45.53%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 181946 (overridden on cmd)
Total bytes of diff: 176162 (overridden on cmd)
Total bytes of delta: -5784 (-3.18 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 1919.dasm (2.33 % of base)
           4 : 2628.dasm (0.36 % of base)

Top file improvements (bytes):
        -476 : 746.dasm (-80.68 % of base)
        -442 : 969.dasm (-33.74 % of base)
        -402 : 3117.dasm (-69.07 % of base)
        -214 : 9.dasm (-76.98 % of base)
        -198 : 3908.dasm (-70.21 % of base)
        -134 : 762.dasm (-23.10 % of base)
        -116 : 3401.dasm (-32.04 % of base)
        -116 : 3082.dasm (-32.04 % of base)
        -106 : 811.dasm (-33.97 % of base)
         -96 : 2477.dasm (-24.87 % of base)
         -94 : 3656.dasm (-58.02 % of base)
         -88 : 1909.dasm (-34.11 % of base)
         -84 : 433.dasm (-35.90 % of base)
         -82 : 2716.dasm (-29.93 % of base)
         -82 : 1015.dasm (-29.08 % of base)
         -80 : 2117.dasm (-21.51 % of base)
         -80 : 3088.dasm (-21.51 % of base)
         -80 : 3131.dasm (-22.47 % of base)
         -78 : 2545.dasm (-38.24 % of base)
         -74 : 2740.dasm (-21.39 % of base)

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

Top method regressions (bytes):
           4 (2.33 % of base) : 1919.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
           4 (0.36 % of base) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)

Top method improvements (bytes):
        -476 (-80.68 % of base) : 746.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)
        -442 (-33.74 % of base) : 969.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
        -402 (-69.07 % of base) : 3117.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
        -214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -198 (-70.21 % of base) : 3908.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts)
        -134 (-23.10 % of base) : 762.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
        -116 (-32.04 % of base) : 3401.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -116 (-32.04 % of base) : 3082.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -106 (-33.97 % of base) : 811.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)
         -96 (-24.87 % of base) : 2477.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
         -94 (-58.02 % of base) : 3656.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
         -88 (-34.11 % of base) : 1909.dasm - System.Text.Json.JsonSerializerOptions:CheckConverterNullabilityIsSameAsPropertyType(System.Text.Json.Serialization.JsonConverter,System.Type) (FullOpts)
         -84 (-35.90 % of base) : 433.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
         -82 (-29.08 % of base) : 1015.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
         -82 (-29.93 % of base) : 2716.dasm - System.Net.Http.HttpHandlerDefaults:.cctor() (FullOpts)
         -80 (-21.51 % of base) : 3088.dasm - System.Net.Sockets.SocketAsyncEventArgs:AcceptCompletionCallback(int,System.Memory`1[ubyte],int):this (FullOpts)
         -80 (-22.47 % of base) : 3131.dasm - System.Net.Sockets.SocketAsyncEventArgs:ConnectCompletionCallback(int):this (FullOpts)
         -80 (-21.51 % of base) : 2117.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
         -78 (-38.24 % of base) : 2545.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
         -74 (-21.39 % of base) : 2740.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)

Top method regressions (percentages):
           4 (2.33 % of base) : 1919.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
           4 (0.36 % of base) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)

Top method improvements (percentages):
         -40 (-90.91 % of base) : 3275.dasm - Interop+Ssl:.cctor() (FullOpts)
        -476 (-80.68 % of base) : 746.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)
        -214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -40 (-74.07 % of base) : 1012.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
        -198 (-70.21 % of base) : 3908.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts)
        -402 (-69.07 % of base) : 3117.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
         -42 (-61.76 % of base) : 1039.dasm - Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
         -94 (-58.02 % of base) : 3656.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
         -52 (-54.17 % of base) : 3951.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (FullOpts)
         -52 (-53.06 % of base) : 980.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (FullOpts)
         -40 (-52.63 % of base) : 1030.dasm - BenchmarkDotNet.Engines.EngineResolver+<>c:<.ctor>b__7_7():Perfolizer.Horology.TimeInterval:this (FullOpts)
         -40 (-52.63 % of base) : 2566.dasm - System.Net.SocketAddress:.cctor() (FullOpts)
         -42 (-52.50 % of base) : 1216.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -44 (-51.16 % of base) : 3304.dasm - System.IO.Directory:EnumerateFiles(System.String):System.Collections.Generic.IEnumerable`1[System.String] (FullOpts)
         -46 (-51.11 % of base) : 2800.dasm - System.Net.Http.HttpClient+<>c:<get_DefaultProxy>b__15_0():System.Net.IWebProxy:this (FullOpts)
         -22 (-47.83 % of base) : 2140.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -44 (-46.81 % of base) : 1347.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -40 (-46.51 % of base) : 926.dasm - Perfolizer.Horology.TimeInterval:ToString():System.String:this (FullOpts)
         -48 (-45.28 % of base) : 877.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitExecutor:.ctor(System.TimeSpan,ubyte):this (FullOpts)
         -50 (-44.64 % of base) : 2861.dasm - System.Diagnostics.Metrics.MeterListener:GetAllListeners():System.Collections.Generic.List`1[System.Diagnostics.Metrics.MeterListener] (FullOpts)


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 756482 (overridden on cmd)
Total bytes of diff: 753800 (overridden on cmd)
Total bytes of delta: -2682 (-0.35 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -238 : 1204.dasm (-68.79 % of base)
        -220 : 3067.dasm (-18.09 % of base)
        -110 : 2319.dasm (-22.18 % of base)
         -88 : 3630.dasm (-42.31 % of base)
         -66 : 17.dasm (-35.48 % of base)
         -44 : 313.dasm (-25.29 % of base)
         -42 : 3022.dasm (-14.00 % of base)
         -42 : 5694.dasm (-26.58 % of base)
         -38 : 3094.dasm (-31.67 % of base)
         -34 : 2379.dasm (-43.59 % of base)
         -34 : 2640.dasm (-43.59 % of base)
         -34 : 2656.dasm (-43.59 % of base)
         -34 : 2322.dasm (-30.91 % of base)
         -34 : 2654.dasm (-43.59 % of base)
         -34 : 2376.dasm (-43.59 % of base)
         -34 : 2655.dasm (-43.59 % of base)
         -34 : 2653.dasm (-43.59 % of base)
         -34 : 2657.dasm (-43.59 % of base)
         -34 : 3538.dasm (-21.79 % of base)
         -32 : 3189.dasm (-42.11 % of base)

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

Top method improvements (bytes):
        -238 (-68.79 % of base) : 1204.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
        -220 (-18.09 % of base) : 3067.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (Tier0)
        -110 (-22.18 % of base) : 2319.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (Tier0)
         -88 (-42.31 % of base) : 3630.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -66 (-35.48 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -44 (-25.29 % of base) : 313.dasm - System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo (Tier0)
         -42 (-14.00 % of base) : 3022.dasm - BenchmarkDotNet.Jobs.JobIdGenerator:GenerateRandomId(BenchmarkDotNet.Jobs.Job):System.String (Tier0-FullOpts)
         -42 (-26.58 % of base) : 5694.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -38 (-31.67 % of base) : 3094.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (Tier0)
         -34 (-30.91 % of base) : 2322.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:.ctor(System.String):this (Tier0)
         -34 (-43.59 % of base) : 2376.dasm - BenchmarkDotNet.Jobs.EnvironmentMode:set_Jit(int):this (Tier0)
         -34 (-43.59 % of base) : 2379.dasm - BenchmarkDotNet.Jobs.EnvironmentMode:set_Platform(int):this (Tier0)
         -34 (-43.59 % of base) : 2640.dasm - BenchmarkDotNet.Jobs.InfrastructureMode:set_Toolchain(BenchmarkDotNet.Toolchains.IToolchain):this (Tier0)
         -34 (-43.59 % of base) : 2655.dasm - BenchmarkDotNet.Jobs.RunMode:set_IterationCount(int):this (Tier0)
         -34 (-43.59 % of base) : 2653.dasm - BenchmarkDotNet.Jobs.RunMode:set_LaunchCount(int):this (Tier0)
         -34 (-43.59 % of base) : 2656.dasm - BenchmarkDotNet.Jobs.RunMode:set_RunStrategy(int):this (Tier0)
         -34 (-43.59 % of base) : 2657.dasm - BenchmarkDotNet.Jobs.RunMode:set_UnrollFactor(int):this (Tier0)
         -34 (-43.59 % of base) : 2654.dasm - BenchmarkDotNet.Jobs.RunMode:set_WarmupCount(int):this (Tier0)
         -34 (-21.79 % of base) : 3538.dasm - System.Text.Json.JsonSerializer:GetTypeInfo(System.Text.Json.JsonSerializerOptions,System.Type):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier0)
         -32 (-42.11 % of base) : 3189.dasm - BenchmarkDotNet.Engines.EngineResolver+<>c:<.ctor>b__7_7():Perfolizer.Horology.TimeInterval:this (Tier0)

Top method improvements (percentages):
        -238 (-68.79 % of base) : 1204.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
         -22 (-50.00 % of base) : 4413.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -22 (-50.00 % of base) : 9590.dasm - System.Collections.Generic.ReferenceEqualityComparer:get_Instance():System.Collections.Generic.ReferenceEqualityComparer (Tier0)
         -22 (-50.00 % of base) : 58.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -22 (-50.00 % of base) : 2094.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
         -22 (-50.00 % of base) : 6669.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
         -22 (-50.00 % of base) : 6175.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -22 (-50.00 % of base) : 4350.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -22 (-50.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -22 (-50.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
         -22 (-50.00 % of base) : 487.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
         -22 (-50.00 % of base) : 484.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
         -22 (-50.00 % of base) : 3927.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
         -22 (-50.00 % of base) : 127.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
         -22 (-50.00 % of base) : 7036.dasm - System.Threading.AsyncLocalValueMap:get_Empty():System.Threading.IAsyncLocalValueMap (Tier0)
         -22 (-50.00 % of base) : 493.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
         -22 (-50.00 % of base) : 5681.dasm - System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
         -22 (-47.83 % of base) : 3168.dasm - System.Runtime.InteropServices.OSPlatform:get_Windows():System.Runtime.InteropServices.OSPlatform (Tier0)
         -20 (-47.62 % of base) : 1060.dasm - BenchmarkDotNet.Portability.RuntimeInformation:get_IsMono():ubyte (Tier0)
         -20 (-47.62 % of base) : 1025.dasm - BenchmarkDotNet.Portability.RuntimeInformation:get_IsOldMono():ubyte (Tier0)


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 610796 (overridden on cmd)
Total bytes of diff: 603990 (overridden on cmd)
Total bytes of delta: -6806 (-1.11 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 5229.dasm (2.33 % of base)
           4 : 6326.dasm (0.36 % of base)

Top file improvements (bytes):
        -494 : 8223.dasm (-77.67 % of base)
        -476 : 2388.dasm (-80.68 % of base)
        -406 : 6772.dasm (-67.00 % of base)
        -286 : 3155.dasm (-76.88 % of base)
        -176 : 3686.dasm (-24.79 % of base)
        -160 : 3720.dasm (-20.00 % of base)
        -146 : 5518.dasm (-14.75 % of base)
        -144 : 11308.dasm (-25.35 % of base)
        -124 : 6763.dasm (-26.05 % of base)
        -124 : 10672.dasm (-31.00 % of base)
        -116 : 9556.dasm (-32.04 % of base)
        -108 : 12025.dasm (-55.10 % of base)
        -106 : 2516.dasm (-33.97 % of base)
        -106 : 12024.dasm (-55.21 % of base)
         -98 : 12052.dasm (-45.37 % of base)
         -98 : 8861.dasm (-52.13 % of base)
         -96 : 6912.dasm (-11.03 % of base)
         -94 : 3046.dasm (-51.09 % of base)
         -94 : 3047.dasm (-51.09 % of base)
         -88 : 4647.dasm (-34.11 % of base)

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

Top method regressions (bytes):
           4 (2.33 % of base) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
           4 (0.36 % of base) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)

Top method improvements (bytes):
        -494 (-77.67 % of base) : 8223.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier0-FullOpts)
        -476 (-80.68 % of base) : 2388.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)
        -406 (-67.00 % of base) : 6772.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
        -286 (-76.88 % of base) : 3155.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -176 (-24.79 % of base) : 3686.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
        -160 (-20.00 % of base) : 3720.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
        -146 (-14.75 % of base) : 5518.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
        -144 (-25.35 % of base) : 11308.dasm - System.Net.Security.SslConnectionInfo:UpdateSslConnectionInfo(Microsoft.Win32.SafeHandles.SafeSslHandle):this (Tier0)
        -124 (-26.05 % of base) : 6763.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -124 (-31.00 % of base) : 10672.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:GetCollections():System.Tuple`2[Microsoft.Win32.SafeHandles.SafeX509StackHandle,Microsoft.Win32.SafeHandles.SafeX509StackHandle] (Tier0)
        -116 (-32.04 % of base) : 9556.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -108 (-55.10 % of base) : 12025.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
        -106 (-33.97 % of base) : 2516.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)
        -106 (-55.21 % of base) : 12024.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
         -98 (-52.13 % of base) : 8861.dasm - System.Linq.Expressions.Expression:MakeMemberAccess(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression (Tier1)
         -98 (-45.37 % of base) : 12052.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
         -96 (-11.03 % of base) : 6912.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
         -94 (-51.09 % of base) : 3047.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -94 (-51.09 % of base) : 3046.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -88 (-34.11 % of base) : 4647.dasm - System.Text.Json.JsonSerializerOptions:CheckConverterNullabilityIsSameAsPropertyType(System.Text.Json.Serialization.JsonConverter,System.Type) (Tier1)

Top method regressions (percentages):
           4 (2.33 % of base) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
           4 (0.36 % of base) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)

Top method improvements (percentages):
        -476 (-80.68 % of base) : 2388.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)
        -494 (-77.67 % of base) : 8223.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier0-FullOpts)
        -286 (-76.88 % of base) : 3155.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
         -42 (-75.00 % of base) : 311.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
         -42 (-75.00 % of base) : 312.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
        -406 (-67.00 % of base) : 6772.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
        -106 (-55.21 % of base) : 12024.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
        -108 (-55.10 % of base) : 12025.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -48 (-53.33 % of base) : 8721.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
         -98 (-52.13 % of base) : 8861.dasm - System.Linq.Expressions.Expression:MakeMemberAccess(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression (Tier1)
         -94 (-51.09 % of base) : 3047.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -94 (-51.09 % of base) : 3046.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -22 (-50.00 % of base) : 53.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
         -22 (-50.00 % of base) : 10698.dasm - System.IO.EnumerationOptions:get_Compatible():System.IO.EnumerationOptions (Tier0)
         -22 (-50.00 % of base) : 8130.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
         -22 (-50.00 % of base) : 7462.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
         -22 (-50.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -22 (-50.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
         -22 (-50.00 % of base) : 437.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
         -22 (-50.00 % of base) : 2673.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 295714 (overridden on cmd)
Total bytes of diff: 294030 (overridden on cmd)
Total bytes of delta: -1684 (-0.57 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 1849.dasm (0.31 % of base)
           2 : 2334.dasm (1.11 % of base)

Top file improvements (bytes):
        -298 : 2361.dasm (-51.74 % of base)
        -258 : 2344.dasm (-52.23 % of base)
        -184 : 635.dasm (-23.77 % of base)
        -108 : 1291.dasm (-55.67 % of base)
        -106 : 1915.dasm (-55.21 % of base)
         -96 : 1352.dasm (-44.04 % of base)
         -94 : 1867.dasm (-43.52 % of base)
         -54 : 2283.dasm (-17.88 % of base)
         -50 : 46.dasm (-24.27 % of base)
         -44 : 97.dasm (-28.21 % of base)
         -42 : 414.dasm (-3.35 % of base)
         -40 : 386.dasm (-27.78 % of base)
         -34 : 1431.dasm (-37.78 % of base)
         -26 : 895.dasm (-18.06 % of base)
         -26 : 866.dasm (-20.31 % of base)
         -22 : 2385.dasm (-4.45 % of base)
         -22 : 417.dasm (-29.73 % of base)
         -22 : 909.dasm (-25.58 % of base)
         -20 : 2357.dasm (-12.82 % of base)
         -20 : 36.dasm (-25.00 % of base)

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

Top method regressions (bytes):
           4 (0.31 % of base) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
           2 (1.11 % of base) : 2334.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)

Top method improvements (bytes):
        -298 (-51.74 % of base) : 2361.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (Tier1)
        -258 (-52.23 % of base) : 2344.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -184 (-23.77 % of base) : 635.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
        -108 (-55.67 % of base) : 1291.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
        -106 (-55.21 % of base) : 1915.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
         -96 (-44.04 % of base) : 1352.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
         -94 (-43.52 % of base) : 1867.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
         -54 (-17.88 % of base) : 2283.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (Tier1)
         -50 (-24.27 % of base) : 46.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -44 (-28.21 % of base) : 97.dasm - TestLibrary.Utilities:get_Verbose():ubyte (Tier0)
         -42 (-3.35 % of base) : 414.dasm - MulticastDelegateCombineImpl:PosTest8():ubyte:this (Tier0)
         -40 (-27.78 % of base) : 386.dasm - Test_negativegenerics:TestEntryPoint():int (Tier0)
         -34 (-37.78 % of base) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
         -26 (-18.06 % of base) : 895.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -26 (-20.31 % of base) : 866.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -22 (-29.73 % of base) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
         -22 (-25.58 % of base) : 909.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
         -22 (-4.45 % of base) : 2385.dasm - System.Threading.Tasks.Task:UnsafeSetContinuationForAwait(System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte):this (Tier1)
         -20 (-25.00 % of base) : 36.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -20 (-32.26 % of base) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)

Top method regressions (percentages):
           2 (1.11 % of base) : 2334.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
           4 (0.31 % of base) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)

Top method improvements (percentages):
        -108 (-55.67 % of base) : 1291.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
        -106 (-55.21 % of base) : 1915.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
        -258 (-52.23 % of base) : 2344.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -298 (-51.74 % of base) : 2361.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (Tier1)
         -96 (-44.04 % of base) : 1352.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
         -94 (-43.52 % of base) : 1867.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
         -34 (-37.78 % of base) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
         -20 (-32.26 % of base) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
         -22 (-29.73 % of base) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
         -44 (-28.21 % of base) : 97.dasm - TestLibrary.Utilities:get_Verbose():ubyte (Tier0)
         -40 (-27.78 % of base) : 386.dasm - Test_negativegenerics:TestEntryPoint():int (Tier0)
         -22 (-25.58 % of base) : 909.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
         -20 (-25.00 % of base) : 36.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
         -50 (-24.27 % of base) : 46.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
        -184 (-23.77 % of base) : 635.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
         -26 (-20.31 % of base) : 866.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
         -26 (-18.06 % of base) : 895.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
         -54 (-17.88 % of base) : 2283.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (Tier1)
         -20 (-16.39 % of base) : 673.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(int,ubyte):this (Tier0)
         -20 (-14.49 % of base) : 39.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)

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


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 5931272 (overridden on cmd)
Total bytes of diff: 5931262 (overridden on cmd)
Total bytes of delta: -10 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -8 : 14110.dasm (-1.76 % of base)
          -2 : 141989.dasm (-1.52 % of base)

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

Top method improvements (bytes):
          -8 (-1.76 % of base) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -2 (-1.52 % of base) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)

Top method improvements (percentages):
          -8 (-1.76 % of base) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -2 (-1.52 % of base) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)

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


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 578368 (overridden on cmd)
Total bytes of diff: 567204 (overridden on cmd)
Total bytes of delta: -11164 (-1.93 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           2 : 6495.dasm (0.70 % of base)

Top file improvements (bytes):
        -424 : 6515.dasm (-67.73 % of base)
        -248 : 8700.dasm (-34.83 % of base)
        -244 : 8701.dasm (-34.46 % of base)
        -224 : 8849.dasm (-38.49 % of base)
        -224 : 8852.dasm (-40.73 % of base)
        -224 : 8853.dasm (-40.73 % of base)
        -224 : 8854.dasm (-38.49 % of base)
        -202 : 6254.dasm (-32.17 % of base)
        -178 : 8695.dasm (-41.01 % of base)
        -178 : 8702.dasm (-41.01 % of base)
        -118 : 483.dasm (-21.93 % of base)
         -96 : 1910.dasm (-24.74 % of base)
         -96 : 1893.dasm (-24.87 % of base)
         -94 : 1926.dasm (-20.09 % of base)
         -92 : 1920.dasm (-22.66 % of base)
         -84 : 23.dasm (-31.34 % of base)
         -76 : 6241.dasm (-23.46 % of base)
         -74 : 6471.dasm (-42.05 % of base)
         -74 : 6473.dasm (-42.05 % of base)
         -74 : 6474.dasm (-41.57 % of base)

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

Top method regressions (bytes):
           2 (0.70 % of base) : 6495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b__4_0(System.Object):this (FullOpts)

Top method improvements (bytes):
        -424 (-67.73 % of base) : 6515.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
        -248 (-34.83 % of base) : 8700.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:OnCompleted(System.Action):this (FullOpts)
        -244 (-34.46 % of base) : 8701.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
        -224 (-38.49 % of base) : 8849.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -224 (-40.73 % of base) : 8852.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:OnCompleted(System.Action):this (FullOpts)
        -224 (-38.49 % of base) : 8854.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -224 (-40.73 % of base) : 8853.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
        -202 (-32.17 % of base) : 6254.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
        -178 (-41.01 % of base) : 8702.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -178 (-41.01 % of base) : 8695.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
        -118 (-21.93 % of base) : 483.dasm - System.Text.EncodingTable:GetCodePageFromName(System.String):int (FullOpts)
         -96 (-24.74 % of base) : 1910.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
         -96 (-24.87 % of base) : 1893.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
         -94 (-20.09 % of base) : 1926.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
         -92 (-22.66 % of base) : 1920.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
         -84 (-31.34 % of base) : 23.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -76 (-23.46 % of base) : 6241.dasm - System.Threading.Tasks.UnwrapPromise`1[ubyte]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
         -74 (-41.57 % of base) : 6474.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
         -74 (-42.05 % of base) : 6471.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCompleted():ubyte:this (FullOpts)
         -74 (-42.05 % of base) : 6473.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)

Top method regressions (percentages):
           2 (0.70 % of base) : 6495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b__4_0(System.Object):this (FullOpts)

Top method improvements (percentages):
         -46 (-88.46 % of base) : 8557.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
         -46 (-82.14 % of base) : 8558.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
         -42 (-75.00 % of base) : 9169.dasm - System.IO.EnumerationOptions:get_Default():System.IO.EnumerationOptions (FullOpts)
         -42 (-75.00 % of base) : 6305.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
         -40 (-74.07 % of base) : 154.dasm - System.SR:UsingResourceKeys():ubyte (FullOpts)
         -40 (-74.07 % of base) : 335.dasm - System.Text.CodePagesEncodingProvider:get_Instance():System.Text.EncodingProvider (FullOpts)
         -42 (-72.41 % of base) : 5317.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
        -424 (-67.73 % of base) : 6515.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
         -52 (-56.52 % of base) : 8540.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[double](double):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -46 (-54.76 % of base) : 8539.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[int](int):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -46 (-54.76 % of base) : 8538.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[short](short):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -46 (-54.76 % of base) : 8537.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[ubyte](ubyte):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
         -42 (-53.85 % of base) : 5226.dasm - System.Threading.ThreadPool:NotifyWorkItemProgress() (FullOpts)
         -42 (-52.50 % of base) : 6810.dasm - System.Runtime.MemoryFailPoint:AddToLastKnownFreeAddressSpace(long) (FullOpts)
         -42 (-52.50 % of base) : 6682.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstUtf16ExtendedGraphemeCluster(System.ReadOnlySpan`1[ushort]):int (FullOpts)
         -44 (-52.38 % of base) : 17.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -42 (-50.00 % of base) : 6809.dasm - System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (FullOpts)
         -42 (-50.00 % of base) : 5761.dasm - System.Threading.Tasks.TaskFactory`1[System.__Canon]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
         -42 (-50.00 % of base) : 5918.dasm - System.Threading.Tasks.TaskFactory`1[ubyte]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
         -40 (-50.00 % of base) : 5227.dasm - System.Threading.ThreadPool:ReportThreadStatus(ubyte) (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 298006 (overridden on cmd)
Total bytes of diff: 296260 (overridden on cmd)
Total bytes of delta: -1746 (-0.59 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -184 : 1388.dasm (-23.77 % of base)
         -70 : 3450.dasm (-57.38 % of base)
         -68 : 2142.dasm (-28.81 % of base)
         -50 : 1231.dasm (-24.27 % of base)
         -44 : 329.dasm (-11.52 % of base)
         -40 : 2209.dasm (-46.51 % of base)
         -40 : 35.dasm (-22.47 % of base)
         -40 : 4982.dasm (-44.44 % of base)
         -40 : 5045.dasm (-12.20 % of base)
         -40 : 6056.dasm (-44.44 % of base)
         -40 : 2346.dasm (-11.56 % of base)
         -40 : 4095.dasm (-44.44 % of base)
         -40 : 5202.dasm (-44.44 % of base)
         -40 : 5391.dasm (-44.44 % of base)
         -40 : 1185.dasm (-12.20 % of base)
         -40 : 4738.dasm (-44.44 % of base)
         -40 : 5843.dasm (-44.44 % of base)
         -40 : 6577.dasm (-44.44 % of base)
         -34 : 2101.dasm (-37.78 % of base)
         -34 : 1553.dasm (-37.78 % of base)

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

Top method improvements (bytes):
        -184 (-23.77 % of base) : 1388.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
         -70 (-57.38 % of base) : 3450.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
         -68 (-28.81 % of base) : 2142.dasm - Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon (Tier0)
         -50 (-24.27 % of base) : 1231.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -44 (-11.52 % of base) : 329.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -40 (-22.47 % of base) : 35.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -40 (-11.56 % of base) : 2346.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:PopulateSymbolTableWithName(System.String,System.Collections.Generic.IEnumerable`1[System.Type],System.Type) (Tier0-FullOpts)
         -40 (-46.51 % of base) : 2209.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
         -40 (-44.44 % of base) : 4982.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 6056.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 4095.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 5202.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 5391.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 4738.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 5843.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 6577.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-12.20 % of base) : 5045.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
         -40 (-12.20 % of base) : 1185.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
         -34 (-37.78 % of base) : 2101.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedTypeFacts:TryGetPredefTypeIndex(System.String):uint (Tier0)
         -34 (-37.78 % of base) : 1553.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)

Top method improvements (percentages):
         -70 (-57.38 % of base) : 3450.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
         -32 (-50.00 % of base) : 6400.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -32 (-50.00 % of base) : 1162.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -32 (-50.00 % of base) : 4838.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -32 (-50.00 % of base) : 6944.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
         -20 (-47.62 % of base) : 289.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -20 (-47.62 % of base) : 30.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -20 (-47.62 % of base) : 33.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -20 (-47.62 % of base) : 54.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -20 (-47.62 % of base) : 3159.dasm - System.Runtime.CompilerServices.CallSiteBinder:get_UpdateLabel():System.Linq.Expressions.LabelTarget (Tier0)
         -20 (-47.62 % of base) : 1562.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
         -20 (-47.62 % of base) : 1523.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
         -20 (-47.62 % of base) : 1521.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)
         -40 (-46.51 % of base) : 2209.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
         -40 (-44.44 % of base) : 4982.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 6056.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 4095.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 5202.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 5391.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
         -40 (-44.44 % of base) : 4738.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59390 (overridden on cmd)
Total bytes of diff: 55120 (overridden on cmd)
Total bytes of delta: -4270 (-7.19 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -476 : 65.dasm (-80.68 % of base)
        -330 : 991.dasm (-64.45 % of base)
        -206 : 2311.dasm (-65.19 % of base)
        -186 : 1199.dasm (-82.30 % of base)
        -132 : 1842.dasm (-16.97 % of base)
        -106 : 502.dasm (-33.97 % of base)
         -96 : 119.dasm (-24.87 % of base)
         -84 : 1508.dasm (-39.25 % of base)
         -84 : 343.dasm (-31.34 % of base)
         -80 : 137.dasm (-17.94 % of base)
         -60 : 9.dasm (-12.40 % of base)
         -58 : 724.dasm (-40.85 % of base)
         -50 : 1930.dasm (-11.31 % of base)
         -48 : 1610.dasm (-53.33 % of base)
         -48 : 979.dasm (-32.43 % of base)
         -48 : 1303.dasm (-53.33 % of base)
         -48 : 1300.dasm (-53.33 % of base)
         -48 : 1355.dasm (-53.33 % of base)
         -48 : 1387.dasm (-53.33 % of base)
         -48 : 131.dasm (-52.17 % of base)

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

Top method improvements (bytes):
        -476 (-80.68 % of base) : 65.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)
        -330 (-64.45 % of base) : 991.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (FullOpts)
        -206 (-65.19 % of base) : 2311.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)
        -186 (-82.30 % of base) : 1199.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -132 (-16.97 % of base) : 1842.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
        -106 (-33.97 % of base) : 502.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)
         -96 (-24.87 % of base) : 119.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
         -84 (-39.25 % of base) : 1508.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():uint (FullOpts)
         -84 (-31.34 % of base) : 343.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -80 (-17.94 % of base) : 137.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -60 (-12.40 % 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)
         -58 (-40.85 % of base) : 724.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -50 (-11.31 % of base) : 1930.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)
         -48 (-53.33 % of base) : 1303.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
         -48 (-53.33 % of base) : 1300.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
         -48 (-53.33 % of base) : 1610.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -48 (-53.33 % of base) : 1355.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -48 (-53.33 % of base) : 1387.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -48 (-52.17 % of base) : 131.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:GetRIDOS():System.String (FullOpts)
         -48 (-32.43 % of base) : 979.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)

Top method improvements (percentages):
        -186 (-82.30 % of base) : 1199.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
        -476 (-80.68 % of base) : 65.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)
         -42 (-75.00 % of base) : 2052.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -40 (-74.07 % of base) : 1159.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -40 (-74.07 % of base) : 773.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -40 (-74.07 % of base) : 535.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -40 (-74.07 % of base) : 1877.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -40 (-74.07 % of base) : 781.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -40 (-74.07 % of base) : 1917.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
        -206 (-65.19 % of base) : 2311.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)
        -330 (-64.45 % of base) : 991.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (FullOpts)
         -40 (-60.61 % of base) : 833.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (FullOpts)
         -42 (-60.00 % of base) : 1592.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1246.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1653.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1259.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1490.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1738.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1494.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -42 (-60.00 % of base) : 1748.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (FullOpts)


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1727516 (overridden on cmd)
Total bytes of diff: 1714080 (overridden on cmd)
Total bytes of delta: -13436 (-0.78 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 2976.dasm (5.26 % of base)
           2 : 3143.dasm (1.79 % of base)
           2 : 3989.dasm (2.27 % of base)
           2 : 4028.dasm (1.79 % of base)
           2 : 5509.dasm (1.79 % of base)

Top file improvements (bytes):
       -7514 : 5637.dasm (-76.64 % of base)
        -476 : 744.dasm (-80.68 % of base)
        -442 : 967.dasm (-33.74 % of base)
        -220 : 4385.dasm (-55.28 % of base)
        -214 : 9.dasm (-76.98 % of base)
        -136 : 760.dasm (-23.69 % of base)
        -124 : 5482.dasm (-46.62 % of base)
        -106 : 809.dasm (-33.97 % of base)
         -94 : 3497.dasm (-6.70 % of base)
         -92 : 3408.dasm (-21.20 % of base)
         -90 : 5496.dasm (-86.54 % of base)
         -90 : 5497.dasm (-86.54 % of base)
         -88 : 4251.dasm (-67.69 % of base)
         -86 : 3500.dasm (-14.29 % of base)
         -84 : 4214.dasm (-62.69 % of base)
         -84 : 432.dasm (-35.90 % of base)
         -82 : 1093.dasm (-29.08 % of base)
         -82 : 3505.dasm (-47.13 % of base)
         -78 : 3398.dasm (-44.83 % of base)
         -70 : 3738.dasm (-46.67 % of base)

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

Top method regressions (bytes):
           4 (5.26 % of base) : 2976.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           2 (2.27 % of base) : 3989.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)
           2 (1.79 % of base) : 4028.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)
           2 (1.79 % of base) : 5509.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)
           2 (1.79 % of base) : 3143.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):
       -7514 (-76.64 % of base) : 5637.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -476 (-80.68 % 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)
        -442 (-33.74 % of base) : 967.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
        -220 (-55.28 % of base) : 4385.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -136 (-23.69 % of base) : 760.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
        -124 (-46.62 % of base) : 5482.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
        -106 (-33.97 % of base) : 809.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)
         -94 (-6.70 % of base) : 3497.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -92 (-21.20 % of base) : 3408.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
         -90 (-86.54 % of base) : 5497.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -90 (-86.54 % of base) : 5496.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -88 (-67.69 % of base) : 4251.dasm - Microsoft.Build.Shared.FileSystem.FileSystems:GetFileSystem():Microsoft.Build.Shared.FileSystem.IFileSystem (FullOpts)
         -86 (-14.29 % of base) : 3500.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -84 (-62.69 % of base) : 4214.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
         -84 (-35.90 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
         -82 (-47.13 % of base) : 3505.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
         -82 (-29.08 % of base) : 1093.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
         -78 (-44.83 % of base) : 3398.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -70 (-46.67 % of base) : 3738.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)

Top method regressions (percentages):
           4 (5.26 % of base) : 2976.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
           2 (2.27 % of base) : 3989.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)
           2 (1.79 % of base) : 4028.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)
           2 (1.79 % of base) : 5509.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)
           2 (1.79 % of base) : 3143.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):
         -90 (-86.54 % of base) : 5497.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
         -90 (-86.54 % of base) : 5496.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
        -476 (-80.68 % 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)
        -214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
       -7514 (-76.64 % of base) : 5637.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
         -42 (-75.00 % of base) : 3446.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -42 (-75.00 % of base) : 3198.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
         -40 (-74.07 % of base) : 1090.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
         -42 (-72.41 % of base) : 3506.dasm - FSComp.SR:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3699.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3860.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 5694.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3080.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3088.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3346.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3435.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 3794.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 5491.dasm - FSharp.Compiler.Lexer:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 5852.dasm - FSharp.Compiler.NameResolution+TcResolutions:.cctor() (FullOpts)
         -42 (-72.41 % of base) : 4386.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)



windows x86

Diffs are based on 113,735 contexts (7,938 MinOpts, 105,797 FullOpts).

MISSED contexts: base: 47 (0.02%), diff: 100,776 (46.21%)

Overall (-28,228 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 121,260 -2,786
benchmarks.run_pgo.windows.x86.checked.mch 446,652 -2,055
benchmarks.run_tiered.windows.x86.checked.mch 340,626 -2,933
coreclr_tests.run.windows.x86.checked.mch 23,513 -666
libraries.crossgen2.windows.x86.checked.mch 5,347,103 -27
libraries.pmi.windows.x86.checked.mch 792,946 -5,465
libraries_tests.run.windows.x86.Release.mch 194,262 -913
librariestestsnotieredcompilation.run.windows.x86.Release.mch 51,784 -2,737
realworld.run.windows.x86.checked.mch 374,068 -10,646

MinOpts (-4,257 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 262,554 -1,827
benchmarks.run_tiered.windows.x86.checked.mch 248,044 -1,645
libraries_tests.run.windows.x86.Release.mch 116,463 -785

FullOpts (-23,971 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 121,203 -2,786
benchmarks.run_pgo.windows.x86.checked.mch 184,098 -228
benchmarks.run_tiered.windows.x86.checked.mch 92,582 -1,288
coreclr_tests.run.windows.x86.checked.mch 23,513 -666
libraries.crossgen2.windows.x86.checked.mch 5,346,412 -27
libraries.pmi.windows.x86.checked.mch 792,946 -5,465
libraries_tests.run.windows.x86.Release.mch 77,799 -128
librariestestsnotieredcompilation.run.windows.x86.Release.mch 51,784 -2,737
realworld.run.windows.x86.checked.mch 374,068 -10,646

Example diffs

benchmarks.run.windows.x86.checked.mch

-26 (-72.22%) : 2379.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)

@@ -14,26 +14,15 @@ G_M30370_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push ebp mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25
-G_M30370_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M30370_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M30370_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30370_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M30370_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M30370_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M30370_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 163 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M30370_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 36, prolog size 3, PerfScore 8.75, instruction count 11, allocated bytes for code 36 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
; ============================================================

-30 (-66.67%) : 1063.dasm - System.Numerics.Tests.PerfVectorConvert:Convertuint_float():System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,42 +8,25 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tests.Perf_VectorConvert>
-; V01 RetBuf [V01,T00] ( 3, 3 ) byref -> esi single-def -; V02 loc0 [V02,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V01 RetBuf [V01,T00] ( 3, 3 ) byref -> ecx single-def
; ; Lcl frame size = 0 G_M2371_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push esi - mov esi, edx - ; byrRegs +[esi] - ;; size=3 bbWeight=1 PerfScore 1.25 -G_M2371_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M2371_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M2371_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ mov ecx, edx + ; byrRegs +[ecx] + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M2371_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
- mov ecx, esi - ; byrRegs +[ecx]
call [System.Numerics.Tests.Perf_VectorConvert:Convert[uint,float](uint[]):System.Numerics.Vector`1[float]] ; gcrRegs -[edx]
- ; byrRegs -[ecx esi] - ;; size=14 bbWeight=1 PerfScore 5.25 -G_M2371_IG04: ; bbWeight=1, epilog, nogc, extend - pop esi
+ ; byrRegs -[ecx] + ;; size=12 bbWeight=1 PerfScore 5.00 +G_M2371_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M2371_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; byrRegs +[esi] - mov ecx, 0xD1FFAB1E - mov edx, 461 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0 - jmp SHORT G_M2371_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 45, prolog size 1, PerfScore 12.00, instruction count 13, allocated bytes for code 45 (MethodHash=2c48f6bc) for method System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 6.25, instruction count 4, allocated bytes for code 15 (MethodHash=2c48f6bc) for method System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================

-30 (-65.22%) : 1595.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments @@ -13,36 +13,22 @@ ; Lcl frame size = 0 G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M16369_IG06 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] call [<unknown method>] ; gcrRegs +[eax] ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 18 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M16369_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================

+4 (+0.92%) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)

@@ -8,21 +8,21 @@ ; 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 -> edi class-hnd single-def <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T01] ( 10, 6.50) ref -> edi class-hnd single-def <System.Reflection.MemberInfo>
; V01 arg1 [V01,T00] ( 13, 7.50) int -> esi single-def ; V02 arg2 [V02,T13] ( 1, 1 ) ubyte -> [ebp+0x18] single-def ; V03 arg3 [V03,T14] ( 1, 0.50) ubyte -> [ebp+0x14] single-def ; V04 arg4 [V04,T12] ( 2, 1 ) ubyte -> [ebp+0x10] single-def ; V05 arg5 [V05,T03] ( 6, 3.50) ref -> ebx class-hnd single-def <System.String> ; V06 arg6 [V06,T15] ( 1, 0.50) ubyte -> [ebp+0x08] single-def
-; V07 loc0 [V07,T05] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def -; V08 loc1 [V08,T04] ( 5, 2.50) ref -> esi class-hnd single-def <System.Reflection.MethodInfo> -; V09 tmp0 [V09,T09] ( 2, 1 ) int -> ecx
+; V07 loc0 [V07,T04] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def +; V08 loc1 [V08,T09] ( 3, 1.50) ref -> esi class-hnd single-def <System.Reflection.MethodInfo> +; V09 tmp0 [V09,T10] ( 2, 1 ) int -> ecx
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp4 [V13,T06] ( 4, 2 ) ubyte -> ecx "Inline return value spill temp" -; V14 tmp5 [V14,T02] ( 5, 5 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
+; V13 tmp4 [V13,T05] ( 4, 2 ) ubyte -> ecx "Inline return value spill temp" +; V14 tmp5 [V14,T02] ( 6, 6 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
; V15 tmp6 [V15,T08] ( 2, 2 ) byref -> ecx single-def "impAppendStmt" ;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -32,12 +32,12 @@ ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V24 cse0 [V24,T07] ( 4, 2 ) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V25 cse1 [V25,T10] ( 3, 1.50) int -> edi "CSE - moderate" -; V26 cse2 [V26,T11] ( 3, 1.50) int -> edx "CSE - moderate" -; TEMP_01 ref -> [ebp-0x18]
+; V24 cse0 [V24,T06] ( 4, 2 ) int -> [ebp-0x14] spill-single-def "CSE - moderate" +; V25 cse1 [V25,T11] ( 3, 1.50) int -> edi "CSE - moderate" +; V26 cse2 [V26,T07] ( 4, 2 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; TEMP_01 ref -> [ebp-0x1C]
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M7707_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp @@ -45,9 +45,9 @@ G_M7707_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by push edi push esi push ebx
- sub esp, 12
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x1C], eax
mov edi, ecx ; gcrRegs +[edi] mov esi, edx @@ -87,8 +87,8 @@ G_M7707_IG05: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00 jmp SHORT G_M7707_IG08 ;; size=37 bbWeight=0.50 PerfScore 8.00 G_M7707_IG06: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [eax+0x04] - cmp edx, dword ptr [ebx+0x04]
+ mov ecx, dword ptr [eax+0x04] + cmp ecx, dword ptr [ebx+0x04]
je SHORT G_M7707_IG07 xor ecx, ecx jmp SHORT G_M7707_IG08 @@ -96,6 +96,7 @@ G_M7707_IG06: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefReg G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx]
+ mov edx, dword ptr [eax+0x04]
add edx, edx push edx lea edx, bword ptr [ebx+0x08] @@ -104,7 +105,7 @@ G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefReg ; gcrRegs -[eax] ; byrRegs -[ecx edx] mov ecx, eax
- ;; size=17 bbWeight=0.50 PerfScore 2.75
+ ;; size=20 bbWeight=0.50 PerfScore 3.75
G_M7707_IG08: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz test cl, cl jne SHORT G_M7707_IG09 @@ -132,18 +133,19 @@ G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00 mov ecx, edi ; gcrRegs +[ecx] mov eax, dword ptr [edi]
- mov eax, dword ptr [eax+0x2C] - mov dword ptr [ebp-0x14], eax - call [eax+0x1C]<unknown method>
+ mov dword ptr [ebp-0x18], eax + mov edx, dword ptr [eax+0x2C] + mov dword ptr [ebp-0x14], edx + call [edx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x1C], eax
mov ecx, edi ; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
+ mov edx, dword ptr [ebp-0x18]
mov edx, dword ptr [edx+0x30] call [edx]<unknown method> ; gcrRegs -[ecx]
- cmp gword ptr [ebp-0x18], eax
+ cmp gword ptr [ebp-0x1C], eax
setne al ; gcrRegs -[eax] movzx eax, al @@ -177,7 +179,7 @@ G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00 test esi, 8 jne SHORT G_M7707_IG14 jmp SHORT G_M7707_IG16
- ;; size=120 bbWeight=0.50 PerfScore 22.62
+ ;; size=124 bbWeight=0.50 PerfScore 22.62
G_M7707_IG13: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz test esi, 4 je SHORT G_M7707_IG16 @@ -215,19 +217,16 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov edx, edi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; System.Reflection.MethodInfo
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx edi] +[eax] mov esi, eax ; gcrRegs +[esi]
- test esi, esi - je SHORT G_M7707_IG16
mov ecx, esi ; gcrRegs +[ecx]
- mov eax, dword ptr [esi] - ; gcrRegs -[eax] - mov edi, dword ptr [eax+0x34]
+ mov edi, dword ptr [ebp-0x18] + mov edi, dword ptr [edi+0x34]
call [edi+0x10]<unknown method>
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
test al, 64 jne SHORT G_M7707_IG18 mov ecx, esi @@ -236,7 +235,7 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000 ; gcrRegs -[ecx esi] test eax, 0x400 jne SHORT G_M7707_IG18
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=87 bbWeight=0.50 PerfScore 12.62
G_M7707_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 @@ -260,6 +259,6 @@ G_M7707_IG19: ; bbWeight=0.50, epilog, nogc, extend ret 20 ;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 433, prolog size 14, PerfScore 80.38, instruction count 147, allocated bytes for code 433 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
+; Total bytes of code 437, prolog size 14, PerfScore 80.25, instruction count 147, allocated bytes for code 437 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
; ============================================================

+5 (+3.50%) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)

@@ -8,22 +8,22 @@ ; 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 -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> esi single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> eax 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 loc1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> eax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter> ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T12] ( 3, 1.50) ref -> eax -; V07 tmp4 [V07,T10] ( 4, 2 ) ref -> eax
+; V06 tmp3 [V06,T11] ( 3, 1.50) ref -> eax +; V07 tmp4 [V07,T09] ( 4, 2 ) ref -> eax
; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V10 tmp7 [V10,T04] ( 2, 4 ) int -> ecx "argument with side effect" ; V11 rat0 [V11,T03] ( 3, 4 ) int -> ecx "runtime lookup" ; V12 rat1 [V12,T02] ( 3, 5.60) int -> ecx "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T11] ( 3, 2 ) int -> ecx "runtime lookup"
+; V13 rat2 [V13,T10] ( 3, 2 ) int -> ecx "runtime lookup"
; V14 rat3 [V14,T07] ( 3, 2.80) int -> ecx "spilling expr"
-; V15 rat4 [V15,T09] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T08] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 4 @@ -50,82 +50,86 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=00000080 {edi}, byrefRegs=00000 G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref mov ecx, esi mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.20 PerfScore 0.35 G_M17047_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz mov edx, edi ; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - je SHORT G_M17047_IG07
+ test edi, edi + je SHORT G_M17047_IG08
;; size=11 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[edi]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop esi pop edi pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[edi] - mov ecx, edi
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30] call [eax+0x10]<unknown method> ; gcrRegs -[ecx] +[eax] test eax, eax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor eax, eax
- jmp SHORT G_M17047_IG09 - ;; size=18 bbWeight=0.50 PerfScore 5.38 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M17047_IG10 + ;; size=21 bbWeight=0.50 PerfScore 5.38 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
mov ecx, eax ; gcrRegs +[ecx] mov edx, esi call [System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this] ; gcrRegs -[ecx] ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov ecx, dword ptr [esi+0x20] cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, esi mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov esi, eax ; gcrRegs +[esi] mov ecx, esi ; gcrRegs +[ecx]
- mov edx, edi
+ xor edx, edx
; gcrRegs +[edx] call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[eax ecx edx edi]
+ ; gcrRegs -[eax ecx edx]
mov eax, esi ; gcrRegs +[eax] ;; size=19 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop ecx pop esi @@ -134,6 +138,6 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000 ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 143, prolog size 9, PerfScore 33.96, instruction count 61, allocated bytes for code 143 (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 148, prolog size 9, PerfScore 34.08, instruction count 62, allocated bytes for code 148 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================

+10 (+14.29%) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)

@@ -10,18 +10,18 @@ ; ; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]> ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> edi class-hnd single-def <double[]>
-; V02 loc1 [V02,T03] ( 4, 2 ) ref -> ebx class-hnd exact single-def <double[]>
+; V02 loc1 [V02,T02] ( 5, 2.50) ref -> ebx class-hnd single-def <double[]>
;* V03 tmp0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[double]> ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP ;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V07 tmp4 [V07,T04] ( 2, 1 ) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 2, 1 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP -; V09 cse0 [V09,T02] ( 3, 2.50) int -> edx "CSE - aggressive"
+; V07 tmp4 [V07,T04] ( 3, 1.50) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T05] ( 3, 1.50) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP +; V09 cse0 [V09,T03] ( 3, 2.50) int -> edx "CSE - aggressive"
; ; Lcl frame size = 0
-G_M51402_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51402_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -53,16 +53,28 @@ G_M51402_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] mov ecx, 0xD1FFAB1E ; double[]
- call CORINFO_HELP_NEWARR_1_ALIGN8
+ call CORINFO_HELP_INITCLASS
; gcrRegs +[eax] mov ebx, eax ; gcrRegs +[ebx]
+ test ebx, ebx + jne SHORT G_M51402_IG06 + xor ecx, ecx + ; byrRegs +[ecx] + xor edx, edx + jmp SHORT G_M51402_IG07 + ;; size=22 bbWeight=0.50 PerfScore 2.62 +G_M51402_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + ; byrRegs -[ecx]
lea ecx, bword ptr [ebx+0x08] ; byrRegs +[ecx] mov edx, dword ptr [ebx+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.25 +G_M51402_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000002 {ecx}, byref
push edx push ecx mov ecx, esi @@ -71,11 +83,11 @@ G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e mov edx, edi ; gcrRegs +[edx] call [System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this]
- ; gcrRegs -[eax ecx edx esi edi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, ebx ; gcrRegs +[eax]
- ;; size=32 bbWeight=0.50 PerfScore 4.88 -G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.88 +G_M51402_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi @@ -83,6 +95,6 @@ G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 34, allocated bytes for code 70 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
+; Total bytes of code 80, prolog size 6, PerfScore 22.88, instruction count 39, allocated bytes for code 80 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
; ============================================================

benchmarks.run_pgo.windows.x86.checked.mch

-15 (-60.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -13,17 +13,14 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M26209_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 445 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================

-15 (-60.00%) : 449.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)

@@ -13,17 +13,14 @@ G_M31785_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M31785_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 0x46D - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M31785_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
; ============================================================

-15 (-60.00%) : 2725.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)

@@ -13,17 +13,14 @@ G_M39592_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M39592_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 0x496 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M39592_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
; ============================================================

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

@@ -58,7 +58,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp+0x08] mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x10], eax ;; size=16 bbWeight=0.20 PerfScore 0.65 G_M63343_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz @@ -93,7 +93,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp+0x08] mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x14], eax ;; size=16 bbWeight=0.20 PerfScore 0.65 G_M63343_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref

+0 (0.00%) : 3630.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:Significant(System.Linq.Expressions.Expression):ubyte (Tier0-FullOpts)

@@ -7,8 +7,8 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 5, 4 ) ref -> esi class-hnd single-def <System.Linq.Expressions.Expression> -; V01 loc0 [V01,T01] ( 6, 11 ) ref -> edi class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T03] ( 4, 4 ) ref -> esi class-hnd single-def <System.Linq.Expressions.Expression> +; V01 loc0 [V01,T01] ( 5, 10 ) ref -> edi class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T00] ( 5, 16.50) int -> esi ; V03 cse0 [V03,T02] ( 4, 9 ) int -> ebx "CSE - aggressive" ; @@ -27,11 +27,11 @@ G_M45010_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] mov edi, eax ; gcrRegs +[edi]
- test edi, edi
+ test esi, esi
je SHORT G_M45010_IG09 ;; size=18 bbWeight=1 PerfScore 3.00 G_M45010_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz @@ -87,19 +87,18 @@ G_M45010_IG08: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi] - mov ecx, esi
+G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + xor ecx, ecx
; gcrRegs +[ecx] call [System.Linq.Expressions.Compiler.LambdaCompiler:NotEmpty(System.Linq.Expressions.Expression):ubyte] ; gcrRegs -[ecx] test eax, eax je SHORT G_M45010_IG05
- mov edx, esi
+ xor edx, edx
; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx esi] +[eax]
+ call CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[edx] +[eax]
test eax, eax sete al ; gcrRegs -[eax]

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

@@ -54,12 +54,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x14] mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x10], eax ;; size=16 bbWeight=0.20 PerfScore 0.65 G_M41961_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov gword ptr [ebp-0x0C], eax push gword ptr [ebp-0x04]

benchmarks.run_tiered.windows.x86.checked.mch

-15 (-60.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)

@@ -13,17 +13,14 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M26209_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 445 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================

-15 (-60.00%) : 2849.dasm - System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)

@@ -13,17 +13,14 @@ G_M2361_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M2361_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 0x442 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M2361_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=ef95f6c6) for method System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=ef95f6c6) for method System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)
; ============================================================

-15 (-60.00%) : 3221.dasm - System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)

@@ -13,17 +13,14 @@ G_M29680_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M29680_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 462 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M29680_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=0aa78c0f) for method System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=0aa78c0f) for method System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
; ============================================================

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

@@ -8,9 +8,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> edi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> esi class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T03] ( 1, 0.50) ref -> [esp+0x0C] class-hnd single-def <System.Type>
-; V03 loc0 [V03,T02] ( 3, 2.50) ref -> eax class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T02] ( 2, 1.50) ref -> ecx class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
; ; Lcl frame size = 0 @@ -26,26 +26,26 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] ; gcr arg pop 0
- test eax, eax - je SHORT G_M17128_IG04 - ;; size=16 bbWeight=1 PerfScore 2.75 -G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - push edi - ; gcr arg push 0
mov ecx, eax ; gcrRegs +[ecx]
+ test esi, esi + je SHORT G_M17128_IG04 + ;; size=18 bbWeight=1 PerfScore 3.00 +G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax esi] + push edi + ; gcr arg push 0
mov edx, gword ptr [esp+0x0C+0x04] ; gcrRegs +[edx] call [System.Text.Json.Serialization.JsonConverterFactory:GetConverterInternal(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx edi] +[eax]
; gcr arg pop 1 mov esi, eax ; gcrRegs +[esi]
- ;; size=15 bbWeight=0.50 PerfScore 2.75
+ ;; size=13 bbWeight=0.50 PerfScore 2.62
G_M17128_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] mov eax, esi @@ -57,6 +57,6 @@ G_M17128_IG05: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 44, prolog size 2, PerfScore 11.25, instruction count 18, allocated bytes for code 44 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
+; Total bytes of code 44, prolog size 2, PerfScore 11.38, instruction count 18, allocated bytes for code 44 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
; ============================================================

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

@@ -7,10 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> edi class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> esi class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> ebx class-hnd single-def <<unknown class>> -; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> ebx class-hnd single-def <<unknown class>> +; V03 tmp0 [V03,T02] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; ; Lcl frame size = 0 @@ -29,11 +29,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, edi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] mov ebx, eax ; gcrRegs +[ebx]
- test ebx, ebx
+ test edi, edi
je SHORT G_M22240_IG05 ;; size=18 bbWeight=1 PerfScore 3.00 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref @@ -58,15 +58,15 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi edi]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[esi]
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi] mov eax, dword ptr [eax+0x2C] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx esi] +[eax]
- cmp eax, edi
+ test eax, eax
sete al ; gcrRegs -[eax] movzx eax, al

+5 (+3.50%) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)

@@ -8,22 +8,22 @@ ; 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 -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> esi single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> eax 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 loc1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> eax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter> ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T12] ( 3, 1.50) ref -> eax -; V07 tmp4 [V07,T10] ( 4, 2 ) ref -> eax
+; V06 tmp3 [V06,T11] ( 3, 1.50) ref -> eax +; V07 tmp4 [V07,T09] ( 4, 2 ) ref -> eax
; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V10 tmp7 [V10,T04] ( 2, 4 ) int -> ecx "argument with side effect" ; V11 rat0 [V11,T03] ( 3, 4 ) int -> ecx "runtime lookup" ; V12 rat1 [V12,T02] ( 3, 5.60) int -> ecx "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T11] ( 3, 2 ) int -> ecx "runtime lookup"
+; V13 rat2 [V13,T10] ( 3, 2 ) int -> ecx "runtime lookup"
; V14 rat3 [V14,T07] ( 3, 2.80) int -> ecx "spilling expr"
-; V15 rat4 [V15,T09] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T08] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 4 @@ -50,82 +50,86 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=00000080 {edi}, byrefRegs=00000 G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref mov ecx, esi mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.20 PerfScore 0.35 G_M17047_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz mov edx, edi ; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - je SHORT G_M17047_IG07
+ test edi, edi + je SHORT G_M17047_IG08
;; size=11 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[edi]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop esi pop edi pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[edi] - mov ecx, edi
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30] call [eax+0x10]<unknown method> ; gcrRegs -[ecx] +[eax] test eax, eax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor eax, eax
- jmp SHORT G_M17047_IG09 - ;; size=18 bbWeight=0.50 PerfScore 5.38 -G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M17047_IG10 + ;; size=21 bbWeight=0.50 PerfScore 5.38 +G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
mov ecx, eax ; gcrRegs +[ecx] mov edx, esi call [System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this] ; gcrRegs -[ecx] ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov ecx, dword ptr [esi+0x20] cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, esi mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov esi, eax ; gcrRegs +[esi] mov ecx, esi ; gcrRegs +[ecx]
- mov edx, edi
+ xor edx, edx
; gcrRegs +[edx] call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[eax ecx edx edi]
+ ; gcrRegs -[eax ecx edx]
mov eax, esi ; gcrRegs +[eax] ;; size=19 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop ecx pop esi @@ -134,6 +138,6 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000 ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 143, prolog size 9, PerfScore 33.96, instruction count 61, allocated bytes for code 143 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 148, prolog size 9, PerfScore 34.08, instruction count 62, allocated bytes for code 148 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
; ============================================================

coreclr_tests.run.windows.x86.checked.mch

-26 (-78.79%) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)

@@ -7,29 +7,18 @@ ; No matching PGO data ; Final local variable assignments ;
-;* V00 cse0 [V00,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 G_M63990_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M63990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M63990_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M63990_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M63990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
inc dword ptr [D1FFAB1EH] ;; size=6 bbWeight=1 PerfScore 3.00
-G_M63990_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M63990_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, 0xD1FFAB1E - mov edx, 14 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M63990_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 33, prolog size 0, PerfScore 8.00, instruction count 8, allocated bytes for code 33 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
+; Total bytes of code 7, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 7 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
; ============================================================

-30 (-65.22%) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments @@ -13,36 +13,22 @@ ; Lcl frame size = 0 G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M16369_IG06 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] call [<unknown method>] ; gcrRegs +[eax] ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 18 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M16369_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================

-30 (-65.22%) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments @@ -13,36 +13,22 @@ ; Lcl frame size = 0 G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M16369_IG06 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] call [<unknown method>] ; gcrRegs +[eax] ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 18 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M16369_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================

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

@@ -2,22 +2,20 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T02] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T02] ( 2, 1 ) ref -> eax class-hnd single-def <<unknown class>>
; V02 cse0 [V02,T01] ( 3, 2.50) ref -> edx "CSE - aggressive" ; ; Lcl frame size = 0 G_M2237_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M2237_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov edx, gword ptr [ecx+0x04] @@ -30,31 +28,20 @@ G_M2237_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M2237_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M2237_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M2237_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - je SHORT G_M2237_IG07
mov eax, dword ptr [eax+0x08] ; gcrRegs -[eax]
- ;; size=17 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M2237_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M2237_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M2237_IG08: ; bbWeight=0.50, epilog, nogc, extend - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 40, prolog size 3, PerfScore 9.25, instruction count 18, allocated bytes for code 40 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
+; Total bytes of code 24, prolog size 0, PerfScore 6.00, instruction count 9, allocated bytes for code 24 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
; ============================================================

-33 (-10.78%) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)

@@ -51,17 +51,13 @@ G_M2789_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov edi, edx ; gcrRegs +[edi] ;; size=13 bbWeight=1 PerfScore 5.00
-G_M2789_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - test byte ptr [D1FFAB1EH], 1 ; global ptr - je G_M2789_IG17 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M2789_IG03: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] test ecx, ecx
- jne SHORT G_M2789_IG05
+ jne SHORT G_M2789_IG04
;; size=10 bbWeight=1 PerfScore 3.25
-G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] push 0 mov edx, esi @@ -69,33 +65,33 @@ G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000 ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx]
- jmp SHORT G_M2789_IG06
+ jmp SHORT G_M2789_IG05
;; size=14 bbWeight=0.50 PerfScore 3.25
-G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx] mov edx, esi call [<unknown method>] ; gcrRegs -[ecx] ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M2789_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
test eax, eax
- je G_M2789_IG14
+ je G_M2789_IG13
;; size=8 bbWeight=1 PerfScore 1.25
-G_M2789_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M2789_IG15
+ je G_M2789_IG14
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M2789_IG08: ; bbWeight=0.46, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG07: ; bbWeight=0.46, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [edi+0x04] test ebx, ebx
- je G_M2789_IG15
+ je G_M2789_IG14
;; size=11 bbWeight=0.46 PerfScore 1.49
-G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG08: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov eax, ebx mov dword ptr [ebp-0x10], eax lea ecx, [eax+0x07] test ecx, ecx
- jl G_M2789_IG16
+ jl G_M2789_IG15
call <unknown method> ; gcrRegs +[eax] mov ecx, eax @@ -103,25 +99,25 @@ G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov gword ptr [ebp-0x18], ecx ; GC ptr vars +{V10} test ecx, ecx
- jne SHORT G_M2789_IG10
+ jne SHORT G_M2789_IG09
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx] ;; size=46 bbWeight=0.47 PerfScore 4.74
-G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] cmp dword ptr [ecx+0x04], ebx
- jge SHORT G_M2789_IG11
+ jge SHORT G_M2789_IG10
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=24 bbWeight=0.47 PerfScore 4.03
-G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x08] @@ -144,7 +140,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov ecx, dword ptr [edi+0x04] sub ecx, ebx cmp ecx, 7
- jge SHORT G_M2789_IG12
+ jge SHORT G_M2789_IG11
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -152,7 +148,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=58 bbWeight=0.47 PerfScore 7.94
-G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [ebp-0x14] lea ecx, bword ptr [edi+ebx+0x08] ; byrRegs +[ecx] @@ -164,7 +160,7 @@ G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov ecx, edi ; gcrRegs +[ecx] ;; size=22 bbWeight=0.47 PerfScore 3.08
-G_M2789_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+G_M2789_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edi] ; GC ptr vars -{V10} push gword ptr [ebp+0x0C] @@ -180,7 +176,7 @@ G_M2789_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ec call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 6.25
-G_M2789_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M2789_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -188,24 +184,17 @@ G_M2789_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M2789_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M2789_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx]
- jmp SHORT G_M2789_IG13
+ jmp SHORT G_M2789_IG12
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M2789_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M2789_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M2789_IG17: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[edi] - mov ecx, 0xD1FFAB1E - mov edx, 7 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp G_M2789_IG03 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 306, prolog size 9, PerfScore 52.16, instruction count 92, allocated bytes for code 306 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
+; Total bytes of code 273, prolog size 9, PerfScore 48.16, instruction count 86, allocated bytes for code 273 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
; ============================================================

-23 (-8.04%) : 326.dasm - Program:TestEntryPoint():int (FullOpts)

@@ -12,40 +12,38 @@ ;* 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 -> esi class-hnd single-def <<unknown class>>
; V05 loc5 [V05 ] ( 2, 2 ) struct (16) [ebp-0x14] do-not-enreg[XS] must-init addr-exposed <System.Decimal> ; V06 loc6 [V06 ] ( 2, 2 ) struct (16) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed <System.Decimal> ;* V07 loc7 [V07 ] ( 0, 0 ) int -> zero-ref ld-addr-op
-; V08 tmp0 [V08,T01] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <Program> -; V09 tmp1 [V09,T03] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1" -; V10 tmp2 [V10,T06] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable" -; V11 tmp3 [V11,T00] ( 8, 12.75) ref -> esi class-hnd "spilling QMark2" <<unknown class>> -; V12 tmp4 [V12 ] ( 10, 7.00) struct (16) [ebp-0x34] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V13 tmp5 [V13 ] ( 7, 10.00) struct (16) [ebp-0x44] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> -; V14 tmp6 [V14,T07] ( 5, 1.00) int -> eax "Inline return value spill temp"
+; V08 tmp0 [V08,T00] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <Program> +; V09 tmp1 [V09 ] ( 10, 7.00) struct (16) [ebp-0x34] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V10 tmp2 [V10 ] ( 7, 10.00) struct (16) [ebp-0x44] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal> +; V11 tmp3 [V11,T06] ( 5, 1.00) int -> eax "Inline return value spill temp" +;* V12 tmp4 [V12 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" +;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" +; V14 tmp6 [V14,T07] ( 3, 1.00) int -> eax single-def "Inline stloc first use temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" -; V17 tmp9 [V17,T08] ( 3, 1.00) int -> eax single-def "Inline stloc first use temp" -;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" -; V19 tmp11 [V19 ] ( 2, 2 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP -; V20 tmp12 [V20 ] ( 2, 2 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP -; V21 tmp13 [V21 ] ( 2, 2 ) long -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP -; V22 tmp14 [V22 ] ( 2, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP -; V23 tmp15 [V23 ] ( 2, 2 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP -; V24 tmp16 [V24 ] ( 2, 2 ) long -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP -; V25 tmp17 [V25 ] ( 4, 3.50) int -> [ebp-0x34] do-not-enreg[X] addr-exposed "field V12._flags (fldOffset=0x0)" P-DEP -; V26 tmp18 [V26 ] ( 4, 3.50) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V12._hi32 (fldOffset=0x4)" P-DEP -; V27 tmp19 [V27 ] ( 6, 4.00) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V12._lo64 (fldOffset=0x8)" P-DEP -; V28 tmp20 [V28 ] ( 4, 3.50) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V13._flags (fldOffset=0x0)" P-DEP -; V29 tmp21 [V29 ] ( 3, 4.00) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V13._hi32 (fldOffset=0x4)" P-DEP -; V30 tmp22 [V30 ] ( 4, 5.00) long -> [ebp-0x3C] do-not-enreg[X] addr-exposed "field V13._lo64 (fldOffset=0x8)" P-DEP -; V31 tmp23 [V31,T02] ( 3, 6 ) ref -> eax single-def "argument with side effect" -; V32 rat0 [V32,T04] ( 2, 2 ) int -> ecx "field V15.lo (fldOffset=0x0)" P-INDEP -; V33 rat1 [V33,T05] ( 2, 2 ) int -> edx "field V15.hi (fldOffset=0x4)" P-INDEP -; V34 rat2 [V34,T09] ( 2, 1.00) int -> ecx "field V16.lo (fldOffset=0x0)" P-INDEP -; V35 rat3 [V35,T10] ( 2, 1.00) int -> edx "field V16.hi (fldOffset=0x4)" P-INDEP -; V36 rat4 [V36,T11] ( 2, 0.00) int -> ecx "field V18.lo (fldOffset=0x0)" P-INDEP -; V37 rat5 [V37,T12] ( 2, 0.00) int -> edx "field V18.hi (fldOffset=0x4)" P-INDEP
+; V16 tmp8 [V16 ] ( 2, 2 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP +; V17 tmp9 [V17 ] ( 2, 2 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP +; V18 tmp10 [V18 ] ( 2, 2 ) long -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP +; V19 tmp11 [V19 ] ( 2, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP +; V20 tmp12 [V20 ] ( 2, 2 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP +; V21 tmp13 [V21 ] ( 2, 2 ) long -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP +; V22 tmp14 [V22 ] ( 4, 3.50) int -> [ebp-0x34] do-not-enreg[X] addr-exposed "field V09._flags (fldOffset=0x0)" P-DEP +; V23 tmp15 [V23 ] ( 4, 3.50) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V09._hi32 (fldOffset=0x4)" P-DEP +; V24 tmp16 [V24 ] ( 6, 4.00) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V09._lo64 (fldOffset=0x8)" P-DEP +; V25 tmp17 [V25 ] ( 4, 3.50) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V10._flags (fldOffset=0x0)" P-DEP +; V26 tmp18 [V26 ] ( 3, 4.00) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V10._hi32 (fldOffset=0x4)" P-DEP +; V27 tmp19 [V27 ] ( 4, 5.00) long -> [ebp-0x3C] do-not-enreg[X] addr-exposed "field V10._lo64 (fldOffset=0x8)" P-DEP +; V28 tmp20 [V28,T01] ( 3, 6 ) ref -> eax single-def "argument with side effect" +; V29 tmp21 [V29,T03] ( 2, 4 ) ref -> edx single-def "argument with side effect" +; V30 rat0 [V30,T04] ( 2, 2 ) int -> ecx "field V12.lo (fldOffset=0x0)" P-INDEP +; V31 rat1 [V31,T05] ( 2, 2 ) int -> edx "field V12.hi (fldOffset=0x4)" P-INDEP +; V32 rat2 [V32,T08] ( 2, 1.00) int -> ecx "field V13.lo (fldOffset=0x0)" P-INDEP +; V33 rat3 [V33,T09] ( 2, 1.00) int -> edx "field V13.hi (fldOffset=0x4)" P-INDEP +; V34 rat4 [V34,T10] ( 2, 0.00) int -> ecx "field V15.lo (fldOffset=0x0)" P-INDEP +; V35 rat5 [V35,T11] ( 2, 0.00) int -> edx "field V15.hi (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 64 @@ -57,9 +55,9 @@ G_M13170_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [ebp-0x24], ymm4 ;; size=16 bbWeight=1 PerfScore 4.83
-G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; Program
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov esi, eax ; gcrRegs +[esi] @@ -86,19 +84,19 @@ G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov eax, dword ptr [eax+0x40] call [eax+0x0C]<unknown method> ; gcrRegs -[ecx edx esi] +[eax]
+ mov edx, eax + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOF_EXCEPTION + ; gcrRegs -[edx]
mov esi, eax ; gcrRegs +[esi]
- test esi, esi - jne G_M13170_IG10 - ;; size=73 bbWeight=1 PerfScore 22.00 -G_M13170_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
push 3 lea edx, [ebp-0x14] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method>
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
push 3 lea edx, [ebp-0x24] mov ecx, gword ptr [esi+0x04] @@ -114,89 +112,72 @@ G_M13170_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 or ecx, dword ptr [ebp-0x40] or edx, 0 or ecx, edx
- je SHORT G_M13170_IG08 - ;; size=58 bbWeight=1 PerfScore 26.50 -G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M13170_IG07 + ;; size=135 bbWeight=1 PerfScore 48.75 +G_M13170_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x2C] mov edx, dword ptr [ebp-0x28] or ecx, dword ptr [ebp-0x30] or edx, 0 or ecx, edx
- je SHORT G_M13170_IG14
+ je SHORT G_M13170_IG11
mov eax, dword ptr [ebp-0x34] sar eax, 31 mov ecx, dword ptr [ebp-0x44] sar ecx, 31 sub eax, ecx
- jne SHORT G_M13170_IG15
+ jne SHORT G_M13170_IG12
lea ecx, [ebp-0x34] lea edx, [ebp-0x44] call [<unknown method>] ;; size=44 bbWeight=0.50 PerfScore 6.87
-G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M13170_IG12
+ jne SHORT G_M13170_IG09
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG06: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x04] pop esi pop ebp ret ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M13170_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13170_IG07: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, dword ptr [ebp-0x2C] mov edx, dword ptr [ebp-0x28] or ecx, dword ptr [ebp-0x30] or edx, 0 or ecx, edx
- je SHORT G_M13170_IG06
+ je SHORT G_M13170_IG05
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M13170_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M13170_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x34] sar eax, 31 or eax, 1
- jmp SHORT G_M13170_IG05
+ jmp SHORT G_M13170_IG04
;; size=11 bbWeight=0 PerfScore 0.00
-G_M13170_IG10: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[eax esi] - mov ecx, 0xD1FFAB1E ; <unknown class> - cmp dword ptr [esi], ecx - je G_M13170_IG03 - ;; size=13 bbWeight=0.25 PerfScore 1.06 -G_M13170_IG11: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - mov edx, eax - ; gcrRegs +[edx] - call CORINFO_HELP_CHKCASTANY - ; gcrRegs -[edx] - mov esi, eax - ; gcrRegs +[esi] - jmp G_M13170_IG03 - ;; size=14 bbWeight=0.12 PerfScore 0.44 -G_M13170_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax esi]
+G_M13170_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG10: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x04] pop esi pop ebp ret ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M13170_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13170_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov eax, dword ptr [ebp-0x44] sar eax, 31 or eax, 1 neg eax
- jmp SHORT G_M13170_IG05
+ jmp SHORT G_M13170_IG04
;; size=13 bbWeight=0 PerfScore 0.00
-G_M13170_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M13170_IG05
+G_M13170_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M13170_IG04
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 286, prolog size 16, PerfScore 65.08, instruction count 96, allocated bytes for code 286 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
+; Total bytes of code 263, prolog size 16, PerfScore 63.83, instruction count 90, allocated bytes for code 263 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-10 (-35.71%) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)

@@ -9,32 +9,26 @@ ; 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 -> ebx this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
+; V00 this [V00,T00] ( 4, 4 ) ref -> ecx this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
; ; Lcl frame size = 0 G_M14591_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebx - mov ebx, ecx - ; gcrRegs +[ebx] - ;; size=3 bbWeight=1 PerfScore 1.25 -G_M14591_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] - ; byrRegs +[eax] - ; gcr arg pop 0 - cmp byte ptr [ebx], bl - lea ecx, bword ptr [ebx+0x0C]
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M14591_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs +[ecx] + cmp byte ptr [ecx], cl + add ecx, 12 + ; gcrRegs -[ecx]
; byrRegs +[ecx] mov edx, dword ptr [(reloc)] ; <unknown class> call [System.Threading.DeferredDisposableLifetime`1[System.__Canon]:AddRef():ubyte:this]
- ; gcrRegs -[ebx] - ; byrRegs -[eax ecx] - ;; size=23 bbWeight=1 PerfScore 11.50
+ ; byrRegs -[ecx] + ;; size=17 bbWeight=1 PerfScore 8.25
G_M14591_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ebx
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 1, PerfScore 14.25, instruction count 9, allocated bytes for code 28 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 9.25, instruction count 5, allocated bytes for code 18 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
; ============================================================

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

@@ -14,7 +14,7 @@ ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T03] ( 4, 3 ) byref -> eax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 3 ) int -> ecx "CSE - aggressive"
; V06 cse1 [V06,T02] ( 5, 3.50) int -> edx "CSE - aggressive" ; ; Lcl frame size = 0 @@ -28,28 +28,27 @@ G_M44169_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov esi, edx ;; size=9 bbWeight=1 PerfScore 3.75 G_M44169_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax] movzx ecx, word ptr [eax] movzx edx, di cmp ecx, edx je SHORT G_M44169_IG04 ;; size=16 bbWeight=1 PerfScore 6.50
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; byrRegs -[eax]
cmp edx, 47 jne SHORT G_M44169_IG07 ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz - movzx ecx, word ptr [eax] - movzx edi, si - cmp ecx, edi
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx eax, si + cmp ecx, eax
je SHORT G_M44169_IG05
- movzx ecx, si - cmp ecx, 47
+ movzx eax, si + 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=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[eax]
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend @@ -58,20 +57,18 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M44169_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz - ; byrRegs +[eax] - cmp word ptr [eax], 47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp ecx, 47
je SHORT G_M44169_IG09 mov ecx, edx call [<unknown method>]
- ; byrRegs -[eax]
mov edi, eax movzx ecx, si call [<unknown method>] cmp edi, eax sete al movzx eax, 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 pop esi pop edi @@ -91,6 +88,6 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 109, prolog size 5, PerfScore 24.25, instruction count 47, allocated bytes for code 109 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 21.88, instruction count 46, allocated bytes for code 105 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================

-11 (-2.75%) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)

@@ -9,25 +9,25 @@ ; 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 -> edi -; V01 loc1 [V01,T11] ( 3, 3 ) int -> ebx
+; V00 loc0 [V00,T07] ( 3, 2.50) int -> edi +; V01 loc1 [V01,T05] ( 3, 3 ) int -> ebx
; V02 loc2 [V02,T04] ( 5, 4 ) int -> ecx
-; V03 loc3 [V03,T14] ( 3, 2.50) short -> ebx -; V04 tmp0 [V04,T06] ( 2, 4 ) int -> ebx "value for stsfld with typeinit" -; V05 tmp1 [V05,T07] ( 2, 4 ) int -> ecx "value for stsfld with typeinit" -; V06 tmp2 [V06,T08] ( 2, 4 ) int -> eax "value for stsfld with typeinit" -; V07 tmp3 [V07,T09] ( 2, 4 ) int -> eax "value for stsfld with typeinit" -; V08 tmp4 [V08,T05] ( 3, 4 ) int -> edx "value for stsfld with typeinit" -; V09 tmp5 [V09,T10] ( 2, 4 ) int -> edx "value for stsfld with typeinit" -; V10 tmp6 [V10 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V11 tmp7 [V11 ] ( 2, 2 ) ubyte -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V12 tmp8 [V12,T15] ( 3, 2.50) int -> edi "Inline return value spill temp" -; V13 tmp9 [V13,T16] ( 4, 2 ) int -> edx "Inline return value spill temp" -; V14 tmp10 [V14,T03] ( 3, 5 ) int -> eax "Inlining Arg" -; V15 tmp11 [V15,T12] ( 3, 3 ) int -> eax "Inline return value spill temp" -; V16 tmp12 [V16,T01] ( 3, 6 ) int -> eax "Inlining Arg" -; V17 tmp13 [V17,T02] ( 3, 6 ) int -> edx "Inlining Arg" -; V18 cse0 [V18,T00] ( 19, 17 ) byref -> esi "CSE - aggressive"
+; V03 loc3 [V03,T08] ( 3, 2.50) short -> ebx +; V04 tmp0 [V04,T14] ( 2, 2 ) ubyte -> ebx "Inline return value spill temp" +; V05 tmp1 [V05 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V06 tmp2 [V06,T15] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp" +; V07 tmp3 [V07 ] ( 2, 2 ) ubyte -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V08 tmp4 [V08,T09] ( 3, 2.50) int -> edi "Inline return value spill temp" +; V09 tmp5 [V09,T12] ( 4, 2 ) int -> edx "Inline return value spill temp" +; V10 tmp6 [V10,T03] ( 3, 5 ) int -> eax "Inlining Arg" +; V11 tmp7 [V11,T13] ( 3, 2 ) int -> edx "Inline return value spill temp" +; V12 tmp8 [V12,T06] ( 3, 3 ) int -> eax "Inline return value spill temp" +; V13 tmp9 [V13,T01] ( 3, 6 ) int -> eax "Inlining Arg" +; V14 tmp10 [V14,T02] ( 3, 6 ) int -> edx "Inlining Arg" +; V15 tmp11 [V15,T16] ( 2, 2 ) int -> edx "Inline return value spill temp" +; V16 cse0 [V16,T10] ( 3, 2.50) int -> eax "CSE - moderate" +; V17 cse1 [V17,T11] ( 3, 2.50) int -> eax "CSE - moderate" +; V18 cse2 [V18,T00] ( 17, 16 ) byref -> esi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -50,7 +50,7 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 1 test eax, eax cmove ebx, edx
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax] mov esi, eax ; byrRegs +[esi] @@ -99,23 +99,23 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx] mov dword ptr [esi+0x0BA4], eax
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax] mov ecx, dword ptr [eax+0x0A90] mov eax, ecx ; byrRegs -[eax] imul eax, edi mov word ptr [esi+0x0BA8], ax
- cmp word ptr [esi+0x0BA8], 0x7FFF - jg SHORT G_M39812_IG04 - ;; size=214 bbWeight=1 PerfScore 71.50 -G_M39812_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
movsx eax, word ptr [esi+0x0BA8]
+ cmp eax, 0x7FFF + jg SHORT G_M39812_IG04 + ;; size=217 bbWeight=1 PerfScore 72.75 +G_M39812_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
cdq idiv edx:eax, ecx cmp eax, edi je SHORT G_M39812_IG05
- ;; size=14 bbWeight=0.50 PerfScore 15.38
+ ;; size=7 bbWeight=0.50 PerfScore 13.38
G_M39812_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref mov word ptr [esi+0x0BA8], 0x7FFF ;; size=9 bbWeight=0.50 PerfScore 0.50 @@ -135,12 +135,11 @@ G_M39812_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e jg SHORT G_M39812_IG07 ;; size=51 bbWeight=1 PerfScore 14.00 G_M39812_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- movsx eax, word ptr [esi+0x0BAA]
cdq idiv edx:eax, ecx cmp eax, edi je SHORT G_M39812_IG08
- ;; size=14 bbWeight=0.50 PerfScore 15.38
+ ;; size=7 bbWeight=0.50 PerfScore 13.38
G_M39812_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref mov word ptr [esi+0x0BAA], bx ;; size=7 bbWeight=0.50 PerfScore 0.50 @@ -184,6 +183,6 @@ G_M39812_IG14: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 400, prolog size 9, PerfScore 138.75, instruction count 107, allocated bytes for code 400 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
+; Total bytes of code 389, prolog size 9, PerfScore 136.00, instruction count 106, allocated bytes for code 389 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
; ============================================================

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

@@ -13,7 +13,7 @@ ; V01 arg1 [V01,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.String> ; V02 loc0 [V02,T02] ( 4, 3.50) ref -> ebx class-hnd <System.String> ; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V04 cse0 [V04,T04] ( 3, 1.50) byref -> eax "CSE - moderate"
+; V04 cse0 [V04,T04] ( 3, 1.50) int -> ecx "CSE - moderate"
; ; Lcl frame size = 0 @@ -42,11 +42,11 @@ G_M45118_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ;; size=16 bbWeight=1 PerfScore 5.00 G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
- cmp word ptr [eax], 47 - jne SHORT G_M45118_IG04
movzx ecx, word ptr [eax]
+ cmp ecx, 47 + jne SHORT G_M45118_IG04
push ecx mov ecx, esi ; gcrRegs +[ecx] @@ -63,7 +63,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ; gcrRegs -[ecx edx edi] mov ebx, eax ; gcrRegs +[ebx]
- ;; size=43 bbWeight=0.50 PerfScore 10.12
+ ;; size=42 bbWeight=0.50 PerfScore 8.75
G_M45118_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] mov eax, ebx @@ -77,6 +77,6 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 76, prolog size 6, PerfScore 23.12, instruction count 32, allocated bytes for code 76 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 75, prolog size 6, PerfScore 21.75, instruction count 32, allocated bytes for code 75 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================

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

@@ -8,7 +8,6 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 tmp0 [V00,T00] ( 2, 4 ) int -> esi "value for stsfld with typeinit"
; ; Lcl frame size = 0 @@ -16,11 +15,14 @@ G_M35347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push esi ;; size=1 bbWeight=1 PerfScore 1.00 G_M35347_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call [<unknown method>] - mov esi, eax - call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
- mov dword ptr [eax+0x0DF8], esi
+ mov esi, eax + ; byrRegs +[esi] + call [<unknown method>] + ; byrRegs -[eax] + ; gcr arg pop 0 + mov dword ptr [esi+0x0DF8], eax
;; size=20 bbWeight=1 PerfScore 7.25 G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend pop esi

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

@@ -10,7 +10,6 @@ ; Final local variable assignments ; ;* V00 tmp0 [V00 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V01 cse0 [V01,T00] ( 2, 2 ) byref -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,22 +18,22 @@ G_M37466_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M37466_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax] cmp byte ptr [eax+0x0B18], 0
- jne SHORT G_M37466_IG05
+ je SHORT G_M37466_IG05
;; size=15 bbWeight=1 PerfScore 7.00 G_M37466_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; byrRegs -[eax]
- mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ call [System.Globalization.CalendarData:NlsSystemSupportsTaiwaneseCalendar():ubyte] + ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M37466_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=0.50 PerfScore 0.75 G_M37466_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- call [System.Globalization.CalendarData:NlsSystemSupportsTaiwaneseCalendar():ubyte] - ;; size=6 bbWeight=0.50 PerfScore 1.50
+ mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M37466_IG06: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret

libraries.pmi.windows.x86.checked.mch

-26 (-81.25%) : 5269.dasm - System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)

@@ -12,23 +12,13 @@ G_M60266_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M60266_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M60266_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M60266_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M60266_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [D1FFAB1EH] ; static handle ;; size=5 bbWeight=1 PerfScore 2.00
-G_M60266_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M60266_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M60266_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, 0xD1FFAB1E - mov edx, 980 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M60266_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=5b0e1495) for method System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=5b0e1495) for method System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
; ============================================================

-26 (-81.25%) : 5758.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)

@@ -12,25 +12,14 @@ G_M32434_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M32434_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M32434_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M32434_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M32434_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M32434_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M32434_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M32434_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 0x43A - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M32434_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
; ============================================================

-26 (-74.29%) : 5275.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)

@@ -15,25 +15,15 @@ G_M38881_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M38881_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M38881_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M38881_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov ecx, 0xD1FFAB1E ; static handle
+G_M38881_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 0xD1FFAB1E ; static handle
lock
- inc dword ptr [ecx]
+ inc dword ptr [eax]
;; size=8 bbWeight=1 PerfScore 16.25
-G_M38881_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M38881_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M38881_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, 0xD1FFAB1E - mov edx, 980 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M38881_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 0, PerfScore 21.25, instruction count 10, allocated bytes for code 35 (MethodHash=a0f7681e) for method System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
+; Total bytes of code 9, prolog size 0, PerfScore 17.25, instruction count 4, allocated bytes for code 9 (MethodHash=a0f7681e) for method System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
; ============================================================

-20 (-8.81%) : 2431.dasm - System.ReadOnlyMemory1[short]:get_Span():System.ReadOnlySpan1[short]:this (FullOpts)

@@ -58,7 +58,7 @@ G_M12719_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e mov gword ptr [ebp-0x1C], ecx ; GC ptr vars +{V04} test ecx, ecx
- je G_M12719_IG08
+ je G_M12719_IG07
;; size=17 bbWeight=1 PerfScore 4.75 G_M12719_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz ; byrRegs -[ebx] @@ -69,7 +69,7 @@ G_M12719_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax] test eax, eax jne SHORT G_M12719_IG04 @@ -91,31 +91,22 @@ G_M12719_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 ; byrRegs -[edx] mov ebx, edx ; gcrRegs -[ebx]
- jmp SHORT G_M12719_IG07
+ jmp SHORT G_M12719_IG06
;; size=15 bbWeight=0.50 PerfScore 3.00
-G_M12719_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M12719_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
; gcrRegs +[ecx] ; byrRegs -[eax] mov edx, ecx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - jne SHORT G_M12719_IG06 - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx] - ;; size=32 bbWeight=0.50 PerfScore 3.12 -G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
lea edx, [ebp-0x18] mov ecx, gword ptr [ebp-0x1C] ; gcrRegs +[ecx] mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C] ; GC ptr vars -{V04} call [eax+0x14]<unknown method> @@ -128,16 +119,16 @@ G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 mov eax, ebx mov ebx, ecx ; byrRegs -[ebx]
- ;; size=26 bbWeight=0.50 PerfScore 5.62 -G_M12719_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 6.38 +G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
mov ecx, dword ptr [esi+0x04] and ecx, 0xD1FFAB1E mov edx, dword ptr [esi+0x08] cmp ecx, ebx
- ja SHORT G_M12719_IG12
+ ja SHORT G_M12719_IG11
sub ebx, ecx cmp ebx, edx
- jb SHORT G_M12719_IG12
+ jb SHORT G_M12719_IG11
lea eax, bword ptr [eax+2*ecx] mov ebx, eax ; byrRegs +[ebx] @@ -146,12 +137,12 @@ G_M12719_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 mov eax, esi ; byrRegs -[eax] ;; size=31 bbWeight=0.50 PerfScore 4.12
-G_M12719_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M12719_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
mov dword ptr [ebp-0x10], eax test eax, eax
- jge SHORT G_M12719_IG10
+ jge SHORT G_M12719_IG09
;; size=7 bbWeight=1 PerfScore 2.25
-G_M12719_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M12719_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -159,12 +150,12 @@ G_M12719_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M12719_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M12719_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov eax, dword ptr [ebp-0x10] mov bword ptr [edi], ebx mov dword ptr [edi+0x04], eax ;; size=8 bbWeight=1 PerfScore 3.00
-G_M12719_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M12719_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -172,12 +163,12 @@ G_M12719_IG11: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M12719_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M12719_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx edi] call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 227, prolog size 14, PerfScore 43.50, instruction count 80, allocated bytes for code 227 (MethodHash=8845ce50) for method System.ReadOnlyMemory`1[short]:get_Span():System.ReadOnlySpan`1[short]:this (FullOpts)
+; Total bytes of code 207, prolog size 14, PerfScore 41.12, instruction count 75, allocated bytes for code 207 (MethodHash=8845ce50) for method System.ReadOnlyMemory`1[short]:get_Span():System.ReadOnlySpan`1[short]:this (FullOpts)
; ============================================================

-20 (-8.81%) : 1724.dasm - System.Memory1[short]:get_Span():System.Span1[short]:this (FullOpts)

@@ -58,7 +58,7 @@ G_M44847_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e mov gword ptr [ebp-0x1C], ecx ; GC ptr vars +{V04} test ecx, ecx
- je G_M44847_IG08
+ je G_M44847_IG07
;; size=17 bbWeight=1 PerfScore 4.75 G_M44847_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz ; byrRegs -[ebx] @@ -69,7 +69,7 @@ G_M44847_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax] test eax, eax jne SHORT G_M44847_IG04 @@ -91,31 +91,22 @@ G_M44847_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 ; byrRegs -[edx] mov ebx, edx ; gcrRegs -[ebx]
- jmp SHORT G_M44847_IG07
+ jmp SHORT G_M44847_IG06
;; size=15 bbWeight=0.50 PerfScore 3.00
-G_M44847_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M44847_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
; gcrRegs +[ecx] ; byrRegs -[eax] mov edx, ecx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - jne SHORT G_M44847_IG06 - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx] - ;; size=32 bbWeight=0.50 PerfScore 3.12 -G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
lea edx, [ebp-0x18] mov ecx, gword ptr [ebp-0x1C] ; gcrRegs +[ecx] mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C] ; GC ptr vars -{V04} call [eax+0x14]<unknown method> @@ -128,16 +119,16 @@ G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 mov eax, ebx mov ebx, ecx ; byrRegs -[ebx]
- ;; size=26 bbWeight=0.50 PerfScore 5.62 -G_M44847_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 6.38 +G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
mov ecx, dword ptr [esi+0x04] and ecx, 0xD1FFAB1E mov edx, dword ptr [esi+0x08] cmp ecx, ebx
- ja SHORT G_M44847_IG12
+ ja SHORT G_M44847_IG11
sub ebx, ecx cmp ebx, edx
- jb SHORT G_M44847_IG12
+ jb SHORT G_M44847_IG11
lea eax, bword ptr [eax+2*ecx] mov ebx, eax ; byrRegs +[ebx] @@ -146,12 +137,12 @@ G_M44847_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 mov eax, esi ; byrRegs -[eax] ;; size=31 bbWeight=0.50 PerfScore 4.12
-G_M44847_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M44847_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
mov dword ptr [ebp-0x10], eax test eax, eax
- jge SHORT G_M44847_IG10
+ jge SHORT G_M44847_IG09
;; size=7 bbWeight=1 PerfScore 2.25
-G_M44847_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M44847_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -159,12 +150,12 @@ G_M44847_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M44847_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M44847_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov eax, dword ptr [ebp-0x10] mov bword ptr [edi], ebx mov dword ptr [edi+0x04], eax ;; size=8 bbWeight=1 PerfScore 3.00
-G_M44847_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M44847_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -172,12 +163,12 @@ G_M44847_IG11: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M44847_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M44847_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx edi] call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 227, prolog size 14, PerfScore 43.50, instruction count 80, allocated bytes for code 227 (MethodHash=3e9b50d0) for method System.Memory`1[short]:get_Span():System.Span`1[short]:this (FullOpts)
+; Total bytes of code 207, prolog size 14, PerfScore 41.12, instruction count 75, allocated bytes for code 207 (MethodHash=3e9b50d0) for method System.Memory`1[short]:get_Span():System.Span`1[short]:this (FullOpts)
; ============================================================

-14 (-7.11%) : 5674.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)

@@ -8,20 +8,20 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 4.50) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
; V01 arg1 [V01,T00] ( 8, 6 ) ref -> esi class-hnd single-def <System.Threading.Tasks.Task> ;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref
-; V03 loc1 [V03,T02] ( 5, 2.50) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]> -; V04 loc2 [V04,T03] ( 4, 2.50) ubyte -> eax -; V05 loc3 [V05,T04] ( 3, 2.50) int -> eax
+; V03 loc1 [V03,T04] ( 4, 2 ) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]> +; V04 loc2 [V04,T02] ( 4, 2.50) ubyte -> eax +; V05 loc3 [V05,T03] ( 3, 2.50) int -> eax
;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-; V07 tmp1 [V07,T09] ( 3, 1.50) int -> eax
+; V07 tmp1 [V07,T10] ( 2, 1 ) int -> eax
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V11 tmp5 [V11,T07] ( 3, 1.50) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V13 tmp7 [V13,T10] ( 3, 1.50) ubyte -> edx "Inline return value spill temp"
+; V13 tmp7 [V13,T09] ( 3, 1.50) ubyte -> edx "Inline return value spill temp"
; V14 tmp8 [V14,T08] ( 3, 1.50) ref -> ecx "field V06._source (fldOffset=0x0)" P-INDEP ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._source (fldOffset=0x0)" P-INDEP ; V16 tmp10 [V16,T05] ( 2, 2 ) ref -> edx single-def "argument with side effect" @@ -88,7 +88,7 @@ G_M18509_IG08: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRe ; gcrRegs +[ecx] call [System.Threading.Tasks.Task:TrySetCanceled(System.Threading.CancellationToken,System.Object):ubyte:this] ; gcrRegs -[eax ecx edx]
- jmp SHORT G_M18509_IG14
+ jmp SHORT G_M18509_IG13
;; size=21 bbWeight=0.50 PerfScore 4.88 G_M18509_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi] @@ -102,33 +102,23 @@ G_M18509_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs +[ecx] call [System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this] ; gcrRegs -[eax ecx edx]
- jmp SHORT G_M18509_IG14
+ jmp SHORT G_M18509_IG13
;; size=20 bbWeight=0.50 PerfScore 4.38 G_M18509_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi] mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx esi] +[eax]
- test eax, eax - jne SHORT G_M18509_IG11 - mov ecx, edi - ; gcrRegs +[ecx] - call [System.Threading.Tasks.Task:TrySetResult():ubyte:this] - ; gcrRegs -[eax ecx] - jmp SHORT G_M18509_IG14 - ;; size=26 bbWeight=0.50 PerfScore 4.00 -G_M18509_IG11: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x1C] and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E
- jne SHORT G_M18509_IG12
+ jne SHORT G_M18509_IG11
movzx edx, byte ptr [eax+0x20]
- jmp SHORT G_M18509_IG13 - ;; size=23 bbWeight=0.50 PerfScore 3.75 -G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M18509_IG12 + ;; size=35 bbWeight=0.50 PerfScore 4.50 +G_M18509_IG11: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov ecx, eax ; gcrRegs +[ecx] mov edx, 1 @@ -136,29 +126,29 @@ G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=0 ; gcrRegs -[eax ecx] mov edx, eax ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M18509_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, edi ; gcrRegs +[ecx] call [System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this] ; gcrRegs -[ecx] ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M18509_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M18509_IG13: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M18509_IG16
+ je SHORT G_M18509_IG15
;; size=4 bbWeight=1 PerfScore 1.25
-G_M18509_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M18509_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, edi ; gcrRegs +[ecx] call [System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this] ; gcrRegs -[ecx edi] ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M18509_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M18509_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi pop edi pop ebp ret ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 197, prolog size 5, PerfScore 45.25, instruction count 65, allocated bytes for code 197 (MethodHash=f8c0b7b2) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)
+; Total bytes of code 183, prolog size 5, PerfScore 42.00, instruction count 60, allocated bytes for code 183 (MethodHash=f8c0b7b2) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-15 (-60.00%) : 25.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)

@@ -13,17 +13,14 @@ G_M60123_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M60123_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 8 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M60123_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=17301524) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=17301524) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
; ============================================================

-15 (-60.00%) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)

@@ -13,16 +13,13 @@ G_M27576_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M27576_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 35 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [D1FFAB1EH] ; static handle
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M27576_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
; ============================================================

-15 (-60.00%) : 22.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)

@@ -13,17 +13,14 @@ G_M52025_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M52025_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E - mov edx, 7 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M52025_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
; ============================================================

-15 (-3.49%) : 108.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

@@ -65,14 +65,9 @@ G_M3749_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by mov gword ptr [ebp-0x40], eax cmp gword ptr [ebp-0x3C], 0 jne SHORT G_M3749_IG05
- mov ecx, 0xD1FFAB1E - mov edx, 6 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
mov gword ptr [ebp-0x40], eax
- ;; size=54 bbWeight=1 PerfScore 17.75
+ ;; size=39 bbWeight=1 PerfScore 16.25
G_M3749_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] mov eax, gword ptr [ebp-0x40] @@ -184,7 +179,7 @@ G_M3749_IG06: ; bbWeight=1, extend ; gcrRegs -[ecx] mov gword ptr [ebp-0x4C], eax mov ecx, 0xD1FFAB1E ; Internal.Microsoft.Extensions.DependencyModel.CompilationOptions
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
mov gword ptr [ebp-0x50], eax push gword ptr [ebp-0x44] push gword ptr [ebp-0x48] @@ -216,6 +211,6 @@ G_M3749_IG07: ; bbWeight=1, epilog, nogc, extend ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 430, prolog size 28, PerfScore 163.58, instruction count 119, allocated bytes for code 430 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 415, prolog size 28, PerfScore 162.08, instruction count 116, allocated bytes for code 415 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================

-8 (-0.86%) : 2528.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 -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T10] ( 3, 5 ) ref -> [ebp-0x50] class-hnd exact spill-single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T52] ( 3, 1.50) ref -> [ebp-0x54] class-hnd spill-single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 2, 1 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T04] ( 3, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def <System.__Canon> @@ -77,9 +77,9 @@ ; V66 rat23 [V66,T33] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable" ; V67 rat24 [V67,T24] ( 3, 2.80) int -> ecx "spilling expr" ; V68 rat25 [V68,T34] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat26 [V69,T56] ( 3, 1 ) int -> ebx "runtime lookup" -; V70 rat27 [V70,T54] ( 3, 1.40) int -> ecx "spilling expr" -; V71 rat28 [V71,T55] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
+; V69 rat26 [V69,T55] ( 3, 1 ) int -> ebx "runtime lookup" +; V70 rat27 [V70,T53] ( 3, 1.40) int -> ecx "spilling expr" +; V71 rat28 [V71,T54] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 92 @@ -109,12 +109,12 @@ G_M36297_IG02: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= mov gword ptr [ebp-0x4C], eax ; GC ptr vars +{V00} test eax, eax
- je G_M36297_IG72
+ je G_M36297_IG71
mov eax, gword ptr [ebp-0x4C] test esi, esi
- je G_M36297_IG73
+ je G_M36297_IG72
test edi, edi
- je G_M36297_IG74
+ je G_M36297_IG73
mov ecx, dword ptr [ebx+0x20] mov ecx, dword ptr [ecx+0x10] test ecx, ecx @@ -129,7 +129,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRe ; GC ptr vars +{V00} mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcrRegs -[eax] mov ecx, eax mov eax, gword ptr [ebp-0x4C] @@ -146,7 +146,7 @@ G_M36297_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000000 call [System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte] ; gcrRegs -[eax ecx] test eax, eax
- je G_M36297_IG50
+ je G_M36297_IG49
;; size=23 bbWeight=1 PerfScore 7.00 G_M36297_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x24], 0 @@ -168,11 +168,11 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov ebx, eax ; gcrRegs +[ebx] @@ -211,13 +211,13 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x4C] ; gcrRegs +[edx]
- call [CORINFO_HELP_ISINSTANCEOFARRAY]
+ call [CORINFO_HELP_ISINSTANCEOFANY]
; gcrRegs -[edx] +[eax] mov gword ptr [ebp-0x54], eax ; GC ptr vars +{V07} @@ -243,7 +243,7 @@ G_M36297_IG20: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x40], eax mov eax, gword ptr [ebp-0x54] ; gcrRegs +[eax] @@ -274,7 +274,7 @@ G_M36297_IG26: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ebx, eax mov eax, gword ptr [ebp-0x54] ; gcrRegs +[eax] @@ -325,79 +325,79 @@ G_M36297_IG31: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 G_M36297_IG32: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG33: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x4C] ; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; GC ptr vars -{V00 V08} + call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] mov gword ptr [ebp-0x58], eax
- test eax, eax - je G_M36297_IG50 - mov eax, gword ptr [ebp-0x58]
+ ; GC ptr vars +{V08}
mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 40
- jle SHORT G_M36297_IG37 - ;; size=31 bbWeight=0.50 PerfScore 5.62 -G_M36297_IG34: ; bbWeight=0.40, gcVars=0020000000000000 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V00 V08}
+ jle SHORT G_M36297_IG36 + ;; size=20 bbWeight=0.50 PerfScore 4.50 +G_M36297_IG34: ; bbWeight=0.40, gcVars=0100000000000000 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x58] + ; gcrRegs +[eax]
mov edx, dword ptr [ecx+0x28] test edx, edx je SHORT G_M36297_IG36
- ;; size=7 bbWeight=0.40 PerfScore 1.30
+ ;; size=10 bbWeight=0.40 PerfScore 1.70
G_M36297_IG35: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG38
+ jmp SHORT G_M36297_IG37
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG36: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - ;; size=0 bbWeight=0.20 PerfScore 0.00 -G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG36: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x30], eax mov eax, gword ptr [ebp-0x58] ; gcrRegs +[eax] mov edx, dword ptr [ebp-0x30] ;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG37: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 44
- jle SHORT G_M36297_IG42
+ jle SHORT G_M36297_IG41
;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M36297_IG39: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ecx+0x2C] test ecx, ecx
- je SHORT G_M36297_IG41
+ je SHORT G_M36297_IG40
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG40: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG39: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x34], ecx
- jmp SHORT G_M36297_IG44 - ;; size=5 bbWeight=0.32 PerfScore 0.96 -G_M36297_IG41: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x30], edx
jmp SHORT G_M36297_IG43
+ ;; size=5 bbWeight=0.32 PerfScore 0.96 +G_M36297_IG40: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + mov dword ptr [ebp-0x30], edx + jmp SHORT G_M36297_IG42
;; size=5 bbWeight=0.20 PerfScore 0.60
-G_M36297_IG42: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG41: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x30], edx ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M36297_IG43: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG42: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x34], eax mov eax, gword ptr [ebp-0x58] ; gcrRegs +[eax] mov edx, dword ptr [ebp-0x30] ;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG43: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
push edx lea ecx, [ebp-0x3C] mov edx, eax ; gcrRegs +[edx]
+ ; GC ptr vars -{V08}
call [System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]] ; gcrRegs -[eax edx] push dword ptr [ebp-0x38] @@ -407,22 +407,22 @@ G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe call [System.Span`1[System.__Canon]:op_Implicit(System.Span`1[System.__Canon]):System.ReadOnlySpan`1[System.__Canon]] mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 48
- jle SHORT G_M36297_IG47
+ jle SHORT G_M36297_IG46
;; size=39 bbWeight=0.50 PerfScore 8.62
-G_M36297_IG45: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG44: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x30] test eax, eax
- je SHORT G_M36297_IG47
+ je SHORT G_M36297_IG46
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG46: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M36297_IG48
+G_M36297_IG45: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M36297_IG47
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG46: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=12 bbWeight=0.18 PerfScore 0.27
-G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG47: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28] push bword ptr [ebp-0x2C] push gword ptr [ebp+0x0C] @@ -434,7 +434,7 @@ G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`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]] ; gcrRegs -[ecx edx esi edi] +[eax] ;; size=20 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG49: ; bbWeight=0.50, epilog, nogc, extend
+G_M36297_IG48: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] ...

+9 (+9.89%) : 1664.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)

@@ -7,7 +7,7 @@ ; ; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions> ; V01 arg1 [V01 ] ( 1, 1 ) ref -> [ebp-0x08] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 4) [ebp+0x08] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 4) [ebp+0x08] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
; V03 tmp0 [V03 ] ( 1, 1 ) ref -> [ebp-0x0C] do-not-enreg[] must-init "argument with side effect" ; ; Lcl frame size = 12 @@ -22,11 +22,13 @@ G_M26730_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov gword ptr [ebp-0x08], edx ;; size=17 bbWeight=1 PerfScore 4.75 G_M26730_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, byte ptr [ebp+0x08]
+ lea edx, [ebp+0x08] + mov ecx, 0xD1FFAB1E ; System.Nullable`1[ubyte] + call CORINFO_HELP_UNBOX_NULLABLE + ; gcrRegs +[eax]
test eax, eax jne SHORT G_M26730_IG04 mov eax, gword ptr [ebp-0x04]
- ; gcrRegs +[eax]
mov ecx, gword ptr [eax+0x04] ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x08] @@ -34,7 +36,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=25 bbWeight=1 PerfScore 12.25
+ ;; size=34 bbWeight=1 PerfScore 13.00
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp @@ -47,7 +49,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov gword ptr [ebp-0x0C], eax lea edx, [ebp+0x08] mov ecx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_BOX_NULLABLE
+ call CORINFO_HELP_UNBOX_NULLABLE
push eax mov ecx, gword ptr [ebp-0x0C] ; gcrRegs +[ecx] @@ -63,6 +65,6 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=6 bbWeight=1 PerfScore 2.75
-; Total bytes of code 91, prolog size 11, PerfScore 37.25, instruction count 32, allocated bytes for code 91 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 100, prolog size 11, PerfScore 38.00, instruction count 34, allocated bytes for code 100 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-26 (-81.25%) : 2129.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)

@@ -12,25 +12,14 @@ G_M7353_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M7353_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M7353_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M7353_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M7353_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M7353_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M7353_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M7353_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 432 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M7353_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
; ============================================================

-26 (-81.25%) : 1894.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -13,25 +13,14 @@ G_M50046_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M50046_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M50046_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M50046_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50046_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M50046_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M50046_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M50046_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 57 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M50046_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.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)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=c0343c81) for method Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================

-26 (-81.25%) : 1934.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)

@@ -13,25 +13,14 @@ G_M23230_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M23230_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M23230_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M23230_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M23230_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M23230_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M23230_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M23230_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 59 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M23230_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.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)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=cbe5a541) for method Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================

-8 (-0.86%) : 967.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 -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc1 [V06,T10] ( 3, 5 ) ref -> [ebp-0x50] class-hnd exact spill-single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V07 loc2 [V07,T52] ( 3, 1.50) ref -> [ebp-0x54] class-hnd spill-single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 2, 1 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]> ; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>> ; V11 loc6 [V11,T04] ( 3, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def <System.__Canon> @@ -77,9 +77,9 @@ ; V66 rat23 [V66,T33] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable" ; V67 rat24 [V67,T24] ( 3, 2.80) int -> ecx "spilling expr" ; V68 rat25 [V68,T34] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat26 [V69,T56] ( 3, 1 ) int -> ebx "runtime lookup" -; V70 rat27 [V70,T54] ( 3, 1.40) int -> ecx "spilling expr" -; V71 rat28 [V71,T55] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
+; V69 rat26 [V69,T55] ( 3, 1 ) int -> ebx "runtime lookup" +; V70 rat27 [V70,T53] ( 3, 1.40) int -> ecx "spilling expr" +; V71 rat28 [V71,T54] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 92 @@ -109,12 +109,12 @@ G_M36297_IG02: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= mov gword ptr [ebp-0x4C], eax ; GC ptr vars +{V00} test eax, eax
- je G_M36297_IG72
+ je G_M36297_IG71
mov eax, gword ptr [ebp-0x4C] test esi, esi
- je G_M36297_IG73
+ je G_M36297_IG72
test edi, edi
- je G_M36297_IG74
+ je G_M36297_IG73
mov ecx, dword ptr [ebx+0x20] mov ecx, dword ptr [ecx+0x10] test ecx, ecx @@ -129,7 +129,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRe ; GC ptr vars +{V00} mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcrRegs -[eax] mov ecx, eax mov eax, gword ptr [ebp-0x4C] @@ -146,7 +146,7 @@ G_M36297_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000000 call [System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte] ; gcrRegs -[eax ecx] test eax, eax
- je G_M36297_IG50
+ je G_M36297_IG49
;; size=23 bbWeight=1 PerfScore 7.00 G_M36297_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x24], 0 @@ -168,11 +168,11 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax] mov ebx, eax ; gcrRegs +[ebx] @@ -211,13 +211,13 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x4C] ; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax] mov gword ptr [ebp-0x54], eax ; GC ptr vars +{V07} @@ -243,7 +243,7 @@ G_M36297_IG20: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x40], eax mov eax, gword ptr [ebp-0x54] ; gcrRegs +[eax] @@ -274,7 +274,7 @@ G_M36297_IG26: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ebx, eax mov eax, gword ptr [ebp-0x54] ; gcrRegs +[eax] @@ -325,79 +325,79 @@ G_M36297_IG31: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 G_M36297_IG32: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax ;; size=14 bbWeight=0.18 PerfScore 0.32 G_M36297_IG33: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x4C] ; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; GC ptr vars -{V00 V08} + call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] mov gword ptr [ebp-0x58], eax
- test eax, eax - je G_M36297_IG50 - mov eax, gword ptr [ebp-0x58]
+ ; GC ptr vars +{V08}
mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 40
- jle SHORT G_M36297_IG37 - ;; size=31 bbWeight=0.50 PerfScore 5.62 -G_M36297_IG34: ; bbWeight=0.40, gcVars=0020000000000000 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V00 V08}
+ jle SHORT G_M36297_IG36 + ;; size=20 bbWeight=0.50 PerfScore 4.50 +G_M36297_IG34: ; bbWeight=0.40, gcVars=0100000000000000 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x58] + ; gcrRegs +[eax]
mov edx, dword ptr [ecx+0x28] test edx, edx je SHORT G_M36297_IG36
- ;; size=7 bbWeight=0.40 PerfScore 1.30
+ ;; size=10 bbWeight=0.40 PerfScore 1.70
G_M36297_IG35: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG38
+ jmp SHORT G_M36297_IG37
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG36: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - ;; size=0 bbWeight=0.20 PerfScore 0.00 -G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG36: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x30], eax mov eax, gword ptr [ebp-0x58] ; gcrRegs +[eax] mov edx, dword ptr [ebp-0x30] ;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG37: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 44
- jle SHORT G_M36297_IG42
+ jle SHORT G_M36297_IG41
;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M36297_IG39: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ecx+0x2C] test ecx, ecx
- je SHORT G_M36297_IG41
+ je SHORT G_M36297_IG40
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG40: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG39: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x34], ecx
- jmp SHORT G_M36297_IG44 - ;; size=5 bbWeight=0.32 PerfScore 0.96 -G_M36297_IG41: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x30], edx
jmp SHORT G_M36297_IG43
+ ;; size=5 bbWeight=0.32 PerfScore 0.96 +G_M36297_IG40: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + mov dword ptr [ebp-0x30], edx + jmp SHORT G_M36297_IG42
;; size=5 bbWeight=0.20 PerfScore 0.60
-G_M36297_IG42: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG41: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x30], edx ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M36297_IG43: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG42: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x34], eax mov eax, gword ptr [ebp-0x58] ; gcrRegs +[eax] mov edx, dword ptr [ebp-0x30] ;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG43: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
push edx lea ecx, [ebp-0x3C] mov edx, eax ; gcrRegs +[edx]
+ ; GC ptr vars -{V08}
call [System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]] ; gcrRegs -[eax edx] push dword ptr [ebp-0x38] @@ -407,22 +407,22 @@ G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe call [System.Span`1[System.__Canon]:op_Implicit(System.Span`1[System.__Canon]):System.ReadOnlySpan`1[System.__Canon]] mov ecx, dword ptr [ebx+0x20] cmp dword ptr [ecx+0x0C], 48
- jle SHORT G_M36297_IG47
+ jle SHORT G_M36297_IG46
;; size=39 bbWeight=0.50 PerfScore 8.62
-G_M36297_IG45: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG44: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x30] test eax, eax
- je SHORT G_M36297_IG47
+ je SHORT G_M36297_IG46
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG46: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M36297_IG48
+G_M36297_IG45: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M36297_IG47
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG46: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=12 bbWeight=0.18 PerfScore 0.27
-G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG47: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28] push bword ptr [ebp-0x2C] push gword ptr [ebp+0x0C] @@ -434,7 +434,7 @@ G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`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]] ; gcrRegs -[ecx edx esi edi] +[eax] ;; size=20 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG49: ; bbWeight=0.50, epilog, nogc, extend
+G_M36297_IG48: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] ...

+2 (+4.26%) : 566.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 -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String> -; V02 tmp0 [V02,T02] ( 3, 5 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <<unknown class>> -; V04 tmp2 [V04,T04] ( 4, 3.50) ref -> eax
+; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.String> +; V02 tmp0 [V02,T00] ( 4, 8 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> +; V04 tmp2 [V04,T03] ( 3, 2.50) ref -> eax
; ; Lcl frame size = 0 @@ -31,18 +31,19 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx]
- test eax, eax
+ mov eax, esi + test esi, esi
jne SHORT G_M51894_IG04
- ;; size=27 bbWeight=1 PerfScore 8.00 -G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov ecx, esi
+ ;; size=29 bbWeight=1 PerfScore 8.25 +G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax esi] + xor ecx, ecx
; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; <unknown method> call [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]]
- ; gcrRegs -[ecx esi] +[eax]
+ ; gcrRegs -[ecx] +[eax]
;; size=13 bbWeight=0.50 PerfScore 1.75 G_M51894_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi @@ -50,6 +51,6 @@ G_M51894_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 47, prolog size 4, PerfScore 14.00, instruction count 17, allocated bytes for code 47 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 14.25, instruction count 18, allocated bytes for code 49 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================

+2 (+4.26%) : 464.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 -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String> -; V02 tmp0 [V02,T02] ( 3, 5 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> -; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <<unknown class>> -; V04 tmp2 [V04,T04] ( 4, 3.50) ref -> eax
+; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.String> +; V02 tmp0 [V02,T00] ( 4, 8 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]> +;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> +; V04 tmp2 [V04,T03] ( 3, 2.50) ref -> eax
; ; Lcl frame size = 0 @@ -31,18 +31,19 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx]
- test eax, eax
+ mov eax, esi + test esi, esi
jne SHORT G_M47281_IG04
- ;; size=27 bbWeight=1 PerfScore 8.00 -G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov ecx, esi
+ ;; size=29 bbWeight=1 PerfScore 8.25 +G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax esi] + xor ecx, ecx
; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; <unknown method> call [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]]
- ; gcrRegs -[ecx esi] +[eax]
+ ; gcrRegs -[ecx] +[eax]
;; size=13 bbWeight=0.50 PerfScore 1.75 G_M47281_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi @@ -50,6 +51,6 @@ G_M47281_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 47, prolog size 4, PerfScore 14.00, instruction count 17, allocated bytes for code 47 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 14.25, instruction count 18, allocated bytes for code 49 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-26 (-81.25%) : 2625.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)

@@ -12,25 +12,14 @@ G_M41081_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M41081_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M41081_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M41081_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41081_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M41081_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 0x525 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M41081_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================

-26 (-81.25%) : 2981.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)

@@ -12,25 +12,14 @@ G_M34240_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M34240_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M34240_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M34240_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M34240_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M34240_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E - mov edx, 0x3CAB - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M34240_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================

-27 (-77.14%) : 2521.dasm - Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)

@@ -7,30 +7,19 @@ ; No matching PGO data ; Final local variable assignments ;
-;* V00 cse0 [V00,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 G_M8381_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M8381_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M8381_IG05 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M8381_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - xor ecx, ecx - mov dword ptr [D1FFAB1EH], ecx - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M8381_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M8381_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + xor eax, eax + mov dword ptr [D1FFAB1EH], eax + ;; size=7 bbWeight=1 PerfScore 1.25 +G_M8381_IG03: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M8381_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, 0xD1FFAB1E - mov edx, 0x5EE - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M8381_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 0, PerfScore 6.25, instruction count 9, allocated bytes for code 35 (MethodHash=dfccdf42) for method Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)
+; Total bytes of code 8, prolog size 0, PerfScore 2.25, instruction count 3, allocated bytes for code 8 (MethodHash=dfccdf42) for method Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)
; ============================================================

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

@@ -7,10 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> edi class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> esi class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> ebx class-hnd single-def <<unknown class>> -; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> ebx class-hnd single-def <<unknown class>> +; V03 tmp0 [V03,T02] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; ; Lcl frame size = 0 @@ -29,11 +29,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, edi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax] mov ebx, eax ; gcrRegs +[ebx]
- test ebx, ebx
+ test edi, edi
je SHORT G_M22240_IG05 ;; size=18 bbWeight=1 PerfScore 3.00 G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref @@ -58,15 +58,15 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi edi]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[esi]
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi] mov eax, dword ptr [eax+0x2C] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx esi] +[eax]
- cmp eax, edi
+ test eax, eax
sete al ; gcrRegs -[eax] movzx eax, al

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

@@ -7,10 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> esi this class-hnd single-def <System.Xml.XmlNode> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> eax class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> esi this class-hnd single-def <System.Xml.XmlNode> +; V01 loc0 [V01,T02] ( 2, 1.50) ref -> edx class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 tmp0 [V03,T02] ( 3, 3 ) ref -> eax single-def "argument with side effect"
+; V03 tmp0 [V03,T01] ( 3, 3 ) ref -> eax single-def "argument with side effect"
; ; Lcl frame size = 0 @@ -25,51 +25,51 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax - je SHORT G_M19732_IG05 - ;; size=16 bbWeight=1 PerfScore 2.75 -G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - mov ecx, eax - ; gcrRegs +[ecx] - mov edx, esi
+ mov edx, eax
; gcrRegs +[edx]
- mov eax, dword ptr [eax]
+ test esi, esi + je SHORT G_M19732_IG05 + ;; size=18 bbWeight=1 PerfScore 3.00 +G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
+ mov ecx, esi + ; gcrRegs +[ecx] + mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x54] call [eax+0x08]<unknown method> ; gcrRegs -[ecx edx esi] +[eax]
- ;; size=12 bbWeight=0.50 PerfScore 3.75
+ ;; size=10 bbWeight=0.50 PerfScore 3.62
G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] +[esi] - mov ecx, esi
+G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] + xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30] call [eax+0x18]<unknown method> ; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, esi
+ xor edx, edx
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] mov eax, dword ptr [eax+0x54] call [eax+0x08]<unknown method>
- ; gcrRegs -[ecx edx esi] +[eax] - ;; size=22 bbWeight=0.50 PerfScore 7.38
+ ; gcrRegs -[ecx edx] +[eax] + ;; size=25 bbWeight=0.50 PerfScore 7.38
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 62, prolog size 4, PerfScore 18.38, instruction count 29, allocated bytes for code 62 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 65, prolog size 4, PerfScore 18.50, instruction count 29, allocated bytes for code 65 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================

+10 (+14.29%) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)

@@ -10,18 +10,18 @@ ; ; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]> ; V01 loc0 [V01,T01] ( 4, 3 ) ref -> edi class-hnd single-def <double[]>
-; V02 loc1 [V02,T03] ( 4, 2 ) ref -> ebx class-hnd exact single-def <double[]>
+; V02 loc1 [V02,T02] ( 5, 2.50) ref -> ebx class-hnd single-def <double[]>
;* V03 tmp0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[double]> ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP ;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V07 tmp4 [V07,T04] ( 2, 1 ) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T05] ( 2, 1 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP -; V09 cse0 [V09,T02] ( 3, 2.50) int -> edx "CSE - aggressive"
+; V07 tmp4 [V07,T04] ( 3, 1.50) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T05] ( 3, 1.50) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP +; V09 cse0 [V09,T03] ( 3, 2.50) int -> edx "CSE - aggressive"
; ; Lcl frame size = 0
-G_M51402_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51402_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -53,16 +53,28 @@ G_M51402_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] mov ecx, 0xD1FFAB1E ; double[]
- call CORINFO_HELP_NEWARR_1_ALIGN8
+ call CORINFO_HELP_INITCLASS
; gcrRegs +[eax] mov ebx, eax ; gcrRegs +[ebx]
+ test ebx, ebx + jne SHORT G_M51402_IG06 + xor ecx, ecx + ; byrRegs +[ecx] + xor edx, edx + jmp SHORT G_M51402_IG07 + ;; size=22 bbWeight=0.50 PerfScore 2.62 +G_M51402_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + ; byrRegs -[ecx]
lea ecx, bword ptr [ebx+0x08] ; byrRegs +[ecx] mov edx, dword ptr [ebx+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.25 +G_M51402_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000002 {ecx}, byref
push edx push ecx mov ecx, esi @@ -71,11 +83,11 @@ G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e mov edx, edi ; gcrRegs +[edx] call [System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this]
- ; gcrRegs -[eax ecx edx esi edi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, ebx ; gcrRegs +[eax]
- ;; size=32 bbWeight=0.50 PerfScore 4.88 -G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.88 +G_M51402_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi @@ -83,6 +95,6 @@ G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 34, allocated bytes for code 70 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
+; Total bytes of code 80, prolog size 6, PerfScore 22.88, instruction count 39, allocated bytes for code 80 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 63 58 3 2 -2,805 +19
benchmarks.run_pgo.windows.x86.checked.mch 88 84 0 4 -2,055 +0
benchmarks.run_tiered.windows.x86.checked.mch 93 87 1 5 -2,938 +5
coreclr_tests.run.windows.x86.checked.mch 16 16 0 0 -666 +0
libraries.crossgen2.windows.x86.checked.mch 7 5 0 2 -27 +0
libraries.pmi.windows.x86.checked.mch 171 171 0 0 -5,465 +0
libraries_tests.run.windows.x86.Release.mch 50 49 1 0 -922 +9
librariestestsnotieredcompilation.run.windows.x86.Release.mch 72 70 2 0 -2,741 +4
realworld.run.windows.x86.checked.mch 75 72 2 1 -10,659 +13
635 612 9 14 -28,278 +50

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 1,148 1 1,147 1 (0.03%) 1,503 (49.33%)
benchmarks.run_pgo.windows.x86.checked.mch 4,525 3,429 1,096 2 (0.02%) 3,487 (41.47%)
benchmarks.run_tiered.windows.x86.checked.mch 4,292 2,975 1,317 2 (0.03%) 2,538 (35.12%)
coreclr_tests.run.windows.x86.checked.mch 252 3 249 0 (0.00%) 947 (59.37%)
libraries.crossgen2.windows.x86.checked.mch 93,212 11 93,201 20 (0.01%) 83,478 (47.14%)
libraries.pmi.windows.x86.checked.mch 5,698 0 5,698 0 (0.00%) 1,753 (22.34%)
libraries_tests.run.windows.x86.Release.mch 2,048 1,519 529 21 (0.41%) 2,630 (51.83%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 848 0 848 1 (0.04%) 1,424 (53.37%)
realworld.run.windows.x86.checked.mch 1,712 0 1,712 0 (0.00%) 3,016 (58.86%)
113,735 7,938 105,797 47 (0.02%) 100,776 (46.21%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 121260 (overridden on cmd)
Total bytes of diff: 118474 (overridden on cmd)
Total bytes of delta: -2786 (-2.30 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          10 : 974.dasm (14.29 % of base)
           5 : 2934.dasm (3.50 % of base)
           4 : 2088.dasm (0.92 % of base)

Top file improvements (bytes):
        -372 : 531.dasm (-78.32 % of base)
        -357 : 1534.dasm (-71.54 % of base)
        -139 : 9.dasm (-73.54 % of base)
         -88 : 1838.dasm (-27.24 % of base)
         -83 : 1772.dasm (-31.80 % of base)
         -83 : 1543.dasm (-31.80 % of base)
         -79 : 568.dasm (-27.82 % of base)
         -78 : 914.dasm (-59.09 % of base)
         -72 : 1696.dasm (-61.54 % of base)
         -67 : 2820.dasm (-23.93 % of base)
         -59 : 2851.dasm (-21.15 % of base)
         -59 : 1039.dasm (-31.72 % of base)
         -58 : 1600.dasm (-24.89 % of base)
         -54 : 236.dasm (-12.22 % of base)
         -35 : 1240.dasm (-20.47 % of base)
         -35 : 2058.dasm (-13.31 % of base)
         -33 : 1261.dasm (-2.72 % of base)
         -33 : 2497.dasm (-8.89 % of base)
         -33 : 1955.dasm (-10.93 % of base)
         -33 : 946.dasm (-4.80 % of base)

55 total files with Code Size differences (52 improved, 3 regressed), 2 unchanged.

Top method regressions (bytes):
          10 (14.29 % of base) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
           5 (3.50 % of base) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
           4 (0.92 % of base) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)

Top method improvements (bytes):
        -372 (-78.32 % of base) : 531.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)
        -357 (-71.54 % of base) : 1534.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
        -139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -88 (-27.24 % of base) : 1838.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
         -83 (-31.80 % of base) : 1543.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
         -83 (-31.80 % of base) : 1772.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
         -79 (-27.82 % of base) : 568.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)
         -78 (-59.09 % of base) : 914.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -72 (-61.54 % of base) : 1696.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.IOrderedCollection`1[int] (FullOpts)
         -67 (-23.93 % of base) : 2820.dasm - System.HashCode:Add(int):this (FullOpts)
         -59 (-31.72 % of base) : 1039.dasm - System.Linq.Enumerable:Concat[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
         -59 (-21.15 % of base) : 2851.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[MicroBenchmarks.Serializers.StructRecord]():System.Text.Json.Serialization.JsonConverter`1[MicroBenchmarks.Serializers.StructRecord]:this (FullOpts)
         -58 (-24.89 % of base) : 1600.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -54 (-12.22 % of base) : 236.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -35 (-13.31 % of base) : 2058.dasm - Microsoft.Extensions.Logging.EventSourceLoggerFactoryExtensions:AddEventSourceLogger(Microsoft.Extensions.Logging.ILoggingBuilder):Microsoft.Extensions.Logging.ILoggingBuilder (FullOpts)
         -35 (-20.47 % of base) : 1240.dasm - System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this (FullOpts)
         -33 (-10.93 % of base) : 1955.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:CallSiteBuilt(Microsoft.Extensions.DependencyInjection.ServiceProvider,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (FullOpts)
         -33 (-8.89 % of base) : 2497.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (FullOpts)
         -33 (-2.72 % of base) : 1261.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
         -33 (-4.80 % of base) : 946.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (FullOpts)

Top method regressions (percentages):
          10 (14.29 % of base) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
           5 (3.50 % of base) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
           4 (0.92 % of base) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)

Top method improvements (percentages):
        -372 (-78.32 % of base) : 531.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)
        -139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -26 (-72.22 % of base) : 2379.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
        -357 (-71.54 % of base) : 1534.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
         -30 (-66.67 % of base) : 1063.dasm - System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
         -30 (-65.22 % of base) : 1595.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -26 (-63.41 % of base) : 1174.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
         -72 (-61.54 % of base) : 1696.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.IOrderedCollection`1[int] (FullOpts)
         -78 (-59.09 % of base) : 914.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -30 (-51.72 % of base) : 2024.dasm - Microsoft.Extensions.Logging.ScopesOverheadBenchmark:NotFiltered():this (FullOpts)
         -30 (-51.72 % of base) : 1654.dasm - System.Numerics.Tests.Perf_Vector2:AddFunctionBenchmark():System.Numerics.Vector2:this (FullOpts)
         -26 (-50.00 % of base) : 2358.dasm - System.Reflection.Attributes:IsDefinedMethodOverrideMissInherit():ubyte:this (FullOpts)
         -26 (-50.00 % of base) : 1163.dasm - System.Threading.Tasks.TaskReplicator:GenerateCooperativeMultitaskingTaskTimeout():int (FullOpts)
         -32 (-47.06 % of base) : 1021.dasm - System.AppDomain:OnProcessExit() (FullOpts)
         -26 (-44.83 % of base) : 798.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -30 (-40.00 % of base) : 1731.dasm - System.Numerics.Tests.Perf_Vector3:NegateBenchmark():System.Numerics.Vector3:this (FullOpts)
         -16 (-40.00 % of base) : 846.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
         -28 (-39.44 % of base) : 1132.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
         -26 (-36.62 % of base) : 1812.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<>c:<Setup>b__11_9(int):System.AlignedMemory:this (FullOpts)
         -28 (-35.00 % of base) : 2149.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 446652 (overridden on cmd)
Total bytes of diff: 444597 (overridden on cmd)
Total bytes of delta: -2055 (-0.46 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -225 : 8124.dasm (-14.76 % of base)
        -128 : 8544.dasm (-17.61 % of base)
         -79 : 3657.dasm (-71.82 % of base)
         -74 : 2975.dasm (-56.06 % of base)
         -74 : 2974.dasm (-56.06 % of base)
         -69 : 5526.dasm (-23.63 % of base)
         -60 : 5128.dasm (-43.48 % of base)
         -45 : 17.dasm (-36.59 % of base)
         -42 : 2158.dasm (-56.76 % of base)
         -40 : 5833.dasm (-46.51 % of base)
         -33 : 2990.dasm (-4.55 % of base)
         -30 : 3667.dasm (-6.80 % of base)
         -30 : 3182.dasm (-31.91 % of base)
         -28 : 4138.dasm (-39.44 % of base)
         -27 : 2582.dasm (-50.94 % of base)
         -27 : 2647.dasm (-49.09 % of base)
         -25 : 4158.dasm (-34.25 % of base)
         -25 : 878.dasm (-12.14 % of base)
         -25 : 2576.dasm (-22.32 % of base)
         -25 : 5103.dasm (-20.49 % of base)

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

Top method improvements (bytes):
        -225 (-14.76 % of base) : 8124.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
        -128 (-17.61 % of base) : 8544.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
         -79 (-71.82 % of base) : 3657.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
         -74 (-56.06 % of base) : 2975.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -74 (-56.06 % of base) : 2974.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -69 (-23.63 % of base) : 5526.dasm - System.Net.Primitives.Tests.CredentialCacheTests:CreateCredentialCache(int,int):System.Net.CredentialCache (Tier0-FullOpts)
         -60 (-43.48 % of base) : 5128.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -45 (-36.59 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -42 (-56.76 % of base) : 2158.dasm - System.Xml.XmlUTF8NodeWriter:.ctor():this (Tier0)
         -40 (-46.51 % of base) : 5833.dasm - System.Numerics.Tests.Perf_Vector2:AddFunctionBenchmark():System.Numerics.Vector2:this (Tier0)
         -33 (-4.55 % of base) : 2990.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (Tier0-FullOpts)
         -30 (-6.80 % of base) : 3667.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConditionalExpression(System.Linq.Expressions.Expression,int):this (Tier0)
         -30 (-31.91 % of base) : 3182.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -28 (-39.44 % of base) : 4138.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (Tier0-FullOpts)
         -27 (-50.94 % of base) : 2582.dasm - Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions:BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.ServiceProvider (Tier0)
         -27 (-49.09 % of base) : 2647.dasm - System.String:ToUpperInvariant():System.String:this (Tier0)
         -25 (-22.32 % of base) : 2576.dasm - Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions:Configure[System.__Canon](Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action`1[System.__Canon]):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier0)
         -25 (-12.14 % of base) : 878.dasm - System.Reflection.PseudoCustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType):ubyte (Tier0)
         -25 (-20.49 % of base) : 5103.dasm - System.Text.Json.JsonSerializer:GetTypeInfo(System.Text.Json.JsonSerializerOptions,System.Type):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier0)
         -25 (-34.25 % of base) : 4158.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItemInternal(System.Object,ubyte) (Tier0)

Top method improvements (percentages):
         -79 (-71.82 % of base) : 3657.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
         -15 (-60.00 % of base) : 3214.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -15 (-60.00 % of base) : 8058.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (Tier0)
         -15 (-60.00 % of base) : 3534.dasm - System.Collections.Generic.ReferenceEqualityComparer:get_Instance():System.Collections.Generic.ReferenceEqualityComparer (Tier0)
         -15 (-60.00 % of base) : 4367.dasm - System.Diagnostics.DistributedContextPropagator:get_Current():System.Diagnostics.DistributedContextPropagator (Tier0)
         -15 (-60.00 % of base) : 4370.dasm - System.Diagnostics.LegacyPropagator:get_Instance():System.Diagnostics.DistributedContextPropagator (Tier0)
         -15 (-60.00 % of base) : 7189.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
         -15 (-60.00 % of base) : 4332.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
         -15 (-60.00 % of base) : 2242.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
         -15 (-60.00 % of base) : 6780.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -15 (-60.00 % of base) : 7217.dasm - System.Security.Cryptography.RandomNumberGenerator:Create():System.Security.Cryptography.RandomNumberGenerator (Tier0)
         -15 (-60.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -15 (-60.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
         -15 (-60.00 % of base) : 449.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
         -15 (-60.00 % of base) : 446.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
         -15 (-60.00 % of base) : 2725.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
         -15 (-60.00 % of base) : 94.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
         -15 (-60.00 % of base) : 5058.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
         -15 (-60.00 % of base) : 3218.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)
         -15 (-60.00 % of base) : 454.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 340626 (overridden on cmd)
Total bytes of diff: 337693 (overridden on cmd)
Total bytes of delta: -2933 (-0.86 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           5 : 3963.dasm (3.50 % of base)

Top file improvements (bytes):
        -372 : 1741.dasm (-78.32 % of base)
        -324 : 6779.dasm (-69.53 % of base)
        -193 : 3180.dasm (-74.81 % of base)
        -128 : 4319.dasm (-17.61 % of base)
         -88 : 6794.dasm (-27.24 % of base)
         -80 : 4262.dasm (-11.35 % of base)
         -79 : 1844.dasm (-27.82 % of base)
         -74 : 2289.dasm (-56.06 % of base)
         -74 : 2290.dasm (-56.06 % of base)
         -60 : 3359.dasm (-43.48 % of base)
         -45 : 17.dasm (-36.59 % of base)
         -33 : 2305.dasm (-4.80 % of base)
         -33 : 2967.dasm (-2.72 % of base)
         -33 : 6033.dasm (-10.93 % of base)
         -33 : 6514.dasm (-9.40 % of base)
         -30 : 2627.dasm (-41.67 % of base)
         -30 : 3238.dasm (-31.91 % of base)
         -30 : 4937.dasm (-17.54 % of base)
         -30 : 6142.dasm (-31.25 % of base)
         -28 : 2833.dasm (-47.46 % of base)

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

Top method regressions (bytes):
           5 (3.50 % of base) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -372 (-78.32 % of base) : 1741.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)
        -324 (-69.53 % of base) : 6779.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
        -193 (-74.81 % of base) : 3180.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -128 (-17.61 % of base) : 4319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
         -88 (-27.24 % of base) : 6794.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -80 (-11.35 % of base) : 4262.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
         -79 (-27.82 % of base) : 1844.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)
         -74 (-56.06 % of base) : 2290.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
         -74 (-56.06 % of base) : 2289.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
         -60 (-43.48 % of base) : 3359.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
         -45 (-36.59 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
         -33 (-10.93 % of base) : 6033.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:CallSiteBuilt(Microsoft.Extensions.DependencyInjection.ServiceProvider,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier0-FullOpts)
         -33 (-9.40 % of base) : 6514.dasm - System.MemoryExtensions:Equals(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):ubyte (Tier1)
         -33 (-2.72 % of base) : 2967.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
         -33 (-4.80 % of base) : 2305.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (Tier0-FullOpts)
         -30 (-31.25 % of base) : 6142.dasm - Microsoft.Extensions.Logging.ScopesOverheadBenchmark:NotFiltered():this (Tier0)
         -30 (-17.54 % of base) : 4937.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineConstructorNoLock(int,int,System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.ConstructorBuilder:this (Tier0)
         -30 (-41.67 % of base) : 2627.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (Tier0)
         -30 (-31.91 % of base) : 3238.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
         -28 (-47.46 % of base) : 2833.dasm - System.Runtime.CompilerServices.AsyncMethodBuilderCore:get_TrackAsyncMethodCompletion():ubyte (Tier0)

Top method regressions (percentages):
           5 (3.50 % of base) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -372 (-78.32 % of base) : 1741.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)
        -193 (-74.81 % of base) : 3180.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
        -324 (-69.53 % of base) : 6779.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
         -15 (-60.00 % of base) : 3270.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
         -15 (-60.00 % of base) : 6035.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:get_Instance():Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver (Tier0)
         -15 (-60.00 % of base) : 6838.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
         -15 (-60.00 % of base) : 6366.dasm - System.IO.Pipelines.PipeScheduler:get_ThreadPool():System.IO.Pipelines.PipeScheduler (Tier0)
         -15 (-60.00 % of base) : 3880.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
         -15 (-60.00 % of base) : 6499.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
         -15 (-60.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
         -15 (-60.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
         -15 (-60.00 % of base) : 415.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
         -15 (-60.00 % of base) : 6951.dasm - System.Text.DecoderFallback:get_ReplacementFallback():System.Text.DecoderFallback (Tier0)
         -15 (-60.00 % of base) : 412.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
         -15 (-60.00 % of base) : 6948.dasm - System.Text.EncoderFallback:get_ReplacementFallback():System.Text.EncoderFallback (Tier0)
         -15 (-60.00 % of base) : 1992.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
         -15 (-60.00 % of base) : 6943.dasm - System.Text.Encoding:get_Default():System.Text.Encoding (Tier0)
         -15 (-60.00 % of base) : 80.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
         -15 (-60.00 % of base) : 3297.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
         -15 (-60.00 % of base) : 3274.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 23513 (overridden on cmd)
Total bytes of diff: 22847 (overridden on cmd)
Total bytes of delta: -666 (-2.83 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -87 : 41.dasm (-77.68 % of base)
         -87 : 753.dasm (-77.68 % of base)
         -58 : 12.dasm (-24.89 % of base)
         -58 : 683.dasm (-24.89 % of base)
         -55 : 687.dasm (-31.79 % of base)
         -55 : 16.dasm (-31.79 % of base)
         -33 : 550.dasm (-10.78 % of base)
         -30 : 678.dasm (-65.22 % of base)
         -30 : 7.dasm (-65.22 % of base)
         -30 : 31.dasm (-49.18 % of base)
         -26 : 418.dasm (-78.79 % of base)
         -26 : 556.dasm (-44.83 % of base)
         -26 : 500.dasm (-49.06 % of base)
         -26 : 473.dasm (-41.27 % of base)
         -23 : 326.dasm (-8.04 % of base)
         -16 : 573.dasm (-40.00 % of base)

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

Top method improvements (bytes):
         -87 (-77.68 % of base) : 41.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -87 (-77.68 % of base) : 753.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -58 (-24.89 % of base) : 12.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -58 (-24.89 % of base) : 683.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -55 (-31.79 % of base) : 687.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -55 (-31.79 % of base) : 16.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -33 (-10.78 % of base) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -30 (-65.22 % of base) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -30 (-65.22 % of base) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -30 (-49.18 % of base) : 31.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -26 (-78.79 % of base) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -26 (-44.83 % of base) : 556.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -26 (-41.27 % of base) : 473.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -26 (-49.06 % of base) : 500.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -23 (-8.04 % of base) : 326.dasm - Program:TestEntryPoint():int (FullOpts)
         -16 (-40.00 % of base) : 573.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)

Top method improvements (percentages):
         -26 (-78.79 % of base) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
         -87 (-77.68 % of base) : 41.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -87 (-77.68 % of base) : 753.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -30 (-65.22 % of base) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -30 (-65.22 % of base) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -30 (-49.18 % of base) : 31.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
         -26 (-49.06 % of base) : 500.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
         -26 (-44.83 % of base) : 556.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
         -26 (-41.27 % of base) : 473.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
         -16 (-40.00 % of base) : 573.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
         -55 (-31.79 % of base) : 687.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -55 (-31.79 % of base) : 16.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -58 (-24.89 % of base) : 12.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -58 (-24.89 % of base) : 683.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -33 (-10.78 % of base) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
         -23 (-8.04 % of base) : 326.dasm - Program:TestEntryPoint():int (FullOpts)

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


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 5347103 (overridden on cmd)
Total bytes of diff: 5347076 (overridden on cmd)
Total bytes of delta: -27 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -11 : 6551.dasm (-2.75 % of base)
         -10 : 20736.dasm (-35.71 % of base)
          -4 : 134540.dasm (-3.67 % of base)
          -1 : 137495.dasm (-1.32 % of base)
          -1 : 134544.dasm (-2.44 % of base)

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

Top method improvements (bytes):
         -11 (-2.75 % of base) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
         -10 (-35.71 % of base) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
          -4 (-3.67 % of base) : 134540.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
          -1 (-1.32 % of base) : 137495.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
          -1 (-2.44 % of base) : 134544.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)

Top method improvements (percentages):
         -10 (-35.71 % of base) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
          -4 (-3.67 % of base) : 134540.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
         -11 (-2.75 % of base) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
          -1 (-2.44 % of base) : 134544.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
          -1 (-1.32 % of base) : 137495.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.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 792946 (overridden on cmd)
Total bytes of diff: 787481 (overridden on cmd)
Total bytes of delta: -5465 (-0.69 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -357 : 5929.dasm (-71.54 % of base)
        -203 : 5707.dasm (-40.52 % of base)
        -108 : 1635.dasm (-29.75 % of base)
        -105 : 1652.dasm (-28.69 % of base)
         -99 : 1668.dasm (-24.44 % of base)
         -88 : 5901.dasm (-40.55 % of base)
         -83 : 1662.dasm (-19.90 % of base)
         -83 : 5904.dasm (-36.40 % of base)
         -79 : 5888.dasm (-57.25 % of base)
         -79 : 5889.dasm (-54.86 % of base)
         -64 : 5694.dasm (-25.00 % of base)
         -60 : 5850.dasm (-13.57 % of base)
         -58 : 17.dasm (-24.89 % of base)
         -55 : 21.dasm (-31.79 % of base)
         -48 : 5665.dasm (-21.62 % of base)
         -45 : 1633.dasm (-34.88 % of base)
         -44 : 2432.dasm (-10.28 % of base)
         -44 : 1726.dasm (-10.23 % of base)
         -44 : 1725.dasm (-10.28 % of base)
         -44 : 2433.dasm (-10.23 % of base)

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

Top method improvements (bytes):
        -357 (-71.54 % of base) : 5929.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
        -203 (-40.52 % of base) : 5707.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
        -108 (-29.75 % of base) : 1635.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
        -105 (-28.69 % of base) : 1652.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
         -99 (-24.44 % of base) : 1668.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
         -88 (-40.55 % of base) : 5901.dasm - System.Threading.Tasks.ValueTask`1[double]:get_Result():double:this (FullOpts)
         -83 (-19.90 % of base) : 1662.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
         -83 (-36.40 % of base) : 5904.dasm - System.Threading.Tasks.ValueTask`1[System.Numerics.Vector`1[float]]:get_Result():System.Numerics.Vector`1[float]:this (FullOpts)
         -79 (-54.86 % of base) : 5889.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
         -79 (-57.25 % of base) : 5888.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)
         -64 (-25.00 % of base) : 5694.dasm - System.Threading.Tasks.UnwrapPromise`1[ubyte]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
         -60 (-13.57 % of base) : 5850.dasm - System.Threading.Tasks.TaskFactory+CompleteOnCountdownPromise`1[ubyte]:Invoke(System.Threading.Tasks.Task):this (FullOpts)
         -58 (-24.89 % of base) : 17.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -55 (-31.79 % of base) : 21.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -48 (-21.62 % of base) : 5665.dasm - System.Threading.Tasks.Task:Run[ubyte](System.Func`1[System.Threading.Tasks.Task`1[ubyte]],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte] (FullOpts)
         -45 (-34.88 % of base) : 1633.dasm - System.Lazy`1[ubyte]:PublicationOnlyViaFactory(System.LazyHelper):this (FullOpts)
         -44 (-10.28 % of base) : 1725.dasm - System.Memory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
         -44 (-10.23 % of base) : 1726.dasm - System.Memory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)
         -44 (-10.28 % of base) : 2432.dasm - System.ReadOnlyMemory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
         -44 (-10.23 % of base) : 2433.dasm - System.ReadOnlyMemory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)

Top method improvements (percentages):
         -26 (-81.25 % of base) : 5758.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
         -26 (-81.25 % of base) : 5269.dasm - System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
         -26 (-74.29 % of base) : 5275.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
        -357 (-71.54 % of base) : 5929.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
         -36 (-70.59 % of base) : 5267.dasm - System.Threading.WindowsThreadPool:GetMaxThreads(byref,byref) (FullOpts)
         -30 (-65.22 % of base) : 12.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
         -34 (-58.62 % of base) : 3978.dasm - System.Numerics.BitOperations+Crc32Fallback:Crc32C(uint,ubyte):uint (FullOpts)
         -26 (-57.78 % of base) : 5052.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
         -30 (-57.69 % of base) : 4973.dasm - System.Threading.ThreadPool:BindHandlePortableCore(int):ubyte (FullOpts)
         -79 (-57.25 % of base) : 5888.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)
         -30 (-56.60 % of base) : 5760.dasm - System.Threading.Tasks.TaskFactory:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
         -30 (-56.60 % of base) : 5432.dasm - System.Threading.Tasks.TaskFactory`1[System.__Canon]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
         -30 (-56.60 % of base) : 5483.dasm - System.Threading.Tasks.TaskFactory`1[ubyte]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
         -26 (-55.32 % of base) : 5270.dasm - System.Threading.WindowsThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -79 (-54.86 % of base) : 5889.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
         -26 (-53.06 % of base) : 6193.dasm - System.Runtime.MemoryFailPoint:set_LastTimeCheckingAddressSpace(long) (FullOpts)
         -26 (-53.06 % of base) : 6088.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstUtf16ExtendedGraphemeCluster(System.ReadOnlySpan`1[ushort]):int (FullOpts)
         -42 (-49.41 % of base) : 4285.dasm - System.Numerics.Vector:StoreAligned[ubyte](System.Numerics.Vector`1[ubyte],uint) (FullOpts)
         -42 (-48.84 % of base) : 4217.dasm - System.Numerics.Vector:LoadAligned[ubyte](uint):System.Numerics.Vector`1[ubyte] (FullOpts)
         -26 (-48.15 % of base) : 6192.dasm - System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 194262 (overridden on cmd)
Total bytes of diff: 193349 (overridden on cmd)
Total bytes of delta: -913 (-0.47 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           9 : 1664.dasm (9.89 % of base)

Top file improvements (bytes):
         -39 : 4438.dasm (-25.66 % of base)
         -39 : 920.dasm (-25.66 % of base)
         -38 : 3016.dasm (-19.69 % of base)
         -33 : 3066.dasm (-7.88 % of base)
         -30 : 27.dasm (-23.08 % of base)
         -30 : 277.dasm (-8.62 % of base)
         -30 : 3473.dasm (-23.08 % of base)
         -30 : 2177.dasm (-55.56 % of base)
         -30 : 3729.dasm (-8.62 % of base)
         -30 : 4403.dasm (-10.83 % of base)
         -30 : 1659.dasm (-12.00 % of base)
         -25 : 3130.dasm (-13.89 % of base)
         -23 : 1774.dasm (-17.97 % of base)
         -16 : 2832.dasm (-23.53 % of base)
         -16 : 2848.dasm (-23.53 % of base)
         -15 : 1896.dasm (-14.02 % of base)
         -15 : 2258.dasm (-37.50 % of base)
         -15 : 25.dasm (-60.00 % of base)
         -15 : 284.dasm (-8.33 % of base)
         -15 : 2985.dasm (-48.39 % of base)

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

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

Top method improvements (bytes):
         -39 (-25.66 % of base) : 4438.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -39 (-25.66 % of base) : 920.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
         -38 (-19.69 % of base) : 3016.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
         -33 (-7.88 % of base) : 3066.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 (Tier0-FullOpts)
         -30 (-23.08 % of base) : 27.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -30 (-23.08 % of base) : 3473.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -30 (-12.00 % of base) : 1659.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
         -30 (-8.62 % of base) : 277.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -30 (-8.62 % of base) : 3729.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
         -30 (-10.83 % of base) : 4403.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
         -30 (-55.56 % of base) : 2177.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -25 (-13.89 % of base) : 3130.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (Tier0-FullOpts)
         -23 (-17.97 % of base) : 1774.dasm - Xunit.Sdk.TestFramework:.ctor(Xunit.Abstractions.IMessageSink):this (Tier0)
         -16 (-23.53 % of base) : 2832.dasm - System.Runtime.Loader.AssemblyLoadContext:Resolve(int,System.Reflection.AssemblyName):System.Reflection.Assembly (Instrumented Tier1)
         -16 (-23.53 % of base) : 2848.dasm - System.Runtime.Loader.AssemblyLoadContext:ResolveUsingResolvingEvent(int,System.Reflection.AssemblyName):System.Reflection.Assembly (Instrumented Tier1)
         -15 (-44.12 % of base) : 3692.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -15 (-44.12 % of base) : 246.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -15 (-60.00 % of base) : 244.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -15 (-60.00 % of base) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -15 (-3.49 % of base) : 108.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)

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

Top method improvements (percentages):
         -15 (-60.00 % of base) : 244.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -15 (-60.00 % of base) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
         -15 (-60.00 % of base) : 3468.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -15 (-60.00 % of base) : 22.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
         -15 (-60.00 % of base) : 25.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -15 (-60.00 % of base) : 3471.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
         -15 (-60.00 % of base) : 3488.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -15 (-60.00 % of base) : 43.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
         -30 (-55.56 % of base) : 2177.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
         -15 (-48.39 % of base) : 2162.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -15 (-48.39 % of base) : 1869.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -15 (-48.39 % of base) : 2985.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -15 (-48.39 % of base) : 2170.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -15 (-48.39 % of base) : 3035.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
         -15 (-44.12 % of base) : 3692.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -15 (-44.12 % of base) : 246.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
         -15 (-39.47 % of base) : 2282.dasm - Xunit.Sdk.ExecutionContextHelper:get_IsSupported():ubyte (Tier0)
         -15 (-37.50 % of base) : 2258.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (Tier0)
         -15 (-29.41 % of base) : 370.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
         -15 (-29.41 % of base) : 3827.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 51784 (overridden on cmd)
Total bytes of diff: 49047 (overridden on cmd)
Total bytes of delta: -2737 (-5.29 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           2 : 464.dasm (4.26 % of base)
           2 : 566.dasm (4.26 % of base)

Top file improvements (bytes):
        -372 : 65.dasm (-78.32 % of base)
        -173 : 2379.dasm (-68.11 % of base)
        -108 : 121.dasm (-29.83 % of base)
         -87 : 1151.dasm (-77.68 % of base)
         -79 : 451.dasm (-27.82 % of base)
         -78 : 1115.dasm (-69.03 % of base)
         -58 : 515.dasm (-24.89 % of base)
         -56 : 139.dasm (-17.23 % of base)
         -55 : 519.dasm (-31.79 % of base)
         -54 : 9.dasm (-12.22 % of base)
         -53 : 67.dasm (-45.69 % of base)
         -41 : 939.dasm (-35.04 % of base)
         -36 : 1356.dasm (-61.02 % of base)
         -36 : 1501.dasm (-61.02 % of base)
         -36 : 1538.dasm (-61.02 % of base)
         -33 : 1947.dasm (-7.88 % of base)
         -31 : 1421.dasm (-58.49 % of base)
         -30 : 1480.dasm (-65.22 % of base)
         -30 : 1546.dasm (-65.22 % of base)
         -30 : 1674.dasm (-65.22 % of base)

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

Top method regressions (bytes):
           2 (4.26 % of base) : 566.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
           2 (4.26 % of base) : 464.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

Top method improvements (bytes):
        -372 (-78.32 % of base) : 65.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)
        -173 (-68.11 % of base) : 2379.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)
        -108 (-29.83 % of base) : 121.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
         -87 (-77.68 % of base) : 1151.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -79 (-27.82 % of base) : 451.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)
         -78 (-69.03 % of base) : 1115.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -58 (-24.89 % of base) : 515.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
         -56 (-17.23 % of base) : 139.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
         -55 (-31.79 % of base) : 519.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
         -54 (-12.22 % 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)
         -53 (-45.69 % of base) : 67.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -41 (-35.04 % of base) : 939.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
         -36 (-61.02 % of base) : 1356.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -36 (-61.02 % of base) : 1501.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -36 (-61.02 % of base) : 1538.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
         -33 (-7.88 % of base) : 1947.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)
         -31 (-58.49 % of base) : 1421.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
         -30 (-65.22 % of base) : 1546.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1217.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1239.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)

Top method regressions (percentages):
           2 (4.26 % of base) : 566.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
           2 (4.26 % of base) : 464.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)

Top method improvements (percentages):
         -26 (-81.25 % of base) : 2129.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
         -26 (-81.25 % of base) : 735.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -26 (-81.25 % of base) : 484.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -26 (-81.25 % of base) : 1894.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -26 (-81.25 % of base) : 743.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
         -26 (-81.25 % of base) : 1934.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
        -372 (-78.32 % of base) : 65.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)
         -87 (-77.68 % of base) : 1151.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
         -78 (-69.03 % of base) : 1115.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
         -26 (-68.42 % of base) : 793.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (FullOpts)
        -173 (-68.11 % of base) : 2379.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)
         -30 (-65.22 % of base) : 1546.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1217.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1239.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1129.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1387.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1637.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1447.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1643.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
         -30 (-65.22 % of base) : 1734.dasm - <SharedTypes_ComInterfaces_IJaggedIntArray>F9E7186D7D1C2305121E3CFFB9B96C704885894333BE2F6EA823FE55F12BCB2F5__InterfaceInformation:get_Iid():System.Guid (FullOpts)


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 374068 (overridden on cmd)
Total bytes of diff: 363422 (overridden on cmd)
Total bytes of delta: -10646 (-2.85 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          10 : 953.dasm (14.29 % of base)
           3 : 2351.dasm (4.84 % of base)

Top file improvements (bytes):
       -7277 : 5256.dasm (-84.01 % of base)
        -372 : 532.dasm (-78.32 % of base)
        -264 : 5190.dasm (-77.42 % of base)
        -175 : 4004.dasm (-48.75 % of base)
        -139 : 9.dasm (-73.54 % of base)
        -139 : 1595.dasm (-73.54 % of base)
         -88 : 3028.dasm (-8.02 % of base)
         -81 : 5102.dasm (-40.91 % of base)
         -79 : 569.dasm (-27.82 % of base)
         -79 : 5490.dasm (-27.82 % of base)
         -78 : 893.dasm (-59.09 % of base)
         -71 : 2942.dasm (-17.44 % of base)
         -70 : 3886.dasm (-18.04 % of base)
         -65 : 2932.dasm (-46.43 % of base)
         -63 : 3042.dasm (-9.63 % of base)
         -63 : 5118.dasm (-91.30 % of base)
         -54 : 1822.dasm (-12.22 % of base)
         -54 : 237.dasm (-12.22 % of base)
         -52 : 3048.dasm (-49.06 % of base)
         -52 : 3842.dasm (-61.18 % of base)

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

Top method regressions (bytes):
          10 (14.29 % of base) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
           3 (4.84 % of base) : 2351.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

Top method improvements (bytes):
       -7277 (-84.01 % of base) : 5256.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        -372 (-78.32 % of base) : 532.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)
        -264 (-77.42 % of base) : 5190.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)
        -175 (-48.75 % of base) : 4004.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
        -139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
        -139 (-73.54 % of base) : 1595.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
         -88 (-8.02 % of base) : 3028.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
         -81 (-40.91 % of base) : 5102.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
         -79 (-27.82 % of base) : 569.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)
         -79 (-27.82 % of base) : 5490.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)
         -78 (-59.09 % of base) : 893.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
         -71 (-17.44 % of base) : 2942.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
         -70 (-18.04 % of base) : 3886.dasm - Microsoft.Build.Shared.FrameworkLocationHelper:GenerateProgramFilesReferenceAssemblyRoot():System.String (FullOpts)
         -65 (-46.43 % of base) : 2932.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
         -63 (-91.30 % of base) : 5118.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
         -63 (-9.63 % of base) : 3042.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
         -54 (-12.22 % of base) : 1822.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -54 (-12.22 % of base) : 237.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -52 (-49.06 % of base) : 3048.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
         -52 (-61.18 % of base) : 3842.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)

Top method regressions (percentages):
          10 (14.29 % of base) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
           3 (4.84 % of base) : 2351.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)

Top method improvements (percentages):
         -63 (-91.30 % of base) : 5118.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
       -7277 (-84.01 % of base) : 5256.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
         -26 (-81.25 % of base) : 2981.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
         -26 (-81.25 % of base) : 2625.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
        -372 (-78.32 % of base) : 532.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)
        -264 (-77.42 % of base) : 5190.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)
         -27 (-77.14 % of base) : 3049.dasm - FSComp.SR:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 1912.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 3251.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 3420.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2458.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2468.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2875.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2969.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 3356.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 4005.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 3132.dasm - FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2933.dasm - FSharp.Compiler.Text.PosImpl:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2892.dasm - Internal.Utilities.Library.LazyWithContextFailure:.cctor() (FullOpts)
         -27 (-77.14 % of base) : 2521.dasm - Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)