Assembly Diffs

linux arm

Diffs are based on 2,257,223 contexts (832,052 MinOpts, 1,425,171 FullOpts).

MISSED contexts: base: 73,583 (3.16%), diff: 73,599 (3.16%)

Overall (+122,712 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 65,676,478 +36,494
coreclr_tests.run.linux.arm.checked.mch 321,682,372 +4,784
libraries.pmi.linux.arm.checked.mch 50,272,220 +36
libraries_tests.run.linux.arm.Release.mch 239,445,652 +79,630
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,257,664 +1,768

FullOpts (+122,712 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 53,624,530 +36,494
coreclr_tests.run.linux.arm.checked.mch 109,216,788 +4,784
libraries.pmi.linux.arm.checked.mch 50,165,996 +36
libraries_tests.run.linux.arm.Release.mch 117,579,462 +79,630
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,227,820 +1,768

Example diffs

benchmarks.run_pgo.linux.arm.checked.mch

-18 (-9.89%) : 70430.dasm - System.Text.RegularExpressions.Symbolic.MatchingState1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver1[ulong],ubyte):ubyte:this (Tier1)

@@ -9,25 +9,25 @@ ; 1 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
; V01 arg1 [V01,T03] ( 4, 2.25) ref -> r1 class-hnd single-def <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V02 arg2 [V02,T01] ( 3, 3 ) ubyte -> r2 single-def
-; V03 loc0 [V03,T07] ( 11, 2 ) ubyte -> r6
+; V03 loc0 [V03,T06] ( 11, 2 ) ubyte -> r6
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V05 tmp1 [V05,T08] ( 2, 0.50) ubyte -> r0 "Inline return value spill temp"
; V06 tmp2 [V06,T02] ( 3, 4.50) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V07 tmp3 [V07,T09] ( 3, 1.25) int -> r7 "guarded devirt return temp"
+; V07 tmp3 [V07,T09] ( 3, 0.50) int -> r7 "guarded devirt return temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "guarded devirt arg temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V10 tmp6 [V10,T04] ( 4, 4 ) ref -> lr class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V10 tmp6 [V10,T04] ( 2, 4 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V12 tmp8 [V12,T12] ( 2, 0 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V15 cse0 [V15,T05] ( 7, 3 ) ref -> r8 "CSE - aggressive"
+; V15 cse0 [V15,T05] ( 5, 3 ) ref -> r8 "CSE - aggressive"
; V16 rat0 [V16,T10] ( 3, 0.50) int -> r2 "field V08.lo (fldOffset=0x0)" P-INDEP ; V17 rat1 [V17,T11] ( 3, 0.50) int -> r3 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T08] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V18 rat2 [V18,T07] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 4 @@ -42,16 +42,42 @@ G_M42217_IG02: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b movs r6, 0 uxtb r0, r2 cmp r0, 0
- bne SHORT G_M42217_IG11
+ bne SHORT G_M42217_IG12
;; size=8 bbWeight=1 PerfScore 4.00 G_M42217_IG03: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x04] ; gcrRegs +[r0] ldr r2, [r0+0x1C] cmp r2, 1
- bne SHORT G_M42217_IG07
+ beq SHORT G_M42217_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M42217_IG04: ; bbWeight=0.25, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0-r1] + ldr r8, [r5+0x04] + ; gcrRegs +[r8] + mov r0, r8 + ; gcrRegs +[r0] + ldr r0, [r0+0x28] + ; gcrRegs -[r0] + ands r0, r0, 8 + cmp r0, 0 + bne SHORT G_M42217_IG13 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M42217_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + ldr r0, [r8+0x1C] + cmp r0, 17 + bne SHORT G_M42217_IG14 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M42217_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r8] + mov r0, r6 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M42217_IG07: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42217_IG08: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r0-r1 r5]
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -62,50 +88,56 @@ G_M42217_IG04: ; bbWeight=0.25, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 movw lr, 0xd1ff movt lr, 0xd1ff cmp r0, lr
- bne SHORT G_M42217_IG12
+ bne SHORT G_M42217_IG15
orrs r0, r2, r3
- beq SHORT G_M42217_IG05
+ beq SHORT G_M42217_IG09
movs r7, 0
- b SHORT G_M42217_IG06
+ b SHORT G_M42217_IG10
;; size=30 bbWeight=0.25 PerfScore 3.00
-G_M42217_IG05: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M42217_IG09: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r1] movs r7, 1 ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M42217_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG10: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
uxtb r0, r7 cmp r0, 0
- bne SHORT G_M42217_IG13 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M42217_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ldr r8, [r5+0x04] - ; gcrRegs +[r8] - mov lr, r8 - ; gcrRegs +[lr] - ldr r0, [lr+0x28] - ands r0, r0, 8 - cmp r0, 0 - bne SHORT G_M42217_IG14 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M42217_IG08: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5 lr] - ldr r0, [r8+0x1C] - cmp r0, 17 - bne SHORT G_M42217_IG15 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M42217_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8] - mov r0, r6 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M42217_IG10: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r7,r8,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M42217_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r1 r5]
+ beq SHORT G_M42217_IG04 + ;; size=6 bbWeight=0.25 PerfScore 0.75 +G_M42217_IG11: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + orr r3, r6, 2 + uxtb r6, r3 + b SHORT G_M42217_IG04 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M42217_IG12: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r1]
movs r6, 1 b SHORT G_M42217_IG03 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42217_IG12: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1 r5] +[r8] + orr r3, r6, 8 + uxtb r6, r3 + mov r3, r8 + ; gcrRegs +[r3] + ldr r3, [r3+0x28] + ; gcrRegs -[r3] + ands r3, r3, 1 + cmp r3, 0 + beq SHORT G_M42217_IG05 + orr r3, r6, 4 + uxtb r6, r3 + ldr r3, [r8+0x1C] + cmp r3, 17 + beq SHORT G_M42217_IG06 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M42217_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8] + orr r3, r6, 16 + uxtb r6, r3 + b SHORT G_M42217_IG06 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M42217_IG15: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r1 r5]
mov r0, r1 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -115,45 +147,10 @@ G_M42217_IG12: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b blx r1 // <unknown method> ; gcrRegs -[r0] mov r7, r0
- b SHORT G_M42217_IG06
+ b SHORT G_M42217_IG10
;; size=18 bbWeight=0 PerfScore 0.00
-G_M42217_IG13: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - orr r3, r6, 2 - uxtb r6, r3 - ldr r8, [r5+0x04] - ; gcrRegs +[r8] - mov lr, r8 - ; gcrRegs +[lr] - ldr r3, [lr+0x28] - ands r3, r3, 8 - cmp r3, 0 - beq SHORT G_M42217_IG08 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M42217_IG14: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5 lr] - orr r3, r6, 8 - uxtb r6, r3 - mov r3, r8 - ; gcrRegs +[r3] - ldr r3, [r3+0x28] - ; gcrRegs -[r3] - ands r3, r3, 1 - cmp r3, 0 - beq SHORT G_M42217_IG08 - orr r3, r6, 4 - uxtb r6, r3 - ldr r3, [r8+0x1C] - cmp r3, 17 - beq SHORT G_M42217_IG09 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M42217_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r8] - orr r3, r6, 16 - uxtb r6, r3 - b SHORT G_M42217_IG09 - ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 8, PerfScore 28.25, instruction count 70, allocated bytes for code 182 (MethodHash=f7db5b16) for method System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
+; Total bytes of code 164, prolog size 8, PerfScore 26.00, instruction count 65, allocated bytes for code 164 (MethodHash=f7db5b16) for method System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -165,7 +162,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-9.20%) : 105726.dasm - System.Text.RegularExpressions.Symbolic.MatchingState1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver1[ulong],ubyte):ubyte:this (Tier1)

@@ -9,25 +9,25 @@ ; 1 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
; V01 arg1 [V01,T03] ( 4, 2.00) ref -> r1 class-hnd single-def <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V02 arg2 [V02,T01] ( 3, 3 ) ubyte -> r2 single-def ; V03 loc0 [V03,T05] ( 11, 3.52) ubyte -> r6 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T07] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V05 tmp1 [V05,T07] ( 2, 0.01) ubyte -> r0 "Inline return value spill temp"
; V06 tmp2 [V06,T02] ( 3, 4.01) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V07 tmp3 [V07,T08] ( 3, 1.00) int -> r7 "guarded devirt return temp"
+; V07 tmp3 [V07,T09] ( 3, 0.01) int -> r7 "guarded devirt return temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "guarded devirt arg temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V10 tmp6 [V10,T04] ( 4, 4 ) ref -> lr class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V10 tmp6 [V10,T04] ( 2, 4 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V12 tmp8 [V12,T12] ( 2, 0 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V15 cse0 [V15,T06] ( 6, 3 ) ref -> r8 "CSE - aggressive"
+; V15 cse0 [V15,T06] ( 4, 3 ) ref -> r8 "CSE - aggressive"
; V16 rat0 [V16,T10] ( 3, 0.01) int -> r2 "field V08.lo (fldOffset=0x0)" P-INDEP ; V17 rat1 [V17,T11] ( 3, 0.01) int -> r3 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T09] ( 3, 0.02) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V18 rat2 [V18,T08] ( 3, 0.02) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 4 @@ -42,16 +42,46 @@ G_M42217_IG02: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b movs r6, 0 uxtb r0, r2 cmp r0, 0
- bne SHORT G_M42217_IG15
+ bne SHORT G_M42217_IG16
;; size=8 bbWeight=1 PerfScore 4.00 G_M42217_IG03: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x04] ; gcrRegs +[r0] ldr r2, [r0+0x1C] cmp r2, 1
- bne SHORT G_M42217_IG07
+ beq SHORT G_M42217_IG09
;; size=8 bbWeight=1 PerfScore 4.00
-G_M42217_IG04: ; bbWeight=0.00, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0-r1] + ldr r8, [r5+0x04] + ; gcrRegs +[r8] + mov r0, r8 + ; gcrRegs +[r0] + ldr r0, [r0+0x28] + ; gcrRegs -[r0] + ands r0, r0, 8 + cmp r0, 0 + bne SHORT G_M42217_IG17 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M42217_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + ldr r0, [r8+0x1C] + cmp r0, 17 + beq SHORT G_M42217_IG07 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M42217_IG06: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r8] + orr r0, r6, 16 + uxtb r6, r0 + ;; size=6 bbWeight=0.76 PerfScore 1.52 +G_M42217_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov r0, r6 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M42217_IG08: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42217_IG09: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r0-r1 r5]
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -62,9 +92,9 @@ G_M42217_IG04: ; bbWeight=0.00, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 movw lr, 0xd1ff movt lr, 0xd1ff cmp r0, lr
- beq SHORT G_M42217_IG12
+ beq SHORT G_M42217_IG13
;; size=20 bbWeight=0.00 PerfScore 0.03
-G_M42217_IG05: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref
+G_M42217_IG10: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref
mov r0, r1 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -75,71 +105,33 @@ G_M42217_IG05: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0] mov r7, r0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M42217_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG11: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
uxtb r0, r7 cmp r0, 0
- bne SHORT G_M42217_IG16 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M42217_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ldr r8, [r5+0x04] - ; gcrRegs +[r8] - mov lr, r8 - ; gcrRegs +[lr] - ldr r0, [lr+0x28] - ands r0, r0, 8 - cmp r0, 0 - bne SHORT G_M42217_IG17 - ;; size=18 bbWeight=1 PerfScore 6.00 -G_M42217_IG08: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5 lr] - ldr r0, [r8+0x1C] - cmp r0, 17 - beq SHORT G_M42217_IG10 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M42217_IG09: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8] - orr r0, r6, 16 - uxtb r6, r0 - ;; size=6 bbWeight=0.76 PerfScore 1.52 -G_M42217_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov r0, r6 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M42217_IG11: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r7,r8,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M42217_IG12: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r5]
+ bne SHORT G_M42217_IG18 + ;; size=6 bbWeight=0.00 PerfScore 0.01 +G_M42217_IG12: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + b SHORT G_M42217_IG04 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M42217_IG13: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
orrs r0, r2, r3
- beq SHORT G_M42217_IG13
+ beq SHORT G_M42217_IG14
movs r7, 0
- b SHORT G_M42217_IG14
+ b SHORT G_M42217_IG15
;; size=10 bbWeight=0.00 PerfScore 0.01
-G_M42217_IG13: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M42217_IG14: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r7, 1 ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M42217_IG14: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M42217_IG06
+G_M42217_IG15: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + b SHORT G_M42217_IG11
;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M42217_IG15: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
+G_M42217_IG16: ; bbWeight=0, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1] movs r6, 1 b SHORT G_M42217_IG03 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42217_IG16: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r1] - orr r3, r6, 2 - uxtb r6, r3 - ldr r8, [r5+0x04] - ; gcrRegs +[r8] - mov lr, r8 - ; gcrRegs +[lr] - ldr r3, [lr+0x28] - ands r3, r3, 8 - cmp r3, 0 - beq SHORT G_M42217_IG08 - ;; size=24 bbWeight=0 PerfScore 0.00
G_M42217_IG17: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5 lr]
+ ; gcrRegs -[r1 r5] +[r8]
orr r3, r6, 8 uxtb r6, r3 mov r3, r8 @@ -148,13 +140,19 @@ G_M42217_IG17: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre ; gcrRegs -[r3] ands r3, r3, 1 cmp r3, 0
- beq SHORT G_M42217_IG08
+ beq SHORT G_M42217_IG05
orr r3, r6, 4 uxtb r6, r3
- b SHORT G_M42217_IG08
+ b SHORT G_M42217_IG05
;; size=26 bbWeight=0 PerfScore 0.00
+G_M42217_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8] +[r5] + orr r3, r6, 2 + uxtb r6, r3 + b SHORT G_M42217_IG04 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 174, prolog size 8, PerfScore 26.56, instruction count 67, allocated bytes for code 174 (MethodHash=f7db5b16) for method System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
+; Total bytes of code 158, prolog size 8, PerfScore 23.58, instruction count 63, allocated bytes for code 158 (MethodHash=f7db5b16) for method System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -166,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
+ Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-9.09%) : 36424.dasm - System.Numerics.Vector:SetElementUnsafefloat (Tier1)

@@ -23,13 +23,14 @@ G_M32812_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
+ vstr s0, [sp+0x04] // [V02 arg2]
mov r5, r0 ; byrRegs +[r5] mov r4, r1
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M32812_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0
- blt SHORT G_M32812_IG08
+ blt SHORT G_M32812_IG05
cmp r4, 4 blt SHORT G_M32812_IG03 movs r0, 0 @@ -41,26 +42,9 @@ G_M32812_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre G_M32812_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz uxtb r0, r0 cmp r0, 0
- beq SHORT G_M32812_IG07
+ bne SHORT G_M32812_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M32812_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
- lsls r0, r4, 2 - adds r0, r5, r0 - ; byrRegs +[r0] - vstr s0, [r0] - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M32812_IG06: ; bbWeight=1, epilog, nogc, extend - pop {r2,r3,r4,r5,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M32812_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; byrRegs -[r0] - vstr s0, [sp+0x04] - b SHORT G_M32812_IG09 - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M32812_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref - vstr s0, [sp+0x04] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M32812_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -69,28 +53,32 @@ G_M32812_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ;; size=28 bbWeight=1 PerfScore 8.00 +G_M32812_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref + lsls r3, r4, 2 + adds r3, r5, r3 + ; byrRegs +[r3]
vldr s0, [sp+0x04] // [V02 arg2]
- b SHORT G_M32812_IG05 - ;; size=34 bbWeight=0 PerfScore 0.00
+ vstr s0, [r3] + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M32812_IG07: ; bbWeight=1, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 88, prolog size 8, PerfScore 19.50, instruction count 31, allocated bytes for code 88 (MethodHash=a2d47fd3) for method System.Numerics.Vector:SetElementUnsafe[float](byref,int,float) (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 28.00, instruction count 28, allocated bytes for code 80 (MethodHash=a2d47fd3) for method System.Numerics.Vector:SetElementUnsafe[float](byref,int,float) (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 : 44 (0x0002c) Actual length = 88 (0x000058) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 40 (0x00028) Actual length = 80 (0x000050) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32

+14 (+8.64%) : 99197.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetTypeDefinitionGeneration(Microsoft.Cci.INamedTypeDefinition):int:this (Tier1)

@@ -9,21 +9,21 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder>
+; V00 this [V00,T00] ( 10, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder>
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r5 class-hnd single-def <Microsoft.Cci.INamedTypeDefinition>
-; V02 loc0 [V02,T04] ( 3, 0 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.Emit.SymbolChanges> -; V03 loc1 [V03,T05] ( 3, 0 ) ref -> r5 class-hnd single-def <Microsoft.Cci.IDefinition>
+; V02 loc0 [V02,T03] ( 3, 0 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.Emit.SymbolChanges> +; V03 loc1 [V03,T04] ( 3, 0 ) ref -> r5 class-hnd single-def <Microsoft.Cci.IDefinition>
; V04 loc2 [V04 ] ( 2, 0 ) int -> [sp+0x04] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 2, 2 ) ref -> r0 "guarded devirt return temp"
+; V06 tmp1 [V06,T02] ( 2, 0 ) ref -> r0 "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilder>
-; V08 tmp3 [V08,T06] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V09 cse0 [V09,T02] ( 5, 3 ) int -> r6 "CSE - aggressive"
+; V08 tmp3 [V08,T05] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M57824_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r11,lr} + sub sp, 12
add r11, sp, 24 movs r2, 0 str r2, [sp+0x04] @@ -31,38 +31,40 @@ G_M57824_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ; gcrRegs +[r4] mov r5, r1 ; gcrRegs +[r5]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M57824_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r4] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - beq SHORT G_M57824_IG03 - mov r0, r4 - ; gcrRegs +[r0] - ldr r3, [r6+0x2C] - ldr r3, [r3+0x14] - blx r3 // <unknown method> - cmp r0, 0
+ ldr r0, [r4] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3
bne SHORT G_M57824_IG05
- ;; size=26 bbWeight=1 PerfScore 11.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M57824_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r4-r5]
+ ; gcrRegs -[r4-r5]
movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00 G_M57824_IG04: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12 + pop {r4,r5,r6,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00
G_M57824_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4-r5] mov r0, r4 ; gcrRegs +[r0]
- ldr r3, [r6+0x2C]
+ ldr r3, [r4] + ldr r3, [r3+0x2C] + ldr r3, [r3+0x14] + blx r3 // <unknown method> + cmp r0, 0 + beq SHORT G_M57824_IG03 + mov r0, r4 + ldr r3, [r4] + ldr r3, [r3+0x2C]
ldr r3, [r3+0x10] blx r3 // <unknown method>
- mov r7, r0 - ; gcrRegs +[r7] - mov r0, r7
+ mov r6, r0 + ; gcrRegs +[r6] + mov r0, r6
mov r1, r5 ; gcrRegs +[r1] movs r2, 0 @@ -80,14 +82,15 @@ G_M57824_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, movt r3, 0xd1ff ldr r3, [r3] blx r3 // Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:get_CurrentGenerationOrdinal():int:this
- ; gcrRegs -[r0 r4-r5 r7] - ;; size=50 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[r0 r4-r6] + ;; size=66 bbWeight=0 PerfScore 0.00
G_M57824_IG06: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M57824_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5 r7] - ldr r0, [r7+0x04]
+ add sp, 12 + pop {r4,r5,r6,r11,pc} + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M57824_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4-r6] + ldr r0, [r6+0x04]
; gcrRegs +[r0] mov r1, r5 ; gcrRegs +[r1] @@ -96,13 +99,14 @@ G_M57824_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7 ldr r3, [r3] ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.Emit.DefinitionMap:MapDefinition(Microsoft.Cci.IDefinition):Microsoft.Cci.IDefinition:this
- ; gcrRegs -[r1 r5 r7]
+ ; gcrRegs -[r1 r5-r6]
mov r5, r0 ; gcrRegs +[r5] cmp r5, 0 beq SHORT G_M57824_IG03 mov r0, r4
- ldr r3, [r6+0x2C]
+ ldr r3, [r4] + ldr r3, [r3+0x2C]
ldr r3, [r3+0x14] blx r3 // <unknown method> ; gcrRegs -[r4] @@ -118,12 +122,13 @@ G_M57824_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7 cmp r0, 0 beq SHORT G_M57824_IG03 ldr r0, [sp+0x04]
- ;; size=56 bbWeight=0 PerfScore 0.00
+ ;; size=58 bbWeight=0 PerfScore 0.00
G_M57824_IG08: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
+ add sp, 12 + pop {r4,r5,r6,r11,pc} + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 162, prolog size 12, PerfScore 19.00, instruction count 65, allocated bytes for code 162 (MethodHash=97601e1f) for method Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetTypeDefinitionGeneration(Microsoft.Cci.INamedTypeDefinition):int:this (Tier1)
+; Total bytes of code 176, prolog size 14, PerfScore 15.00, instruction count 72, allocated bytes for code 176 (MethodHash=97601e1f) for method Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetTypeDefinitionGeneration(Microsoft.Cci.INamedTypeDefinition):int:this (Tier1)
; ============================================================ Unwind Info: @@ -135,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ 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) @@ -151,7 +156,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end

+24 (+9.76%) : 96677.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)

@@ -9,25 +9,25 @@ ; 4 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 5 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
+; V00 arg0 [V00,T02] ( 7, 5 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 8, 5 ) ref -> r5 "guarded devirt return temp"
+; V02 tmp1 [V02,T05] ( 9, 4 ) ref -> r5 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V04 tmp3 [V04,T07] ( 7, 4 ) ref -> r0 "guarded devirt return temp"
+; V04 tmp3 [V04,T06] ( 7, 4 ) ref -> r0 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V06 tmp5 [V06,T11] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp" -; V07 tmp6 [V07,T06] ( 3, 5 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V08 tmp7 [V08,T04] ( 4, 6 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V09 tmp8 [V09,T08] ( 2, 2 ) int -> r0 "guarded devirt return temp"
+; V06 tmp5 [V06,T10] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp" +; V07 tmp6 [V07,T04] ( 3, 5 ) int -> r0 "fgMakeTemp is creating a new local variable" +; V08 tmp7 [V08,T07] ( 4, 4 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V09 tmp8 [V09,T11] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V11 tmp10 [V11,T12] ( 2, 2 ) int -> r0 "guarded devirt return temp"
+; V11 tmp10 [V11,T12] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V13 tmp12 [V13,T10] ( 3, 2 ) ref -> r7 "guarded devirt return temp"
+; V13 tmp12 [V13,T09] ( 3, 2 ) ref -> r7 "guarded devirt return temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V15 tmp14 [V15,T09] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
+; V15 tmp14 [V15,T08] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
; V16 tmp15 [V16,T00] ( 7, 84 ) ref -> r7 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> ; V17 cse0 [V17,T01] ( 3, 24 ) int -> r4 "CSE - aggressive"
-; V18 cse1 [V18,T02] ( 8, 7 ) int -> r6 "CSE - aggressive"
+; V18 cse1 [V18,T03] ( 11, 5 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,65 +39,56 @@ G_M51640_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 3.00 G_M51640_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - bne SHORT G_M51640_IG18
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1 + bne SHORT G_M51640_IG16
mov r0, r4 ; gcrRegs +[r0] ;; size=16 bbWeight=1 PerfScore 6.00 G_M51640_IG03: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz cmp r4, r0
- bne SHORT G_M51640_IG16 - ldr r3, [r0] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r3, r2 - bne SHORT G_M51640_IG19
+ bne SHORT G_M51640_IG14 + ldr r1, [r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r1, r3 + bne SHORT G_M51640_IG17
ldr r5, [r0+0x08] ; gcrRegs +[r5]
- ;; size=20 bbWeight=1 PerfScore 8.00 -G_M51640_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r4]
ldr r6, [r5] movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff cmp r6, r0
- beq SHORT G_M51640_IG05 - mov r0, r5 - ; gcrRegs +[r0] - ldr r3, [r6+0x34] - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 9 - bne SHORT G_M51640_IG20 - ;; size=26 bbWeight=1 PerfScore 11.00 -G_M51640_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M51640_IG18 + ;; size=34 bbWeight=1 PerfScore 13.00 +G_M51640_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4]
movw r0, 0xd1ff movt r0, 0xd1ff cmp r6, r0
- beq SHORT G_M51640_IG07
+ beq SHORT G_M51640_IG06
;; size=12 bbWeight=1 PerfScore 4.00
-G_M51640_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[r1] +[r0]
- b SHORT G_M51640_IG08
+ b SHORT G_M51640_IG07
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51640_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M51640_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] mov r0, r5 ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51640_IG08: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG07: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff cmp r6, r3
- bne SHORT G_M51640_IG09
+ bne SHORT G_M51640_IG19
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -105,31 +96,21 @@ G_M51640_IG08: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0] cmp r0, 0 bgt SHORT G_M51640_IG21
- b SHORT G_M51640_IG10 - ;; size=30 bbWeight=1 PerfScore 11.00 -G_M51640_IG09: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r6+0x70] - ldr r3, [r3+0x18] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 0 - bne SHORT G_M51640_IG21 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M51640_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff cmp r6, r0 bne SHORT G_M51640_IG20
+ ;; size=40 bbWeight=1 PerfScore 14.00 +G_M51640_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
ldr r7, [r5+0x10] ; gcrRegs +[r7]
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M51640_IG11: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M51640_IG09: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5] cmp r7, 0
- beq SHORT G_M51640_IG13
+ beq SHORT G_M51640_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG10: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7 ; gcrRegs +[r0] ldr r4, [r7] @@ -138,7 +119,7 @@ G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- bgt SHORT G_M51640_IG14
+ bgt SHORT G_M51640_IG12
mov r0, r7 ; gcrRegs +[r0] ldr r3, [r4+0x34] @@ -148,27 +129,27 @@ G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byre mov r7, r0 ; gcrRegs +[r7] cmp r7, 0
- bne SHORT G_M51640_IG12
+ bne SHORT G_M51640_IG10
;; size=30 bbWeight=8 PerfScore 112.00
-G_M51640_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] movs r0, 0
- b SHORT G_M51640_IG15
+ b SHORT G_M51640_IG13
;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51640_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51640_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r0, 0 bne SHORT G_M51640_IG21 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51640_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51640_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M51640_IG15: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51640_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51640_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] mov r0, r4 ; gcrRegs +[r0] @@ -178,7 +159,7 @@ G_M51640_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:get_OriginalDefinition():Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this b SHORT G_M51640_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M51640_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG17: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4] ldr r3, [r0] ldr r3, [r3+0x34] @@ -186,10 +167,38 @@ G_M51640_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre blx r3 // <unknown method> mov r5, r0 ; gcrRegs +[r5]
- b SHORT G_M51640_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M51640_IG20: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r5] + movw r0, 0xd1ff
; gcrRegs -[r0]
+ movt r0, 0xd1ff + cmp r6, r0 + beq SHORT G_M51640_IG04 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M51640_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + mov r0, r5 + ; gcrRegs +[r0] + ldr r3, [r6+0x34] + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 9 + bne SHORT G_M51640_IG20 + b SHORT G_M51640_IG04 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M51640_IG19: ; bbWeight=0, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + ldr r3, [r6+0x70] + ldr r3, [r3+0x18] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 0 + bne SHORT G_M51640_IG21 + movw r3, 0xd1ff
...

+14 (+10.61%) : 110337.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)

@@ -11,25 +11,24 @@ ; ; V00 this [V00,T01] ( 6, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> ; V01 arg1 [V01,T02] ( 5, 3 ) byref -> r5 single-def
-; V02 loc0 [V02,T04] ( 4, 3 ) ref -> r6 class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 loc0 [V02,T03] ( 4, 3 ) ref -> r6 class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.SyntaxNode>
-; V06 tmp2 [V06,T06] ( 2, 2 ) int -> r0 "guarded devirt return temp"
+; V06 tmp2 [V06,T06] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ; V08 tmp4 [V08,T00] ( 5, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V09 tmp5 [V09,T03] ( 5, 3 ) ref -> r8 "guarded devirt return temp"
+; V09 tmp5 [V09,T05] ( 8, 2 ) ref -> r8 "guarded devirt return temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithThreeChildren>
-; V11 tmp7 [V11,T08] ( 2, 0 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> -; V12 tmp8 [V12,T10] ( 2, 0 ) int -> r2 "argument with side effect" -; V13 tmp9 [V13,T09] ( 2, 0 ) ref -> r6 single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 4, 3 ) int -> r9 "CSE - aggressive" -; V15 cse1 [V15,T07] ( 3, 3 ) int -> r7 "CSE - aggressive"
+; V11 tmp7 [V11,T07] ( 2, 0 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> +; V12 tmp8 [V12,T09] ( 2, 0 ) int -> r2 "argument with side effect" +; V13 tmp9 [V13,T08] ( 2, 0 ) ref -> r6 single-def "argument with side effect" +; V14 cse0 [V14,T04] ( 4, 3 ) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M43159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
+ push {r3,r4,r5,r6,r7,r8,r11,lr}
add r11, sp, 24 mov r4, r0 ; gcrRegs +[r4] @@ -40,42 +39,32 @@ G_M43159_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ldr r6, [r5] ; gcrRegs +[r6] cmp r6, 0
- bne SHORT G_M43159_IG04
+ bne SHORT G_M43159_IG03
ldr r0, [r4+0x0C] ; gcrRegs +[r0]
- ldr r3, [r0]
+ ldr r1, [r0]
movw r7, 0xd1ff movt r7, 0xd1ff
- cmp r3, r7 - bne SHORT G_M43159_IG06
+ cmp r1, r7 + bne SHORT G_M43159_IG05
ldr r8, [r0+0x10] ; gcrRegs +[r8]
- ;; size=26 bbWeight=1 PerfScore 10.00 -G_M43159_IG03: ; bbWeight=1, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0020 {r5}, byref, isz
+ ldr r0, [r8]
; gcrRegs -[r0]
- ldr r9, [r8] - add r0, r7, 0x608 - cmp r9, r0 - beq SHORT G_M43159_IG04 - mov r0, r8 - ; gcrRegs +[r0] - ldr r3, [r9+0x30] - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 0 - beq SHORT G_M43159_IG07 - ;; size=26 bbWeight=1 PerfScore 10.00 -G_M43159_IG04: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+ add r1, r7, 0x608 + cmp r0, r1 + bne SHORT G_M43159_IG06 + ;; size=38 bbWeight=1 PerfScore 14.00 +G_M43159_IG03: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r4 r8] ; byrRegs -[r5] mov r0, r6 ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M43159_IG05: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r6,r7,r8,r9,r11,pc}
+G_M43159_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M43159_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M43159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r4] ; byrRegs +[r5] movs r1, 1 @@ -85,12 +74,23 @@ G_M43159_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0051 {r0 r4 r6 blx r3 // <unknown method> mov r8, r0 ; gcrRegs +[r8]
- b SHORT G_M43159_IG03 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M43159_IG07: ; bbWeight=0, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r5}, byref, isz - ; gcrRegs -[r0 r6]
+ ldr r0, [r8] + ; gcrRegs -[r0] + add r3, r7, 0x608 + cmp r0, r3 + beq SHORT G_M43159_IG03 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M43159_IG06: ; bbWeight=0, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0020 {r5}, byref, isz + mov r0, r8 + ; gcrRegs +[r0] + ldr r3, [r8] + ldr r3, [r3+0x30] + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 0 + bne SHORT G_M43159_IG03
ldr r6, [r4+0x04]
- ; gcrRegs +[r6]
mov r0, r4 ; gcrRegs +[r0] movs r1, 1 @@ -104,7 +104,8 @@ G_M43159_IG07: ; bbWeight=0, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r5}, ; gcrRegs +[r1] mov r0, r8 ; gcrRegs +[r0]
- ldr r3, [r9+0x3C]
+ ldr r3, [r8] + ldr r3, [r3+0x3C]
ldr r3, [r3+0x1C] blx r3 // <unknown method> ; gcrRegs -[r1 r6 r8] @@ -121,10 +122,10 @@ G_M43159_IG07: ; bbWeight=0, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r5}, ; byrRegs -[r0] ldr r6, [r5] ; gcrRegs +[r6]
- b SHORT G_M43159_IG04 - ;; size=48 bbWeight=0 PerfScore 0.00
+ b SHORT G_M43159_IG03 + ;; size=66 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 8, PerfScore 26.00, instruction count 54, allocated bytes for code 132 (MethodHash=3d7f5768) for method Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
+; Total bytes of code 146, prolog size 8, PerfScore 20.00, instruction count 59, allocated bytes for code 146 (MethodHash=3d7f5768) for method Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
; ============================================================ Unwind Info: @@ -136,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 73 (0x00049) Actual length = 146 (0x000092)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -144,7 +145,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end FF end

coreclr_tests.run.linux.arm.checked.mch

-18 (-5.33%) : 328994.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnlySystem.__Canon:System.Collections.ObjectModel.ReadOnlyCollection`1System.__Canon

@@ -10,54 +10,54 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00,T00] ( 13, 8.88) int -> r4 single-def
-; V01 arg0 [V01,T01] ( 8, 8 ) ref -> r5 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V02 loc0 [V02,T15] ( 2, 2 ) ref -> r0 class-hnd exact <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]> -; V03 loc1 [V03,T16] ( 2, 2 ) ref -> r0 class-hnd exact <System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1[System.__Canon]> -; V04 loc2 [V04,T20] ( 3, 2.50) ref -> r8 class-hnd single-def <System.__Canon[]>
+; V01 arg0 [V01,T01] ( 8, 7 ) ref -> r5 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V02 loc0 [V02,T20] ( 2, 1 ) ref -> r0 class-hnd exact <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]> +; V03 loc1 [V03,T21] ( 2, 1 ) ref -> r0 class-hnd exact <System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1[System.__Canon]> +; V04 loc2 [V04,T18] ( 3, 2.50) ref -> r5 class-hnd single-def <System.__Canon[]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V08 tmp3 [V08,T13] ( 2, 4 ) int -> r0 "spilling helperCall" ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]>
-; V10 tmp5 [V10,T09] ( 3, 4 ) int -> r0 "spilling helperCall"
+; V10 tmp5 [V10,T09] ( 3, 4 ) int -> r3 "spilling helperCall"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1[System.__Canon]> ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V13 tmp8 [V13,T17] ( 3, 3 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]>
+; V13 tmp8 [V13,T15] ( 3, 3 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]>
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V15 tmp10 [V15,T14] ( 2, 4 ) int -> r0 "argument with side effect"
-; V16 cse0 [V16,T21] ( 3, 2.50) int -> r6 "CSE - aggressive" -; V17 cse1 [V17,T18] ( 3, 3 ) int -> r7 "CSE - aggressive"
+; V16 cse0 [V16,T19] ( 3, 2.50) int -> r6 "CSE - aggressive" +; V17 cse1 [V17,T16] ( 3, 3 ) int -> r7 "CSE - aggressive"
; V18 rat0 [V18,T10] ( 3, 4 ) int -> r0 "runtime lookup" ; V19 rat1 [V19,T02] ( 3, 5.60) int -> r0 "fgMakeTemp is creating a new local variable" ; V20 rat2 [V20,T11] ( 3, 4 ) int -> r6 "runtime lookup" ; V21 rat3 [V21,T03] ( 3, 5.60) int -> r0 "spilling expr" ; V22 rat4 [V22,T06] ( 3, 4.48) int -> r6 "fgMakeTemp is creating a new local variable"
-; V23 rat5 [V23,T04] ( 3, 5.60) int -> r8 "spilling expr" -; V24 rat6 [V24,T07] ( 3, 4.48) int -> r0 "fgMakeTemp is creating a new local variable"
+; V23 rat5 [V23,T04] ( 3, 5.60) int -> r1 "spilling expr" +; V24 rat6 [V24,T07] ( 3, 4.48) int -> r3 "fgMakeTemp is creating a new local variable"
; V25 rat7 [V25,T12] ( 3, 4 ) int -> r0 "runtime lookup"
-; V26 rat8 [V26,T05] ( 3, 5.60) int -> r9 "spilling expr"
+; V26 rat8 [V26,T05] ( 3, 5.60) int -> r7 "spilling expr"
; V27 rat9 [V27,T08] ( 3, 4.48) int -> r0 "fgMakeTemp is creating a new local variable" ; V28 rat10 [V28,T22] ( 3, 2 ) int -> r0 "runtime lookup"
-; V29 rat11 [V29,T19] ( 3, 2.80) int -> r0 "fgMakeTemp is creating a new local variable"
+; V29 rat11 [V29,T17] ( 3, 2.80) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M39151_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} - add r11, sp, 32 - str r0, [r11-0x1C]
+ push {r2,r3,r4,r5,r6,r7,r11,lr} + add r11, sp, 24 + str r0, [r11-0x14]
mov r4, r0 mov r5, r1 ; gcrRegs +[r5] ;; size=16 bbWeight=1 PerfScore 5.00 G_M39151_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq G_M39151_IG24
+ beq SHORT G_M39151_IG16
ldr r0, [r4+0x20] ldr r0, [r0+0x08] cmp r0, 0
- beq SHORT G_M39151_IG07 - ;; size=14 bbWeight=1 PerfScore 6.00
+ beq SHORT G_M39151_IG22 + ;; size=12 bbWeight=1 PerfScore 6.00
G_M39151_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff @@ -66,104 +66,47 @@ G_M39151_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcrRegs +[r0] ; gcr arg pop 0 cmp r0, r5
- beq SHORT G_M39151_IG24
+ beq SHORT G_M39151_IG16
ldr r0, [r4+0x20] ; gcrRegs -[r0] ldr r1, [r0+0x04] cmp r1, 12
- ble SHORT G_M39151_IG13
+ ble SHORT G_M39151_IG19
;; size=24 bbWeight=1 PerfScore 10.00 G_M39151_IG04: ; bbWeight=0.80, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ldr r6, [r0+0x0C] cmp r6, 0
- beq SHORT G_M39151_IG13
+ beq SHORT G_M39151_IG19
;; size=6 bbWeight=0.80 PerfScore 2.40 G_M39151_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r0, r6 ldr r7, [r5] cmp r7, r0
- beq SHORT G_M39151_IG08 - ldr r8, [r4+0x20] - ldr r0, [r8+0x04]
+ beq SHORT G_M39151_IG12 + ldr r1, [r4+0x20] + ldr r0, [r1+0x04]
cmp r0, 16
- ble SHORT G_M39151_IG10 - ;; size=20 bbWeight=1 PerfScore 8.00
+ ble SHORT G_M39151_IG20 + ;; size=16 bbWeight=1 PerfScore 8.00
G_M39151_IG06: ; bbWeight=0.80, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39151_IG20 - ;; size=2 bbWeight=0.80 PerfScore 0.80 -G_M39151_IG07: ; bbWeight=0.20, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - mov r0, r4 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - b SHORT G_M39151_IG03 - ;; size=22 bbWeight=0.20 PerfScore 1.40 -G_M39151_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - mov r0, r5 - ; gcrRegs +[r0] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M39151_IG09: ; bbWeight=1, epilog, nogc, extend - pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M39151_IG10: ; bbWeight=0.36, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] - mov r0, r4 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - ;; size=20 bbWeight=0.36 PerfScore 2.16 -G_M39151_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - cmp r7, r0
+ ldr r3, [r1+0x10] + cmp r3, 0 + beq SHORT G_M39151_IG20 + ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M39151_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + cmp r7, r3
beq SHORT G_M39151_IG14
- ldr r9, [r4+0x20] - ldr r0, [r9+0x04]
+ ldr r7, [r4+0x20] + ldr r0, [r7+0x04]
cmp r0, 20
- ble SHORT G_M39151_IG16 - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M39151_IG12: ; bbWeight=0.80, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M39151_IG22 - ;; size=2 bbWeight=0.80 PerfScore 0.80 -G_M39151_IG13: ; bbWeight=0.36, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - mov r0, r4 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - mov r6, r0 - b SHORT G_M39151_IG05 - ;; size=24 bbWeight=0.36 PerfScore 2.88 -G_M39151_IG14: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - mov r0, r5 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M39151_IG15: ; bbWeight=1, epilog, nogc, extend - add sp, 8 - pop {r4,r5,r6,r7,r8,r9,r11,lr} - bx r3 // System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1[System.__Canon]:ToReadOnlyCollection():System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M39151_IG16: ; bbWeight=0.36, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] - mov r0, r4 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - ;; size=20 bbWeight=0.36 PerfScore 2.16 -G_M39151_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ble SHORT G_M39151_IG21 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M39151_IG08: ; bbWeight=0.80, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r7+0x14] + cmp r0, 0 + beq SHORT G_M39151_IG21 + ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M39151_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff @@ -172,14 +115,14 @@ G_M39151_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] ; gcrRegs -[r1 r5] +[r0] ; gcr arg pop 0
- mov r8, r0 - ; gcrRegs +[r8] - ldr r0, [r8+0x04]
+ mov r5, r0 + ; gcrRegs +[r5] + ldr r0, [r5+0x04]
; gcrRegs -[r0] cmp r0, 0
- beq SHORT G_M39151_IG24 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M39151_IG18: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+ beq SHORT G_M39151_IG16 + ;; size=22 bbWeight=1 PerfScore 9.00 +G_M39151_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r6 movw r3, 0xd1ff movt r3, 0xd1ff @@ -191,55 +134,61 @@ G_M39151_IG18: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b adds r0, r2, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- mov r1, r8
+ mov r1, r5
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r8]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] mov r0, r2 ; gcrRegs +[r0] ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M39151_IG19: ; bbWeight=0.50, epilog, nogc, extend - pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
+G_M39151_IG11: ; bbWeight=0.50, epilog, nogc, extend + pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M39151_IG20: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39151_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] +[r5]
- ldr r0, [r8+0x10] - cmp r0, 0 - beq SHORT G_M39151_IG10
...

-36 (-4.96%) : 232213.dasm - Gen`1[System.Guid]:ThreadPoolTestdouble (FullOpts)

@@ -14,31 +14,32 @@ ; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 4, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Threading.ManualResetEvent> ; V05 tmp2 [V05,T01] ( 6, 12 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V06 tmp3 [V06,T08] ( 3, 2 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
+; V06 tmp3 [V06,T09] ( 3, 2 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
; V07 tmp4 [V07 ] ( 1, 1 ) ubyte -> [sp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V08 tmp5 [V08,T04] ( 5, 4 ) int -> r7 "Inlining Arg" -; V09 tmp6 [V09,T05] ( 5, 4.18) int -> r8 "Inlining Arg"
+; V08 tmp5 [V08,T04] ( 5, 4 ) int -> r8 "Inlining Arg" +; V09 tmp6 [V09,T05] ( 5, 4.18) int -> r9 "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V11 tmp8 [V11,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V11 tmp8 [V11,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V13 tmp10 [V13,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V14 tmp11 [V14,T00] ( 9, 12.00) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer> -; V15 tmp12 [V15,T12] ( 3, 0 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerHolder> -; V16 tmp13 [V16,T09] ( 3, 2.00) ref -> r6 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp10 [V13,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V14 tmp11 [V14,T00] ( 9, 12.00) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer> +; V15 tmp12 [V15,T13] ( 3, 0 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerHolder> +; V16 tmp13 [V16,T10] ( 3, 2.00) ref -> r6 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V19 tmp16 [V19,T14] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V20 tmp17 [V20,T03] ( 4, 6.00) int -> r10 "dup spill"
+; V19 tmp16 [V19,T15] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V20 tmp17 [V20,T03] ( 4, 6.00) int -> r3 "dup spill"
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V22 tmp19 [V22,T13] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder> -; V23 tmp20 [V23,T16] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V24 tmp21 [V24,T17] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V25 tmp22 [V25,T15] ( 3, 0 ) int -> r1 "index expr" -; V26 cse0 [V26,T06] ( 3, 3.00) int -> r0 "CSE - aggressive" -; V27 cse1 [V27,T07] ( 3, 3 ) int -> r5 "CSE - aggressive" -; V28 rat0 [V28 ] ( 1, 0 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V29 rat1 [V29,T18] ( 2, 0 ) int -> r0 "field V28.lo (fldOffset=0x0)" P-INDEP -; V30 rat2 [V30,T19] ( 2, 0 ) int -> r1 "field V28.hi (fldOffset=0x4)" P-INDEP
+; V22 tmp19 [V22,T14] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder> +; V23 tmp20 [V23,T17] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V24 tmp21 [V24,T18] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V25 tmp22 [V25,T16] ( 3, 0 ) int -> r1 "index expr" +; V26 cse0 [V26,T07] ( 3, 3.00) int -> r0 "CSE - aggressive" +; V27 cse1 [V27,T08] ( 3, 3 ) int -> r5 "CSE - aggressive" +; V28 cse2 [V28,T06] ( 6, 3 ) int -> r7 "CSE - aggressive" +; V29 rat0 [V29 ] ( 1, 0 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V30 rat1 [V30,T19] ( 2, 0 ) int -> r0 "field V29.lo (fldOffset=0x0)" P-INDEP +; V31 rat2 [V31,T20] ( 2, 0 ) int -> r1 "field V29.hi (fldOffset=0x4)" P-INDEP
; TEMP_01 ref -> [r11-0x38] ; ; Lcl frame size = 36 @@ -105,121 +106,20 @@ G_M35481_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r0] mov r5, r0 ; gcrRegs +[r5]
- movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - ldr r7, [r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r8, [r0] - cmp r7, -1 - blt SHORT G_M35481_IG04
+ movw r7, 0xd1ff + movt r7, 0xd1ff + ldr r8, [r7] + ldr r9, [r7+0x04]
cmp r8, -1
+ blt SHORT G_M35481_IG04 + cmp r9, -1
bge SHORT G_M35481_IG07
- ;; size=152 bbWeight=1 PerfScore 49.00
+ ;; size=146 bbWeight=1 PerfScore 47.00
G_M35481_IG03: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4-r6]
+ ; gcrRegs -[r0 r4-r6]
b SHORT G_M35481_IG09 ;; size=2 bbWeight=0.41 PerfScore 0.41 G_M35481_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_STRCNS - ; gcrRegs +[r0] - mov r2, r0 - ; gcrRegs +[r2] - mov r0, r7 - ; gcrRegs -[r0] - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) - ; gcrRegs -[r2] - bkpt - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M35481_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4-r6] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWFAST - ; gcrRegs +[r0] - mov r9, r0 - ; gcrRegs +[r9] - add r0, r9, 28 - ; gcrRegs -[r0] - ; byrRegs +[r0] - mov r1, r6 - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1 r6] - ; byrRegs -[r0] - add r0, r9, 32 - ; byrRegs +[r0] - mov r1, r4 - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - mov r3, -1 - str r3, [r9+0x2C] - str r3, [r9+0x30] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext - ; gcrRegs +[r0] - str r0, [sp+0x08] - add r0, r9, 36 - ; gcrRegs -[r0] - ; byrRegs +[r0] - ldr r1, [sp+0x08] - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r6, [r0] - ; gcrRegs +[r6] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR - ldr r10, [r0+0xA08] - add r1, r10, -1 - str r1, [r0+0xA08] - uxth r0, r10 - cmp r0, 0 - bne SHORT G_M35481_IG11 - ;; size=146 bbWeight=1.00 PerfScore 44.00 -G_M35481_IG06: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - b SHORT G_M35481_IG10 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M35481_IG07: ; bbWeight=0.09, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9] - cmp r8, 0 - bge SHORT G_M35481_IG05 - ;; size=6 bbWeight=0.09 PerfScore 0.18 -G_M35481_IG08: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M35481_IG05 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M35481_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r6]
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -240,18 +140,116 @@ G_M35481_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r2] bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35481_IG10: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4-r6 r9]
+G_M35481_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4-r6] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWFAST + ; gcrRegs +[r0] + mov r10, r0 + ; gcrRegs +[r10] + add r0, r10, 28 + ; gcrRegs -[r0] + ; byrRegs +[r0] + mov r1, r6 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1 r6] + ; byrRegs -[r0] + add r0, r10, 32 + ; byrRegs +[r0] + mov r1, r4 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1] + ; byrRegs -[r0] + mov r3, -1 + str r3, [r10+0x2C] + str r3, [r10+0x30] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext + ; gcrRegs +[r0] + str r0, [sp+0x08] + add r0, r10, 36 + ; gcrRegs -[r0] + ; byrRegs +[r0] + ldr r1, [sp+0x08] + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1] + ; byrRegs -[r0] + movw r0, 0xd1ff + movt r0, 0xd1ff + ldr r6, [r0] + ; gcrRegs +[r6] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR + ldr r3, [r0+0xA08] + subs r1, r3, 1 + str r1, [r0+0xA08] + uxth r0, r3
...

-36 (-4.96%) : 232238.dasm - Gen:ThreadPoolTestSystem.Guid (FullOpts)

@@ -14,31 +14,32 @@ ; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 4, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Threading.ManualResetEvent> ; V05 tmp2 [V05,T01] ( 6, 12 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V06 tmp3 [V06,T08] ( 3, 2 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
+; V06 tmp3 [V06,T09] ( 3, 2 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
; V07 tmp4 [V07 ] ( 1, 1 ) ubyte -> [sp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V08 tmp5 [V08,T04] ( 5, 4 ) int -> r7 "Inlining Arg" -; V09 tmp6 [V09,T05] ( 5, 4.18) int -> r8 "Inlining Arg"
+; V08 tmp5 [V08,T04] ( 5, 4 ) int -> r8 "Inlining Arg" +; V09 tmp6 [V09,T05] ( 5, 4.18) int -> r9 "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V11 tmp8 [V11,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V11 tmp8 [V11,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V13 tmp10 [V13,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V14 tmp11 [V14,T00] ( 9, 12.00) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer> -; V15 tmp12 [V15,T12] ( 3, 0 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerHolder> -; V16 tmp13 [V16,T09] ( 3, 2.00) ref -> r6 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp10 [V13,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V14 tmp11 [V14,T00] ( 9, 12.00) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer> +; V15 tmp12 [V15,T13] ( 3, 0 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerHolder> +; V16 tmp13 [V16,T10] ( 3, 2.00) ref -> r6 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V19 tmp16 [V19,T14] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V20 tmp17 [V20,T03] ( 4, 6.00) int -> r10 "dup spill"
+; V19 tmp16 [V19,T15] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V20 tmp17 [V20,T03] ( 4, 6.00) int -> r3 "dup spill"
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V22 tmp19 [V22,T13] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder> -; V23 tmp20 [V23,T16] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V24 tmp21 [V24,T17] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V25 tmp22 [V25,T15] ( 3, 0 ) int -> r1 "index expr" -; V26 cse0 [V26,T06] ( 3, 3.00) int -> r0 "CSE - aggressive" -; V27 cse1 [V27,T07] ( 3, 3 ) int -> r5 "CSE - aggressive" -; V28 rat0 [V28 ] ( 1, 0 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V29 rat1 [V29,T18] ( 2, 0 ) int -> r0 "field V28.lo (fldOffset=0x0)" P-INDEP -; V30 rat2 [V30,T19] ( 2, 0 ) int -> r1 "field V28.hi (fldOffset=0x4)" P-INDEP
+; V22 tmp19 [V22,T14] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder> +; V23 tmp20 [V23,T17] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V24 tmp21 [V24,T18] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V25 tmp22 [V25,T16] ( 3, 0 ) int -> r1 "index expr" +; V26 cse0 [V26,T07] ( 3, 3.00) int -> r0 "CSE - aggressive" +; V27 cse1 [V27,T08] ( 3, 3 ) int -> r5 "CSE - aggressive" +; V28 cse2 [V28,T06] ( 6, 3 ) int -> r7 "CSE - aggressive" +; V29 rat0 [V29 ] ( 1, 0 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V30 rat1 [V30,T19] ( 2, 0 ) int -> r0 "field V29.lo (fldOffset=0x0)" P-INDEP +; V31 rat2 [V31,T20] ( 2, 0 ) int -> r1 "field V29.hi (fldOffset=0x4)" P-INDEP
; TEMP_01 ref -> [r11-0x38] ; ; Lcl frame size = 36 @@ -105,121 +106,20 @@ G_M21179_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r0] mov r5, r0 ; gcrRegs +[r5]
- movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - ldr r7, [r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r8, [r0] - cmp r7, -1 - blt SHORT G_M21179_IG04
+ movw r7, 0xd1ff + movt r7, 0xd1ff + ldr r8, [r7] + ldr r9, [r7+0x04]
cmp r8, -1
+ blt SHORT G_M21179_IG04 + cmp r9, -1
bge SHORT G_M21179_IG07
- ;; size=152 bbWeight=1 PerfScore 49.00
+ ;; size=146 bbWeight=1 PerfScore 47.00
G_M21179_IG03: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4-r6]
+ ; gcrRegs -[r0 r4-r6]
b SHORT G_M21179_IG09 ;; size=2 bbWeight=0.41 PerfScore 0.41 G_M21179_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_STRCNS - ; gcrRegs +[r0] - mov r2, r0 - ; gcrRegs +[r2] - mov r0, r7 - ; gcrRegs -[r0] - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) - ; gcrRegs -[r2] - bkpt - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M21179_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4-r6] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWFAST - ; gcrRegs +[r0] - mov r9, r0 - ; gcrRegs +[r9] - add r0, r9, 28 - ; gcrRegs -[r0] - ; byrRegs +[r0] - mov r1, r6 - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1 r6] - ; byrRegs -[r0] - add r0, r9, 32 - ; byrRegs +[r0] - mov r1, r4 - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - mov r3, -1 - str r3, [r9+0x2C] - str r3, [r9+0x30] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext - ; gcrRegs +[r0] - str r0, [sp+0x08] - add r0, r9, 36 - ; gcrRegs -[r0] - ; byrRegs +[r0] - ldr r1, [sp+0x08] - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r6, [r0] - ; gcrRegs +[r6] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR - ldr r10, [r0+0xA08] - add r1, r10, -1 - str r1, [r0+0xA08] - uxth r0, r10 - cmp r0, 0 - bne SHORT G_M21179_IG11 - ;; size=146 bbWeight=1.00 PerfScore 44.00 -G_M21179_IG06: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - b SHORT G_M21179_IG10 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M21179_IG07: ; bbWeight=0.09, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9] - cmp r8, 0 - bge SHORT G_M21179_IG05 - ;; size=6 bbWeight=0.09 PerfScore 0.18 -G_M21179_IG08: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M21179_IG05 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M21179_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r6]
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -240,18 +140,116 @@ G_M21179_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r2] bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-G_M21179_IG10: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4-r6 r9]
+G_M21179_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4-r6] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWFAST + ; gcrRegs +[r0] + mov r10, r0 + ; gcrRegs +[r10] + add r0, r10, 28 + ; gcrRegs -[r0] + ; byrRegs +[r0] + mov r1, r6 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1 r6] + ; byrRegs -[r0] + add r0, r10, 32 + ; byrRegs +[r0] + mov r1, r4 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1] + ; byrRegs -[r0] + mov r3, -1 + str r3, [r10+0x2C] + str r3, [r10+0x30] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext + ; gcrRegs +[r0] + str r0, [sp+0x08] + add r0, r10, 36 + ; gcrRegs -[r0] + ; byrRegs +[r0] + ldr r1, [sp+0x08] + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1] + ; byrRegs -[r0] + movw r0, 0xd1ff + movt r0, 0xd1ff + ldr r6, [r0] + ; gcrRegs +[r6] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR + ldr r3, [r0+0xA08] + subs r1, r3, 1 + str r1, [r0+0xA08] + uxth r0, r3
...

+24 (+9.76%) : 338468.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)

@@ -9,25 +9,25 @@ ; 4 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 5 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
+; V00 arg0 [V00,T02] ( 7, 5 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 8, 5 ) ref -> r5 "guarded devirt return temp"
+; V02 tmp1 [V02,T05] ( 9, 4 ) ref -> r5 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V04 tmp3 [V04,T07] ( 7, 4 ) ref -> r0 "guarded devirt return temp"
+; V04 tmp3 [V04,T06] ( 7, 4 ) ref -> r0 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V06 tmp5 [V06,T11] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp" -; V07 tmp6 [V07,T06] ( 3, 5 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V08 tmp7 [V08,T04] ( 4, 6 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V09 tmp8 [V09,T08] ( 2, 2 ) int -> r0 "guarded devirt return temp"
+; V06 tmp5 [V06,T10] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp" +; V07 tmp6 [V07,T04] ( 3, 5 ) int -> r0 "fgMakeTemp is creating a new local variable" +; V08 tmp7 [V08,T07] ( 4, 4 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V09 tmp8 [V09,T11] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V11 tmp10 [V11,T12] ( 2, 2 ) int -> r0 "guarded devirt return temp"
+; V11 tmp10 [V11,T12] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V13 tmp12 [V13,T10] ( 3, 2 ) ref -> r7 "guarded devirt return temp"
+; V13 tmp12 [V13,T09] ( 3, 2 ) ref -> r7 "guarded devirt return temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V15 tmp14 [V15,T09] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
+; V15 tmp14 [V15,T08] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
; V16 tmp15 [V16,T00] ( 7, 84 ) ref -> r7 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> ; V17 cse0 [V17,T01] ( 3, 24 ) int -> r4 "CSE - aggressive"
-; V18 cse1 [V18,T02] ( 8, 7 ) int -> r6 "CSE - aggressive"
+; V18 cse1 [V18,T03] ( 11, 5 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,65 +39,56 @@ G_M51640_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 3.00 G_M51640_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - bne SHORT G_M51640_IG18
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1 + bne SHORT G_M51640_IG16
mov r0, r4 ; gcrRegs +[r0] ;; size=16 bbWeight=1 PerfScore 6.00 G_M51640_IG03: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz cmp r4, r0
- bne SHORT G_M51640_IG16 - ldr r3, [r0] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r3, r2 - bne SHORT G_M51640_IG19
+ bne SHORT G_M51640_IG14 + ldr r1, [r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r1, r3 + bne SHORT G_M51640_IG17
ldr r5, [r0+0x08] ; gcrRegs +[r5]
- ;; size=20 bbWeight=1 PerfScore 8.00 -G_M51640_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r4]
ldr r6, [r5] movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff cmp r6, r0
- beq SHORT G_M51640_IG05 - mov r0, r5 - ; gcrRegs +[r0] - ldr r3, [r6+0x34] - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 9 - bne SHORT G_M51640_IG20 - ;; size=26 bbWeight=1 PerfScore 11.00 -G_M51640_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M51640_IG18 + ;; size=34 bbWeight=1 PerfScore 13.00 +G_M51640_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4]
movw r0, 0xd1ff movt r0, 0xd1ff cmp r6, r0
- beq SHORT G_M51640_IG07
+ beq SHORT G_M51640_IG06
;; size=12 bbWeight=1 PerfScore 4.00
-G_M51640_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[r1] +[r0]
- b SHORT G_M51640_IG08
+ b SHORT G_M51640_IG07
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51640_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M51640_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] mov r0, r5 ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51640_IG08: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG07: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff cmp r6, r3
- bne SHORT G_M51640_IG09
+ bne SHORT G_M51640_IG19
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -105,31 +96,21 @@ G_M51640_IG08: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0] cmp r0, 0 bgt SHORT G_M51640_IG21
- b SHORT G_M51640_IG10 - ;; size=30 bbWeight=1 PerfScore 11.00 -G_M51640_IG09: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r6+0x70] - ldr r3, [r3+0x18] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 0 - bne SHORT G_M51640_IG21 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M51640_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff cmp r6, r0 bne SHORT G_M51640_IG20
+ ;; size=40 bbWeight=1 PerfScore 14.00 +G_M51640_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
ldr r7, [r5+0x10] ; gcrRegs +[r7]
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M51640_IG11: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M51640_IG09: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5] cmp r7, 0
- beq SHORT G_M51640_IG13
+ beq SHORT G_M51640_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG10: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7 ; gcrRegs +[r0] ldr r4, [r7] @@ -138,7 +119,7 @@ G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- bgt SHORT G_M51640_IG14
+ bgt SHORT G_M51640_IG12
mov r0, r7 ; gcrRegs +[r0] ldr r3, [r4+0x34] @@ -148,27 +129,27 @@ G_M51640_IG12: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byre mov r7, r0 ; gcrRegs +[r7] cmp r7, 0
- bne SHORT G_M51640_IG12
+ bne SHORT G_M51640_IG10
;; size=30 bbWeight=8 PerfScore 112.00
-G_M51640_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] movs r0, 0
- b SHORT G_M51640_IG15
+ b SHORT G_M51640_IG13
;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51640_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51640_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r0, 0 bne SHORT G_M51640_IG21 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M51640_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51640_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M51640_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M51640_IG15: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51640_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51640_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] mov r0, r4 ; gcrRegs +[r0] @@ -178,7 +159,7 @@ G_M51640_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:get_OriginalDefinition():Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this b SHORT G_M51640_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M51640_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG17: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4] ldr r3, [r0] ldr r3, [r3+0x34] @@ -186,10 +167,38 @@ G_M51640_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre blx r3 // <unknown method> mov r5, r0 ; gcrRegs +[r5]
- b SHORT G_M51640_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M51640_IG20: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r5] + movw r0, 0xd1ff
; gcrRegs -[r0]
+ movt r0, 0xd1ff + cmp r6, r0 + beq SHORT G_M51640_IG04 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M51640_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + mov r0, r5 + ; gcrRegs +[r0] + ldr r3, [r6+0x34] + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 9 + bne SHORT G_M51640_IG20 + b SHORT G_M51640_IG04 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M51640_IG19: ; bbWeight=0, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + ldr r3, [r6+0x70] + ldr r3, [r3+0x18] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 0 + bne SHORT G_M51640_IG21 + movw r3, 0xd1ff
...

+28 (+11.38%) : 464512.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)

@@ -10,22 +10,21 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Globalization.CultureData>
-; V01 loc0 [V01,T01] ( 9, 5.20) ref -> r5 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T01] ( 13, 3.22) ref -> r5 class-hnd exact single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V05 tmp3 [V05,T02] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 2, 0.01) ubyte -> r0 "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp6 [V08,T03] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V08 tmp6 [V08,T03] ( 2, 0.01) ubyte -> r0 "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V10 cse0 [V10,T04] ( 6, 2.20) int -> r6 multi-def "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M39111_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+G_M39111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + push {r4,r5,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 @@ -50,16 +49,34 @@ G_M39111_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movw r0, 0xd1ff movt r0, 0xd1ff cmp r5, r0
- beq SHORT G_M39111_IG11
+ beq SHORT G_M39111_IG17
;; size=14 bbWeight=1 PerfScore 5.00 G_M39111_IG04: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq SHORT G_M39111_IG06 - ldr r6, [r5+0x04] - cmp r6, 6 - bne SHORT G_M39111_IG06 - ;; size=10 bbWeight=0.05 PerfScore 0.25
+ bne SHORT G_M39111_IG08 + ;; size=4 bbWeight=0.05 PerfScore 0.10
G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r5, r0 + beq SHORT G_M39111_IG17 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M39111_IG06: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + cmp r5, 0 + beq SHORT G_M39111_IG12 + ldr r0, [r5+0x04] + cmp r0, 6 + bne SHORT G_M39111_IG12 + ;; size=10 bbWeight=0.05 PerfScore 0.25 +G_M39111_IG07: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + b SHORT G_M39111_IG14 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M39111_IG08: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5+0x04] + cmp r0, 6 + bne SHORT G_M39111_IG05 + ;; size=6 bbWeight=0.05 PerfScore 0.15 +G_M39111_IG09: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -70,12 +87,22 @@ G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG10 + movs r0, 0 + b SHORT G_M39111_IG11 + ;; size=38 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG10: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M39111_IG11: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- lsls r2, r6, 1
+ ldr r2, [r5+0x04] + lsls r2, r2, 1
add r0, r5, 8 ; byrRegs +[r0] movw r1, 0xd1ff @@ -86,22 +113,19 @@ G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; byrRegs -[r0] cmp r0, 0
- bne SHORT G_M39111_IG11 - ;; size=72 bbWeight=1 PerfScore 25.00 -G_M39111_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r5, r0 - beq SHORT G_M39111_IG11 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M39111_IG07: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - beq SHORT G_M39111_IG09 - ldr r6, [r5+0x04] - cmp r6, 6 - bne SHORT G_M39111_IG09 - ;; size=10 bbWeight=0.05 PerfScore 0.25 -G_M39111_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M39111_IG17 + b SHORT G_M39111_IG05 + ;; size=46 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r5] + ldr r0, [r4+0x04] + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M39111_IG13: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M39111_IG14: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] +[r5]
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -112,12 +136,22 @@ G_M39111_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG15 + movs r0, 0 + b SHORT G_M39111_IG16 + ;; size=38 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG15: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M39111_IG16: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- lsls r2, r6, 1
+ ldr r2, [r5+0x04] + lsls r2, r2, 1
add r0, r5, 8 ; byrRegs +[r0] movw r1, 0xd1ff @@ -129,25 +163,17 @@ G_M39111_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r5] ; byrRegs -[r0] cmp r0, 0
- bne SHORT G_M39111_IG11 - ;; size=72 bbWeight=1 PerfScore 25.00 -G_M39111_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ldr r0, [r4+0x04] - ; gcrRegs +[r0] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M39111_IG10: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M39111_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0]
+ beq SHORT G_M39111_IG12 + ;; size=44 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x0C] ; gcrRegs +[r0] ;; size=2 bbWeight=0 PerfScore 0.00
-G_M39111_IG12: ; bbWeight=0, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M39111_IG18: ; bbWeight=0, epilog, nogc, extend + pop {r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 246, prolog size 8, PerfScore 75.50, instruction count 87, allocated bytes for code 246 (MethodHash=c8596738) for method System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
+; Total bytes of code 274, prolog size 8, PerfScore 25.71, instruction count 101, allocated bytes for code 274 (MethodHash=c8596738) for method System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
; ============================================================ Unwind Info: @@ -159,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 123 (0x0007b) Actual length = 246 (0x0000f6)
+ Function Length : 137 (0x00089) Actual length = 274 (0x000112)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -171,7 +197,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end FF end

+28 (+11.38%) : 465832.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)

@@ -10,22 +10,21 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Globalization.CultureData>
-; V01 loc0 [V01,T01] ( 9, 5.20) ref -> r5 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T01] ( 13, 3.23) ref -> r5 class-hnd exact single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V05 tmp3 [V05,T02] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 2, 0.01) ubyte -> r0 "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp6 [V08,T03] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V08 tmp6 [V08,T03] ( 2, 0.01) ubyte -> r0 "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V10 cse0 [V10,T04] ( 6, 2.20) int -> r6 multi-def "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M39111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r4,r5,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 @@ -50,16 +49,27 @@ G_M39111_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movw r0, 0xd1ff movt r0, 0xd1ff cmp r5, r0
- beq SHORT G_M39111_IG12
+ beq SHORT G_M39111_IG16
;; size=14 bbWeight=1 PerfScore 5.00 G_M39111_IG04: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq SHORT G_M39111_IG06 - ldr r6, [r5+0x04] - cmp r6, 6 - bne SHORT G_M39111_IG06
+ beq SHORT G_M39111_IG05 + ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG07
;; size=10 bbWeight=0.05 PerfScore 0.26 G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r5, r0 + beq SHORT G_M39111_IG16 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M39111_IG06: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + cmp r5, 0 + beq SHORT G_M39111_IG11 + b SHORT G_M39111_IG10 + ;; size=6 bbWeight=0.05 PerfScore 0.15 +G_M39111_IG07: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -70,12 +80,22 @@ G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG08 + movs r0, 0 + b SHORT G_M39111_IG09 + ;; size=38 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG08: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M39111_IG09: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- lsls r2, r6, 1
+ ldr r2, [r5+0x04] + lsls r2, r2, 1
add r0, r5, 8 ; byrRegs +[r0] movw r1, 0xd1ff @@ -86,33 +106,24 @@ G_M39111_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; byrRegs -[r0] cmp r0, 0
- bne SHORT G_M39111_IG12 - ;; size=72 bbWeight=1 PerfScore 25.00 -G_M39111_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r5, r0 - beq SHORT G_M39111_IG12 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M39111_IG07: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - bne SHORT G_M39111_IG10 - ;; size=4 bbWeight=0.05 PerfScore 0.10 -G_M39111_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ bne SHORT G_M39111_IG16 + b SHORT G_M39111_IG05 + ;; size=46 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG10: ; bbWeight=0.05, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG13 + ;; size=6 bbWeight=0.05 PerfScore 0.15 +G_M39111_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] ldr r0, [r4+0x04] ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M39111_IG09: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M39111_IG12: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M39111_IG10: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39111_IG13: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r5]
- ldr r6, [r5+0x04] - cmp r6, 6 - bne SHORT G_M39111_IG08 - ;; size=6 bbWeight=0.05 PerfScore 0.15 -G_M39111_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -123,12 +134,22 @@ G_M39111_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ldr r0, [r5+0x04] + cmp r0, 6 + beq SHORT G_M39111_IG14 + movs r0, 0 + b SHORT G_M39111_IG15 + ;; size=38 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG14: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M39111_IG15: ; bbWeight=0.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- lsls r2, r6, 1
+ ldr r2, [r5+0x04] + lsls r2, r2, 1
add r0, r5, 8 ; byrRegs +[r0] movw r1, 0xd1ff @@ -140,17 +161,17 @@ G_M39111_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r5] ; byrRegs -[r0] cmp r0, 0
- beq SHORT G_M39111_IG08 - ;; size=72 bbWeight=1 PerfScore 25.00 -G_M39111_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ beq SHORT G_M39111_IG11 + ;; size=44 bbWeight=0.00 PerfScore 0.05 +G_M39111_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x0C] ; gcrRegs +[r0] ;; size=2 bbWeight=0 PerfScore 0.00
-G_M39111_IG13: ; bbWeight=0, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M39111_IG17: ; bbWeight=0, epilog, nogc, extend + pop {r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 246, prolog size 8, PerfScore 75.51, instruction count 87, allocated bytes for code 246 (MethodHash=c8596738) for method System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
+; Total bytes of code 274, prolog size 8, PerfScore 25.78, instruction count 101, allocated bytes for code 274 (MethodHash=c8596738) for method System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
; ============================================================ Unwind Info: @@ -162,7 +183,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 123 (0x0007b) Actual length = 246 (0x0000f6)
+ Function Length : 137 (0x00089) Actual length = 274 (0x000112)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -174,7 +195,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end FF end

libraries.pmi.linux.arm.checked.mch

-10 (-4.46%) : 82538.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)

@@ -10,29 +10,29 @@ ; ; V00 this [V00,T09] ( 4, 3.50) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol> ; V01 arg1 [V01,T05] ( 3, 6 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
-; V02 arg2 [V02,T04] ( 5, 7 ) struct (12) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]> -; V03 arg3 [V03 ] ( 4, 6.69) struct ( 4) [sp+0x3C] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
+; V02 arg2 [V02,T04] ( 5, 7 ) struct (12) [sp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]> +; V03 arg3 [V03 ] ( 4, 6.69) struct ( 4) [sp+0x34] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration]> ;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration]> ; V06 loc2 [V06,T01] ( 4, 14 ) ref -> r8 class-hnd <Microsoft.CodeAnalysis.SyntaxReference> ; V07 loc3 [V07 ] ( 4, 8 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Text.TextSpan> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T00] ( 2, 16 ) ref -> r10 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration>
+; V09 tmp1 [V09,T00] ( 2, 16 ) ref -> r0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> ;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration> ;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration]> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.SingleNamespaceDeclaration]> ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-;* V15 tmp7 [V15,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V16 tmp8 [V16,T14] ( 2, 2.77) ref -> r0 class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> -;* V17 tmp9 [V17,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp7 [V15,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V16 tmp8 [V16,T14] ( 2, 2.77) ref -> r3 class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> +;* V17 tmp9 [V17,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Text.TextSpan> ;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V21 tmp13 [V21,T07] ( 2, 8 ) int -> r2 "impAppendStmt" ;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp15 [V23,T03] ( 4, 12.50) int -> r8 "Inline stloc first use temp"
-; V24 tmp16 [V24 ] ( 4, 6.69) ref -> [sp+0x3C] do-not-enreg[X] addr-exposed single-def "field V03._source (fldOffset=0x0)" P-DEP
+; V24 tmp16 [V24 ] ( 4, 6.69) ref -> [sp+0x34] do-not-enreg[X] addr-exposed single-def "field V03._source (fldOffset=0x0)" P-DEP
; V25 tmp17 [V25,T11] ( 2, 4.50) ref -> r5 single-def "field V04._array (fldOffset=0x0)" P-INDEP ; V26 tmp18 [V26,T02] ( 4, 12.50) int -> r9 "field V04._index (fldOffset=0x4)" P-INDEP ;* V27 tmp19 [V27 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP @@ -40,7 +40,7 @@ ; V29 tmp21 [V29 ] ( 2, 4 ) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V07.<Length>k__BackingField (fldOffset=0x4)" P-DEP ;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "field V10.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ;* V31 tmp23 [V31 ] ( 0, 0 ) int -> zero-ref "field V10.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V32 tmp24 [V32,T17] ( 3, 1.50) ref -> r5 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V32 tmp24 [V32,T16] ( 3, 1.50) ref -> r5 single-def "field V12.array (fldOffset=0x0)" P-INDEP
; V33 tmp25 [V33,T18] ( 2, 1 ) ref -> r5 single-def "field V13._array (fldOffset=0x0)" P-INDEP ;* V34 tmp26 [V34,T19] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x4)" P-INDEP ; V35 tmp27 [V35,T08] ( 3, 6 ) int -> r0 "field V18.<Start>k__BackingField (fldOffset=0x0)" P-INDEP @@ -49,13 +49,12 @@ ; V38 tmp30 [V38,T06] ( 2, 8 ) ref -> r0 "argument with side effect" ; V39 cse0 [V39,T10] ( 3, 5 ) int -> r7 "CSE - aggressive" ;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M16389_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r2,r3}
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr} - sub sp, 12 - add r11, sp, 40
+ push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 32
movs r2, 0 str r2, [sp] str r2, [sp+0x04] @@ -63,9 +62,9 @@ G_M16389_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r5] mov r4, r1 ; gcrRegs +[r4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=20 bbWeight=1 PerfScore 8.00
G_M16389_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldrb r6, [sp+0x30]
+ ldrb r6, [sp+0x28]
mov r0, r5 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -81,11 +80,10 @@ G_M16389_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M16389_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M16389_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4-r5] ldr r0, [r5+0x18] @@ -95,42 +93,49 @@ G_M16389_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5 mov r8, 0 mov r9, 0 cmp r7, 0
- ble SHORT G_M16389_IG10
+ ble SHORT G_M16389_IG11
;; size=18 bbWeight=0.50 PerfScore 3.50 G_M16389_IG06: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] add r0, r5, 8 ; byrRegs +[r0] lsl r3, r8, 2
- ldr r10, [r0+r3] - ; gcrRegs +[r10] - ldr r0, [sp+0x3C]
+ ldr r0, [r0+r3]
; gcrRegs +[r0] ; byrRegs -[r0]
- cmp r0, 0 - bne SHORT G_M16389_IG12 - ;; size=18 bbWeight=4 PerfScore 24.00 -G_M16389_IG07: ; bbWeight=4, gcrefRegs=0430 {r4 r5 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - ldr r8, [r10+0x08]
+ ldr r3, [sp+0x34] + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M16389_IG08 + ;; size=16 bbWeight=4 PerfScore 24.00 +G_M16389_IG07: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r3] + ldr r3, [sp+0x34] + ; gcrRegs +[r3] + ldr r3, [r3+0x10] + ; gcrRegs -[r3] + dmb 15 + cmp r3, 0 + bne SHORT G_M16389_IG13 + ;; size=12 bbWeight=0.69 PerfScore 3.46 +G_M16389_IG08: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r8, [r0+0x08]
; gcrRegs +[r8] mov r0, r8
- ; gcrRegs +[r0]
ldr r3, [r8] ldr r3, [r3+0x2C] ldr r3, [r3+0x10] blx r3 // <unknown method>
- ; gcrRegs -[r10]
cmp r0, r4
- bne SHORT G_M16389_IG09
+ bne SHORT G_M16389_IG10
;; size=20 bbWeight=4 PerfScore 32.00
-G_M16389_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+G_M16389_IG09: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] cmp r6, 0 beq SHORT G_M16389_IG03 mov r0, r8 ; gcrRegs +[r0]
- ldr r1, [sp+0x3C]
+ ldr r1, [sp+0x34]
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -144,48 +149,35 @@ G_M16389_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {} ldr r2, [r0] blx r3 // <unknown method> ; gcrRegs -[r0]
- ldr r0, [sp+0x34] - ldr r3, [sp+0x38]
+ ldr r0, [sp+0x2C] + ldr r3, [sp+0x30]
ldr r2, [sp] ldr r1, [sp+0x04] adds r2, r2, r1 cmp r2, r0
- blt SHORT G_M16389_IG09
+ blt SHORT G_M16389_IG10
adds r0, r0, r3 ldr r3, [sp] cmp r0, r3 bge SHORT G_M16389_IG03 ;; size=58 bbWeight=2 PerfScore 50.00
-G_M16389_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M16389_IG10: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
add r8, r9, 1 mov r9, r8 cmp r7, r9 bgt SHORT G_M16389_IG06 ;; size=10 bbWeight=4 PerfScore 16.00
-G_M16389_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16389_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4-r5] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M16389_IG11: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+G_M16389_IG12: ; bbWeight=0.50, epilog, nogc, extend + pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr
- ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M16389_IG12: ; bbWeight=0.69, gcVars=00000000 {}, gcrefRegs=0430 {r4 r5 r10}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5 r10] - ldr r0, [sp+0x3C] - ; gcrRegs +[r0] - ldr r0, [r0+0x10] - ; gcrRegs -[r0] - dmb 15 - cmp r0, 0 - bne SHORT G_M16389_IG13 - b SHORT G_M16389_IG07 - ;; size=14 bbWeight=0.69 PerfScore 4.15 -G_M16389_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r5 r10] - add r0, sp, 60
+ ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M16389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + add r0, sp, 52
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -193,7 +185,7 @@ G_M16389_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 18, PerfScore 152.65, instruction count 90, allocated bytes for code 224 (MethodHash=78cfbffa) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)
+; Total bytes of code 214, prolog size 16, PerfScore 149.96, instruction count 86, allocated bytes for code 214 (MethodHash=78cfbffa) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -205,7 +197,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
+ Function Length : 107 (0x0006b) Actual length = 214 (0x0000d6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -216,13 +208,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- 03 add sp, sp, #12 ; opsize 16 - DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
+ AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
EC 0C pop {r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- 03 add sp, sp, #12 ; opsize 16 - DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
+ AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

-18 (-4.41%) : 115733.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)

@@ -67,10 +67,19 @@ G_M15591_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [sp+0x24] ; gcrRegs +[r0] cmp r0, 0
- bne G_M15591_IG28 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M15591_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M15591_IG04 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M15591_IG03: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne G_M15591_IG29 + ;; size=14 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -79,10 +88,19 @@ G_M15591_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GetMembersAndInitializers():Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializers:this ldr r0, [sp+0x24] cmp r0, 0
- bne G_M15591_IG27 - ;; size=22 bbWeight=1 PerfScore 8.00 -G_M15591_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M15591_IG06 + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M15591_IG05: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne G_M15591_IG29 + ;; size=14 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r5, [r4] @@ -93,13 +111,13 @@ G_M15591_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movs r7, 0 mov r8, 0 cmp r6, 0
- ble SHORT G_M15591_IG09
+ ble SHORT G_M15591_IG11
;; size=22 bbWeight=1 PerfScore 10.00
-G_M15591_IG05: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+G_M15591_IG07: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
add r9, r0, 8 ; byrRegs +[r9] ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15591_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz
+G_M15591_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0] lsls r0, r7, 2 ldr r7, [r9+r0] @@ -112,9 +130,9 @@ G_M15591_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, by blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 11
- beq SHORT G_M15591_IG08
+ beq SHORT G_M15591_IG10
;; size=24 bbWeight=4 PerfScore 36.00
-G_M15591_IG07: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0200 {r9}, byref
+G_M15591_IG09: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0200 {r9}, byref
mov r0, r7 ; gcrRegs +[r0] ldr r1, [sp+0x24] @@ -124,21 +142,30 @@ G_M15591_IG07: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0200 {r9}, blx r3 // <unknown method> ; gcrRegs -[r0-r1 r7] ;; size=12 bbWeight=2 PerfScore 10.00
-G_M15591_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz
+G_M15591_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz
add r7, r8, 1 mov r8, r7 cmp r6, r8
- bgt SHORT G_M15591_IG06
+ bgt SHORT G_M15591_IG08
;; size=10 bbWeight=4 PerfScore 16.00
-G_M15591_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r9] ldr r0, [sp+0x24] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M15591_IG26
+ beq SHORT G_M15591_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M15591_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG12: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -147,10 +174,19 @@ G_M15591_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_BaseTypeNoUseSiteDiagnostics():Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this ldr r0, [sp+0x24] cmp r0, 0
- bne SHORT G_M15591_IG25
+ beq SHORT G_M15591_IG15
;; size=20 bbWeight=1 PerfScore 8.00
-G_M15591_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG14: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG15: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -159,10 +195,19 @@ G_M15591_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_InterfacesNoUseSiteDiagnostics():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this ldr r0, [sp+0x24] cmp r0, 0
- bne SHORT G_M15591_IG24
+ beq SHORT G_M15591_IG17
;; size=20 bbWeight=1 PerfScore 8.00
-G_M15591_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG16: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG17: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r5+0x74] @@ -170,10 +215,19 @@ G_M15591_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ldr r0, [sp+0x24] cmp r0, 0
- bne SHORT G_M15591_IG23
+ beq SHORT G_M15591_IG19
;; size=14 bbWeight=1 PerfScore 7.00
-G_M15591_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG18: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG19: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r5+0x94] @@ -181,23 +235,32 @@ G_M15591_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ldr r3, [r0+0x04] cmp r3, 0
- beq SHORT G_M15591_IG15
+ beq SHORT G_M15591_IG21
;; size=16 bbWeight=1 PerfScore 7.00
-G_M15591_IG14: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+G_M15591_IG20: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol:EnsureAllConstraintsAreResolved(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]) ; gcrRegs -[r0] ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M15591_IG15: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG21: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x24] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M15591_IG22
+ beq SHORT G_M15591_IG23
;; size=6 bbWeight=1 PerfScore 3.00
-G_M15591_IG16: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG22: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG23: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r5+0x58] @@ -205,10 +268,19 @@ G_M15591_IG16: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ldr r0, [sp+0x24] cmp r0, 0
- bne SHORT G_M15591_IG21
+ beq SHORT G_M15591_IG25
;; size=14 bbWeight=1 PerfScore 7.00
-G_M15591_IG17: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG24: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10] + ; gcrRegs -[r0] + dmb 15 + cmp r0, 0 + bne SHORT G_M15591_IG29 + ;; size=12 bbWeight=0.17 PerfScore 0.87 +G_M15591_IG25: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r1, [sp+0x24] @@ -221,10 +293,19 @@ G_M15591_IG17: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [sp+0x24] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M15591_IG20
+ beq SHORT G_M15591_IG27
;; size=22 bbWeight=1 PerfScore 9.00
-G_M15591_IG18: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M15591_IG26: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ ldr r0, [sp+0x24] + ; gcrRegs +[r0] + ldr r0, [r0+0x10]
...

-14 (-4.38%) : 101704.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)

@@ -39,9 +39,9 @@ ; V28 tmp23 [V28,T12] ( 3, 1.50) long -> [sp+0x08] do-not-enreg[F] "field V18._dateData (fldOffset=0x0)" P-INDEP ;* V29 tmp24 [V29 ] ( 0, 0 ) long -> zero-ref "field V20._dateData (fldOffset=0x0)" P-INDEP ; V30 cse0 [V30,T05] ( 5, 3.50) int -> r6 "CSE - aggressive"
-; V31 rat0 [V31,T06] ( 3, 2.20) int -> r0 "field V07.lo (fldOffset=0x0)" P-INDEP -; V32 rat1 [V32,T07] ( 3, 2.20) int -> r2 "field V07.hi (fldOffset=0x4)" P-INDEP -; V33 rat2 [V33,T21] ( 3, 1.20) int -> r3 "field V09.lo (fldOffset=0x0)" P-INDEP
+; V31 rat0 [V31,T06] ( 2, 2 ) int -> r0 "field V07.lo (fldOffset=0x0)" P-INDEP +; V32 rat1 [V32,T07] ( 2, 2 ) int -> r2 "field V07.hi (fldOffset=0x4)" P-INDEP +; V33 rat2 [V33,T21] ( 3, 1.20) int -> r0 "field V09.lo (fldOffset=0x0)" P-INDEP
; V34 rat3 [V34,T22] ( 3, 1.20) int -> r2 "field V09.hi (fldOffset=0x4)" P-INDEP ; V35 rat4 [V35,T13] ( 3, 1.50) int -> r0 "field V14.lo (fldOffset=0x0)" P-INDEP ; V36 rat5 [V36,T14] ( 3, 1.50) int -> r2 "field V14.hi (fldOffset=0x4)" P-INDEP @@ -82,7 +82,7 @@ G_M41407_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b str r1, [sp+0x2C] ldr r1, [r5] cmp r1, r6
- bne SHORT G_M41407_IG07
+ bne SHORT G_M41407_IG08
;; size=16 bbWeight=1 PerfScore 8.00 G_M41407_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4] @@ -97,19 +97,27 @@ G_M41407_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r2, [sp+0x2C] and r0, r0, 0 and r2, r2, -0x40000000
- orrs r3, r0, r2 - beq SHORT G_M41407_IG13 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M41407_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ orrs r0, r2 + beq SHORT G_M41407_IG09 + ;; size=26 bbWeight=1 PerfScore 11.00 +G_M41407_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
+ ldr r0, [sp+0x20] + ldr r2, [sp+0x24] + and r0, r0, 0 + and r2, r2, -0x40000000 + orrs r3, r0, r2 + beq SHORT G_M41407_IG09 + ;; size=18 bbWeight=0.50 PerfScore 3.00 +G_M41407_IG06: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
eor r2, r2, 0x40000000 orrs r0, r2
- beq SHORT G_M41407_IG08
+ bne SHORT G_M41407_IG14
;; size=8 bbWeight=0.20 PerfScore 0.59
-G_M41407_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M41407_IG08 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M41407_IG07: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M41407_IG07: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M41407_IG14 + ;; size=2 bbWeight=0.19 PerfScore 0.19 +G_M41407_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5] mov r1, r5 ; gcrRegs +[r1] @@ -121,18 +129,26 @@ G_M41407_IG07: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ; gcrRegs -[r1] b SHORT G_M41407_IG04 ;; size=18 bbWeight=0.25 PerfScore 1.75
-G_M41407_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M41407_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
- ldr r0, [sp+0x20] - ldr r2, [sp+0x24] - and r3, r0, 0 - and r2, r2, -0x40000000 - orrs r0, r3, r2 - beq SHORT G_M41407_IG13 - ;; size=18 bbWeight=0.50 PerfScore 3.00 -G_M41407_IG09: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M41407_IG11 - ;; size=2 bbWeight=0.20 PerfScore 0.20
+ ldr r0, [sp+0x28] + ldr r2, [sp+0x2C] + str r0, [sp+0x10] + str r2, [sp+0x14] + ldr r0, [sp+0x10] + ldr r2, [sp+0x14] + mvn r3, -0x40000000 + ands r2, r3 + ldr r3, [sp+0x20] + ldr r1, [sp+0x24] + mvn lr, -0x40000000 + and r1, r1, lr + cmp r3, r0 + sbcs lr, r1, r2 + bge SHORT G_M41407_IG11 + movs r0, 1 + b SHORT G_M41407_IG13 + ;; size=42 bbWeight=0.50 PerfScore 8.50
G_M41407_IG10: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r5] mov r1, r4 @@ -145,49 +161,22 @@ G_M41407_IG10: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcrRegs -[r1] b SHORT G_M41407_IG03 ;; size=18 bbWeight=0.25 PerfScore 1.75
-G_M41407_IG11: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M41407_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4-r5]
- eor r2, r2, 0x40000000 - orrs r2, r3 - bne SHORT G_M41407_IG17 - ;; size=8 bbWeight=0.20 PerfScore 0.59 -G_M41407_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M41407_IG17 - ;; size=2 bbWeight=0.19 PerfScore 0.19 -G_M41407_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r0, [sp+0x28] - ldr r3, [sp+0x2C] - str r0, [sp+0x10] - str r3, [sp+0x14] - ldr r0, [sp+0x10] - ldr r2, [sp+0x14] - mvn r3, -0x40000000 - ands r2, r3 - ldr r3, [sp+0x20] - ldr r1, [sp+0x24] - mvn lr, -0x40000000 - and r1, r1, lr - cmp r3, r0 - sbcs lr, r1, r2 - bge SHORT G_M41407_IG14 - movs r0, 1 - b SHORT G_M41407_IG16 - ;; size=42 bbWeight=0.50 PerfScore 8.50 -G_M41407_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r0, r3 sbcs r0, r2, r1
- bge SHORT G_M41407_IG15
+ bge SHORT G_M41407_IG12
mov r0, -1
- b SHORT G_M41407_IG16
+ b SHORT G_M41407_IG13
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M41407_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41407_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41407_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M41407_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 52 pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M41407_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M41407_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movs r2, 2 str r2, [sp] ldr r2, [sp+0x28] @@ -220,26 +209,26 @@ G_M41407_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by and r1, r1, lr cmp r2, r0 sbcs lr, r1, r3
- bge SHORT G_M41407_IG18
+ bge SHORT G_M41407_IG15
movs r0, 1
- b SHORT G_M41407_IG20
+ b SHORT G_M41407_IG17
;; size=86 bbWeight=0.50 PerfScore 17.50
-G_M41407_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M41407_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r0, r2 sbcs r0, r3, r1
- bge SHORT G_M41407_IG19
+ bge SHORT G_M41407_IG16
mov r0, -1
- b SHORT G_M41407_IG20
+ b SHORT G_M41407_IG17
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M41407_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41407_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41407_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M41407_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 52 pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 320, prolog size 10, PerfScore 71.58, instruction count 126, allocated bytes for code 320 (MethodHash=9cc45e40) for method System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
+; Total bytes of code 306, prolog size 10, PerfScore 70.28, instruction count 121, allocated bytes for code 306 (MethodHash=9cc45e40) for method System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -251,7 +240,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 160 (0x000a0) Actual length = 320 (0x000140)
+ Function Length : 153 (0x00099) Actual length = 306 (0x000132)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+5.74%) : 195846.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)

@@ -17,7 +17,7 @@ ; V06 loc5 [V06,T25] ( 4, 8 ) ref -> r0 class-hnd <System.Reflection.Assembly> ;# 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 "non-inline candidate call" <<unknown class>>
-; V09 tmp2 [V09,T46] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T42] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> ;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -33,9 +33,9 @@ ;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V23 tmp16 [V23 ] ( 4, 5.98) struct ( 8) [sp+0x10] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp17 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp18 [V25,T32] ( 2, 7.93) int -> r0 "Span.get_Item index" -; V26 tmp19 [V26,T39] ( 2, 3.97) ubyte -> r0 "Inline return value spill temp" -; V27 tmp20 [V27,T12] ( 4, 15.87) ushort -> r0 "Inlining Arg"
+; V25 tmp18 [V25,T32] ( 4, 7.93) int -> r3 "Span.get_Item index" +; V26 tmp19 [V26,T45] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V27 tmp20 [V27,T17] ( 4, 11.90) ushort -> r0 "Inlining Arg"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -43,8 +43,8 @@ ;* V32 tmp25 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V35 tmp28 [V35,T43] ( 2, 3.93) ubyte -> r0 "Inline return value spill temp" -; V36 tmp29 [V36,T14] ( 4, 15.80) ushort -> r0 "Inlining Arg"
+; V35 tmp28 [V35,T46] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V36 tmp29 [V36,T19] ( 6, 11.87) ushort -> r0 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V38 tmp31 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -54,18 +54,18 @@ ;* V43 tmp36 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V44 tmp37 [V44 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ; V45 tmp38 [V45,T07] ( 5, 20 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String>
-; V46 tmp39 [V46,T09] ( 5, 16 ) int -> r3 "Inlining Arg"
+; V46 tmp39 [V46,T09] ( 5, 16 ) int -> r10 "Inlining Arg"
;* V47 tmp40 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V48 tmp41 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp42 [V49,T20] ( 3, 12 ) int -> r10 "Inlining Arg"
+; V49 tmp42 [V49,T16] ( 3, 12 ) int -> r10 "Inlining Arg"
; V50 tmp43 [V50,T27] ( 2, 8 ) byref -> r7 "Inlining Arg" ;* V51 tmp44 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V52 tmp45 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V53 tmp46 [V53 ] ( 4, 5.98) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V54 tmp47 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V55 tmp48 [V55,T33] ( 2, 7.93) int -> r0 "Span.get_Item index" -; V56 tmp49 [V56,T40] ( 2, 3.97) ubyte -> r0 "Inline return value spill temp" -; V57 tmp50 [V57,T13] ( 4, 15.87) ushort -> r0 "Inlining Arg"
+; V55 tmp48 [V55,T33] ( 4, 7.93) int -> r3 "Span.get_Item index" +; V56 tmp49 [V56,T47] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V57 tmp50 [V57,T18] ( 4, 11.90) ushort -> r0 "Inlining Arg"
;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V59 tmp52 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V60 tmp53 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -73,8 +73,8 @@ ;* V62 tmp55 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V63 tmp56 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V64 tmp57 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V65 tmp58 [V65,T44] ( 2, 3.93) ubyte -> r0 "Inline return value spill temp" -; V66 tmp59 [V66,T15] ( 4, 15.80) ushort -> r0 "Inlining Arg"
+; V65 tmp58 [V65,T48] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V66 tmp59 [V66,T20] ( 6, 11.87) ushort -> r0 "Inlining Arg"
;* V67 tmp60 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V68 tmp61 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V69 tmp62 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -89,10 +89,10 @@ ;* V78 tmp71 [V78 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp73 [V80 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V81 tmp74 [V81,T24] ( 6, 9.97) byref -> r9 "field V16._reference (fldOffset=0x0)" P-INDEP -; V82 tmp75 [V82,T23] ( 6, 9.98) int -> r10 "field V16._length (fldOffset=0x4)" P-INDEP
+; V81 tmp74 [V81,T24] ( 7, 9.97) byref -> r9 "field V16._reference (fldOffset=0x0)" P-INDEP +; V82 tmp75 [V82,T23] ( 7, 9.98) int -> r10 "field V16._length (fldOffset=0x4)" P-INDEP
; V83 tmp76 [V83,T34] ( 2, 4 ) byref -> r9 "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V84 tmp77 [V84,T45] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
+;* V84 tmp77 [V84,T41] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
;* V85 tmp78 [V85 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp79 [V86 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP ; V87 tmp80 [V87 ] ( 3, 4.00) byref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V23._reference (fldOffset=0x0)" P-DEP @@ -109,7 +109,7 @@ ;* V98 tmp91 [V98 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP ;* V99 tmp92 [V99 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp93 [V100 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x4)" P-INDEP
-; V101 tmp94 [V101,T37] ( 2, 3.97) byref -> r3 "field V34._reference (fldOffset=0x0)" P-INDEP
+; V101 tmp94 [V101,T37] ( 2, 3.97) byref -> r1 "field V34._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp95 [V102 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP ;* V103 tmp96 [V103 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V104 tmp97 [V104 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP @@ -121,10 +121,10 @@ ;* V110 tmp103 [V110 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP ;* V111 tmp104 [V111 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP ;* V112 tmp105 [V112 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V113 tmp106 [V113,T41] ( 2, 3.93) byref -> r3 "field V43._reference (fldOffset=0x0)" P-INDEP
+; V113 tmp106 [V113,T39] ( 2, 3.93) byref -> r1 "field V43._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp107 [V114 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP
-; V115 tmp108 [V115,T31] ( 6, 7.97) byref -> r7 "field V44._reference (fldOffset=0x0)" P-INDEP -; V116 tmp109 [V116,T30] ( 6, 7.98) int -> r10 "field V44._length (fldOffset=0x4)" P-INDEP
+; V115 tmp108 [V115,T31] ( 7, 7.97) byref -> r7 "field V44._reference (fldOffset=0x0)" P-INDEP +; V116 tmp109 [V116,T30] ( 7, 7.98) int -> r10 "field V44._length (fldOffset=0x4)" P-INDEP
; V117 tmp110 [V117,T35] ( 2, 4 ) byref -> r7 "field V47._reference (fldOffset=0x0)" P-INDEP ; V118 tmp111 [V118,T36] ( 2, 4 ) int -> r10 "field V47._length (fldOffset=0x4)" P-INDEP ;* V119 tmp112 [V119 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP @@ -143,7 +143,7 @@ ;* V132 tmp125 [V132 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP ;* V133 tmp126 [V133 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V134 tmp127 [V134 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x4)" P-INDEP
-; V135 tmp128 [V135,T38] ( 2, 3.97) byref -> r3 "field V64._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp128 [V135,T38] ( 2, 3.97) byref -> r1 "field V64._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp129 [V136 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP ;* V137 tmp130 [V137 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP ;* V138 tmp131 [V138 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP @@ -155,21 +155,21 @@ ;* V144 tmp137 [V144 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP ;* V145 tmp138 [V145 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP ;* V146 tmp139 [V146 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x4)" P-INDEP
-; V147 tmp140 [V147,T42] ( 2, 3.93) byref -> r3 "field V73._reference (fldOffset=0x0)" P-INDEP
+; V147 tmp140 [V147,T40] ( 2, 3.93) byref -> r1 "field V73._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp141 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x4)" P-INDEP ; V149 tmp142 [V149,T03] ( 3, 24 ) ref -> r0 "arr expr"
-; V150 tmp143 [V150,T17] ( 3, 12 ) ref -> r0 "arr expr" -; V151 tmp144 [V151,T18] ( 3, 12 ) ref -> r0 "arr expr" -; V152 tmp145 [V152,T19] ( 3, 12 ) ref -> r0 "arr expr"
+; V150 tmp143 [V150,T13] ( 3, 12 ) ref -> r0 "arr expr" +; V151 tmp144 [V151,T14] ( 3, 12 ) ref -> r0 "arr expr" +; V152 tmp145 [V152,T15] ( 3, 12 ) ref -> r0 "arr expr"
; V153 tmp146 [V153,T10] ( 2, 16 ) ref -> r2 "argument with side effect" ; V154 tmp147 [V154,T11] ( 2, 16 ) ref -> r7 "argument with side effect" ; V155 tmp148 [V155,T04] ( 3, 24 ) ref -> r0 "arr expr"
-; V156 tmp149 [V156,T47] ( 2, 0 ) ref -> r0 "argument with side effect" -; V157 tmp150 [V157,T48] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V156 tmp149 [V156,T43] ( 2, 0 ) ref -> r0 "argument with side effect" +; V157 tmp150 [V157,T44] ( 2, 0 ) ref -> r1 "argument with side effect"
; V158 tmp151 [V158,T28] ( 2, 8 ) ref -> r2 "argument with side effect"
-; V159 tmp152 [V159,T29] ( 2, 8 ) ref -> r7 "argument with side effect"
+; V159 tmp152 [V159,T29] ( 2, 8 ) ref -> r6 "argument with side effect"
; V160 cse0 [V160,T08] ( 6, 18 ) int -> r6 "CSE - moderate"
-; V161 cse1 [V161,T16] ( 6, 12 ) ref -> r1 multi-def "CSE - aggressive"
+; V161 cse1 [V161,T12] ( 6, 12 ) ref -> r1 multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x3C] ; ; Lcl frame size = 36 @@ -216,14 +216,14 @@ G_M34419_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, 0
- ble G_M34419_IG36
+ ble G_M34419_IG21
;; size=50 bbWeight=1 PerfScore 18.00 G_M34419_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r2, [r0+0x04] cmp r5, r2
- bhs G_M34419_IG37
+ bhs G_M34419_IG26
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -242,14 +242,14 @@ G_M34419_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre mov r7, r0 mov r8, 0 cmp r7, -1
- beq G_M34419_IG22
+ beq G_M34419_IG17
;; size=50 bbWeight=4 PerfScore 72.00 G_M34419_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r1, [r0+0x04] cmp r5, r1
- bhs G_M34419_IG37
+ bhs G_M34419_IG26
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -259,7 +259,7 @@ G_M34419_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre cmp r0, 0 bne SHORT G_M34419_IG05 cmp r7, 0
- bne G_M34419_IG39
+ bne G_M34419_IG32
mov r9, 0 mov r10, 0 b SHORT G_M34419_IG07 @@ -268,7 +268,7 @@ G_M34419_IG05: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, b ldr r1, [r0+0x04] ldr r1, [r0+0x04] cmp r1, r7
- blo G_M34419_IG39
+ blo G_M34419_IG32
add r9, r0, 8 ; byrRegs +[r9] cmp r7, 0 @@ -287,68 +287,44 @@ G_M34419_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M34419_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz cmp r10, 0
- beq SHORT G_M34419_IG15
+ beq SHORT G_M34419_IG10
;; size=6 bbWeight=2 PerfScore 4.00 G_M34419_IG08: ; bbWeight=1.98, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz ldrh r0, [r9] cmp r0, 256
- blo SHORT G_M34419_IG10 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte - cmp r0, 0 - bne SHORT G_M34419_IG21 - ;; size=26 bbWeight=1.98 PerfScore 17.85 -G_M34419_IG09: ; bbWeight=1.97, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz - b SHORT G_M34419_IG11 - ;; size=2 bbWeight=1.97 PerfScore 1.97 -G_M34419_IG10: ; bbWeight=1.98, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz - movw r3, 0xd1ff - movt r3, 0xd1ff - ldrb r0, [r3+r0] - ands r0, r0, 128 - cmp r0, 0 - bne SHORT G_M34419_IG21 - ;; size=18 bbWeight=1.98 PerfScore 11.90 -G_M34419_IG11: ; bbWeight=1.98, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz - add r0, r10, -1 - lsls r0, r0, 1 - ldrh r0, [r9+r0]
+ bhs G_M34419_IG27 + movw r1, 0xd1ff + movt r1, 0xd1ff + ldrb r1, [r1+r0] + ands r1, r1, 128 + cmp r1, 0 + bne SHORT G_M34419_IG16 + add r3, r10, -1 + lsls r1, r3, 1 + ldrh r0, [r9+r1]
cmp r0, 256
- blo SHORT G_M34419_IG14 - ;; size=16 bbWeight=1.98 PerfScore 9.92 -G_M34419_IG12: ; bbWeight=1.97, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte - cmp r0, 0 - bne SHORT G_M34419_IG21 - ;; size=16 bbWeight=1.97 PerfScore 11.80
...

+40 (+6.17%) : 201046.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T27] ( 3, 3 ) ref -> r3 this class-hnd single-def <System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction> ; V01 arg1 [V01,T28] ( 3, 3 ) ref -> r1 class-hnd single-def <System.CommandLine.ParseResult>
-; V02 loc0 [V02,T07] ( 4, 13 ) ref -> r5 class-hnd exact single-def <System.CommandLine.Parsing.DirectiveResult> -; V03 loc1 [V03,T06] ( 5, 15 ) int -> r6
+; V02 loc0 [V02,T03] ( 4, 13 ) ref -> r5 class-hnd exact single-def <System.CommandLine.Parsing.DirectiveResult> +; V03 loc1 [V03,T02] ( 5, 15 ) int -> r6
; V04 loc2 [V04,T00] ( 11, 22 ) ref -> r4 class-hnd <System.String>
-; V05 loc3 [V05,T08] ( 5, 10 ) int -> r7
+; V05 loc3 [V05,T04] ( 5, 10 ) int -> r7
; V06 loc4 [V06 ] ( 3, 6 ) struct ( 8) [sp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V07 loc5 [V07,T29] ( 2, 4 ) ref -> r7 class-hnd exact <System.String>
+; V07 loc5 [V07,T29] ( 2, 4 ) ref -> r9 class-hnd exact <System.String>
; V08 loc6 [V08 ] ( 2, 4 ) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -48,9 +48,9 @@ ;* V37 tmp28 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V38 tmp29 [V38 ] ( 4, 5.98) struct ( 8) [sp+0x10] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp30 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp31 [V40,T20] ( 2, 7.93) int -> r0 "Span.get_Item index" -; V41 tmp32 [V41,T38] ( 2, 3.97) ubyte -> r0 "Inline return value spill temp" -; V42 tmp33 [V42,T02] ( 4, 15.87) ushort -> r0 "Inlining Arg"
+; V40 tmp31 [V40,T20] ( 4, 7.93) int -> r10 "Span.get_Item index" +; V41 tmp32 [V41,T41] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V42 tmp33 [V42,T08] ( 4, 11.90) ushort -> r0 "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V44 tmp35 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V45 tmp36 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -58,8 +58,8 @@ ;* V47 tmp38 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V48 tmp39 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp40 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V50 tmp41 [V50,T42] ( 2, 3.93) ubyte -> r0 "Inline return value spill temp" -; V51 tmp42 [V51,T04] ( 4, 15.80) ushort -> r0 "Inlining Arg"
+; V50 tmp41 [V50,T42] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V51 tmp42 [V51,T10] ( 6, 11.87) ushort -> r0 "Inlining Arg"
;* V52 tmp43 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V53 tmp44 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V54 tmp45 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -71,15 +71,15 @@ ; V60 tmp51 [V60,T01] ( 4, 16 ) int -> r0 "Inlining Arg" ;* V61 tmp52 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V62 tmp53 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V63 tmp54 [V63,T11] ( 3, 12 ) int -> r4 "Inlining Arg" -; V64 tmp55 [V64,T14] ( 2, 8 ) byref -> r10 "Inlining Arg"
+; V63 tmp54 [V63,T07] ( 3, 12 ) int -> r4 "Inlining Arg" +; V64 tmp55 [V64,T14] ( 2, 8 ) byref -> r7 "Inlining Arg"
;* V65 tmp56 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V66 tmp57 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V67 tmp58 [V67 ] ( 4, 5.98) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V68 tmp59 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V69 tmp60 [V69,T21] ( 2, 7.93) int -> r0 "Span.get_Item index" -; V70 tmp61 [V70,T39] ( 2, 3.97) ubyte -> r0 "Inline return value spill temp" -; V71 tmp62 [V71,T03] ( 4, 15.87) ushort -> r0 "Inlining Arg"
+; V69 tmp60 [V69,T21] ( 4, 7.93) int -> r3 "Span.get_Item index" +; V70 tmp61 [V70,T43] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V71 tmp62 [V71,T09] ( 4, 11.90) ushort -> r0 "Inlining Arg"
;* V72 tmp63 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -87,8 +87,8 @@ ;* V76 tmp67 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V77 tmp68 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V78 tmp69 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V79 tmp70 [V79,T43] ( 2, 3.93) ubyte -> r0 "Inline return value spill temp" -; V80 tmp71 [V80,T05] ( 4, 15.80) ushort -> r0 "Inlining Arg"
+; V79 tmp70 [V79,T44] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V80 tmp71 [V80,T11] ( 6, 11.87) ushort -> r0 "Inlining Arg"
;* V81 tmp72 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V82 tmp73 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V83 tmp74 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -96,10 +96,10 @@ ;* V85 tmp76 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V86 tmp77 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp78 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V88 tmp79 [V88,T09] ( 3, 12 ) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp79 [V88,T05] ( 3, 12 ) ref -> r10 class-hnd exact "Inlining Arg" <System.String>
; V89 tmp80 [V89 ] ( 3, 12 ) ref -> [sp+0x04] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.String> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Generic.IReadOnlyList`1[System.String]>
-; V91 tmp82 [V91,T10] ( 3, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Collections.Generic.IReadOnlyList`1[System.String]>
+; V91 tmp82 [V91,T06] ( 3, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Collections.Generic.IReadOnlyList`1[System.String]>
; V92 tmp83 [V92 ] ( 2, 4 ) byref -> [sp+0x20] do-not-enreg[X] addr-exposed "field V06._reference (fldOffset=0x0)" P-DEP ; V93 tmp84 [V93 ] ( 3, 6 ) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V06._length (fldOffset=0x4)" P-DEP ; V94 tmp85 [V94 ] ( 2, 4 ) byref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V08._reference (fldOffset=0x0)" P-DEP @@ -122,10 +122,10 @@ ;* V111 tmp102 [V111 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ;* V112 tmp103 [V112 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp104 [V113 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
-; V114 tmp105 [V114,T18] ( 5, 7.97) byref -> r8 "field V32._reference (fldOffset=0x0)" P-INDEP -; V115 tmp106 [V115,T16] ( 5, 7.98) int -> r9 "field V32._length (fldOffset=0x4)" P-INDEP
+; V114 tmp105 [V114,T18] ( 6, 7.97) byref -> r8 "field V32._reference (fldOffset=0x0)" P-INDEP +; V115 tmp106 [V115,T16] ( 6, 7.98) int -> r9 "field V32._length (fldOffset=0x4)" P-INDEP
; V116 tmp107 [V116,T31] ( 2, 4 ) byref -> r8 "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V117 tmp108 [V117,T44] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
+;* V117 tmp108 [V117,T40] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
;* V118 tmp109 [V118 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp110 [V119 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP ; V120 tmp111 [V120 ] ( 3, 4 ) byref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V38._reference (fldOffset=0x0)" P-DEP @@ -142,7 +142,7 @@ ;* V131 tmp122 [V131 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP ;* V132 tmp123 [V132 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V133 tmp124 [V133 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP
-; V134 tmp125 [V134,T36] ( 2, 3.97) byref -> r3 "field V49._reference (fldOffset=0x0)" P-INDEP
+; V134 tmp125 [V134,T36] ( 2, 3.97) byref -> r1 "field V49._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp126 [V135 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP ;* V136 tmp127 [V136 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP ;* V137 tmp128 [V137 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP @@ -154,11 +154,11 @@ ;* V143 tmp134 [V143 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x4)" P-INDEP ;* V144 tmp135 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V145 tmp136 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp137 [V146,T40] ( 2, 3.93) byref -> r3 "field V58._reference (fldOffset=0x0)" P-INDEP
+; V146 tmp137 [V146,T38] ( 2, 3.93) byref -> r1 "field V58._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x4)" P-INDEP
-; V148 tmp139 [V148,T19] ( 5, 7.97) byref -> r10 "field V59._reference (fldOffset=0x0)" P-INDEP -; V149 tmp140 [V149,T17] ( 5, 7.98) int -> r4 "field V59._length (fldOffset=0x4)" P-INDEP -; V150 tmp141 [V150,T32] ( 2, 4 ) byref -> r10 "field V61._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp139 [V148,T19] ( 6, 7.97) byref -> r7 "field V59._reference (fldOffset=0x0)" P-INDEP +; V149 tmp140 [V149,T17] ( 6, 7.98) int -> r4 "field V59._length (fldOffset=0x4)" P-INDEP +; V150 tmp141 [V150,T32] ( 2, 4 ) byref -> r7 "field V61._reference (fldOffset=0x0)" P-INDEP
; V151 tmp142 [V151,T34] ( 2, 4 ) int -> r4 "field V61._length (fldOffset=0x4)" P-INDEP ;* V152 tmp143 [V152 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V153 tmp144 [V153 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x4)" P-INDEP @@ -176,7 +176,7 @@ ;* V165 tmp156 [V165 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x4)" P-INDEP ;* V166 tmp157 [V166 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP ;* V167 tmp158 [V167 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x4)" P-INDEP
-; V168 tmp159 [V168,T37] ( 2, 3.97) byref -> r3 "field V78._reference (fldOffset=0x0)" P-INDEP
+; V168 tmp159 [V168,T37] ( 2, 3.97) byref -> r1 "field V78._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp160 [V169 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V170 tmp161 [V170 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP ;* V171 tmp162 [V171 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x4)" P-INDEP @@ -188,9 +188,9 @@ ;* V177 tmp168 [V177 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x4)" P-INDEP ;* V178 tmp169 [V178 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP ;* V179 tmp170 [V179 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x4)" P-INDEP
-; V180 tmp171 [V180,T41] ( 2, 3.93) byref -> r3 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V180 tmp171 [V180,T39] ( 2, 3.93) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V181 tmp172 [V181 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
-; V182 cse0 [V182,T24] ( 3, 6 ) ref -> r0 "CSE - conservative"
+; V182 cse0 [V182,T24] ( 3, 6 ) ref -> r0 "CSE - moderate"
; V183 cse1 [V183,T25] ( 3, 6 ) ref -> r1 "CSE - aggressive" ; ; Lcl frame size = 44 @@ -226,7 +226,7 @@ G_M59389_IG02: ; bbWeight=1, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, b mov r5, r0 ; gcrRegs +[r5] movs r6, 0
- b SHORT G_M59389_IG32
+ b SHORT G_M59389_IG22
;; size=26 bbWeight=1 PerfScore 11.00 G_M59389_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -278,73 +278,49 @@ G_M59389_IG07: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0001 {r0}, ; byrRegs -[r0] mov r7, r0 cmp r7, 0
- ble G_M59389_IG31
+ ble G_M59389_IG21
cmp r4, 0
- beq G_M59389_IG37 - ldr r0, [r4+0x04] - ldr r0, [r4+0x04] - cmp r0, r7 - blo G_M59389_IG37
+ beq G_M59389_IG31 + ldr r1, [r4+0x04] + ldr r1, [r4+0x04] + cmp r1, r7 + blo G_M59389_IG31
add r8, r4, 8 ; byrRegs +[r8] mov r9, r7 cmp r9, 0
- beq SHORT G_M59389_IG15
+ beq SHORT G_M59389_IG10
;; size=50 bbWeight=2 PerfScore 36.00 G_M59389_IG08: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz ldrh r0, [r8] cmp r0, 256
- blo SHORT G_M59389_IG10 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte - cmp r0, 0 - bne SHORT G_M59389_IG16 - ;; size=26 bbWeight=1.98 PerfScore 17.85 -G_M59389_IG09: ; bbWeight=1.97, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - b SHORT G_M59389_IG11 - ;; size=2 bbWeight=1.97 PerfScore 1.97 -G_M59389_IG10: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - movw r3, 0xd1ff - movt r3, 0xd1ff - ldrb r0, [r3+r0] - ands r0, r0, 128 - cmp r0, 0 - bne SHORT G_M59389_IG16 - ;; size=18 bbWeight=1.98 PerfScore 11.90 -G_M59389_IG11: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - add r0, r9, -1 - lsls r0, r0, 1 - ldrh r0, [r8+r0]
+ bhs G_M59389_IG27 + movw r1, 0xd1ff + movt r1, 0xd1ff + ldrb r1, [r1+r0] + ands r1, r1, 128 + cmp r1, 0 + bne SHORT G_M59389_IG11 + add r10, r9, -1 + lsl r1, r10, 1 + ldrh r0, [r8+r1]
cmp r0, 256
- blo SHORT G_M59389_IG14 - ;; size=16 bbWeight=1.98 PerfScore 9.92 -G_M59389_IG12: ; bbWeight=1.97, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte - cmp r0, 0 - bne SHORT G_M59389_IG16 - ;; size=16 bbWeight=1.97 PerfScore 11.80 -G_M59389_IG13: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - b SHORT G_M59389_IG15 - ;; size=2 bbWeight=1.98 PerfScore 1.98 -G_M59389_IG14: ; bbWeight=1.97, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - movw r3, 0xd1ff - movt r3, 0xd1ff - ldrb r0, [r3+r0] - ands r0, r0, 128 - cmp r0, 0 - bne SHORT G_M59389_IG16
+ bhs G_M59389_IG28 + ;; size=50 bbWeight=1.98 PerfScore 27.77 +G_M59389_IG09: ; bbWeight=1.97, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + movw r1, 0xd1ff + movt r1, 0xd1ff + ldrb r1, [r1+r0] + ands r1, r1, 128 + cmp r1, 0 + bne SHORT G_M59389_IG11
;; size=18 bbWeight=1.97 PerfScore 11.80
-G_M59389_IG15: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M59389_IG10: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
str r8, [sp+0x10] // [V120 tmp111] str r9, [sp+0x14] // [V121 tmp112] ...

+10 (+8.62%) : 230417.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Net.SocketAddress>
-; V01 arg1 [V01,T00] ( 8, 5.09) int -> r4 single-def
+; V01 arg1 [V01,T00] ( 9, 5.18) int -> r4 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ; V04 tmp2 [V04,T02] ( 4, 4.18) int -> r5 "Inlining Arg"
-;* V05 tmp3 [V05,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp5 [V07,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp6 [V08,T05] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; V09 tmp7 [V09,T06] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; @@ -32,22 +32,39 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r1] ldr r5, [r1+0x04] cmp r4, r5
- blt SHORT G_M2431_IG04
+ bge SHORT G_M2431_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M2431_IG03: ; bbWeight=0.09, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
- cmp r4, r5 - bgt SHORT G_M2431_IG06 - ;; size=4 bbWeight=0.09 PerfScore 0.18 -G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- blt SHORT G_M2431_IG07
+ bge SHORT G_M2431_IG09 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M2431_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + b SHORT G_M2431_IG12 + ;; size=2 bbWeight=0.41 PerfScore 0.41 +G_M2431_IG05: ; bbWeight=0.09, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + cmp r4, r5 + bgt SHORT G_M2431_IG11 + ;; size=4 bbWeight=0.09 PerfScore 0.18 +G_M2431_IG06: ; bbWeight=0.08, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + b SHORT G_M2431_IG03 + ;; size=2 bbWeight=0.08 PerfScore 0.08 +G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
str r4, [r0+0x08]
- ;; size=6 bbWeight=1 PerfScore 3.00 -G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M2431_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz + cmp r4, 0 + bgt SHORT G_M2431_IG07 + ;; size=4 bbWeight=0.09 PerfScore 0.18 +G_M2431_IG10: ; bbWeight=0.08, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + b SHORT G_M2431_IG07 + ;; size=2 bbWeight=0.08 PerfScore 0.08 +G_M2431_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movw r1, 0xd1ff @@ -68,7 +85,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR ; gcrRegs -[r2] bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -89,7 +106,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 8, PerfScore 11.18, instruction count 41, allocated bytes for code 116 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 126, prolog size 8, PerfScore 11.94, instruction count 46, allocated bytes for code 126 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -101,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
+ Function Length : 63 (0x0003f) Actual length = 126 (0x00007e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm.Release.mch

-10 (-23.81%) : 448104.dasm - System.Xml.Schema.SchemaInfo:GetElementDecl(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaElementDecl:this (Tier1)

@@ -3,7 +3,7 @@ ; 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 37 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data @@ -11,18 +11,17 @@ ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Xml.Schema.SchemaInfo> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Xml.XmlQualifiedName>
-; V02 loc0 [V02,T04] ( 2, 1.12) ref -> r0 ld-addr-op class-hnd <System.Xml.Schema.SchemaElementDecl>
+; V02 loc0 [V02,T04] ( 2, 1.26) ref -> r0 ld-addr-op class-hnd <System.Xml.Schema.SchemaElementDecl>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V06 tmp3 [V06,T03] ( 3, 2.63) byref -> r0 single-def "Inline stloc first use temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M23539_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_M23539_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x04] @@ -33,28 +32,27 @@ G_M23539_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M23539_IG04
+ beq SHORT G_M23539_IG05
;; size=22 bbWeight=1 PerfScore 8.00
-G_M23539_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M23539_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
ldr r0, [r0] ; gcrRegs +[r0] ; byrRegs -[r0]
- b SHORT G_M23539_IG06 - ;; size=4 bbWeight=0.63 PerfScore 1.26 -G_M23539_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.63 PerfScore 0.63 +G_M23539_IG04: ; bbWeight=0.63, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.63 PerfScore 0.63 +G_M23539_IG05: ; bbWeight=0.51, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00 -G_M23539_IG05: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M23539_IG06: ; bbWeight=0.49, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs +[r0] - pop {r11,pc} - ;; size=4 bbWeight=0.49 PerfScore 0.49
+ ;; size=2 bbWeight=0.51 PerfScore 0.51 +G_M23539_IG06: ; bbWeight=0.51, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.51 PerfScore 0.51
-; Total bytes of code 42, prolog size 6, PerfScore 13.75, instruction count 15, allocated bytes for code 42 (MethodHash=44aba40c) for method System.Xml.Schema.SchemaInfo:GetElementDecl(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaElementDecl:this (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 11.29, instruction count 13, allocated bytes for code 32 (MethodHash=44aba40c) for method System.Xml.Schema.SchemaInfo:GetElementDecl(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaElementDecl:this (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ 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) @@ -78,7 +76,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

-20 (-17.24%) : 48389.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)

@@ -3,32 +3,30 @@ ; 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 2720 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
-; V01 RetBuf [V01,T00] ( 5, 4.26) byref -> r4 single-def
+; V01 RetBuf [V01,T01] ( 5, 3.71) byref -> r4 single-def
; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode> ;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp2 [V06,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V07 tmp3 [V07,T04] ( 4, 3.09) byref -> r0 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 2, 1.17) ref -> r1 "field V03._one (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T06] ( 2, 1.17) ref -> [sp+0x04] spill-single-def "field V03._many (fldOffset=0x4)" P-INDEP
+; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V07 tmp3 [V07,T04] ( 4, 3.26) byref -> r0 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T05] ( 2, 1.26) ref -> r1 "field V03._one (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T06] ( 2, 1.26) ref -> r2 "field V03._many (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 12
+; Lcl frame size = 0
G_M16819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16
+ push {r4,lr}
mov r4, r1 ; byrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M16819_IG02: ; bbWeight=1, gcrefRegs=0005 {r0 r2}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r0 r2] ldr r0, [r0+0x10] @@ -41,22 +39,36 @@ G_M16819_IG02: ; bbWeight=1, gcrefRegs=0005 {r0 r2}, byrefRegs=0010 {r4}, blx r3 // <unknown method> ; gcrRegs -[r0-r2] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M16819_IG04
+ beq SHORT G_M16819_IG05
;; size=24 bbWeight=1 PerfScore 9.00
-G_M16819_IG03: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0011 {r0 r4}, byref, isz
+G_M16819_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0011 {r0 r4}, byref
ldr r1, [r0] ; gcrRegs +[r1]
- ldr r3, [r0+0x04] - ; gcrRegs +[r3] - str r3, [sp+0x04] // [V09 tmp5] - ; GC ptr vars +{V09} - b SHORT G_M16819_IG06 - ;; size=8 bbWeight=0.55 PerfScore 2.19 -G_M16819_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; gcrRegs -[r1 r3]
+ ldr r2, [r0+0x04] + ; gcrRegs +[r2] + mov r0, r4 + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[r1]
; byrRegs -[r0]
- ; GC ptr vars -{V09}
+ adds r0, r4, 4 + ; byrRegs +[r0] + mov r1, r2 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[r1-r2] + ; byrRegs -[r0 r4] + ;; size=30 bbWeight=0.63 PerfScore 6.91 +G_M16819_IG04: ; bbWeight=0.63, epilog, nogc, extend + pop {r4,pc} + ;; size=2 bbWeight=0.63 PerfScore 0.63 +G_M16819_IG05: ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref + ; byrRegs +[r4]
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -73,39 +85,12 @@ G_M16819_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_BYREF
- ;; size=34 bbWeight=1 PerfScore 11.00 -G_M16819_IG05: ; bbWeight=1, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M16819_IG06: ; bbWeight=0.63, gcVars=00000040 {V09}, gcrefRegs=0002 {r1}, byrefRegs=0010 {r4}, gcvars, byref - ; gcrRegs +[r1] - ; byrRegs -[r0-r1] +[r4] - ; GC ptr vars +{V06 V09} - mov r0, r4 - ; byrRegs +[r0] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - adds r0, r4, 4 - ; byrRegs +[r0] - ldr r1, [sp+0x04] // [V09 tmp5] - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - ; GC ptr vars -{V06 V09} - blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0 r4] - ;; size=26 bbWeight=0.63 PerfScore 5.65 -G_M16819_IG07: ; bbWeight=0.63, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.63 PerfScore 1.26
+ ;; size=34 bbWeight=0.45 PerfScore 4.98 +G_M16819_IG06: ; bbWeight=0.45, epilog, nogc, extend + pop {r4,pc} + ;; size=2 bbWeight=0.45 PerfScore 0.45
-; Total bytes of code 116, prolog size 10, PerfScore 35.09, instruction count 41, allocated bytes for code 116 (MethodHash=3ddcbe4c) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 23.97, instruction count 35, allocated bytes for code 96 (MethodHash=3ddcbe4c) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
; ============================================================ Unwind Info: @@ -117,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -129,7 +114,8 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16 + FF end + FF end
FF end

-20 (-17.24%) : 90309.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)

@@ -3,32 +3,30 @@ ; 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 88972 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
-; V01 RetBuf [V01,T00] ( 5, 4.40) byref -> r4 single-def
+; V01 RetBuf [V01,T01] ( 5, 3.78) byref -> r4 single-def
; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode> ;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp2 [V06,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V07 tmp3 [V07,T04] ( 4, 3.23) byref -> r0 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 2, 1.32) ref -> r1 "field V03._one (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T06] ( 2, 1.32) ref -> [sp+0x04] spill-single-def "field V03._many (fldOffset=0x4)" P-INDEP
+; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V07 tmp3 [V07,T04] ( 4, 3.40) byref -> r0 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T05] ( 2, 1.40) ref -> r1 "field V03._one (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T06] ( 2, 1.40) ref -> r2 "field V03._many (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 12
+; Lcl frame size = 0
G_M16819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16
+ push {r4,lr}
mov r4, r1 ; byrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M16819_IG02: ; bbWeight=1, gcrefRegs=0005 {r0 r2}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r0 r2] ldr r0, [r0+0x10] @@ -41,22 +39,36 @@ G_M16819_IG02: ; bbWeight=1, gcrefRegs=0005 {r0 r2}, byrefRegs=0010 {r4}, blx r3 // <unknown method> ; gcrRegs -[r0-r2] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M16819_IG04
+ beq SHORT G_M16819_IG05
;; size=24 bbWeight=1 PerfScore 9.00
-G_M16819_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0011 {r0 r4}, byref, isz
+G_M16819_IG03: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0011 {r0 r4}, byref
ldr r1, [r0] ; gcrRegs +[r1]
- ldr r3, [r0+0x04] - ; gcrRegs +[r3] - str r3, [sp+0x04] // [V09 tmp5] - ; GC ptr vars +{V09} - b SHORT G_M16819_IG06 - ;; size=8 bbWeight=0.62 PerfScore 2.47 -G_M16819_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; gcrRegs -[r1 r3]
+ ldr r2, [r0+0x04] + ; gcrRegs +[r2] + mov r0, r4 + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[r1]
; byrRegs -[r0]
- ; GC ptr vars -{V09}
+ adds r0, r4, 4 + ; byrRegs +[r0] + mov r1, r2 + ; gcrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[r1-r2] + ; byrRegs -[r0 r4] + ;; size=30 bbWeight=0.70 PerfScore 7.69 +G_M16819_IG04: ; bbWeight=0.70, epilog, nogc, extend + pop {r4,pc} + ;; size=2 bbWeight=0.70 PerfScore 0.70 +G_M16819_IG05: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref + ; byrRegs +[r4]
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -73,39 +85,12 @@ G_M16819_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_BYREF
- ;; size=34 bbWeight=1 PerfScore 11.00 -G_M16819_IG05: ; bbWeight=1, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M16819_IG06: ; bbWeight=0.70, gcVars=00000040 {V09}, gcrefRegs=0002 {r1}, byrefRegs=0010 {r4}, gcvars, byref - ; gcrRegs +[r1] - ; byrRegs -[r0-r1] +[r4] - ; GC ptr vars +{V06 V09} - mov r0, r4 - ; byrRegs +[r0] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - adds r0, r4, 4 - ; byrRegs +[r0] - ldr r1, [sp+0x04] // [V09 tmp5] - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - ; GC ptr vars -{V06 V09} - blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0 r4] - ;; size=26 bbWeight=0.70 PerfScore 6.29 -G_M16819_IG07: ; bbWeight=0.70, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.70 PerfScore 1.40
+ ;; size=34 bbWeight=0.38 PerfScore 4.22 +G_M16819_IG06: ; bbWeight=0.38, epilog, nogc, extend + pop {r4,pc} + ;; size=2 bbWeight=0.38 PerfScore 0.38
-; Total bytes of code 116, prolog size 10, PerfScore 36.16, instruction count 41, allocated bytes for code 116 (MethodHash=3ddcbe4c) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 23.99, instruction count 35, allocated bytes for code 96 (MethodHash=3ddcbe4c) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
; ============================================================ Unwind Info: @@ -117,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -129,7 +114,8 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16 + FF end + FF end
FF end

+44 (+29.33%) : 231169.dasm - System.Collections.Generic.HashSet1[System.__Canon]:RemoveWhere(System.Predicate1[System.__Canon]):int:this (Tier1)

@@ -9,15 +9,15 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 6, 29.33) ref -> r5 this class-hnd single-def <System.Collections.Generic.HashSet`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 6, 79.00) ref -> r4 class-hnd single-def <System.Predicate`1[System.__Canon]> -; V02 loc0 [V02,T04] ( 3, 51.67) ref -> r6 class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T03] ( 7, 29.33) ref -> r4 this class-hnd single-def <System.Collections.Generic.HashSet`1[System.__Canon]> +; V01 arg1 [V01,T06] ( 7, 4.22) ref -> r5 class-hnd single-def <System.Predicate`1[System.__Canon]> +; V02 loc0 [V02,T02] ( 5, 51.67) ref -> r6 class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T07] ( 4, 2 ) int -> r7
-; V04 loc2 [V04,T00] ( 6,127.67) int -> r8 -; V05 loc3 [V05,T02] ( 3, 76.00) byref -> r1 -; V06 loc4 [V06,T05] ( 3, 50.67) ref -> r9 class-hnd <System.__Canon>
+; V04 loc2 [V04,T00] ( 11,127.67) int -> r8 +; V05 loc3 [V05,T01] ( 5, 50.92) byref -> r0 +; V06 loc4 [V06,T04] ( 3, 0.25) ref -> r9 class-hnd <System.__Canon>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 2, 50.67) int -> r0 "guarded devirt return temp"
+; V08 tmp1 [V08,T05] ( 2, 0 ) int -> r0 "guarded devirt return temp"
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Collections.Tests.HashSet_Generic_Tests`1+<>c[System.__Canon]> ; ; Lcl frame size = 0 @@ -25,85 +25,102 @@ G_M13570_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r11,lr} add r11, sp, 24
- mov r5, r0 - ; gcrRegs +[r5] - mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1 + ; gcrRegs +[r5]
;; size=12 bbWeight=1 PerfScore 4.00 G_M13570_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- cmp r4, 0 - beq SHORT G_M13570_IG08 - ldr r6, [r5+0x08]
+ cmp r5, 0 + beq SHORT G_M13570_IG13 + ldr r6, [r4+0x08]
; gcrRegs +[r6] movs r7, 0 mov r8, 0
- ldr r1, [r5+0x10] - cmp r1, 0 - ble SHORT G_M13570_IG05
+ ldr r0, [r4+0x10] + cmp r0, 0 + ble SHORT G_M13570_IG08
;; size=18 bbWeight=1 PerfScore 8.00
-G_M13570_IG03: ; bbWeight=25.33, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ldr r1, [r6+0x04] - cmp r8, r1 - bhs SHORT G_M13570_IG07 - movs r1, 12 - mul r1, r8, r1 - adds r1, 8 - adds r1, r6, r1 - ; byrRegs +[r1] - ldr r0, [r1+0x08] - cmp r0, -1
+G_M13570_IG03: ; bbWeight=0.96, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5+0x0C] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + bne SHORT G_M13570_IG06 + ;; size=14 bbWeight=0.96 PerfScore 4.81 +G_M13570_IG04: ; bbWeight=25.08, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + ldr r0, [r6+0x04] + cmp r8, r0 + bhs SHORT G_M13570_IG12 + movs r0, 12 + mul r0, r8, r0 + adds r0, 8 + adds r0, r6, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x08] + ; byrRegs -[r0] + add r8, r8, 1 + ldr r0, [r4+0x10] + cmp r8, r0
blt SHORT G_M13570_IG04
- ldr r9, [r1]
+ ;; size=28 bbWeight=25.08 PerfScore 300.96 +G_M13570_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4 r6] + b SHORT G_M13570_IG08 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M13570_IG06: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4-r6] + ldr r0, [r6+0x04] + cmp r8, r0 + bhs SHORT G_M13570_IG12 + movs r0, 12 + mul r0, r8, r0 + adds r0, 8 + adds r0, r6, r0 + ; byrRegs +[r0] + ldr r3, [r0+0x08] + cmp r3, -1 + bge SHORT G_M13570_IG10 + ;; size=24 bbWeight=0.25 PerfScore 2.53 +G_M13570_IG07: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0] + add r8, r8, 1 + ldr r0, [r4+0x10] + cmp r8, r0 + blt SHORT G_M13570_IG06 + ;; size=10 bbWeight=0.25 PerfScore 1.01 +G_M13570_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4-r6] + mov r0, r7 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M13570_IG09: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r6,r7,r8,r9,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M13570_IG10: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r4-r6] + ; byrRegs +[r0] + ldr r9, [r0]
; gcrRegs +[r9]
- ldr r1, [r4+0x0C] - ; byrRegs -[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r1, r0 - beq SHORT G_M13570_IG04
+ ldr r0, [r5+0x0C] + ; byrRegs -[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M13570_IG07 + ;; size=18 bbWeight=0.25 PerfScore 1.52 +G_M13570_IG11: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
mov r1, r9 ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
; gcrRegs +[r0]
- ldr r3, [r4+0x0C]
+ ldr r3, [r5+0x0C]
blx r3 // System.Predicate`1[System.__Canon]:Invoke(System.__Canon):ubyte:this ; gcrRegs -[r0-r1] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M13570_IG09 - ;; size=54 bbWeight=25.33 PerfScore 557.33 -G_M13570_IG04: ; bbWeight=25.33, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9] - add r8, r8, 1 - ldr r0, [r5+0x10] - cmp r8, r0 - blt SHORT G_M13570_IG03 - ;; size=10 bbWeight=25.33 PerfScore 101.33 -G_M13570_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r6] - mov r0, r7 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M13570_IG06: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r6,r7,r8,r9,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M13570_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M13570_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movs r0, 26 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowArgumentNullException(int) - ; gcr arg pop 0 - bkpt - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M13570_IG09: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4-r6 r9] - mov r0, r5
+ beq SHORT G_M13570_IG07 + mov r0, r4
; gcrRegs +[r0] mov r1, r9 ; gcrRegs +[r1] @@ -114,12 +131,28 @@ G_M13570_IG09: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 ; gcrRegs -[r0-r1 r9] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M13570_IG04
+ beq SHORT G_M13570_IG07
adds r7, r7, 1
- b SHORT G_M13570_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00
+ b SHORT G_M13570_IG07 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M13570_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4-r6] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M13570_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 26 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.ThrowHelper:ThrowArgumentNullException(int) + ; gcr arg pop 0 + bkpt + ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 150, prolog size 12, PerfScore 672.67, instruction count 59, allocated bytes for code 150 (MethodHash=4ddccafd) for method System.Collections.Generic.HashSet`1[System.__Canon]:RemoveWhere(System.Predicate`1[System.__Canon]):int:this (Tier1)
+; Total bytes of code 194, prolog size 12, PerfScore 325.84, instruction count 77, allocated bytes for code 194 (MethodHash=4ddccafd) for method System.Collections.Generic.HashSet`1[System.__Canon]:RemoveWhere(System.Predicate`1[System.__Canon]):int:this (Tier1)
; ============================================================ Unwind Info: @@ -131,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
+ Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+26 (+36.11%) : 176092.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)

@@ -5,34 +5,36 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 20
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 3.80) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 4.60) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 2.38) int -> r3 ld-addr-op
+; V02 loc0 [V02,T06] ( 3, 2.40) int -> r3 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
-; V09 tmp4 [V09,T06] ( 3, 2.78) byref -> r0 single-def "Inline stloc first use temp"
+; V09 tmp4 [V09,T05] ( 3, 2.80) byref -> r0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 2.40) ref -> r0 single-def "field V04.array (fldOffset=0x0)" P-INDEP -;* V12 rat0 [V12,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree" -;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup" -;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 2.40) ref -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V12 rat0 [V12,T04] ( 2, 3.20) int -> r0 "Spilling to split statement for tree" +;* V13 rat1 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup" +; V14 rat2 [V14,T03] ( 2, 3.20) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8
+ push {r4,r11,lr} + sub sp, 12 + add r11, sp, 16 + str r0, [r11-0x0C]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -45,45 +47,56 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG04
+ beq SHORT G_M43979_IG05
;; size=22 bbWeight=1 PerfScore 8.00
-G_M43979_IG03: ; bbWeight=0.78, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.80, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
ldr r3, [r0]
- b SHORT G_M43979_IG06 - ;; size=4 bbWeight=0.78 PerfScore 1.57 -G_M43979_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r2, [r4+0x44] + ; gcrRegs +[r2] + ldr r0, [r4]
; byrRegs -[r0]
+ ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x88] + cmp r0, 0 + bne SHORT G_M43979_IG07 + ;; size=18 bbWeight=0.80 PerfScore 6.40 +G_M43979_IG04: ; bbWeight=0.16, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz + b SHORT G_M43979_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.16 +G_M43979_IG05: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r2]
movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00 -G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M43979_IG06: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ldr r0, [r4+0x44] - ; gcrRegs +[r0] - ldr r2, [r0+0x04] - cmp r3, r2 - bhs SHORT G_M43979_IG08 - adds r0, 8 - ; gcrRegs -[r0]
+ ;; size=2 bbWeight=0.22 PerfScore 0.22 +G_M43979_IG06: ; bbWeight=0.22, epilog, nogc, extend + add sp, 12 + pop {r4,r11,pc} + ;; size=6 bbWeight=0.22 PerfScore 0.43 +G_M43979_IG07: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r2] + ldr r0, [r2+0x04] + cmp r3, r0 + bhs SHORT G_M43979_IG09 + add r0, r2, 8
; byrRegs +[r0] lsls r3, r3, 2 ldr r0, [r0+r3] ; gcrRegs +[r0] ; byrRegs -[r0]
- ;; size=14 bbWeight=0.80 PerfScore 5.60 -G_M43979_IG07: ; bbWeight=0.80, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0]
+ ;; size=14 bbWeight=0.80 PerfScore 4.80 +G_M43979_IG08: ; bbWeight=0.80, epilog, nogc, extend + add sp, 12 + pop {r4,r11,pc} + ;; size=6 bbWeight=0.80 PerfScore 1.60 +G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r2]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 20.97, instruction count 27, allocated bytes for code 72 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 98, prolog size 14, PerfScore 26.61, instruction count 37, allocated bytes for code 98 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 49 (0x00031) Actual length = 98 (0x000062)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -107,7 +120,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
FF end

+28 (+40.00%) : 84267.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)

@@ -5,34 +5,36 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 261216
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 261216
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> r0 ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> r3 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]> ; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> r0 single-def "Inline stloc first use temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> r3 single-def "field V04.array (fldOffset=0x0)" P-INDEP -;* V12 rat0 [V12,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree" -;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup" -;* V14 rat2 [V14,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V12 rat0 [V12,T04] ( 2, 4 ) int -> r0 "Spilling to split statement for tree" +;* V13 rat1 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup" +; V14 rat2 [V14,T02] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8
+ push {r4,r11,lr} + sub sp, 12 + add r11, sp, 16 + str r0, [r11-0x0C]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,39 +48,53 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; byrRegs +[r0] cmp r0, 0 beq SHORT G_M43979_IG04
- ldr r0, [r0]
+ ldr r3, [r0] + ldr r2, [r4+0x44] + ; gcrRegs +[r2] + ldr r0, [r4]
; byrRegs -[r0]
- ldr r3, [r4+0x44] - ; gcrRegs +[r3] - ldr r2, [r3+0x04] - cmp r0, r2 - bhs SHORT G_M43979_IG06 - adds r3, 8 - ; gcrRegs -[r3] - ; byrRegs +[r3] - lsls r0, r0, 2 - ldr r0, [r3+r0] - ; gcrRegs +[r0] - ;; size=38 bbWeight=1 PerfScore 16.00 -G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M43979_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] - ; byrRegs -[r3]
+ ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x88] + cmp r0, 0 + bne SHORT G_M43979_IG06 + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz + b SHORT G_M43979_IG06 + ;; size=2 bbWeight=0.20 PerfScore 0.20 +G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r2]
movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00 -G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M43979_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend + add sp, 12 + pop {r4,r11,pc} + ;; size=6 bbWeight=0.00 PerfScore 0.00 +G_M43979_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r2] + ldr r0, [r2+0x04] + cmp r3, r0 + bhs SHORT G_M43979_IG08 + add r0, r2, 8 + ; byrRegs +[r0] + lsls r3, r3, 2 + ldr r0, [r0+r3] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ;; size=14 bbWeight=1 PerfScore 6.00 +G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend + add sp, 12 + pop {r4,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r2]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 8, PerfScore 22.00, instruction count 26, allocated bytes for code 70 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 98, prolog size 14, PerfScore 29.20, instruction count 37, allocated bytes for code 98 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +106,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 49 (0x00031) Actual length = 98 (0x000062)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +118,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
FF end

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-12 (-3.87%) : 124302.dasm - System.IO.Tests.Directory_Move:DirectoryNameWithSpaces():this (FullOpts)

@@ -14,12 +14,12 @@ ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.Nullable`1[int]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 4 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.String>
-; V06 tmp2 [V06,T01] ( 6, 7.93) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.String> -; V07 tmp3 [V07,T05] ( 4, 2.75) ref -> r7 class-hnd "Inline return value spill temp" <System.String>
+; V06 tmp2 [V06,T01] ( 6, 7.99) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.String> +; V07 tmp3 [V07,T06] ( 4, 2.50) ref -> r7 class-hnd "Inline return value spill temp" <System.String>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V11 tmp7 [V11,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp7 [V11,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -28,20 +28,20 @@ ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp16 [V20,T11] ( 2, 0.99) int -> r6 "Inlining Arg" -; V21 tmp17 [V21,T10] ( 2, 0.99) byref -> r7 single-def "Inlining Arg"
+; V20 tmp16 [V20,T09] ( 2, 1.06) int -> r6 "Inlining Arg" +; V21 tmp17 [V21,T08] ( 2, 1.06) byref -> r8 single-def "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp22 [V26 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V27 tmp23 [V27 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V28 tmp24 [V28,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP -;* V29 tmp25 [V29,T08] ( 0, 0 ) int -> zero-ref single-def "field V03.value (fldOffset=0x4)" P-INDEP
+;* V28 tmp24 [V28,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP +;* V29 tmp25 [V29,T11] ( 0, 0 ) int -> zero-ref single-def "field V03.value (fldOffset=0x4)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP ;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V32 tmp28 [V32,T13] ( 2, 0.50) byref -> r7 "field V09._reference (fldOffset=0x0)" P-INDEP -; V33 tmp29 [V33,T16] ( 2, 0.50) int -> r6 "field V09._length (fldOffset=0x4)" P-INDEP
+; V32 tmp28 [V32,T13] ( 2, 0.53) byref -> r8 "field V09._reference (fldOffset=0x0)" P-INDEP +; V33 tmp29 [V33,T16] ( 2, 0.53) int -> r6 "field V09._length (fldOffset=0x4)" P-INDEP
;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP ;* V36 tmp32 [V36 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP @@ -50,27 +50,28 @@ ;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x4)" P-INDEP ;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def "field V17._length (fldOffset=0x4)" P-INDEP
-; V42 tmp38 [V42,T14] ( 2, 0.50) byref -> r7 single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V43 tmp39 [V43,T17] ( 2, 0.50) int -> r6 single-def "field V18._length (fldOffset=0x4)" P-INDEP
+; V42 tmp38 [V42,T14] ( 2, 0.53) byref -> r8 single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V43 tmp39 [V43,T17] ( 2, 0.53) int -> r6 single-def "field V18._length (fldOffset=0x4)" P-INDEP
;* V44 tmp40 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x4)" P-INDEP ;* V46 tmp42 [V46 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V48 tmp44 [V48,T15] ( 2, 0.50) byref -> r2 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp44 [V48,T15] ( 2, 0.53) byref -> r2 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp45 [V49,T20] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x4)" P-INDEP
-;* V50 tmp46 [V50,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.hasValue (fldOffset=0x0)" P-INDEP -; V51 tmp47 [V51,T06] ( 2, 2 ) ubyte -> r0 single-def "field V26.value (fldOffset=0x1)" P-INDEP
+;* V50 tmp46 [V50,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.hasValue (fldOffset=0x0)" P-INDEP +; V51 tmp47 [V51,T07] ( 2, 2 ) ubyte -> r0 single-def "field V26.value (fldOffset=0x1)" P-INDEP
;* V52 tmp48 [V52 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.hasValue (fldOffset=0x0)" P-INDEP ;* V53 tmp49 [V53 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.value (fldOffset=0x1)" P-INDEP ; V54 tmp50 [V54,T03] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V55 tmp51 [V55,T21] ( 3, 0 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V55 tmp51 [V55,T22] ( 3, 0 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V56 cse0 [V56,T05] ( 4, 2.50) ref -> r7 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M4713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - sub sp, 16 - add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 20 + add r11, sp, 40
mov r4, r0 ; gcrRegs +[r4] ;; size=12 bbWeight=1 PerfScore 4.00 @@ -109,40 +110,33 @@ G_M4713_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0]
- movw r0, 0xd1ff - movt r0, 0xd1ff
+ movw r7, 0xd1ff + movt r7, 0xd1ff + mov r0, r7 + ; gcrRegs +[r0]
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ; gcrRegs -[r0] +[r7]
cmp r6, 0
- beq SHORT G_M4713_IG05 - ;; size=108 bbWeight=1 PerfScore 37.00 -G_M4713_IG03: ; bbWeight=0.47, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M4713_IG07 + ;; size=110 bbWeight=1 PerfScore 38.00 +G_M4713_IG03: ; bbWeight=0.47, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04] cmp r0, 0
- beq SHORT G_M4713_IG05
+ beq SHORT G_M4713_IG07
;; size=6 bbWeight=0.47 PerfScore 1.40
-G_M4713_IG04: ; bbWeight=0.26, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M4713_IG04: ; bbWeight=0.26, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M4713_IG06 - ;; size=16 bbWeight=0.26 PerfScore 1.59 -G_M4713_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r6] - movw r7, 0xd1ff - movt r7, 0xd1ff - b SHORT G_M4713_IG07 - ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M4713_IG06: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref - ; gcrRegs +[r6] - add r7, r6, 8 - ; byrRegs +[r7]
+ add r8, r6, 8 + ; byrRegs +[r8]
ldr r6, [r6+0x04] ; gcrRegs -[r6] movs r0, 1 @@ -155,9 +149,9 @@ G_M4713_IG06: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- movw r2, 0xd1ff - movt r2, 0xd1ff - mov r0, r7
+ add r2, r7, 8 + ; byrRegs +[r2] + mov r0, r8
; byrRegs +[r0] mov r1, r6 movs r3, 11 @@ -165,12 +159,12 @@ G_M4713_IG06: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs +[r0] - ; byrRegs -[r0 r7]
+ ; gcrRegs -[r7] +[r0] + ; byrRegs -[r0 r2 r8]
mov r7, r0 ; gcrRegs +[r7]
- ;; size=64 bbWeight=0.25 PerfScore 5.46 -G_M4713_IG07: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=74 bbWeight=0.26 PerfScore 6.87 +G_M4713_IG05: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] mov r0, r5 ; gcrRegs +[r0] @@ -196,13 +190,18 @@ G_M4713_IG07: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, blx r3 // <unknown method> ; gcrRegs -[r0 r7] cmp r0, 0
- beq SHORT G_M4713_IG09
+ beq SHORT G_M4713_IG08
;; size=46 bbWeight=1 PerfScore 19.00
-G_M4713_IG08: ; bbWeight=1, epilog, nogc, extend - add sp, 16 - pop {r4,r5,r6,r7,r11,pc}
+G_M4713_IG06: ; bbWeight=1, epilog, nogc, extend + add sp, 20 + pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M4713_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M4713_IG07: ; bbWeight=0.23, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4-r5 r7] + b SHORT G_M4713_IG05 + ;; size=2 bbWeight=0.23 PerfScore 0.23 +G_M4713_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4-r5 r7]
movs r1, 1 strb r1, [sp+0x0C] movs r1, 0 @@ -221,7 +220,7 @@ G_M4713_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 10, PerfScore 71.95, instruction count 110, allocated bytes for code 310 (MethodHash=0ec7ed96) for method System.IO.Tests.Directory_Move:DirectoryNameWithSpaces():this (FullOpts)
+; Total bytes of code 298, prolog size 10, PerfScore 71.51, instruction count 107, allocated bytes for code 298 (MethodHash=0ec7ed96) for method System.IO.Tests.Directory_Move:DirectoryNameWithSpaces():this (FullOpts)
; ============================================================ Unwind Info: @@ -233,7 +232,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 310 (0x000136)
+ Function Length : 149 (0x00095) Actual length = 298 (0x00012a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -241,7 +240,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ 05 add sp, sp, #20 ; opsize 16 + A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end

-14 (-3.80%) : 48065.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 4 ) byref -> r0 this single-def
-; V01 loc0 [V01,T10] ( 2, 2 ) int -> r4 single-def -; V02 loc1 [V02,T11] ( 2, 2 ) int -> r5 single-def
+; V01 loc0 [V01,T11] ( 2, 2 ) int -> r4 single-def +; V02 loc1 [V02,T12] ( 2, 2 ) int -> r5 single-def
; V03 loc2 [V03 ] ( 20, 16.00) struct (24) [sp+0x00] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -23,26 +23,26 @@ ; V12 tmp8 [V12,T01] ( 4, 8 ) int -> r0 "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V14 tmp10 [V14,T04] ( 3, 6 ) int -> r7 "Inlining Arg"
-; V15 tmp11 [V15,T08] ( 2, 3.00) byref -> r6 single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 2, 3.00) byref -> r6 single-def "Inlining Arg"
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp14 [V18,T16] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V18 tmp14 [V18,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V21 tmp17 [V21,T12] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
+; V21 tmp17 [V21,T13] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V23 tmp19 [V23,T02] ( 4, 8 ) int -> r0 "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V25 tmp21 [V25,T05] ( 3, 6 ) int -> r6 "Inlining Arg"
-; V26 tmp22 [V26,T09] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
+; V26 tmp22 [V26,T10] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V29 tmp25 [V29,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V29 tmp25 [V29,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V32 tmp28 [V32,T13] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -; V33 tmp29 [V33,T14] ( 3, 1.50) byref -> r6 "field V10._reference (fldOffset=0x0)" P-INDEP -; V34 tmp30 [V34,T15] ( 3, 1.50) int -> r7 "field V10._length (fldOffset=0x4)" P-INDEP
+; V32 tmp28 [V32,T14] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +; V33 tmp29 [V33,T15] ( 3, 1.50) byref -> r6 "field V10._reference (fldOffset=0x0)" P-INDEP +; V34 tmp30 [V34,T16] ( 3, 1.50) int -> r7 "field V10._length (fldOffset=0x4)" P-INDEP
;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP @@ -55,8 +55,9 @@ ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def "field V24._length (fldOffset=0x4)" P-INDEP ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x4)" P-INDEP
-; V47 cse0 [V47,T06] ( 3, 3 ) int -> r1 "CSE - moderate" -; V48 cse1 [V48,T07] ( 3, 3 ) int -> r1 "CSE - moderate"
+; V47 cse0 [V47,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V48 cse1 [V48,T08] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V49 cse2 [V49,T06] ( 6, 3 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -108,7 +109,7 @@ G_M7087_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r0, [sp+0x08] ldr r1, [sp+0x14] cmp r0, r1
- bhi G_M7087_IG18
+ bhi SHORT G_M7087_IG18
ldr r3, [sp+0x10] ; byrRegs +[r3] lsls r2, r0, 1 @@ -117,18 +118,19 @@ G_M7087_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r7, r1, r0 cmp r7, 0 bge SHORT G_M7087_IG07
- ;; size=26 bbWeight=1 PerfScore 11.00
+ ;; size=24 bbWeight=1 PerfScore 11.00
G_M7087_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref ; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M7087_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz cmp r7, 3 blo SHORT G_M7087_IG15 @@ -170,15 +172,16 @@ G_M7087_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 16.00 G_M7087_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref ; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M7087_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 beq SHORT G_M7087_IG16 @@ -250,7 +253,7 @@ G_M7087_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 24, PerfScore 90.99, instruction count 135, allocated bytes for code 368 (MethodHash=8711e450) for method Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
+; Total bytes of code 354, prolog size 24, PerfScore 89.99, instruction count 133, allocated bytes for code 354 (MethodHash=8711e450) for method Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -262,7 +265,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 184 (0x000b8) Actual length = 368 (0x000170)
+ Function Length : 177 (0x000b1) Actual length = 354 (0x000162)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-14 (-3.80%) : 42252.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 4, 4 ) byref -> r0 this single-def
-; V01 loc0 [V01,T10] ( 2, 2 ) int -> r4 single-def -; V02 loc1 [V02,T11] ( 2, 2 ) int -> r5 single-def
+; V01 loc0 [V01,T11] ( 2, 2 ) int -> r4 single-def +; V02 loc1 [V02,T12] ( 2, 2 ) int -> r5 single-def
; V03 loc2 [V03 ] ( 20, 16.00) struct (24) [sp+0x00] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> @@ -23,26 +23,26 @@ ; V12 tmp8 [V12,T01] ( 4, 8 ) int -> r0 "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V14 tmp10 [V14,T04] ( 3, 6 ) int -> r7 "Inlining Arg"
-; V15 tmp11 [V15,T08] ( 2, 3.00) byref -> r6 single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 2, 3.00) byref -> r6 single-def "Inlining Arg"
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp14 [V18,T16] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V18 tmp14 [V18,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V21 tmp17 [V21,T12] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
+; V21 tmp17 [V21,T13] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V23 tmp19 [V23,T02] ( 4, 8 ) int -> r0 "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V25 tmp21 [V25,T05] ( 3, 6 ) int -> r6 "Inlining Arg"
-; V26 tmp22 [V26,T09] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
+; V26 tmp22 [V26,T10] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V29 tmp25 [V29,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V29 tmp25 [V29,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V32 tmp28 [V32,T13] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -; V33 tmp29 [V33,T14] ( 3, 1.50) byref -> r6 "field V10._reference (fldOffset=0x0)" P-INDEP -; V34 tmp30 [V34,T15] ( 3, 1.50) int -> r7 "field V10._length (fldOffset=0x4)" P-INDEP
+; V32 tmp28 [V32,T14] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +; V33 tmp29 [V33,T15] ( 3, 1.50) byref -> r6 "field V10._reference (fldOffset=0x0)" P-INDEP +; V34 tmp30 [V34,T16] ( 3, 1.50) int -> r7 "field V10._length (fldOffset=0x4)" P-INDEP
;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP @@ -55,8 +55,9 @@ ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def "field V24._length (fldOffset=0x4)" P-INDEP ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x4)" P-INDEP
-; V47 cse0 [V47,T06] ( 3, 3 ) int -> r1 "CSE - moderate" -; V48 cse1 [V48,T07] ( 3, 3 ) int -> r1 "CSE - moderate"
+; V47 cse0 [V47,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V48 cse1 [V48,T08] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V49 cse2 [V49,T06] ( 6, 3 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -108,7 +109,7 @@ G_M7087_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r0, [sp+0x08] ldr r1, [sp+0x14] cmp r0, r1
- bhi G_M7087_IG18
+ bhi SHORT G_M7087_IG18
ldr r3, [sp+0x10] ; byrRegs +[r3] lsls r2, r0, 1 @@ -117,18 +118,19 @@ G_M7087_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r7, r1, r0 cmp r7, 0 bge SHORT G_M7087_IG07
- ;; size=26 bbWeight=1 PerfScore 11.00
+ ;; size=24 bbWeight=1 PerfScore 11.00
G_M7087_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref ; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M7087_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz cmp r7, 3 blo SHORT G_M7087_IG15 @@ -170,15 +172,16 @@ G_M7087_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 16.00 G_M7087_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref ; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M7087_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 beq SHORT G_M7087_IG16 @@ -250,7 +253,7 @@ G_M7087_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 24, PerfScore 90.99, instruction count 135, allocated bytes for code 368 (MethodHash=8711e450) for method Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
+; Total bytes of code 354, prolog size 24, PerfScore 89.99, instruction count 133, allocated bytes for code 354 (MethodHash=8711e450) for method Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -262,7 +265,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 184 (0x000b8) Actual length = 368 (0x000170)
+ Function Length : 177 (0x000b1) Actual length = 354 (0x000162)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+5.50%) : 90670.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)

@@ -12,12 +12,12 @@ ; V01 arg1 [V01,T01] ( 6, 4.50) ref -> r5 class-hnd single-def <System.String> ; V02 loc0 [V02,T03] ( 7, 4.50) int -> r6 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3.00) ref -> r2 class-hnd single-def "Inlining Arg" <ushort[]>
+; V04 tmp1 [V04,T04] ( 3, 3.00) ref -> r7 class-hnd single-def "Inlining Arg" <ushort[]>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V06 tmp3 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V07 tmp4 [V07,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V09 tmp6 [V09,T05] ( 4, 2.18) int -> r7 "Inlining Arg"
+; V09 tmp6 [V09,T05] ( 4, 2.18) int -> r8 "Inlining Arg"
;* V10 tmp7 [V10,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V11 tmp8 [V11,T06] ( 2, 2 ) byref -> r0 single-def "Inlining Arg" ; V12 tmp9 [V12,T07] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" @@ -26,20 +26,21 @@ ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ; V16 tmp13 [V16,T11] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; V17 tmp14 [V17,T02] ( 3, 6 ) ref -> r0 single-def "arr expr"
-; TEMP_01 ref -> [r11-0x14]
+; TEMP_01 ref -> [r11-0x1C]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M53687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr} - add r11, sp, 24
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 12 + add r11, sp, 32
movs r2, 0 str r2, [sp+0x04] mov r4, r0 ; gcrRegs +[r4] mov r5, r1 ; gcrRegs +[r5]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M53687_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0 bne SHORT G_M53687_IG04 @@ -65,7 +66,7 @@ G_M53687_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- b SHORT G_M53687_IG07
+ b SHORT G_M53687_IG06
;; size=40 bbWeight=0.50 PerfScore 7.00 G_M53687_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5] @@ -88,38 +89,33 @@ G_M53687_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r2, [r4+0x04] - ; gcrRegs +[r2] - ldr r0, [r5+0x04] - ldr r0, [r2+0x04] - subs r7, r0, r6 - cmp r7, 0 - bgt SHORT G_M53687_IG06 - ;; size=50 bbWeight=0.50 PerfScore 9.50 -G_M53687_IG05: ; bbWeight=0.09, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {}, byref, isz - cmp r7, 0 - blt SHORT G_M53687_IG11 - ;; size=4 bbWeight=0.09 PerfScore 0.18 -G_M53687_IG06: ; bbWeight=0.50, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {}, byref - add r0, r2, 8
+ ldr r7, [r4+0x04] + ; gcrRegs +[r7] + ldr r2, [r5+0x04] + ldr r2, [r7+0x04] + sub r8, r2, r6 + cmp r8, 0 + ble SHORT G_M53687_IG09 + ;; size=54 bbWeight=0.50 PerfScore 9.50 +G_M53687_IG05: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref + add r0, r7, 8
; byrRegs +[r0] add r1, r5, 8 ; byrRegs +[r1] lsls r2, r6, 1
- ; gcrRegs -[r2]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r5]
+ ; gcrRegs -[r5 r7]
; byrRegs -[r0-r1] ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M53687_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M53687_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04] ; gcrRegs +[r0] ldr r1, [r0+0x04] cmp r6, r1
- bhs SHORT G_M53687_IG10
+ bhs SHORT G_M53687_IG11
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -130,23 +126,33 @@ G_M53687_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcrRegs +[r0] ; byrRegs -[r0] cmp r0, 0
- beq SHORT G_M53687_IG09
+ beq SHORT G_M53687_IG08
;; size=22 bbWeight=1 PerfScore 11.00
-G_M53687_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M53687_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0 str r0, [r4+0x14] ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M53687_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M53687_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- pop {r2,r3,r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M53687_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add sp, 12 + pop {r4,r5,r6,r7,r8,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M53687_IG09: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4-r5 r7] + cmp r8, 0 + blt SHORT G_M53687_IG12 + ;; size=6 bbWeight=0.09 PerfScore 0.18 +G_M53687_IG10: ; bbWeight=0.08, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M53687_IG05 + ;; size=2 bbWeight=0.08 PerfScore 0.08 +G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4-r5 r7]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ;; size=10 bbWeight=0 PerfScore 0.00
-G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53687_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, 0x548 movw r1, 0xd1ff movt r1, 0xd1ff @@ -156,7 +162,7 @@ G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] mov r2, r0 ; gcrRegs +[r2]
- mov r1, r7
+ mov r1, r8
movs r0, 0 ; gcrRegs -[r0] movw r3, 0xd1ff @@ -167,7 +173,7 @@ G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 12, PerfScore 41.18, instruction count 81, allocated bytes for code 218 (MethodHash=6f382e48) for method System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
+; Total bytes of code 230, prolog size 14, PerfScore 43.26, instruction count 84, allocated bytes for code 230 (MethodHash=6f382e48) for method System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -179,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
+ Function Length : 115 (0x00073) Actual length = 230 (0x0000e6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -187,7 +193,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end

+48 (+7.67%) : 273568.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex988_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,19 +9,19 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T10] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T17] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T17] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V03 loc1 [V03,T19] ( 7, 5.50) int -> r7 single-def
-; V04 loc2 [V04,T02] ( 20, 25 ) int -> [sp+0x1C]
+; V04 loc2 [V04,T02] ( 20, 25 ) int -> [sp+0x2C]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc5 [V07,T08] ( 5, 13 ) int -> r8 single-def
-; V08 loc6 [V08,T01] ( 8, 28.50) int -> registers -; V09 loc7 [V09,T24] ( 7, 3.50) int -> [sp+0x18]
+; V08 loc6 [V08,T01] ( 8, 28.50) int -> [sp+0x28] +; V09 loc7 [V09,T24] ( 7, 3.50) int -> [sp+0x24]
;* V10 loc8 [V10 ] ( 0, 0 ) int -> zero-ref ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V13 tmp2 [V13,T33] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V13 tmp2 [V13,T34] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V14 tmp3 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V16 tmp5 [V16,T18] ( 3, 6 ) int -> r9 "Inlining Arg" @@ -34,26 +34,26 @@ ;* V23 tmp12 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp13 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp14 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V26 tmp15 [V26,T16] ( 6, 6 ) int -> [sp+0x14] spill-single-def "Inlining Arg"
+; V26 tmp15 [V26,T16] ( 6, 6 ) int -> [sp+0x20] spill-single-def "Inlining Arg"
; V27 tmp16 [V27,T25] ( 3, 3 ) byref -> r10 single-def "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp18 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp19 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V31 tmp20 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V32 tmp21 [V32,T34] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V32 tmp21 [V32,T33] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp22 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V34 tmp23 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp24 [V35 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp26 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V38 tmp27 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V39 tmp28 [V39,T27] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V39 tmp28 [V39,T27] ( 3, 3 ) int -> [sp+0x1C] spill-single-def "Inlining Arg"
; V40 tmp29 [V40,T30] ( 2, 2 ) byref -> r10 single-def "Inlining Arg" ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp32 [V43,T00] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V43 tmp32 [V43,T00] ( 4, 32 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
;* V44 tmp33 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V45 tmp34 [V45,T05] ( 2, 16 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
+; V45 tmp34 [V45,T05] ( 2, 16 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp37 [V48 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -65,8 +65,8 @@ ;* V54 tmp43 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V55 tmp44 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V56 tmp45 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V57 tmp46 [V57,T03] ( 3, 24 ) int -> [sp+0x0C] spill-single-def "Inlining Arg" -; V58 tmp47 [V58,T06] ( 2, 16 ) byref -> [sp+0x00] spill-single-def "Inlining Arg"
+; V57 tmp46 [V57,T03] ( 3, 24 ) int -> [sp+0x14] spill-single-def "Inlining Arg" +; V58 tmp47 [V58,T06] ( 2, 16 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V59 tmp48 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp49 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V61 tmp50 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -109,28 +109,28 @@ ;* V98 tmp87 [V98 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP ;* V99 tmp88 [V99 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp89 [V100 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x4)" P-INDEP
-; V101 tmp90 [V101,T12] ( 2, 8 ) byref -> r2 "field V56._reference (fldOffset=0x0)" P-INDEP -; V102 tmp91 [V102,T13] ( 2, 8 ) int -> lr "field V56._length (fldOffset=0x4)" P-INDEP
+; V101 tmp90 [V101,T12] ( 2, 8 ) byref -> lr "field V56._reference (fldOffset=0x0)" P-INDEP +; V102 tmp91 [V102,T13] ( 2, 8 ) int -> r12 "field V56._length (fldOffset=0x4)" P-INDEP
;* V103 tmp92 [V103 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP ;* V104 tmp93 [V104 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP
-; V105 cse0 [V105,T21] ( 3, 5 ) byref -> r9 "CSE - moderate" -; V106 cse1 [V106,T22] ( 3, 5 ) int -> [sp+0x08] spill-single-def "CSE - moderate"
+; V105 cse0 [V105,T21] ( 3, 5 ) byref -> [sp+0x04] "CSE - moderate" +; V106 cse1 [V106,T22] ( 3, 5 ) int -> [sp+0x10] "CSE - moderate"
; V107 cse2 [V107,T04] ( 20, 19 ) ref -> registers multi-def "CSE - aggressive" ;
-; Lcl frame size = 36
+; Lcl frame size = 52
G_M18670_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 36 - add r11, sp, 64
+ sub sp, 52 + add r11, sp, 80
mov r4, r0 ; gcrRegs +[r4] ;; size=14 bbWeight=1 PerfScore 5.00 G_M18670_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x48]
+ ldr r5, [sp+0x58]
; byrRegs +[r5]
- ldr r6, [sp+0x4C]
+ ldr r6, [sp+0x5C]
ldr r7, [r4+0x34] cmp r7, r6 bhi G_M18670_IG27 @@ -186,9 +186,9 @@ G_M18670_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, mov r10, r9 ; byrRegs +[r10] sub r3, r6, r8
- str r3, [sp+0x08]
+ str r3, [sp+0x10]
mov r2, r3
- str r2, [sp+0x14]
+ str r2, [sp+0x20]
cmp r2, 0 bge SHORT G_M18670_IG07 movw r0, 0xd1ff @@ -210,7 +210,7 @@ G_M18670_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0620 {r5 r movs r1, 99 mov r0, r10 ; byrRegs +[r0]
- ldr r2, [sp+0x14] // [V26 tmp15]
+ ldr r2, [sp+0x20] // [V26 tmp15]
movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] @@ -219,18 +219,18 @@ G_M18670_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0620 {r5 r mov r3, r0 cmp r3, 0 bge SHORT G_M18670_IG08
- ldr r0, [sp+0x14] // [V26 tmp15]
+ ldr r0, [sp+0x20] // [V26 tmp15]
mov r3, r0 ;; size=30 bbWeight=0.50 PerfScore 6.00 G_M18670_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0620 {r5 r9 r10}, byref, isz
- ldr r0, [sp+0x14] // [V26 tmp15]
+ ldr r0, [sp+0x20] // [V26 tmp15]
cmp r3, r0 bhi G_M18670_IG27 lsls r1, r3, 1 add r10, r1
- str r3, [sp+0x18] // [V09 loc7]
+ str r3, [sp+0x24] // [V09 loc7]
subs r2, r0, r3
- str r2, [sp+0x10] // [V39 tmp28]
+ str r2, [sp+0x1C] // [V39 tmp28]
cmp r2, 0 bge SHORT G_M18670_IG09 movw lr, 0xd1ff @@ -246,28 +246,30 @@ G_M18670_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0620 {r5 r ; gcrRegs -[r0-r1] ;; size=48 bbWeight=0.50 PerfScore 9.00 G_M18670_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0620 {r5 r9 r10}, byref, isz
- ldr r2, [sp+0x10] // [V39 tmp28] - ldr r3, [sp+0x18] // [V09 loc7]
+ ldr r2, [sp+0x1C] // [V39 tmp28] + ldr r3, [sp+0x24] // [V09 loc7]
add r0, r8, r3 mov r3, r0 mov lr, r3 cmp r2, 0
- str r3, [sp+0x1C] // [V04 loc2]
+ str r3, [sp+0x2C] // [V04 loc2] + mov r12, r2
bne G_M18670_IG23
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
G_M18670_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz ; byrRegs -[r10] cmp r8, lr bge G_M18670_IG24
- sub r10, lr, r8 - ldr r12, [sp+0x08] // [V106 cse1] - cmp r12, r10
+ ldr r10, [sp+0x10] // [V106 cse1] + sub r3, lr, r8 + str r3, [sp+0x18] // [V43 tmp32] + cmp r10, r3
blo G_M18670_IG27
- str r9, [sp+0x04] // [V45 tmp34]
+ str r9, [sp+0x0C] // [V45 tmp34]
; GC ptr vars +{V45}
- cmp r10, 0
+ cmp r3, 0
bge G_M18670_IG22
- ;; size=32 bbWeight=4 PerfScore 36.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M18670_IG11: ; bbWeight=2, gcVars=0000000000000020 {V45}, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, gcvars, byref movw lr, 0xd1ff movt lr, 0xd1ff @@ -275,90 +277,96 @@ G_M18670_IG11: ; bbWeight=2, gcVars=0000000000000020 {V45}, gcrefRegs=001 ; gcrRegs +[r0] mov r1, lr ; gcrRegs +[r1]
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method>
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // <unknown method>
; gcrRegs -[r0-r1]
- ldr r3, [sp+0x04] // [V45 tmp34] - ; byrRegs +[r3] - ;; size=26 bbWeight=2 PerfScore 18.00 -G_M18670_IG12: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0228 {r3 r5 r9}, byref, isz
+ ldr r2, [sp+0x0C] // [V45 tmp34] + ; byrRegs +[r2] + ldr r3, [sp+0x18] // [V43 tmp32] + ;; size=30 bbWeight=2 PerfScore 20.00 +G_M18670_IG12: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0224 {r2 r5 r9}, byref, isz
movs r1, 99
- mov r0, r3
+ mov r0, r2
; byrRegs +[r0]
- mov r2, r10
+ mov r2, r3 + ; byrRegs -[r2]
movw r3, 0xd1ff
- ; byrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] ; GC ptr vars -{V45} blx r3 // <unknown method> ; byrRegs -[r0]
- mov r10, r0 - cmp r10, 0 - blt SHORT G_M18670_IG24 - add r10, r8 - mov r3, r10 - cmp r3, r6 - bhi SHORT G_M18670_IG27 - lsls r0, r3, 1 - adds r2, r5, r0 - ; byrRegs +[r2] - str r2, [sp] // [V58 tmp47]
+ mov r3, r0 + cmp r3, 0 + str r9, [sp+0x04] // [V105 cse0] + ; GC ptr vars +{V105} + blt G_M18670_IG24 + add r3, r8 + str r3, [sp+0x28] // [V08 loc6] + mov r2, r3 + cmp r2, r6 + bhi G_M18670_IG27 + lsls r0, r2, 1 + add lr, r5, r0
...

+10 (+8.62%) : 123215.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)

@@ -9,13 +9,13 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Net.SocketAddress>
-; V01 arg1 [V01,T00] ( 8, 5.09) int -> r4 single-def
+; V01 arg1 [V01,T00] ( 9, 5.18) int -> r4 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ; V04 tmp2 [V04,T02] ( 4, 4.18) int -> r5 "Inlining Arg"
-;* V05 tmp3 [V05,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp5 [V07,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp6 [V08,T05] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; V09 tmp7 [V09,T06] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; @@ -32,22 +32,39 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r1] ldr r5, [r1+0x04] cmp r4, r5
- blt SHORT G_M2431_IG04
+ bge SHORT G_M2431_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M2431_IG03: ; bbWeight=0.09, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
- cmp r4, r5 - bgt SHORT G_M2431_IG06 - ;; size=4 bbWeight=0.09 PerfScore 0.18 -G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- blt SHORT G_M2431_IG07
+ bge SHORT G_M2431_IG09 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M2431_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + b SHORT G_M2431_IG12 + ;; size=2 bbWeight=0.41 PerfScore 0.41 +G_M2431_IG05: ; bbWeight=0.09, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + cmp r4, r5 + bgt SHORT G_M2431_IG11 + ;; size=4 bbWeight=0.09 PerfScore 0.18 +G_M2431_IG06: ; bbWeight=0.08, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + b SHORT G_M2431_IG03 + ;; size=2 bbWeight=0.08 PerfScore 0.08 +G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
str r4, [r0+0x08]
- ;; size=6 bbWeight=1 PerfScore 3.00 -G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M2431_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz + cmp r4, 0 + bgt SHORT G_M2431_IG07 + ;; size=4 bbWeight=0.09 PerfScore 0.18 +G_M2431_IG10: ; bbWeight=0.08, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + b SHORT G_M2431_IG07 + ;; size=2 bbWeight=0.08 PerfScore 0.08 +G_M2431_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movw r1, 0xd1ff @@ -68,7 +85,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR ; gcrRegs -[r2] bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -89,7 +106,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 8, PerfScore 11.18, instruction count 41, allocated bytes for code 116 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 126, prolog size 8, PerfScore 11.94, instruction count 46, allocated bytes for code 126 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -101,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
+ Function Length : 63 (0x0003f) Actual length = 126 (0x00007e)
---- 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 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm.checked.mch 15,511 7,183 7,226 1,102 -72,296 +108,790
benchmarks.run_tiered.linux.arm.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm.checked.mch 2,910 754 1,134 1,022 -4,058 +8,842
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 804 251 217 336 -1,406 +1,442
libraries_tests.run.linux.arm.Release.mch 20,236 5,776 8,803 5,657 -76,660 +156,290
librariestestsnotieredcompilation.run.linux.arm.Release.mch 1,299 360 531 408 -1,908 +3,676
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
40,760 14,324 17,911 8,525 -156,328 +279,040

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 47,907 5,815 42,092 1,234 (2.51%) 1,234 (2.51%)
benchmarks.run_pgo.linux.arm.checked.mch 161,901 59,823 102,078 3,296 (2.00%) 3,296 (2.00%)
benchmarks.run_tiered.linux.arm.checked.mch 77,608 42,153 35,455 1,069 (1.36%) 1,069 (1.36%)
coreclr_tests.run.linux.arm.checked.mch 472,496 259,424 213,072 7,201 (1.50%) 7,201 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 203,224 14 203,210 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 274,207 6 274,201 7,834 (2.78%) 7,834 (2.78%)
libraries_tests.run.linux.arm.Release.mch 708,781 443,045 265,736 17,961 (2.47%) 17,977 (2.47%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,669 21,625 253,044 33,578 (10.89%) 33,578 (10.89%)
realworld.run.linux.arm.checked.mch 36,430 147 36,283 1,410 (3.73%) 1,410 (3.73%)
2,257,223 832,052 1,425,171 73,583 (3.16%) 73,599 (3.16%)

jit-analyze output

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: 65676478 (overridden on cmd)
Total bytes of diff: 65712972 (overridden on cmd)
Total bytes of delta: 36494 (0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          84 : 116315.dasm (5.60 % of base)
          62 : 99679.dasm (6.49 % of base)
          60 : 63025.dasm (3.93 % of base)
          58 : 99369.dasm (1.00 % of base)
          56 : 134488.dasm (3.10 % of base)
          52 : 140373.dasm (2.88 % of base)
          52 : 36072.dasm (2.88 % of base)
          50 : 64259.dasm (3.22 % of base)
          48 : 43484.dasm (3.93 % of base)
          48 : 65104.dasm (1.38 % of base)
          48 : 143798.dasm (3.93 % of base)
          48 : 144264.dasm (3.77 % of base)
          48 : 114603.dasm (1.38 % of base)
          48 : 143790.dasm (3.77 % of base)
          48 : 142761.dasm (3.77 % of base)
          46 : 163815.dasm (3.03 % of base)
          46 : 125362.dasm (3.23 % of base)
          42 : 98824.dasm (3.15 % of base)
          40 : 130947.dasm (2.82 % of base)
          40 : 15592.dasm (2.22 % of base)

Top file improvements (bytes):
        -176 : 152547.dasm (-2.28 % of base)
        -118 : 140493.dasm (-4.35 % of base)
        -110 : 62503.dasm (-7.61 % of base)
        -106 : 142757.dasm (-4.00 % of base)
         -94 : 77752.dasm (-9.69 % of base)
         -94 : 79832.dasm (-9.69 % of base)
         -92 : 83856.dasm (-5.09 % of base)
         -88 : 43987.dasm (-4.65 % of base)
         -88 : 131237.dasm (-3.33 % of base)
         -88 : 135517.dasm (-3.33 % of base)
         -88 : 53234.dasm (-4.65 % of base)
         -82 : 134525.dasm (-4.60 % of base)
         -80 : 17361.dasm (-2.70 % of base)
         -78 : 32521.dasm (-7.98 % of base)
         -78 : 106190.dasm (-7.98 % of base)
         -78 : 140939.dasm (-7.98 % of base)
         -78 : 43238.dasm (-4.91 % of base)
         -78 : 137446.dasm (-7.98 % of base)
         -78 : 103334.dasm (-2.67 % of base)
         -78 : 118593.dasm (-7.98 % of base)

73 total files with Code Size differences (32 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
          84 (5.60 % of base) : 116315.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          62 (6.49 % of base) : 99679.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__determineEmitReceiverStrategy|152_0(Microsoft.CodeAnalysis.CSharp.BoundCall,byref,byref):int:this (Tier1)
          60 (3.93 % of base) : 63025.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          58 (1.00 % of base) : 99369.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
          56 (3.10 % of base) : 134488.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          52 (2.88 % of base) : 140373.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          52 (2.88 % of base) : 36072.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          50 (3.22 % of base) : 64259.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
          48 (1.38 % of base) : 65104.dasm - Newtonsoft.Json.JsonTextReader:ParseReadNumber(int,ushort,int):this (Tier1)
          48 (1.38 % of base) : 114603.dasm - Newtonsoft.Json.JsonTextReader:ParseReadNumber(int,ushort,int):this (Tier1)
          48 (3.77 % of base) : 144264.dasm - System.IO.Strategies.OSFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          48 (3.77 % of base) : 143790.dasm - System.IO.Strategies.OSFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          48 (3.77 % of base) : 142761.dasm - System.IO.Strategies.OSFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          48 (3.93 % of base) : 43484.dasm - System.IO.Strategies.OSFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
          48 (3.93 % of base) : 143798.dasm - System.IO.Strategies.OSFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
          46 (3.03 % of base) : 163815.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          46 (3.23 % of base) : 125362.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader+<>c:<get_Extensions>b__65_0(Microsoft.Win32.SafeHandles.SafeX509Handle):System.Security.Cryptography.X509Certificates.X509Extension[]:this (Tier0-FullOpts)
          42 (3.15 % of base) : 98824.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,ubyte,Microsoft.CodeAnalysis.Emit.MethodInstrumentation,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement (Tier1)
          40 (2.82 % of base) : 130947.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
          40 (2.22 % of base) : 15592.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)

Top method improvements (bytes):
        -176 (-2.28 % of base) : 152547.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
        -118 (-4.35 % of base) : 140493.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
        -110 (-7.61 % of base) : 62503.dasm - System.Runtime.Serialization.CodeGenerator:LoadMember(System.Reflection.MemberInfo):System.Type:this (Tier1)
        -106 (-4.00 % of base) : 142757.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
         -94 (-9.69 % of base) : 77752.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
         -94 (-9.69 % of base) : 79832.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
         -92 (-5.09 % of base) : 83856.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -88 (-3.33 % of base) : 131237.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
         -88 (-3.33 % of base) : 135517.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
         -88 (-4.65 % of base) : 43987.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -88 (-4.65 % of base) : 53234.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -82 (-4.60 % of base) : 134525.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -80 (-2.70 % of base) : 17361.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
         -78 (-7.98 % of base) : 32521.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 106190.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 140939.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 137446.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 118593.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 122644.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-2.67 % of base) : 103334.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)

Top method regressions (percentages):
          14 (10.61 % of base) : 110337.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          24 (9.76 % of base) : 96677.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
          14 (8.64 % of base) : 99197.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetTypeDefinitionGeneration(Microsoft.Cci.INamedTypeDefinition):int:this (Tier1)
          24 (8.00 % of base) : 96600.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation]:this (Tier1)
           6 (6.98 % of base) : 99185.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasRuntimeSpecialName():ubyte:this (Tier1)
          10 (6.67 % of base) : 30586.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          10 (6.49 % of base) : 109786.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax:get_IsVar():ubyte:this (Tier1)
          62 (6.49 % of base) : 99679.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__determineEmitReceiverStrategy|152_0(Microsoft.CodeAnalysis.CSharp.BoundCall,byref,byref):int:this (Tier1)
          22 (6.40 % of base) : 24685.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          84 (5.60 % of base) : 116315.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          30 (5.58 % of base) : 121412.dasm - System.RuntimeType:GetTypeCodeImpl():int:this (Tier1)
          22 (5.53 % of base) : 129674.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
          22 (5.53 % of base) : 137718.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
          22 (5.53 % of base) : 156322.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
          22 (5.53 % of base) : 57966.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
          14 (5.38 % of base) : 132254.dasm - System.Linq.Utilities+<>c__DisplayClass1_0`1[System.__Canon]:<CombinePredicates>b__0(System.__Canon):ubyte:this (Tier1)
          30 (5.34 % of base) : 157031.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
          30 (5.34 % of base) : 147834.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
          30 (5.34 % of base) : 134043.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
          30 (5.34 % of base) : 77999.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)

Top method improvements (percentages):
         -18 (-9.89 % of base) : 70430.dasm - System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
         -94 (-9.69 % of base) : 77752.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
         -94 (-9.69 % of base) : 79832.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
         -16 (-9.20 % of base) : 105726.dasm - System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
          -8 (-9.09 % of base) : 36424.dasm - System.Numerics.Vector:SetElementUnsafe[float](byref,int,float) (Tier1)
         -10 (-8.93 % of base) : 99172.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:get_CallingConvention():int:this (Tier1)
         -20 (-8.70 % of base) : 99161.dasm - Microsoft.Cci.MetadataWriter:CheckPathLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
         -20 (-8.55 % of base) : 97654.dasm - Microsoft.Cci.MetadataWriter:CheckNameLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
         -22 (-8.40 % of base) : 99237.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
         -28 (-8.14 % of base) : 122411.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -28 (-8.14 % of base) : 142957.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -14 (-8.05 % of base) : 132187.dasm - System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:BuildStateFlags(System.Text.RegularExpressions.Symbolic.ISolver`1[ulong],ubyte):ubyte:this (Tier1)
         -78 (-7.98 % of base) : 32521.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 106190.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 140939.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 137446.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 118593.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
         -78 (-7.98 % of base) : 122644.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Flush(ubyte):this (Tier1)
        -110 (-7.61 % of base) : 62503.dasm - System.Runtime.Serialization.CodeGenerator:LoadMember(System.Reflection.MemberInfo):System.Type:this (Tier1)
         -26 (-7.60 % of base) : 108348.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321682372 (overridden on cmd)
Total bytes of diff: 321687156 (overridden on cmd)
Total bytes of delta: 4784 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         190 : 468821.dasm (48.97 % of base)
         182 : 475911.dasm (46.91 % of base)
         164 : 463957.dasm (45.05 % of base)
         164 : 445075.dasm (45.05 % of base)
         160 : 468495.dasm (43.48 % of base)
         148 : 327657.dasm (5.60 % of base)
          90 : 345950.dasm (1.86 % of base)
          68 : 470696.dasm (7.94 % of base)
          62 : 157851.dasm (4.87 % of base)
          52 : 476551.dasm (1.74 % of base)
          48 : 470255.dasm (0.65 % of base)
          42 : 467924.dasm (3.49 % of base)
          42 : 475786.dasm (3.51 % of base)
          40 : 470400.dasm (5.14 % of base)
          38 : 470399.dasm (4.24 % of base)
          36 : 275620.dasm (4.12 % of base)
          36 : 471135.dasm (3.02 % of base)
          36 : 467339.dasm (2.20 % of base)
          36 : 476792.dasm (3.02 % of base)
          36 : 476703.dasm (4.63 % of base)

Top file improvements (bytes):
         -46 : 363955.dasm (-0.96 % of base)
         -46 : 372815.dasm (-0.97 % of base)
         -46 : 355389.dasm (-0.96 % of base)
         -36 : 232200.dasm (-4.70 % of base)
         -36 : 232238.dasm (-4.96 % of base)
         -36 : 232189.dasm (-4.70 % of base)
         -36 : 232213.dasm (-4.96 % of base)
         -36 : 232232.dasm (-4.96 % of base)
         -36 : 232223.dasm (-4.96 % of base)
         -32 : 312316.dasm (-2.47 % of base)
         -28 : 340215.dasm (-2.30 % of base)
         -26 : 348055.dasm (-2.57 % of base)
         -24 : 475484.dasm (-3.31 % of base)
         -24 : 161726.dasm (-2.42 % of base)
         -24 : 257468.dasm (-1.66 % of base)
         -24 : 443154.dasm (-3.29 % of base)
         -24 : 258715.dasm (-1.69 % of base)
         -24 : 345995.dasm (-3.95 % of base)
         -22 : 210853.dasm (-1.55 % of base)
         -22 : 234809.dasm (-1.81 % of base)

78 total files with Code Size differences (34 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         190 (48.97 % of base) : 468821.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         182 (46.91 % of base) : 475911.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         164 (45.05 % of base) : 463957.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         164 (45.05 % of base) : 445075.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         160 (43.48 % of base) : 468495.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         148 (5.60 % of base) : 327657.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
          90 (1.86 % of base) : 345950.dasm - BinderTracingTests.BinderEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (Tier1)
          68 (7.94 % of base) : 470696.dasm - Internal.IL.ReadyToRunILProvider:TryGetIntrinsicMethodIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL:this (Tier1)
          62 (4.87 % of base) : 157851.dasm - JitTest_array1_refany_il.Test:TestRef(System.TypedReference) (FullOpts)
          52 (1.74 % of base) : 476551.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,uint,int,uint):this (Tier1)
          48 (0.65 % of base) : 470255.dasm - Internal.JitInterface.CorInfoImpl:ceeInfoGetCallInfo(byref,uint,uint,int,uint,byref,byref,byref,byref,byref,byref,byref,byref):this (Tier1)
          42 (3.49 % of base) : 467924.dasm - System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long) (Tier1)
          42 (3.51 % of base) : 475786.dasm - System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long) (Tier1)
          40 (5.14 % of base) : 470400.dasm - Internal.JitInterface.JitConfigProvider+<>c__DisplayClass5_0:<Initialize>b__0(System.String,System.Reflection.Assembly,System.Nullable`1[int]):int:this (Tier1)
          38 (4.24 % of base) : 470399.dasm - System.Runtime.InteropServices.NativeLibrary:LoadLibraryCallbackStub(System.String,System.Reflection.Assembly,ubyte,uint):int (Tier1)
          36 (2.20 % of base) : 467339.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm:AlignBaseOffsetIfNecessary(Internal.TypeSystem.MetadataType,byref,ubyte,ubyte):this (Tier1)
          36 (4.63 % of base) : 476703.dasm - Internal.IL.ReadyToRunILProvider:TryGetIntrinsicMethodIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL:this (Tier1)
          36 (3.02 % of base) : 471135.dasm - System.Exception:ToString():System.String:this (Tier1)
          36 (3.02 % of base) : 476792.dasm - System.Exception:ToString():System.String:this (Tier1)
          36 (4.12 % of base) : 275620.dasm - System.Reflection.SignatureTypeExtensions:TryResolve(System.Reflection.SignatureType,System.Type[]):System.Type (Tier1)

Top method improvements (bytes):
         -46 (-0.96 % of base) : 363955.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
         -46 (-0.97 % of base) : 372815.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
         -46 (-0.96 % of base) : 355389.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
         -36 (-4.96 % of base) : 232238.dasm - Gen:ThreadPoolTest[System.Guid]() (FullOpts)
         -36 (-4.96 % of base) : 232232.dasm - Gen:ThreadPoolTest[System.Guid]() (FullOpts)
         -36 (-4.70 % of base) : 232200.dasm - Gen`1[int]:ThreadPoolTest() (FullOpts)
         -36 (-4.70 % of base) : 232189.dasm - Gen`1[int]:ThreadPoolTest() (FullOpts)
         -36 (-4.96 % of base) : 232213.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
         -36 (-4.96 % of base) : 232223.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
         -32 (-2.47 % of base) : 312316.dasm - VectorTest+Matrix`1[float]:op_Multiply(VectorTest+Matrix`1[float],VectorTest+Matrix`1[float]):VectorTest+Matrix`1[float] (Tier0-FullOpts)
         -28 (-2.30 % of base) : 340215.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[int,System.IO.Pipes.PipeStream+<ReadAsyncCore>d__82]:MoveNext(System.Threading.Thread):this (Tier1)
         -26 (-2.57 % of base) : 348055.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
         -24 (-3.31 % of base) : 475484.dasm - System.IO.BinaryReader:ReadBytes(int):ubyte[]:this (Tier1)
         -24 (-3.95 % of base) : 345995.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Tier1)
         -24 (-1.66 % of base) : 257468.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -24 (-1.69 % of base) : 258715.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -24 (-3.29 % of base) : 443154.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenInternal(System.Reflection.MethodBase,System.Type[],ubyte):int:this (Tier1)
         -24 (-2.42 % of base) : 161726.dasm - Test:Main():int (FullOpts)
         -22 (-1.55 % of base) : 210853.dasm - InnerFinallyTest:Run():int:this (FullOpts)
         -22 (-1.81 % of base) : 234809.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[int,System.IO.Pipes.PipeStream+<ReadAsyncCore>d__82]:MoveNext(System.Threading.Thread):this (Tier1)

Top method regressions (percentages):
         190 (48.97 % of base) : 468821.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         182 (46.91 % of base) : 475911.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         164 (45.05 % of base) : 463957.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         164 (45.05 % of base) : 445075.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         160 (43.48 % of base) : 468495.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
          28 (11.38 % of base) : 465832.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
          28 (11.38 % of base) : 464512.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
          24 (9.76 % of base) : 338468.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
          24 (9.76 % of base) : 233553.dasm - System.LocalAppContextSwitches:GetSwitchDefaultValue(System.String):ubyte (Instrumented Tier1)
          10 (8.62 % of base) : 227485.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
           8 (8.51 % of base) : 443741.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
          24 (8.00 % of base) : 338414.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation]:this (Tier1)
          12 (8.00 % of base) : 318732.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
          12 (8.00 % of base) : 328154.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
          12 (8.00 % of base) : 345375.dasm - System.Globalization.CultureData:get_CultureName():System.String:this (Tier1)
          68 (7.94 % of base) : 470696.dasm - Internal.IL.ReadyToRunILProvider:TryGetIntrinsicMethodIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL:this (Tier1)
           6 (6.67 % of base) : 397476.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
           6 (6.67 % of base) : 413992.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
           6 (6.67 % of base) : 420144.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
           6 (6.67 % of base) : 437556.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

Top method improvements (percentages):
         -18 (-5.33 % of base) : 328994.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier1)
         -36 (-4.96 % of base) : 232238.dasm - Gen:ThreadPoolTest[System.Guid]() (FullOpts)
         -36 (-4.96 % of base) : 232232.dasm - Gen:ThreadPoolTest[System.Guid]() (FullOpts)
         -36 (-4.96 % of base) : 232213.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
         -36 (-4.96 % of base) : 232223.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
          -8 (-4.82 % of base) : 474716.dasm - Microsoft.Build.Construction.ElementLocation:Create(System.String,int,int):Microsoft.Build.Construction.ElementLocation (Tier1)
          -2 (-4.76 % of base) : 475144.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -2 (-4.76 % of base) : 325383.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -2 (-4.76 % of base) : 325795.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
         -36 (-4.70 % of base) : 232200.dasm - Gen`1[int]:ThreadPoolTest() (FullOpts)
         -36 (-4.70 % of base) : 232189.dasm - Gen`1[int]:ThreadPoolTest() (FullOpts)
          -6 (-4.48 % of base) : 449292.dasm - System.IO.Path:GetFileName(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          -6 (-4.48 % of base) : 443737.dasm - System.IO.Path:GetFileName(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          -6 (-4.48 % of base) : 346127.dasm - System.IO.Path:GetFileName(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          -6 (-4.41 % of base) : 347846.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
          -6 (-4.41 % of base) : 356315.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
         -24 (-3.95 % of base) : 345995.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Tier1)
         -18 (-3.95 % of base) : 463670.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -18 (-3.95 % of base) : 468257.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
          -8 (-3.45 % of base) : 230227.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 50272220 (overridden on cmd)
Total bytes of diff: 50272256 (overridden on cmd)
Total bytes of delta: 36 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         146 : 223420.dasm (9.30 % of base)
          60 : 109349.dasm (1.83 % of base)
          48 : 195846.dasm (5.74 % of base)
          44 : 101453.dasm (2.87 % of base)
          42 : 188883.dasm (2.19 % of base)
          40 : 201046.dasm (6.17 % of base)
          40 : 630.dasm (2.38 % of base)
          34 : 281387.dasm (3.97 % of base)
          30 : 109392.dasm (1.31 % of base)
          28 : 26419.dasm (1.47 % of base)
          26 : 108976.dasm (2.40 % of base)
          26 : 108623.dasm (2.40 % of base)
          24 : 197321.dasm (1.00 % of base)
          22 : 224746.dasm (2.30 % of base)
          20 : 10808.dasm (1.94 % of base)
          18 : 4556.dasm (1.54 % of base)
          14 : 234943.dasm (0.81 % of base)
          14 : 272372.dasm (1.47 % of base)
          14 : 71914.dasm (1.86 % of base)
          14 : 183802.dasm (0.14 % of base)

Top file improvements (bytes):
         -48 : 272983.dasm (-3.74 % of base)
         -30 : 141968.dasm (-3.07 % of base)
         -24 : 238528.dasm (-0.90 % of base)
         -22 : 135378.dasm (-0.37 % of base)
         -20 : 242435.dasm (-1.47 % of base)
         -18 : 82141.dasm (-1.01 % of base)
         -18 : 115733.dasm (-4.41 % of base)
         -18 : 206349.dasm (-2.44 % of base)
         -16 : 53006.dasm (-0.73 % of base)
         -16 : 201258.dasm (-2.37 % of base)
         -14 : 101704.dasm (-4.37 % of base)
         -14 : 145185.dasm (-1.17 % of base)
         -14 : 234463.dasm (-0.84 % of base)
         -14 : 271426.dasm (-3.80 % of base)
         -14 : 16589.dasm (-1.07 % of base)
         -12 : 219826.dasm (-2.90 % of base)
         -12 : 168173.dasm (-0.68 % of base)
         -12 : 209160.dasm (-2.93 % of base)
         -12 : 218217.dasm (-2.90 % of base)
         -12 : 218733.dasm (-3.12 % of base)

68 total files with Code Size differences (32 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         146 (9.30 % of base) : 223420.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
          60 (1.83 % of base) : 109349.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
          48 (5.74 % of base) : 195846.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
          44 (2.87 % of base) : 101453.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
          42 (2.19 % of base) : 188883.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:AddNewActivitySourceTransform(System.String,int,int,System.Diagnostics.DiagnosticSourceEventSource) (FullOpts)
          40 (6.17 % of base) : 201046.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
          40 (2.38 % of base) : 630.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          34 (3.97 % of base) : 281387.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          30 (1.31 % of base) : 109392.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteHashtable(System.Xml.Serialization.EnumMapping,System.String):System.String:this (FullOpts)
          28 (1.47 % of base) : 26419.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericComparisonArbArrayWithComparer(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array):int (FullOpts)
          26 (2.40 % of base) : 108623.dasm - System.Xml.Serialization.SoapReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.SoapAttributes,System.String):System.String:this (FullOpts)
          26 (2.40 % of base) : 108976.dasm - System.Xml.Serialization.XmlReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.XmlAttributes,System.String):System.String:this (FullOpts)
          24 (1.00 % of base) : 197321.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          22 (2.30 % of base) : 224746.dasm - System.Data.SqlTypes.SqlChars:Write(long,ushort[],int,int):this (FullOpts)
          20 (1.94 % of base) : 10808.dasm - Microsoft.Extensions.Configuration.Ini.IniStreamConfigurationProvider:Read(System.IO.Stream):System.Collections.Generic.IDictionary`2[System.String,System.String] (FullOpts)
          18 (1.54 % of base) : 4556.dasm - System.Numerics.Vector`1[ubyte]:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
          14 (1.86 % of base) : 71914.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|426_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          14 (0.81 % of base) : 234943.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateAndEscapeDelimiters():this (FullOpts)
          14 (1.47 % of base) : 272372.dasm - System.Collections.Specialized.NameValueCollection:CopyTo(System.Array,int):this (FullOpts)
          14 (0.14 % of base) : 183802.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[ubyte]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
         -48 (-3.74 % of base) : 272983.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -30 (-3.07 % of base) : 141968.dasm - System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int (FullOpts)
         -24 (-0.90 % of base) : 238528.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
         -22 (-0.37 % of base) : 135378.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsCore(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
         -20 (-1.47 % of base) : 242435.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
         -18 (-2.44 % of base) : 206349.dasm - Microsoft.Build.Execution.BuildManager:AttachDebugger() (FullOpts)
         -18 (-1.01 % of base) : 82141.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
         -18 (-4.41 % of base) : 115733.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
         -16 (-2.37 % of base) : 201258.dasm - Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (FullOpts)
         -16 (-0.73 % of base) : 53006.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupAttributeType(Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
         -14 (-1.07 % of base) : 16589.dasm - <StartupCode$FSharp-Core>.$Async+Sleep@1801:Invoke(Microsoft.FSharp.Control.AsyncActivation`1[Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
         -14 (-0.84 % of base) : 234463.dasm - Microsoft.VisualBasic.CompilerServices.Utils:MethodToString(System.Reflection.MethodBase):System.String (FullOpts)
         -14 (-3.80 % of base) : 271426.dasm - System.IO.Pipelines.PipeCompletion:ToString():System.String:this (FullOpts)
         -14 (-1.17 % of base) : 145185.dasm - System.Security.Cryptography.X509Certificates.Asn1.ValidityAsn:.ctor(System.DateTimeOffset,System.DateTimeOffset):this (FullOpts)
         -14 (-4.37 % of base) : 101704.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
         -12 (-2.93 % of base) : 209160.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -12 (-3.57 % of base) : 253802.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+<>c:<LogDiagnostic>b__9_1(System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.LocalizableString]):System.String:this (FullOpts)
         -12 (-0.65 % of base) : 169357.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -12 (-0.68 % of base) : 168173.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -12 (-3.06 % of base) : 218475.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)

Top method regressions (percentages):
         146 (9.30 % of base) : 223420.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
          10 (8.62 % of base) : 230417.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
          40 (6.17 % of base) : 201046.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
          48 (5.74 % of base) : 195846.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
          12 (5.50 % of base) : 224553.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
          34 (3.97 % of base) : 281387.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          44 (2.87 % of base) : 101453.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
           8 (2.60 % of base) : 240448.dasm - Roslyn.Utilities.StringTable:Add(ushort[],int,int):System.String:this (FullOpts)
          14 (2.55 % of base) : 96619.dasm - System.Xml.Base64Encoder:Encode(ubyte[],int,int):this (FullOpts)
          10 (2.48 % of base) : 108356.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:SetCollectionObjectWithCollectionMember(byref,System.Xml.Serialization.ReflectionXmlSerializationReader+CollectionMember,System.Type) (FullOpts)
          26 (2.40 % of base) : 108623.dasm - System.Xml.Serialization.SoapReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.SoapAttributes,System.String):System.String:this (FullOpts)
          26 (2.40 % of base) : 108976.dasm - System.Xml.Serialization.XmlReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.XmlAttributes,System.String):System.String:this (FullOpts)
          40 (2.38 % of base) : 630.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          22 (2.30 % of base) : 224746.dasm - System.Data.SqlTypes.SqlChars:Write(long,ushort[],int,int):this (FullOpts)
          42 (2.19 % of base) : 188883.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:AddNewActivitySourceTransform(System.String,int,int,System.Diagnostics.DiagnosticSourceEventSource) (FullOpts)
           4 (2.02 % of base) : 281492.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
          20 (1.94 % of base) : 10808.dasm - Microsoft.Extensions.Configuration.Ini.IniStreamConfigurationProvider:Read(System.IO.Stream):System.Collections.Generic.IDictionary`2[System.String,System.String] (FullOpts)
          14 (1.86 % of base) : 71914.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|426_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          60 (1.83 % of base) : 109349.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
           2 (1.82 % of base) : 263737.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)

Top method improvements (percentages):
         -10 (-4.46 % of base) : 82538.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)
         -18 (-4.41 % of base) : 115733.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
         -14 (-4.37 % of base) : 101704.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
         -14 (-3.80 % of base) : 271426.dasm - System.IO.Pipelines.PipeCompletion:ToString():System.String:this (FullOpts)
         -48 (-3.74 % of base) : 272983.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -12 (-3.57 % of base) : 253802.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+<>c:<LogDiagnostic>b__9_1(System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.LocalizableString]):System.String:this (FullOpts)
          -8 (-3.45 % of base) : 206518.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
         -12 (-3.12 % of base) : 218500.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-3.12 % of base) : 218733.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1[System.__Canon,System.Nullable`1[int]]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-3.12 % of base) : 218760.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1[ubyte,System.Nullable`1[int]]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -30 (-3.07 % of base) : 141968.dasm - System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int (FullOpts)
         -12 (-3.06 % of base) : 218475.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          -4 (-3.03 % of base) : 119001.dasm - Microsoft.CodeAnalysis.VisualBasic.ClsComplianceChecker:VisitAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):this (FullOpts)
         -12 (-2.93 % of base) : 209160.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -12 (-2.90 % of base) : 218217.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+TargetObserver`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-2.90 % of base) : 219409.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-2.90 % of base) : 219638.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-2.90 % of base) : 219669.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-2.90 % of base) : 219798.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-2.90 % of base) : 219826.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 239445652 (overridden on cmd)
Total bytes of diff: 239525282 (overridden on cmd)
Total bytes of delta: 79630 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1668 : 529365.dasm (87.79 % of base)
         886 : 675055.dasm (56.58 % of base)
         844 : 515924.dasm (58.13 % of base)
         818 : 722356.dasm (79.88 % of base)
         804 : 305726.dasm (43.51 % of base)
         798 : 529565.dasm (61.86 % of base)
         788 : 534459.dasm (46.08 % of base)
         780 : 104245.dasm (73.17 % of base)
         776 : 331942.dasm (39.88 % of base)
         776 : 130061.dasm (72.80 % of base)
         774 : 381076.dasm (39.98 % of base)
         768 : 252162.dasm (75.00 % of base)
         768 : 131643.dasm (75.00 % of base)
         768 : 137168.dasm (75.00 % of base)
         768 : 275328.dasm (75.00 % of base)
         768 : 475816.dasm (75.00 % of base)
         768 : 498428.dasm (75.00 % of base)
         768 : 305010.dasm (75.00 % of base)
         768 : 92707.dasm (75.00 % of base)
         768 : 125497.dasm (75.00 % of base)

Top file improvements (bytes):
        -520 : 260169.dasm (-7.82 % of base)
        -520 : 386046.dasm (-7.82 % of base)
        -520 : 121506.dasm (-7.82 % of base)
        -520 : 133244.dasm (-7.82 % of base)
        -520 : 723802.dasm (-7.82 % of base)
        -516 : 198505.dasm (-7.76 % of base)
        -516 : 307219.dasm (-7.76 % of base)
        -494 : 394720.dasm (-7.43 % of base)
        -486 : 426851.dasm (-7.32 % of base)
        -462 : 201032.dasm (-7.01 % of base)
        -438 : 98342.dasm (-6.59 % of base)
        -438 : 350445.dasm (-6.59 % of base)
        -434 : 326677.dasm (-6.61 % of base)
        -422 : 574915.dasm (-6.36 % of base)
        -422 : 571531.dasm (-6.36 % of base)
        -408 : 376107.dasm (-6.14 % of base)
        -408 : 315473.dasm (-6.14 % of base)
        -408 : 476116.dasm (-6.14 % of base)
        -408 : 205468.dasm (-6.14 % of base)
        -402 : 129367.dasm (-6.05 % of base)

89 total files with Code Size differences (46 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
        1668 (87.79 % of base) : 529365.dasm - System.Reflection.NullabilityInfoContext:CheckNullabilityAttributes(System.Reflection.NullabilityInfo,System.Collections.Generic.IList`1[System.Reflection.CustomAttributeData]) (Tier1)
         886 (56.58 % of base) : 675055.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
         844 (58.13 % of base) : 515924.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
         818 (79.88 % of base) : 722356.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         804 (43.51 % of base) : 305726.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         798 (61.86 % of base) : 529565.dasm - System.Reflection.NullabilityInfoContext:GetNullableContext(System.Reflection.MemberInfo):System.Nullable`1[int]:this (Tier1)
         788 (46.08 % of base) : 534459.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         780 (73.17 % of base) : 104245.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         776 (72.80 % of base) : 130061.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         776 (39.88 % of base) : 331942.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         774 (39.98 % of base) : 381076.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         768 (75.00 % of base) : 252162.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 131643.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 137168.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 275328.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 475816.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 498428.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 305010.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 92707.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 125497.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method improvements (bytes):
        -520 (-7.82 % of base) : 260169.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -520 (-7.82 % of base) : 386046.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -520 (-7.82 % of base) : 121506.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -520 (-7.82 % of base) : 133244.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -520 (-7.82 % of base) : 723802.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -516 (-7.76 % of base) : 198505.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -516 (-7.76 % of base) : 307219.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -494 (-7.43 % of base) : 394720.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -486 (-7.32 % of base) : 426851.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -462 (-7.01 % of base) : 201032.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -438 (-6.59 % of base) : 98342.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -438 (-6.59 % of base) : 350445.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -434 (-6.61 % of base) : 326677.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -422 (-6.36 % of base) : 574915.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -422 (-6.36 % of base) : 571531.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -408 (-6.14 % of base) : 376107.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -408 (-6.14 % of base) : 315473.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -408 (-6.14 % of base) : 476116.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -408 (-6.14 % of base) : 205468.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -402 (-6.05 % of base) : 129367.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)

Top method regressions (percentages):
        1668 (87.79 % of base) : 529365.dasm - System.Reflection.NullabilityInfoContext:CheckNullabilityAttributes(System.Reflection.NullabilityInfo,System.Collections.Generic.IList`1[System.Reflection.CustomAttributeData]) (Tier1)
         818 (79.88 % of base) : 722356.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         766 (75.10 % of base) : 406125.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 252162.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 131643.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 137168.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 275328.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 475816.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 498428.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 305010.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 92707.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 125497.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 381292.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 383147.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         768 (75.00 % of base) : 409105.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         764 (74.61 % of base) : 329452.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         764 (74.61 % of base) : 349367.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         764 (74.61 % of base) : 409970.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         764 (74.61 % of base) : 534786.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         764 (74.61 % of base) : 708886.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method improvements (percentages):
         -10 (-23.81 % of base) : 448104.dasm - System.Xml.Schema.SchemaInfo:GetElementDecl(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaElementDecl:this (Tier1)
         -20 (-17.24 % of base) : 48389.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
         -20 (-17.24 % of base) : 697496.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
         -20 (-17.24 % of base) : 90309.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
          -6 (-10.71 % of base) : 449766.dasm - System.Xml.Schema.SchemaInfo:GetElement(System.Xml.XmlQualifiedName):System.Xml.Schema.XmlSchemaElement:this (Tier1)
         -22 (-10.38 % of base) : 342569.dasm - System.Linq.Parallel.SelectQueryOperator`2+SelectQueryOperatorEnumerator`1[int,double,int]:MoveNext(byref,byref):ubyte:this (Tier1)
         -22 (-10.38 % of base) : 342562.dasm - System.Linq.Parallel.SelectQueryOperator`2+SelectQueryOperatorEnumerator`1[int,float,int]:MoveNext(byref,byref):ubyte:this (Tier1)
         -18 (-10.11 % of base) : 646003.dasm - Newtonsoft.Json.JsonWriter:CalculateWriteTokenInitialDepth(Newtonsoft.Json.JsonReader):int:this (Tier1)
         -18 (-10.00 % of base) : 646009.dasm - Newtonsoft.Json.JsonWriter:CalculateWriteTokenFinalDepth(Newtonsoft.Json.JsonReader):int:this (Tier1)
         -40 (-9.26 % of base) : 213217.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):ubyte:this (Tier1)
         -18 (-9.09 % of base) : 376683.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -18 (-9.09 % of base) : 333533.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -18 (-9.09 % of base) : 396290.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -18 (-9.09 % of base) : 316889.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -18 (-9.09 % of base) : 323765.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -18 (-9.09 % of base) : 403250.dasm - System.Net.Sockets.SocketPal:CreateSocket(int):System.Net.Sockets.SafeSocketHandle (Tier1)
         -40 (-8.85 % of base) : 211925.dasm - System.Collections.Generic.Dictionary`2[int,int]:FindValue(int):byref:this (Tier1)
         -20 (-8.70 % of base) : 180557.dasm - Microsoft.Cci.MetadataWriter:CheckPathLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
         -20 (-8.55 % of base) : 179186.dasm - Microsoft.Cci.MetadataWriter:CheckNameLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
         -46 (-8.49 % of base) : 62355.dasm - Microsoft.CodeAnalysis.Formatting.FormattingContext:IsFormattingDisabled(int):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94257664 (overridden on cmd)
Total bytes of diff: 94259432 (overridden on cmd)
Total bytes of delta: 1768 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         146 : 90667.dasm (9.44 % of base)
          66 : 165365.dasm (2.09 % of base)
          58 : 123508.dasm (4.98 % of base)
          58 : 123789.dasm (5.19 % of base)
          58 : 287452.dasm (2.65 % of base)
          52 : 279704.dasm (1.75 % of base)
          50 : 279736.dasm (3.86 % of base)
          48 : 202025.dasm (0.93 % of base)
          48 : 273568.dasm (7.67 % of base)
          42 : 97515.dasm (2.19 % of base)
          36 : 203219.dasm (1.91 % of base)
          34 : 279705.dasm (1.19 % of base)
          34 : 158419.dasm (3.97 % of base)
          32 : 201771.dasm (2.74 % of base)
          32 : 201989.dasm (0.65 % of base)
          30 : 202752.dasm (0.73 % of base)
          30 : 203250.dasm (0.74 % of base)
          30 : 203074.dasm (0.67 % of base)
          30 : 203188.dasm (0.64 % of base)
          30 : 172970.dasm (1.35 % of base)

Top file improvements (bytes):
         -48 : 33485.dasm (-3.74 % of base)
         -42 : 294603.dasm (-0.80 % of base)
         -38 : 294538.dasm (-0.81 % of base)
         -32 : 153561.dasm (-3.48 % of base)
         -32 : 293418.dasm (-1.89 % of base)
         -30 : 294545.dasm (-0.55 % of base)
         -28 : 118572.dasm (-0.74 % of base)
         -24 : 285578.dasm (-1.03 % of base)
         -24 : 287261.dasm (-0.83 % of base)
         -24 : 152293.dasm (-0.43 % of base)
         -24 : 293419.dasm (-1.36 % of base)
         -22 : 85343.dasm (-3.46 % of base)
         -22 : 301794.dasm (-0.88 % of base)
         -20 : 155867.dasm (-0.82 % of base)
         -18 : 7115.dasm (-1.00 % of base)
         -18 : 130834.dasm (-0.73 % of base)
         -16 : 218775.dasm (-2.37 % of base)
         -16 : 293424.dasm (-0.81 % of base)
         -14 : 120217.dasm (-0.71 % of base)
         -14 : 48065.dasm (-3.80 % of base)

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

Top method regressions (bytes):
         146 (9.44 % of base) : 90667.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
          66 (2.09 % of base) : 165365.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
          58 (4.98 % of base) : 123508.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
          58 (5.19 % of base) : 123789.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
          58 (2.65 % of base) : 287452.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30767_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          52 (1.75 % of base) : 279704.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27736_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          50 (3.86 % of base) : 279736.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27776_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          48 (0.93 % of base) : 202025.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
          48 (7.67 % of base) : 273568.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex988_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          42 (2.19 % of base) : 97515.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:AddNewActivitySourceTransform(System.String,int,int,System.Diagnostics.DiagnosticSourceEventSource) (FullOpts)
          36 (1.91 % of base) : 203219.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes() (FullOpts)
          34 (3.97 % of base) : 158419.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          34 (1.19 % of base) : 279705.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27737_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (0.65 % of base) : 201989.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory() (FullOpts)
          32 (2.74 % of base) : 201771.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim() (FullOpts)
          30 (0.64 % of base) : 203188.dasm - System.Tests.StringTests:MakeSureNoTrimChecksGoOutOfRange_Memory() (FullOpts)
          30 (0.73 % of base) : 202752.dasm - System.Tests.StringTests:NoWhiteSpaceTrim_Memory() (FullOpts)
          30 (0.67 % of base) : 203074.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim_Memory() (FullOpts)
          30 (0.74 % of base) : 203250.dasm - System.Tests.StringTests:WhiteSpaceInMiddleTrim_Memory() (FullOpts)
          30 (1.35 % of base) : 172970.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)

Top method improvements (bytes):
         -48 (-3.74 % of base) : 33485.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -42 (-0.80 % of base) : 294603.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33116_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-0.81 % of base) : 294538.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33114_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -32 (-3.48 % of base) : 153561.dasm - System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int (FullOpts)
         -32 (-1.89 % of base) : 293418.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33048_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -30 (-0.55 % of base) : 294545.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33115_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -28 (-0.74 % of base) : 118572.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests:SetsLastModifiedTimeOnExtractedDirectories():this (FullOpts)
         -24 (-0.43 % of base) : 152293.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (FullOpts)
         -24 (-1.03 % of base) : 285578.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29346_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-0.83 % of base) : 287261.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31329_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-1.36 % of base) : 293419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33049_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -22 (-3.46 % of base) : 85343.dasm - System.ComponentModel.Tests.EnumConverterTests:VerifyArraysEqual[int](int[],System.Object) (FullOpts)
         -22 (-0.88 % of base) : 301794.dasm - System.Threading.Tasks.Tests.ParallelForTests:TestParallelForEachConversions() (FullOpts)
         -20 (-0.82 % of base) : 155867.dasm - System.Threading.Tasks.TaskTimeoutExtensions+<WaitAsync>d__7`1[System.__Canon]:MoveNext():this (FullOpts)
         -18 (-1.00 % of base) : 7115.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
         -18 (-0.73 % of base) : 130834.dasm - System.IO.Tests.BinaryWriter_WriteTests:BinaryWriter_WriteBoolTest():this (FullOpts)
         -16 (-2.37 % of base) : 218775.dasm - Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (FullOpts)
         -16 (-0.81 % of base) : 293424.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33054_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -14 (-3.80 % of base) : 48065.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -14 (-3.80 % of base) : 42252.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)

Top method regressions (percentages):
         146 (9.44 % of base) : 90667.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
          10 (8.62 % of base) : 123215.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
          48 (7.67 % of base) : 273568.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex988_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (5.50 % of base) : 90670.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
          58 (5.19 % of base) : 123789.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
          58 (4.98 % of base) : 123508.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
          14 (4.79 % of base) : 287383.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30704_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (4.44 % of base) : 279829.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27913_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          34 (3.97 % of base) : 158419.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          50 (3.86 % of base) : 279736.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27776_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (3.43 % of base) : 298800.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          12 (3.43 % of base) : 298791.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[int]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          12 (3.43 % of base) : 298790.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1[int]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          12 (3.43 % of base) : 298787.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1[int]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          28 (3.39 % of base) : 287269.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31332_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (3.37 % of base) : 150692.dasm - System.Net.Mime.MimeMultiPart:GetNextBoundary():System.String (FullOpts)
          12 (3.33 % of base) : 165096.dasm - System.Net.Test.Uri.IriTest.IriEscapeUnescapeTest:EscapeUnescapeTestComponent(System.String,int):System.String:this (FullOpts)
          12 (3.26 % of base) : 57745.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Equal(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
          12 (3.26 % of base) : 57766.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Lesser(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
          24 (3.11 % of base) : 203245.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)

Top method improvements (percentages):
         -12 (-3.87 % of base) : 124302.dasm - System.IO.Tests.Directory_Move:DirectoryNameWithSpaces():this (FullOpts)
         -14 (-3.80 % of base) : 48065.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -14 (-3.80 % of base) : 42252.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -48 (-3.74 % of base) : 33485.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -32 (-3.48 % of base) : 153561.dasm - System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int (FullOpts)
         -22 (-3.46 % of base) : 85343.dasm - System.ComponentModel.Tests.EnumConverterTests:VerifyArraysEqual[int](int[],System.Object) (FullOpts)
         -12 (-3.14 % of base) : 305160.dasm - System.IO.TempFile:GetFilePath(System.String,int):System.String (FullOpts)
         -12 (-3.14 % of base) : 198446.dasm - System.IO.TempFile:GetFilePath(System.String,int):System.String (FullOpts)
         -12 (-3.14 % of base) : 199462.dasm - System.IO.TempFile:GetFilePath(System.String,int):System.String (FullOpts)
          -8 (-2.82 % of base) : 13163.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)
         -14 (-2.69 % of base) : 223329.dasm - System.Security.Cryptography.Tests.SignatureAlgorithmHashTests`1[System.__Canon]:HashData_Offsets(ubyte[],ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
          -4 (-2.60 % of base) : 20768.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this (FullOpts)
          -4 (-2.60 % of base) : 20893.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(short):int:this (FullOpts)
          -6 (-2.59 % of base) : 29447.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitIEnumerable(Microsoft.Extensions.DependencyInjection.ServiceLookup.IEnumerableCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
          -6 (-2.59 % of base) : 223561.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
         -10 (-2.55 % of base) : 124278.dasm - System.IO.Tests.Directory_Move:ThrowIOExceptionWhenMovingToExistingDirectoryWithSameCase():this (FullOpts)
          -4 (-2.53 % of base) : 123227.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource<System.Net.Sockets.Socket>.GetResult(short):System.Net.Sockets.Socket:this (FullOpts)
          -6 (-2.50 % of base) : 13158.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:IsDefinedInSourceTree(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (FullOpts)
          -6 (-2.42 % of base) : 226713.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests+<>c__DisplayClass8_0:<VerifyDecodeFailure>b__1():System.Object:this (FullOpts)
         -16 (-2.37 % of base) : 218775.dasm - Internal.Cryptography.PkcsHelpers:EncodeUtcTime(System.DateTime):ubyte[] (FullOpts)



windows x86

Diffs are based on 2,678,702 contexts (1,054,747 MinOpts, 1,623,955 FullOpts).

MISSED contexts: base: 11 (0.00%), diff: 656 (0.02%)

Overall (-51,776 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 55,285,524 -117,707
coreclr_tests.run.windows.x86.checked.mch 371,677,826 +6,755
libraries.pmi.windows.x86.checked.mch 49,759,154 +3,071
libraries_tests.run.windows.x86.Release.mch 206,782,528 +44,446
librariestestsnotieredcompilation.run.windows.x86.Release.mch 112,705,032 +11,659

FullOpts (-51,776 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 44,439,683 -117,707
coreclr_tests.run.windows.x86.checked.mch 119,096,783 +6,755
libraries.pmi.windows.x86.checked.mch 49,663,921 +3,071
libraries_tests.run.windows.x86.Release.mch 97,462,256 +44,446
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,862,275 +11,659

Example diffs

benchmarks.run_pgo.windows.x86.checked.mch

-37 (-11.04%) : 98924.dasm - System.ValueTuple3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple3[int,System.Canon,System.Canon]):ubyte:this (Tier1)

@@ -9,34 +9,34 @@ ; 4 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4.81) byref -> edi this single-def -; V01 arg1 [V01,T12] ( 5, 2.81) struct (12) [ebp+0x08] do-not-enreg[SF] single-def <System.ValueTuple`3[int,System.__Canon,System.__Canon]> -; V02 TypeCtx [V02,T00] ( 7, 5.17) int -> esi single-def
+; V00 this [V00,T03] ( 5, 4 ) byref -> edi this single-def +; V01 arg1 [V01,T07] ( 5, 2 ) struct (12) [ebp+0x08] do-not-enreg[SF] single-def <System.ValueTuple`3[int,System.__Canon,System.__Canon]> +; V02 TypeCtx [V02,T00] ( 7, 4.20) int -> esi single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V04 tmp1 [V04,T08] ( 4, 4 ) ref -> eax class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V04 tmp1 [V04,T05] ( 4, 4 ) ref -> ecx class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V06 tmp3 [V06,T10] ( 4, 3.25) ref -> ecx class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]> -; V07 tmp4 [V07,T13] ( 3, 2 ) int -> ecx "guarded devirt return temp" -; V08 tmp5 [V08,T02] ( 7, 6 ) ref -> edx single-def "guarded devirt arg temp"
+; V06 tmp3 [V06,T13] ( 4, 0 ) ref -> eax class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]> +; V07 tmp4 [V07,T09] ( 3, 1 ) int -> ebx "guarded devirt return temp" +; V08 tmp5 [V08,T01] ( 7, 6 ) ref -> edx single-def "guarded devirt arg temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericEqualityComparer`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V10 tmp7 [V10,T15] ( 5, 1.62) int -> eax "guarded devirt return temp" -; V11 tmp8 [V11,T05] ( 7, 4.88) ref -> edx single-def "guarded devirt arg temp"
+; V10 tmp7 [V10,T12] ( 5, 0 ) int -> ecx "guarded devirt return temp" +; V11 tmp8 [V11,T10] ( 7, 0 ) ref -> edx single-def "guarded devirt arg temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericEqualityComparer`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
-; V17 tmp14 [V17,T03] ( 7, 6 ) ref -> ebx class-hnd single-def "Inlining Arg" <System.__Canon> -; V18 tmp15 [V18,T14] ( 4, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V17 tmp14 [V17,T02] ( 7, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.__Canon> +; V18 tmp15 [V18,T08] ( 4, 2 ) ubyte -> ebx "Inline return value spill temp"
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> ;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
-; V21 tmp18 [V21,T06] ( 7, 4.88) ref -> ecx class-hnd single-def "Inlining Arg" <System.__Canon> -; V22 tmp19 [V22,T16] ( 4, 1.62) ubyte -> eax "Inline return value spill temp"
+; V21 tmp18 [V21,T11] ( 7, 0 ) ref -> eax class-hnd single-def "Inlining Arg" <System.__Canon> +; V22 tmp19 [V22,T14] ( 4, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
-; V24 rat0 [V24,T09] ( 3, 4 ) int -> ecx "runtime lookup"
+; V24 rat0 [V24,T06] ( 3, 4 ) int -> ecx "runtime lookup"
; V25 rat1 [V25,T04] ( 3, 5.60) int -> ecx "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T11] ( 3, 3.25) int -> ecx "runtime lookup" -; V27 rat3 [V27,T07] ( 3, 4.55) int -> ecx "fgMakeTemp is creating a new local variable"
+; V26 rat2 [V26,T15] ( 3, 0 ) int -> ecx "runtime lookup" +; V27 rat3 [V27,T16] ( 3, 0 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 4 @@ -55,87 +55,63 @@ G_M3207_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, G_M3207_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz mov ecx, dword ptr [edi+0x08] cmp ecx, dword ptr [ebp+0x10]
- jne G_M3207_IG10
+ jne SHORT G_M3207_IG07
mov ecx, dword ptr [esi+0x24] mov ecx, dword ptr [ecx] mov ecx, dword ptr [ecx+0x10] test ecx, ecx
- je SHORT G_M3207_IG09 - ;; size=24 bbWeight=1 PerfScore 12.25
+ je SHORT G_M3207_IG06 + ;; size=20 bbWeight=1 PerfScore 12.25
G_M3207_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] - ; gcrRegs +[eax] - mov edx, gword ptr [edi] - ; gcrRegs +[edx] - cmp dword ptr [eax], 0xD1FFAB1E - jne G_M3207_IG21 - mov ebx, gword ptr [ebp+0x08] - ; gcrRegs +[ebx] - test edx, edx - je G_M3207_IG20 - test ebx, ebx - je SHORT G_M3207_IG10 - cmp edx, ebx - jne G_M3207_IG18 - mov ecx, 1 - ;; size=48 bbWeight=1 PerfScore 14.00 -G_M3207_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - ; gcrRegs -[eax edx ebx] - test ecx, ecx - je SHORT G_M3207_IG10 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M3207_IG05: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov ecx, dword ptr [esi+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x14] - test ecx, ecx - je SHORT G_M3207_IG12 - ;; size=12 bbWeight=0.81 PerfScore 5.89 -G_M3207_IG06: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [edi+0x04]
+ mov edx, gword ptr [edi]
; gcrRegs +[edx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M3207_IG17 - mov ecx, gword ptr [ebp+0x0C]
+ jne SHORT G_M3207_IG11 + mov ecx, gword ptr [ebp+0x08]
test edx, edx
- je SHORT G_M3207_IG16
+ je SHORT G_M3207_IG10
test ecx, ecx
- je SHORT G_M3207_IG15
+ je SHORT G_M3207_IG07
cmp edx, ecx
- jne SHORT G_M3207_IG13 - mov eax, 1 - ; gcrRegs -[eax] - ;; size=43 bbWeight=0.81 PerfScore 11.58 -G_M3207_IG07: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx edx] - ; byrRegs -[edi] - movzx eax, al - ;; size=3 bbWeight=0.81 PerfScore 0.20 -G_M3207_IG08: ; bbWeight=0.81, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=8 bbWeight=0.81 PerfScore 3.66 -G_M3207_IG09: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref - ; byrRegs +[edi]
+ jne SHORT G_M3207_IG05 + mov ebx, 1 + ;; size=38 bbWeight=1 PerfScore 14.25 +G_M3207_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs -[eax ecx edx] + jmp SHORT G_M3207_IG12 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M3207_IG05: ; bbWeight=0, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs +[ecx edx] + mov eax, dword ptr [edx+0x0C] + cmp eax, dword ptr [ecx+0x0C] + jne SHORT G_M3207_IG09 + mov eax, gword ptr [edx+0x04] + ; gcrRegs +[eax] + cmp eax, gword ptr [ecx+0x04] + jne SHORT G_M3207_IG09 + mov edx, gword ptr [edx+0x08] + xor ebx, ebx + cmp edx, gword ptr [ecx+0x08] + sete bl + jmp SHORT G_M3207_IG04 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M3207_IG06: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs -[eax ecx edx]
mov ecx, esi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov ecx, eax
- jmp G_M3207_IG03 - ;; size=19 bbWeight=0.20 PerfScore 0.75 -G_M3207_IG10: ; bbWeight=0.19, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M3207_IG03 + ;; size=16 bbWeight=0.20 PerfScore 0.75 +G_M3207_IG07: ; bbWeight=0.19, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[edi] xor eax, eax ;; size=2 bbWeight=0.19 PerfScore 0.05
-G_M3207_IG11: ; bbWeight=0.19, epilog, nogc, extend
+G_M3207_IG08: ; bbWeight=0.19, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -143,87 +119,98 @@ G_M3207_IG11: ; bbWeight=0.19, epilog, nogc, extend pop ebp ret 12 ;; size=8 bbWeight=0.19 PerfScore 0.84
-G_M3207_IG12: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+G_M3207_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
; byrRegs +[edi]
- mov ecx, esi - mov edx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - mov ecx, eax - jmp SHORT G_M3207_IG06 - ;; size=16 bbWeight=0.16 PerfScore 0.61 -G_M3207_IG13: ; bbWeight=0, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx edx] - ; byrRegs -[edi] - mov eax, dword ptr [edx+0x0C] - cmp eax, dword ptr [ecx+0x0C] - jne SHORT G_M3207_IG14 - mov eax, gword ptr [edx+0x04] - ; gcrRegs +[eax] - cmp eax, gword ptr [ecx+0x04] - jne SHORT G_M3207_IG14 - mov edx, gword ptr [edx+0x08] - xor eax, eax - ; gcrRegs -[eax] - cmp edx, gword ptr [ecx+0x08] - sete al - jmp SHORT G_M3207_IG07 - ;; size=29 bbWeight=0 PerfScore 0.00 -G_M3207_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx edx] - xor eax, eax - jmp SHORT G_M3207_IG07
+ xor ebx, ebx + jmp SHORT G_M3207_IG04
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3207_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - xor eax, eax - jmp SHORT G_M3207_IG07 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M3207_IG16: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M3207_IG10: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs +[ecx] test ecx, ecx
- jne SHORT G_M3207_IG15 - mov eax, 1 - jmp SHORT G_M3207_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00 -G_M3207_IG17: ; bbWeight=0, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3207_IG07 + jmp SHORT G_M3207_IG13 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M3207_IG11: ; bbWeight=0, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000080 {edi}, byref
; gcrRegs +[edx]
- push gword ptr [ebp+0x0C]
+ push gword ptr [ebp+0x08]
mov eax, dword ptr [ecx] mov eax, dword ptr [eax+0x2C] call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx]
- jmp SHORT G_M3207_IG07
+ mov ebx, eax
;; size=13 bbWeight=0 PerfScore 0.00
-G_M3207_IG18: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000080 {edi}, byref, isz - ; gcrRegs +[edx ebx] - ; byrRegs +[edi]
+G_M3207_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz + test ebx, ebx + je SHORT G_M3207_IG07 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M3207_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz + mov ecx, dword ptr [esi+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x14]
...

-28 (-10.41%) : 33173.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)

@@ -12,8 +12,8 @@ ; V00 this [V00,T03] ( 4, 4 ) byref -> esi this single-def ; V01 arg1 [V01,T05] ( 6, 3 ) ref -> edi class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox> ; V02 loc0 [V02,T00] ( 12, 8 ) ref -> ebx class-hnd single-def <System.Object>
-; V03 loc1 [V03,T10] ( 5, 2 ) ref -> ecx class-hnd single-def <<unknown class>> -; V04 tmp0 [V04,T09] ( 2, 2 ) int -> ecx
+; V03 loc1 [V03,T09] ( 5, 2 ) ref -> ecx class-hnd single-def <<unknown class>> +; V04 tmp0 [V04,T10] ( 2, 2 ) int -> ecx
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]> ; V06 tmp2 [V06,T06] ( 3, 4 ) ref -> edx single-def "guarded devirt arg temp" ; V07 tmp3 [V07,T07] ( 3, 4 ) int -> eax "guarded devirt arg temp" @@ -62,30 +62,34 @@ G_M49889_IG04: ; bbWeight=1, gcrefRegs=00000089 {eax ebx edi}, byrefRegs= cmp dword ptr [edx], 0xD1FFAB1E jne G_M49889_IG14 ;; size=18 bbWeight=1 PerfScore 5.50
-G_M49889_IG05: ; bbWeight=1, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG05: ; bbWeight=1, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax] xor ecx, ecx test edx, edx setne cl test cl, cl
- je G_M49889_IG15 - ;; size=15 bbWeight=1 PerfScore 2.75
+ jne SHORT G_M49889_IG06 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=1 PerfScore 6.25
G_M49889_IG06: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx]
mov ecx, ebx ; gcrRegs +[ecx] test ecx, ecx je SHORT G_M49889_IG08 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M49889_IG07: ; bbWeight=0.50, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG07: ; bbWeight=0.50, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M49889_IG16
+ jne SHORT G_M49889_IG15
xor ecx, ecx
- ;; size=14 bbWeight=0.50 PerfScore 2.12 -G_M49889_IG08: ; bbWeight=1, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref
+ ;; size=10 bbWeight=0.50 PerfScore 2.12 +G_M49889_IG08: ; bbWeight=1, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
test ecx, ecx
- jne G_M49889_IG17 - ;; size=8 bbWeight=1 PerfScore 1.25
+ jne SHORT G_M49889_IG16 + ;; size=4 bbWeight=1 PerfScore 1.25
G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ecx] test ebx, ebx @@ -94,7 +98,7 @@ G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs +[edx] movsx eax, word ptr [esi+0x08] cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M49889_IG19
+ jne SHORT G_M49889_IG18
lea ecx, bword ptr [ebx+0x0C] ; byrRegs +[ecx] push edi @@ -103,7 +107,7 @@ G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[edx ebx edi] ; byrRegs -[ecx esi]
- ;; size=39 bbWeight=1 PerfScore 17.75
+ ;; size=35 bbWeight=1 PerfScore 17.75
G_M49889_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc pop ebx pop esi @@ -149,17 +153,8 @@ G_M49889_IG14: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs +[edx] jmp G_M49889_IG05 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M49889_IG15: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG15: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax edx]
- mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - jmp G_M49889_IG06 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
mov edx, ebx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -168,9 +163,9 @@ G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 mov ecx, eax ; gcrRegs +[ecx] test ecx, ecx
- je G_M49889_IG09 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M49889_IG17: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M49889_IG09 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ebx] ; byrRegs -[esi] push 1 @@ -179,14 +174,14 @@ G_M49889_IG17: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=0000 call [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)] ; gcrRegs -[ecx edx edi] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M49889_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M49889_IG17: ; bbWeight=0, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret ;; size=5 bbWeight=0 PerfScore 0.00
-G_M49889_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49889_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[edx ebx edi] push edi push eax @@ -195,9 +190,9 @@ G_M49889_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx edx ebx edi]
- jmp G_M49889_IG10 - ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M49889_IG10 + ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 6, PerfScore 46.25, instruction count 90, allocated bytes for code 269 (MethodHash=41ee3d1e) for method System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
+; Total bytes of code 241, prolog size 6, PerfScore 49.75, instruction count 89, allocated bytes for code 241 (MethodHash=41ee3d1e) for method System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
; ============================================================

-28 (-10.41%) : 42673.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)

@@ -12,8 +12,8 @@ ; V00 this [V00,T03] ( 4, 4 ) byref -> esi this single-def ; V01 arg1 [V01,T05] ( 6, 3 ) ref -> edi class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox> ; V02 loc0 [V02,T00] ( 12, 8 ) ref -> ebx class-hnd single-def <System.Object>
-; V03 loc1 [V03,T10] ( 5, 2 ) ref -> ecx class-hnd single-def <<unknown class>> -; V04 tmp0 [V04,T09] ( 2, 2 ) int -> ecx
+; V03 loc1 [V03,T09] ( 5, 2 ) ref -> ecx class-hnd single-def <<unknown class>> +; V04 tmp0 [V04,T10] ( 2, 2 ) int -> ecx
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]> ; V06 tmp2 [V06,T06] ( 3, 4 ) ref -> edx single-def "guarded devirt arg temp" ; V07 tmp3 [V07,T07] ( 3, 4 ) int -> eax "guarded devirt arg temp" @@ -62,30 +62,34 @@ G_M49889_IG04: ; bbWeight=1, gcrefRegs=00000089 {eax ebx edi}, byrefRegs= cmp dword ptr [edx], 0xD1FFAB1E jne G_M49889_IG14 ;; size=18 bbWeight=1 PerfScore 5.50
-G_M49889_IG05: ; bbWeight=1, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG05: ; bbWeight=1, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax] xor ecx, ecx test edx, edx setne cl test cl, cl
- je G_M49889_IG15 - ;; size=15 bbWeight=1 PerfScore 2.75
+ jne SHORT G_M49889_IG06 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=1 PerfScore 6.25
G_M49889_IG06: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx]
mov ecx, ebx ; gcrRegs +[ecx] test ecx, ecx je SHORT G_M49889_IG08 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M49889_IG07: ; bbWeight=0.50, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG07: ; bbWeight=0.50, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M49889_IG16
+ jne SHORT G_M49889_IG15
xor ecx, ecx
- ;; size=14 bbWeight=0.50 PerfScore 2.12 -G_M49889_IG08: ; bbWeight=1, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref
+ ;; size=10 bbWeight=0.50 PerfScore 2.12 +G_M49889_IG08: ; bbWeight=1, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref, isz
test ecx, ecx
- jne G_M49889_IG17 - ;; size=8 bbWeight=1 PerfScore 1.25
+ jne SHORT G_M49889_IG16 + ;; size=4 bbWeight=1 PerfScore 1.25
G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ecx] test ebx, ebx @@ -94,7 +98,7 @@ G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs +[edx] movsx eax, word ptr [esi+0x08] cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M49889_IG19
+ jne SHORT G_M49889_IG18
lea ecx, bword ptr [ebx+0x0C] ; byrRegs +[ecx] push edi @@ -103,7 +107,7 @@ G_M49889_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[edx ebx edi] ; byrRegs -[ecx esi]
- ;; size=39 bbWeight=1 PerfScore 17.75
+ ;; size=35 bbWeight=1 PerfScore 17.75
G_M49889_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc pop ebx pop esi @@ -149,17 +153,8 @@ G_M49889_IG14: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs +[edx] jmp G_M49889_IG05 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M49889_IG15: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M49889_IG15: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax edx]
- mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - jmp G_M49889_IG06 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
mov edx, ebx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -168,9 +163,9 @@ G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 mov ecx, eax ; gcrRegs +[ecx] test ecx, ecx
- je G_M49889_IG09 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M49889_IG17: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M49889_IG09 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M49889_IG16: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ebx] ; byrRegs -[esi] push 1 @@ -179,14 +174,14 @@ G_M49889_IG17: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=0000 call [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)] ; gcrRegs -[ecx edx edi] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M49889_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M49889_IG17: ; bbWeight=0, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret ;; size=5 bbWeight=0 PerfScore 0.00
-G_M49889_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49889_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[edx ebx edi] push edi push eax @@ -195,9 +190,9 @@ G_M49889_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000008C {edx ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx edx ebx edi]
- jmp G_M49889_IG10 - ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M49889_IG10 + ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 6, PerfScore 46.25, instruction count 90, allocated bytes for code 269 (MethodHash=41ee3d1e) for method System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
+; Total bytes of code 241, prolog size 6, PerfScore 49.75, instruction count 89, allocated bytes for code 241 (MethodHash=41ee3d1e) for method System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
; ============================================================

+39 (+14.83%) : 9980.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)

@@ -5,18 +5,18 @@ ; optimized using Dynamic PGO ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
; 11 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 6, 6 ) ref -> edi class-hnd single-def <System.String>
+; V00 arg0 [V00,T02] ( 6, 5 ) ref -> edi class-hnd single-def <System.String>
; V01 arg1 [V01,T00] ( 8, 5 ) ref -> esi class-hnd single-def <System.String>
-; V02 loc0 [V02,T04] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
+; V02 loc0 [V02,T05] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
; V03 loc1 [V03,T11] ( 3, 3 ) int -> ecx
-; V04 loc2 [V04,T01] ( 7, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> -;* V05 tmp0 [V05,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V06 tmp1 [V06,T15] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" -;* V07 tmp2 [V07,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 loc2 [V04,T01] ( 8, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> +;* V05 tmp0 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V06 tmp1 [V06,T13] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +;* V07 tmp2 [V07,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -34,11 +34,11 @@ ; V22 tmp17 [V22,T09] ( 2, 4 ) byref -> esi single-def "Inlining Arg" ; V23 tmp18 [V23,T10] ( 2, 4 ) int -> edx "Inlining Arg" ; V24 cse0 [V24,T03] ( 7, 5 ) int -> [ebp-0x14] multi-def "CSE - aggressive"
-; V25 cse1 [V25,T05] ( 4, 4 ) int -> ebx "CSE - aggressive"
+; V25 cse1 [V25,T04] ( 5, 4 ) int -> ebx "CSE - aggressive"
; ; Lcl frame size = 12
-G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M34819_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -52,54 +52,52 @@ G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=13 bbWeight=1 PerfScore 5.00 G_M34819_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test edi, edi
- je G_M34819_IG13
+ je G_M34819_IG07
mov ebx, dword ptr [edi+0x04] test ebx, ebx
- je G_M34819_IG13
+ je G_M34819_IG07
test esi, esi
- je SHORT G_M34819_IG07 - mov edx, dword ptr [esi+0x04] - test edx, edx - je SHORT G_M34819_IG07 - mov eax, ebx - mov dword ptr [ebp-0x10], eax - mov dword ptr [ebp-0x14], edx - lea ecx, [edx+eax]
+ je G_M34819_IG12 + mov eax, dword ptr [esi+0x04] + test eax, eax + je G_M34819_IG12 + mov edx, ebx + mov dword ptr [ebp-0x10], edx + mov dword ptr [ebp-0x14], eax + lea ecx, [eax+edx]
test ecx, ecx
- jl SHORT G_M34819_IG09
+ jl G_M34819_IG14
call <unknown method> ; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V04} test eax, eax
- je SHORT G_M34819_IG10 - ;; size=57 bbWeight=1 PerfScore 16.25 -G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je G_M34819_IG15
cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M34819_IG11 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M34819_IG06 + ;; size=78 bbWeight=1 PerfScore 20.25 +G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] lea edx, bword ptr [edi+0x08] ; byrRegs +[edx]
- mov edi, dword ptr [ebp-0x10]
+ mov ebx, dword ptr [ebp-0x10] + lea edi, [ebx+ebx]
; gcrRegs -[edi]
- lea ebx, [edi+edi] - push ebx
+ push edi
call [<unknown method>] ; gcrRegs -[eax] ; byrRegs -[ecx edx]
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - mov ecx, dword ptr [ebx+0x04] - sub ecx, edi
+ mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + mov ecx, dword ptr [edi+0x04] + sub ecx, ebx
mov edx, dword ptr [ebp-0x14] cmp ecx, edx
- jl SHORT G_M34819_IG12 - ;; size=34 bbWeight=1 PerfScore 12.00 -G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [ebx+2*edi+0x08]
+ jl G_M34819_IG18 + ;; size=38 bbWeight=1 PerfScore 12.00 +G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + lea ecx, bword ptr [edi+2*ebx+0x08]
; byrRegs +[ecx] add esi, 8 ; gcrRegs -[esi] @@ -110,24 +108,10 @@ G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi]
- mov eax, ebx - ; gcrRegs +[eax] - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M34819_IG06: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=8 bbWeight=1 PerfScore 3.50 -G_M34819_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ebx] +[edi] - ; GC ptr vars -{V04}
mov eax, edi ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M34819_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -135,12 +119,68 @@ G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34819_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34819_IG06: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi] + jmp SHORT G_M34819_IG16 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M34819_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + ; GC ptr vars -{V04} + test esi, esi + je SHORT G_M34819_IG08 + mov edx, dword ptr [esi+0x04] + mov ebx, edx + xor eax, eax + test ebx, ebx + sete al + test eax, eax + je SHORT G_M34819_IG10 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34819_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] + mov eax, 0xD1FFAB1E + ; gcrRegs +[eax] + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M34819_IG09: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] +[esi] + mov eax, esi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG11: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi] +[edi] + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG13: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edi] call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34819_IG15: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax esi edi] ; GC ptr vars +{V01 V04} mov ecx, 0xD1FFAB1E @@ -151,21 +191,29 @@ G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {e ; gcrRegs -[eax ecx edx] mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG03 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG11: ; bbWeight=0, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax+0x04], ebx + jge SHORT G_M34819_IG17 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG16: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG12: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edi] +[ebx]
+ jmp G_M34819_IG03 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG17: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax]
...

+39 (+14.83%) : 18084.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)

@@ -5,18 +5,18 @@ ; optimized using Dynamic PGO ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
; 11 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 6, 6 ) ref -> edi class-hnd single-def <System.String>
+; V00 arg0 [V00,T02] ( 6, 5 ) ref -> edi class-hnd single-def <System.String>
; V01 arg1 [V01,T00] ( 8, 5 ) ref -> esi class-hnd single-def <System.String>
-; V02 loc0 [V02,T04] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
+; V02 loc0 [V02,T05] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
; V03 loc1 [V03,T11] ( 3, 3 ) int -> ecx
-; V04 loc2 [V04,T01] ( 7, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> -;* V05 tmp0 [V05,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V06 tmp1 [V06,T15] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" -;* V07 tmp2 [V07,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 loc2 [V04,T01] ( 8, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> +;* V05 tmp0 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V06 tmp1 [V06,T13] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +;* V07 tmp2 [V07,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -34,11 +34,11 @@ ; V22 tmp17 [V22,T09] ( 2, 4 ) byref -> esi single-def "Inlining Arg" ; V23 tmp18 [V23,T10] ( 2, 4 ) int -> edx "Inlining Arg" ; V24 cse0 [V24,T03] ( 7, 5 ) int -> [ebp-0x14] multi-def "CSE - aggressive"
-; V25 cse1 [V25,T05] ( 4, 4 ) int -> ebx "CSE - aggressive"
+; V25 cse1 [V25,T04] ( 5, 4 ) int -> ebx "CSE - aggressive"
; ; Lcl frame size = 12
-G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M34819_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -52,54 +52,52 @@ G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=13 bbWeight=1 PerfScore 5.00 G_M34819_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test edi, edi
- je G_M34819_IG13
+ je G_M34819_IG07
mov ebx, dword ptr [edi+0x04] test ebx, ebx
- je G_M34819_IG13
+ je G_M34819_IG07
test esi, esi
- je SHORT G_M34819_IG07 - mov edx, dword ptr [esi+0x04] - test edx, edx - je SHORT G_M34819_IG07 - mov eax, ebx - mov dword ptr [ebp-0x10], eax - mov dword ptr [ebp-0x14], edx - lea ecx, [edx+eax]
+ je G_M34819_IG12 + mov eax, dword ptr [esi+0x04] + test eax, eax + je G_M34819_IG12 + mov edx, ebx + mov dword ptr [ebp-0x10], edx + mov dword ptr [ebp-0x14], eax + lea ecx, [eax+edx]
test ecx, ecx
- jl SHORT G_M34819_IG09
+ jl G_M34819_IG14
call <unknown method> ; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V04} test eax, eax
- je SHORT G_M34819_IG10 - ;; size=57 bbWeight=1 PerfScore 16.25 -G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je G_M34819_IG15
cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M34819_IG11 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M34819_IG06 + ;; size=78 bbWeight=1 PerfScore 20.25 +G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] lea edx, bword ptr [edi+0x08] ; byrRegs +[edx]
- mov edi, dword ptr [ebp-0x10]
+ mov ebx, dword ptr [ebp-0x10] + lea edi, [ebx+ebx]
; gcrRegs -[edi]
- lea ebx, [edi+edi] - push ebx
+ push edi
call [<unknown method>] ; gcrRegs -[eax] ; byrRegs -[ecx edx]
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - mov ecx, dword ptr [ebx+0x04] - sub ecx, edi
+ mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + mov ecx, dword ptr [edi+0x04] + sub ecx, ebx
mov edx, dword ptr [ebp-0x14] cmp ecx, edx
- jl SHORT G_M34819_IG12 - ;; size=34 bbWeight=1 PerfScore 12.00 -G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [ebx+2*edi+0x08]
+ jl G_M34819_IG18 + ;; size=38 bbWeight=1 PerfScore 12.00 +G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + lea ecx, bword ptr [edi+2*ebx+0x08]
; byrRegs +[ecx] add esi, 8 ; gcrRegs -[esi] @@ -110,24 +108,10 @@ G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi]
- mov eax, ebx - ; gcrRegs +[eax] - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M34819_IG06: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=8 bbWeight=1 PerfScore 3.50 -G_M34819_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ebx] +[edi] - ; GC ptr vars -{V04}
mov eax, edi ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M34819_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -135,12 +119,68 @@ G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34819_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34819_IG06: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi] + jmp SHORT G_M34819_IG16 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M34819_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + ; GC ptr vars -{V04} + test esi, esi + je SHORT G_M34819_IG08 + mov edx, dword ptr [esi+0x04] + mov ebx, edx + xor eax, eax + test ebx, ebx + sete al + test eax, eax + je SHORT G_M34819_IG10 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34819_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] + mov eax, 0xD1FFAB1E + ; gcrRegs +[eax] + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M34819_IG09: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] +[esi] + mov eax, esi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG11: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi] +[edi] + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG13: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edi] call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34819_IG15: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax esi edi] ; GC ptr vars +{V01 V04} mov ecx, 0xD1FFAB1E @@ -151,21 +191,29 @@ G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {e ; gcrRegs -[eax ecx edx] mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG03 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG11: ; bbWeight=0, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax+0x04], ebx + jge SHORT G_M34819_IG17 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG16: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG12: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edi] +[ebx]
+ jmp G_M34819_IG03 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG17: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax]
...

+39 (+14.83%) : 28068.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)

@@ -5,18 +5,18 @@ ; optimized using Dynamic PGO ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 11 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 6, 6 ) ref -> edi class-hnd single-def <System.String>
+; V00 arg0 [V00,T02] ( 6, 5 ) ref -> edi class-hnd single-def <System.String>
; V01 arg1 [V01,T00] ( 8, 5 ) ref -> esi class-hnd single-def <System.String>
-; V02 loc0 [V02,T04] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
+; V02 loc0 [V02,T05] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
; V03 loc1 [V03,T11] ( 3, 3 ) int -> ecx
-; V04 loc2 [V04,T01] ( 7, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> -;* V05 tmp0 [V05,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V06 tmp1 [V06,T15] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" -;* V07 tmp2 [V07,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 loc2 [V04,T01] ( 8, 7 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String> +;* V05 tmp0 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V06 tmp1 [V06,T13] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +;* V07 tmp2 [V07,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -34,11 +34,11 @@ ; V22 tmp17 [V22,T09] ( 2, 4 ) byref -> esi single-def "Inlining Arg" ; V23 tmp18 [V23,T10] ( 2, 4 ) int -> edx "Inlining Arg" ; V24 cse0 [V24,T03] ( 7, 5 ) int -> [ebp-0x14] multi-def "CSE - aggressive"
-; V25 cse1 [V25,T05] ( 4, 4 ) int -> ebx "CSE - aggressive"
+; V25 cse1 [V25,T04] ( 5, 4 ) int -> ebx "CSE - aggressive"
; ; Lcl frame size = 12
-G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M34819_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -52,54 +52,52 @@ G_M34819_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=13 bbWeight=1 PerfScore 5.00 G_M34819_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test edi, edi
- je G_M34819_IG13
+ je G_M34819_IG07
mov ebx, dword ptr [edi+0x04] test ebx, ebx
- je G_M34819_IG13
+ je G_M34819_IG07
test esi, esi
- je SHORT G_M34819_IG07 - mov edx, dword ptr [esi+0x04] - test edx, edx - je SHORT G_M34819_IG07 - mov eax, ebx - mov dword ptr [ebp-0x10], eax - mov dword ptr [ebp-0x14], edx - lea ecx, [edx+eax]
+ je G_M34819_IG12 + mov eax, dword ptr [esi+0x04] + test eax, eax + je G_M34819_IG12 + mov edx, ebx + mov dword ptr [ebp-0x10], edx + mov dword ptr [ebp-0x14], eax + lea ecx, [eax+edx]
test ecx, ecx
- jl SHORT G_M34819_IG09
+ jl G_M34819_IG14
call <unknown method> ; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V04} test eax, eax
- je SHORT G_M34819_IG10 - ;; size=57 bbWeight=1 PerfScore 16.25 -G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je G_M34819_IG15
cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M34819_IG11 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M34819_IG06 + ;; size=78 bbWeight=1 PerfScore 20.25 +G_M34819_IG03: ; bbWeight=1, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] lea edx, bword ptr [edi+0x08] ; byrRegs +[edx]
- mov edi, dword ptr [ebp-0x10]
+ mov ebx, dword ptr [ebp-0x10] + lea edi, [ebx+ebx]
; gcrRegs -[edi]
- lea ebx, [edi+edi] - push ebx
+ push edi
call [<unknown method>] ; gcrRegs -[eax] ; byrRegs -[ecx edx]
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - mov ecx, dword ptr [ebx+0x04] - sub ecx, edi
+ mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + mov ecx, dword ptr [edi+0x04] + sub ecx, ebx
mov edx, dword ptr [ebp-0x14] cmp ecx, edx
- jl SHORT G_M34819_IG12 - ;; size=34 bbWeight=1 PerfScore 12.00 -G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [ebx+2*edi+0x08]
+ jl G_M34819_IG18 + ;; size=38 bbWeight=1 PerfScore 12.00 +G_M34819_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + lea ecx, bword ptr [edi+2*ebx+0x08]
; byrRegs +[ecx] add esi, 8 ; gcrRegs -[esi] @@ -110,24 +108,10 @@ G_M34819_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi]
- mov eax, ebx - ; gcrRegs +[eax] - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M34819_IG06: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=8 bbWeight=1 PerfScore 3.50 -G_M34819_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ebx] +[edi] - ; GC ptr vars -{V04}
mov eax, edi ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M34819_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -135,12 +119,68 @@ G_M34819_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34819_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34819_IG06: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi] + jmp SHORT G_M34819_IG16 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M34819_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + ; GC ptr vars -{V04} + test esi, esi + je SHORT G_M34819_IG08 + mov edx, dword ptr [esi+0x04] + mov ebx, edx + xor eax, eax + test ebx, ebx + sete al + test eax, eax + je SHORT G_M34819_IG10 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34819_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] + mov eax, 0xD1FFAB1E + ; gcrRegs +[eax] + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M34819_IG09: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] +[esi] + mov eax, esi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG11: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi] +[edi] + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M34819_IG13: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34819_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edi] call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34819_IG15: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax esi edi] ; GC ptr vars +{V01 V04} mov ecx, 0xD1FFAB1E @@ -151,21 +191,29 @@ G_M34819_IG10: ; bbWeight=0, gcVars=00000002 {V04}, gcrefRegs=000000C1 {e ; gcrRegs -[eax ecx edx] mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG03 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG11: ; bbWeight=0, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax+0x04], ebx + jge SHORT G_M34819_IG17 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG16: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M34819_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34819_IG12: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edi] +[ebx]
+ jmp G_M34819_IG03 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34819_IG17: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax]
...

coreclr_tests.run.windows.x86.checked.mch

-40 (-16.67%) : 515121.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,23 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 9, 8.18) ref -> esi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T05] ( 5, 10 ) ref -> edi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T09] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 8.14) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T11] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 8.18) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 5.50) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T07] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 8.14) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13, 25.36) int -> ebx
-; V08 tmp0 [V08,T06] ( 4, 9 ) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 9, 36.09) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10, 27 ) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V11 cse0 [V11,T10] ( 3, 0.14) ref -> ecx "CSE - conservative"
+; V11 cse0 [V11,T08] ( 3, 0.14) ref -> ecx "CSE - conservative"
; V12 cse1 [V12,T02] ( 3, 13.37) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3, 13.37) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; TEMP_02 ref -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 16
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,170 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x18], eax
+ push eax
mov esi, edx ; gcrRegs +[esi] mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75
G_M28111_IG03: ; bbWeight=0.82, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test esi, esi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [esi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.82 PerfScore 5.52 G_M28111_IG04: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [esi+4*ebx+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M28111_IG08 - mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18
cmp ecx, edi
- jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=4.46 PerfScore 38.98 -G_M28111_IG05: ; bbWeight=2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=2.25 PerfScore 4.50 -G_M28111_IG06: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M28111_IG08 + ;; size=20 bbWeight=4.46 PerfScore 37.87 +G_M28111_IG05: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=4.46 PerfScore 6.68 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=4.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=4.50 PerfScore 1.12 +G_M28111_IG09: ; bbWeight=4.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=4.50 PerfScore 20.25 +G_M28111_IG10: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.41 PerfScore 1.23 -G_M28111_IG07: ; bbWeight=4.46, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp ecx, edi + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.05 PerfScore 0.56 +G_M28111_IG11: ; bbWeight=0.05, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.05 PerfScore 0.07 +G_M28111_IG12: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.02 PerfScore 0.05 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi]
mov edx, edi ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]System.Object:Equals(System.Object):ubyte:this ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=4.46 PerfScore 33.41 -G_M28111_IG08: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=4.46 PerfScore 14.48 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=4.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=4.50 PerfScore 1.12 -G_M28111_IG12: ; bbWeight=4.50, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=4.50 PerfScore 20.25 -G_M28111_IG13: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [esi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [esi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - cmp dword ptr [ecx], 0xD1FFAB1E - jne SHORT G_M28111_IG15 - cmp ecx, edi - jne SHORT G_M28111_IG16 - ;; size=25 bbWeight=0.05 PerfScore 0.56 -G_M28111_IG14: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=0.02 PerfScore 0.05 -G_M28111_IG15: ; bbWeight=0.05, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
...

-40 (-16.67%) : 553201.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,23 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T05] ( 9, 8.72) ref -> edi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T04] ( 5, 11 ) ref -> esi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T09] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 8.67) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T11] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 8.72) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 6 ) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T07] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 8.67) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13, 27.88) int -> ebx
-; V08 tmp0 [V08,T06] ( 4, 10 ) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 9, 40.10) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10, 30 ) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V11 cse0 [V11,T10] ( 3, 0.15) ref -> ecx "CSE - conservative"
+; V11 cse0 [V11,T08] ( 3, 0.15) ref -> ecx "CSE - conservative"
; V12 cse1 [V12,T02] ( 3, 14.85) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3, 14.85) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; TEMP_02 ref -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 16
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,170 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x18], eax - mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x10]
+ push eax + mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x10] + ; gcrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax - test esi, esi - je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75 -G_M28111_IG03: ; bbWeight=0.83, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [edi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M28111_IG03: ; bbWeight=0.83, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + test esi, esi + je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.83 PerfScore 5.63 G_M28111_IG04: ; bbWeight=4.95, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edi+4*ebx+0x08]
+ mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx] test ecx, ecx
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18 + cmp ecx, edi
je SHORT G_M28111_IG08
- mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07 - cmp ecx, esi - jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=4.95 PerfScore 43.31 -G_M28111_IG05: ; bbWeight=2.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=2.50 PerfScore 5.00 -G_M28111_IG06: ; bbWeight=0.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=20 bbWeight=4.95 PerfScore 42.08 +G_M28111_IG05: ; bbWeight=4.95, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=4.95 PerfScore 7.43 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=5, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=5 PerfScore 1.25 +G_M28111_IG09: ; bbWeight=5, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=5 PerfScore 22.50 +G_M28111_IG10: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.42 PerfScore 1.25 -G_M28111_IG07: ; bbWeight=4.95, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
- mov edx, esi
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp ecx, edi + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.05 PerfScore 0.63 +G_M28111_IG11: ; bbWeight=0.05, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.05 PerfScore 0.08 +G_M28111_IG12: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.03 PerfScore 0.05 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi] + mov edx, edi
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]System.Object:Equals(System.Object):ubyte:this ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=4.95 PerfScore 37.12 -G_M28111_IG08: ; bbWeight=4.95, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=4.95 PerfScore 16.09 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=5, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=5 PerfScore 1.25 -G_M28111_IG12: ; bbWeight=5, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=5 PerfScore 22.50 -G_M28111_IG13: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [edi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [edi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - cmp dword ptr [ecx], 0xD1FFAB1E - jne SHORT G_M28111_IG15 - cmp ecx, esi
...

-40 (-16.67%) : 555109.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,23 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 9, 8.18) ref -> esi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T05] ( 5, 10 ) ref -> edi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T09] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 8.14) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T11] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 8.18) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 5.50) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T07] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 8.14) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13, 25.36) int -> ebx
-; V08 tmp0 [V08,T06] ( 4, 9 ) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 9, 36.09) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10, 27 ) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V11 cse0 [V11,T10] ( 3, 0.14) ref -> ecx "CSE - conservative"
+; V11 cse0 [V11,T08] ( 3, 0.14) ref -> ecx "CSE - conservative"
; V12 cse1 [V12,T02] ( 3, 13.37) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3, 13.37) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; TEMP_02 ref -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 16
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,170 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x18], eax
+ push eax
mov esi, edx ; gcrRegs +[esi] mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75
G_M28111_IG03: ; bbWeight=0.82, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test esi, esi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [esi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.82 PerfScore 5.52 G_M28111_IG04: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [esi+4*ebx+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M28111_IG08 - mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18
cmp ecx, edi
- jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=4.46 PerfScore 38.98 -G_M28111_IG05: ; bbWeight=2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=2.25 PerfScore 4.50 -G_M28111_IG06: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M28111_IG08 + ;; size=20 bbWeight=4.46 PerfScore 37.87 +G_M28111_IG05: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=4.46 PerfScore 6.68 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=4.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=4.50 PerfScore 1.12 +G_M28111_IG09: ; bbWeight=4.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=4.50 PerfScore 20.25 +G_M28111_IG10: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.41 PerfScore 1.23 -G_M28111_IG07: ; bbWeight=4.46, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp ecx, edi + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.05 PerfScore 0.56 +G_M28111_IG11: ; bbWeight=0.05, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.05 PerfScore 0.07 +G_M28111_IG12: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.02 PerfScore 0.05 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi]
mov edx, edi ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]System.Object:Equals(System.Object):ubyte:this ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=4.46 PerfScore 33.41 -G_M28111_IG08: ; bbWeight=4.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=4.46 PerfScore 14.48 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=4.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=4.50 PerfScore 1.12 -G_M28111_IG12: ; bbWeight=4.50, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=4.50 PerfScore 20.25 -G_M28111_IG13: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [esi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [esi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - cmp dword ptr [ecx], 0xD1FFAB1E - jne SHORT G_M28111_IG15 - cmp ecx, edi - jne SHORT G_M28111_IG16 - ;; size=25 bbWeight=0.05 PerfScore 0.56 -G_M28111_IG14: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=0.02 PerfScore 0.05 -G_M28111_IG15: ; bbWeight=0.05, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
...

+33 (+12.99%) : 590502.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitOpCode(ushort):this (Tier1)

@@ -12,8 +12,8 @@ ; V01 arg1 [V01,T07] ( 5, 3.50) ushort -> ebx single-def ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ; V03 tmp1 [V03,T09] ( 2, 4 ) int -> [ebp-0x10] spill-single-def "Inlining Arg"
-; V04 tmp2 [V04,T02] ( 4, 6.25) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V05 tmp3 [V05,T03] ( 8, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder>
+; V04 tmp2 [V04,T02] ( 5, 6.25) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V05 tmp3 [V05,T03] ( 9, 6 ) ref -> [ebp-0x18] class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder>
;* V06 tmp4 [V06,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -27,7 +27,7 @@ ; V16 tmp14 [V16,T06] ( 3, 6 ) int -> edx "Inlining Arg" ; V17 tmp15 [V17,T04] ( 3, 6 ) byref -> esi single-def "Inlining Arg" ; V18 tmp16 [V18,T10] ( 3, 3 ) ref -> eax single-def "arr expr"
-; V19 cse0 [V19,T08] ( 5, 4 ) int -> edi "CSE - moderate"
+; V19 cse0 [V19,T08] ( 6, 4 ) int -> edi "CSE - moderate"
; V20 cse1 [V20,T11] ( 3, 3 ) byref -> esi "CSE - moderate" ; V21 rat0 [V21,T12] ( 3, 3 ) int -> edi "ReplaceWithLclVar is creating a new local variable" ; TEMP_01 int -> [ebp-0x1C] @@ -56,7 +56,7 @@ G_M11933_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 sub edx, eax mov dword ptr [ebp-0x10], edx cmp gword ptr [esi+0x18], 0
- je G_M11933_IG13
+ je G_M11933_IG15
;; size=40 bbWeight=1 PerfScore 14.00 G_M11933_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [esi+0x18] @@ -64,19 +64,20 @@ G_M11933_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov gword ptr [ebp-0x14], edx ; GC ptr vars +{V04} cmp gword ptr [edx+0x08], 0
- je SHORT G_M11933_IG09
+ je SHORT G_M11933_IG10
;; size=12 bbWeight=1 PerfScore 7.00
-G_M11933_IG04: ; bbWeight=1, gcVars=00000004 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M11933_IG04: ; bbWeight=0.88, gcVars=00000004 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx] mov edx, gword ptr [ebp-0x14] ; gcrRegs +[edx]
- mov edx, gword ptr [edx+0x08] - mov gword ptr [ebp-0x18], edx - ; GC ptr vars +{V05}
+ mov ecx, gword ptr [edx+0x08] + ; gcrRegs +[ecx] + mov edx, ecx
cmp edi, 255
- jg SHORT G_M11933_IG11 - ;; size=17 bbWeight=1 PerfScore 5.25 -G_M11933_IG05: ; bbWeight=0.50, gcVars=00000008 {V05}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jg SHORT G_M11933_IG09 + ;; size=16 bbWeight=0.88 PerfScore 3.94 +G_M11933_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ecx]
; GC ptr vars -{V04} mov ecx, dword ptr [edx+0x10] mov edi, gword ptr [edx+0x08] @@ -88,20 +89,19 @@ G_M11933_IG05: ; bbWeight=0.50, gcVars=00000008 {V05}, gcrefRegs=00000044 sar eax, 31 cmp edi, ecx sbb eax, 0
- jl SHORT G_M11933_IG10 - ;; size=22 bbWeight=0.50 PerfScore 4.38
+ jl G_M11933_IG16 + ;; size=26 bbWeight=0.50 PerfScore 4.38
G_M11933_IG06: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz lea eax, [ecx+0x01] mov dword ptr [edx+0x10], eax mov eax, gword ptr [edx+0x08] ; gcrRegs +[eax] cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M11933_IG12
+ jae SHORT G_M11933_IG14
mov byte ptr [eax+ecx+0x08], bl ;; size=18 bbWeight=0.50 PerfScore 4.25
-G_M11933_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M11933_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx]
- ; GC ptr vars -{V05}
add esi, 64 ; gcrRegs -[esi] ; byrRegs +[esi] @@ -124,10 +124,16 @@ G_M11933_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M11933_IG09: ; bbWeight=0.12, gcVars=00000004 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi]
+G_M11933_IG09: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[edx esi]
; byrRegs -[ecx esi]
- ; GC ptr vars +{V04}
+ mov gword ptr [ebp-0x18], edx + ; GC ptr vars +{V05} + jmp SHORT G_M11933_IG12 + ;; size=5 bbWeight=0.44 PerfScore 1.31 +G_M11933_IG10: ; bbWeight=0.12, gcVars=00000004 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edx] + ; GC ptr vars -{V05} +{V04}
mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -140,11 +146,57 @@ G_M11933_IG09: ; bbWeight=0.12, gcVars=00000004 {V04}, gcrefRegs=00000040 call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- jmp SHORT G_M11933_IG04 - ;; size=27 bbWeight=0.12 PerfScore 1.56 -G_M11933_IG10: ; bbWeight=0, gcVars=00000008 {V05}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] +[edx] - ; GC ptr vars -{V04} +{V03 V05}
+ mov eax, gword ptr [ecx+0x08] + ; gcrRegs +[eax] + cmp edi, 255 + jle SHORT G_M11933_IG13 + ;; size=36 bbWeight=0.12 PerfScore 1.72 +G_M11933_IG11: ; bbWeight=0.06, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ecx] + ; GC ptr vars -{V04} + mov gword ptr [ebp-0x18], eax + ; GC ptr vars +{V05} + ;; size=3 bbWeight=0.06 PerfScore 0.06 +G_M11933_IG12: ; bbWeight=0, gcVars=00000008 {V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] + mov ecx, edi + sar ecx, 8 + movzx edx, cl + mov ecx, gword ptr [ebp-0x18] + ; gcrRegs +[ecx] + cmp dword ptr [ecx], ecx + call [System.Reflection.Metadata.BlobBuilder:WriteByte(ubyte):this] + ; gcrRegs -[ecx] + movzx edx, bl + mov ecx, gword ptr [ebp-0x18] + ; gcrRegs +[ecx] + ; GC ptr vars -{V05} + call [System.Reflection.Metadata.BlobBuilder:WriteByte(ubyte):this] + ; gcrRegs -[ecx] + jmp SHORT G_M11933_IG07 + ;; size=33 bbWeight=0 PerfScore 0.00 +G_M11933_IG13: ; bbWeight=0.06, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[eax] + mov edx, eax + ; gcrRegs +[edx] + jmp G_M11933_IG05 + ;; size=7 bbWeight=0.06 PerfScore 0.14 +G_M11933_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx esi] + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M11933_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[esi] + mov ecx, esi + ; gcrRegs +[ecx] + call [Microsoft.CodeAnalysis.CodeGen.ILBuilder:CreateBlock():this] + ; gcrRegs -[ecx] + jmp G_M11933_IG03 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M11933_IG16: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[edx] + mov gword ptr [ebp-0x18], edx + ; GC ptr vars +{V05}
mov ecx, edx ; gcrRegs +[ecx] mov edx, 1 @@ -154,39 +206,9 @@ G_M11933_IG10: ; bbWeight=0, gcVars=00000008 {V05}, gcrefRegs=00000044 {e xor ecx, ecx mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
- jmp SHORT G_M11933_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M11933_IG11: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, edi - sar ecx, 8 - movzx edx, cl - ; gcrRegs -[edx] - mov ecx, gword ptr [ebp-0x18] - ; gcrRegs +[ecx] - cmp dword ptr [ecx], ecx - call [System.Reflection.Metadata.BlobBuilder:WriteByte(ubyte):this] - ; gcrRegs -[ecx] - movzx edx, bl - mov ecx, gword ptr [ebp-0x18] - ; gcrRegs +[ecx] - ; GC ptr vars -{V03 V05} - call [System.Reflection.Metadata.BlobBuilder:WriteByte(ubyte):this] - ; gcrRegs -[ecx] - jmp SHORT G_M11933_IG07 - ;; size=33 bbWeight=0 PerfScore 0.00 -G_M11933_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - call CORINFO_HELP_RNGCHKFAIL - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M11933_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[esi] - mov ecx, esi - ; gcrRegs +[ecx] - call [Microsoft.CodeAnalysis.CodeGen.ILBuilder:CreateBlock():this] - ; gcrRegs -[ecx] - jmp G_M11933_IG03 - ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp G_M11933_IG06 + ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 254, prolog size 9, PerfScore 57.94, instruction count 86, allocated bytes for code 254 (MethodHash=ab38d162) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitOpCode(ushort):this (Tier1)
+; Total bytes of code 287, prolog size 9, PerfScore 58.30, instruction count 94, allocated bytes for code 287 (MethodHash=ab38d162) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitOpCode(ushort):this (Tier1)
; ============================================================

+38 (+14.07%) : 687966.dasm - System.MemoryExtensions:g_TrimFallback|2230(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort

@@ -10,19 +10,19 @@ ; Final local variable assignments ; ; V00 RetBuf [V00,T06] ( 4, 4 ) byref -> esi single-def
-; V01 arg0 [V01,T11] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 loc0 [V02,T01] ( 11, 15 ) int -> [ebp-0x10] -; V03 loc1 [V03,T03] ( 8, 8 ) int -> [ebp-0x14] -; V04 loc2 [V04,T09] ( 2, 4 ) ubyte -> eax "Inline return value spill temp" -; V05 tmp1 [V05,T00] ( 5, 20 ) ushort -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V01 arg0 [V01,T10] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 loc0 [V02,T01] ( 12, 15 ) int -> [ebp-0x10] +; V03 loc1 [V03,T02] ( 11, 8 ) int -> [ebp-0x14] +; V04 loc2 [V04,T12] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V05 tmp1 [V05,T00] ( 5, 16 ) ushort -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp8 [V12,T12] ( 2, 2 ) ubyte -> eax "Inline return value spill temp" -; V13 tmp9 [V13,T02] ( 5, 10 ) ushort -> [ebp-0x1C] spill-single-def "Inlining Arg"
+; V12 tmp8 [V12,T13] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V13 tmp9 [V13,T04] ( 5, 8 ) ushort -> [ebp-0x1C] spill-single-def "Inlining Arg"
;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -56,10 +56,10 @@ ;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V47 tmp43 [V47,T10] ( 2, 2 ) byref -> edi single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V48 tmp44 [V48,T13] ( 2, 2 ) int -> ebx "field V21._length (fldOffset=0x4)" P-INDEP
+; V47 tmp43 [V47,T09] ( 2, 2 ) byref -> edi single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V48 tmp44 [V48,T11] ( 2, 2 ) int -> ebx "field V21._length (fldOffset=0x4)" P-INDEP
; V49 tmp45 [V49,T07] ( 4, 5 ) byref -> edi single-def "V01.[000..004)"
-; V50 tmp46 [V50,T04] ( 7, 8 ) int -> ebx "V01.[004..008)"
+; V50 tmp46 [V50,T03] ( 7, 8 ) int -> ebx "V01.[004..008)"
; ; Lcl frame size = 20 @@ -73,93 +73,72 @@ G_M20594_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, ecx ; byrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75
-G_M20594_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M20594_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov edi, bword ptr [ebp+0x08] ; byrRegs +[edi] mov ebx, dword ptr [ebp+0x0C] xor eax, eax test ebx, ebx
- jle SHORT G_M20594_IG04 - ;; size=12 bbWeight=1 PerfScore 3.50
+ jle G_M20594_IG11 + ;; size=16 bbWeight=1 PerfScore 3.50
G_M20594_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz mov dword ptr [ebp-0x10], eax movzx edx, word ptr [edi+2*eax] mov dword ptr [ebp-0x18], edx cmp edx, 256
- jae SHORT G_M20594_IG05
+ jae G_M20594_IG15
xor ecx, ecx cmp edx, 256 setb cl call [<unknown method>]
- mov edx, dword ptr [ebp-0x18] - test byte ptr [edx+D1FFAB1EH], 128 - je SHORT G_M20594_IG08 - jmp SHORT G_M20594_IG06 - ;; size=49 bbWeight=2 PerfScore 33.50 -G_M20594_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov dword ptr [ebp-0x10], eax - jmp SHORT G_M20594_IG08 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M20594_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov ecx, edx - call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] - test eax, eax - je SHORT G_M20594_IG08 - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M20594_IG06: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x18] + test byte ptr [eax+D1FFAB1EH], 128 + je SHORT G_M20594_IG06 + ;; size=51 bbWeight=2 PerfScore 29.50 +G_M20594_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov eax, dword ptr [ebp-0x10] inc eax cmp eax, ebx jl SHORT G_M20594_IG03 ;; size=8 bbWeight=2 PerfScore 5.00
-G_M20594_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M20594_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=1 PerfScore 1.00
-G_M20594_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
lea edx, [ebx-0x01] mov eax, dword ptr [ebp-0x10] cmp edx, eax
- jle SHORT G_M20594_IG13
+ jle SHORT G_M20594_IG09
;; size=10 bbWeight=1 PerfScore 2.75
-G_M20594_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
cmp edx, ebx
- jae G_M20594_IG17
+ jae G_M20594_IG14
mov dword ptr [ebp-0x14], edx movzx ecx, word ptr [edi+2*edx] mov dword ptr [ebp-0x1C], ecx cmp ecx, 256
- jae SHORT G_M20594_IG11
+ jae G_M20594_IG17
cmp ecx, 256 setb cl movzx ecx, cl call [<unknown method>] mov eax, dword ptr [ebp-0x1C] test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M20594_IG10 - jmp SHORT G_M20594_IG15 - ;; size=58 bbWeight=1 PerfScore 18.00 -G_M20594_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov edx, dword ptr [ebp-0x14] - jmp SHORT G_M20594_IG13 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M20594_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] - test eax, eax - jne SHORT G_M20594_IG15 - ;; size=10 bbWeight=1 PerfScore 4.25 -G_M20594_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ jne SHORT G_M20594_IG12 + ;; size=60 bbWeight=1 PerfScore 16.00 +G_M20594_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov edx, dword ptr [ebp-0x14] ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M20594_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov eax, dword ptr [ebp-0x10] sub edx, eax inc edx mov dword ptr [ebp-0x20], edx cmp eax, ebx
- ja SHORT G_M20594_IG18
+ ja SHORT G_M20594_IG16
sub ebx, eax cmp ebx, edx
- jb SHORT G_M20594_IG18
+ jb SHORT G_M20594_IG16
lea edi, bword ptr [edi+2*eax] mov ecx, edx not ecx @@ -169,7 +148,7 @@ G_M20594_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e mov bword ptr [esi], edi mov dword ptr [esi+0x04], ebx ;; size=43 bbWeight=1 PerfScore 12.75
-G_M20594_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M20594_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -177,26 +156,52 @@ G_M20594_IG14: ; bbWeight=1, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M20594_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
+G_M20594_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref + mov dword ptr [ebp-0x10], eax + jmp G_M20594_IG06 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M20594_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov edx, dword ptr [ebp-0x14] dec edx
+ mov ecx, dword ptr [ebp-0x10] + cmp edx, ecx + mov dword ptr [ebp-0x10], ecx + jle SHORT G_M20594_IG09 + ;; size=14 bbWeight=1 PerfScore 4.50 +G_M20594_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref + jmp G_M20594_IG07 + ;; size=5 bbWeight=0.25 PerfScore 0.50 +G_M20594_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[esi edi] + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M20594_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref + ; byrRegs +[esi edi] + mov ecx, edx + call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] + test eax, eax + je G_M20594_IG06 + jmp G_M20594_IG04 + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M20594_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[esi edi] + call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M20594_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz + ; byrRegs +[esi edi] + call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] + test eax, eax + mov edx, dword ptr [ebp-0x14] + je SHORT G_M20594_IG09 + dec edx
mov eax, dword ptr [ebp-0x10] cmp edx, eax mov dword ptr [ebp-0x10], eax
- jle SHORT G_M20594_IG13 - ;; size=14 bbWeight=1 PerfScore 4.50 -G_M20594_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ jg G_M20594_IG07
jmp G_M20594_IG09
- ;; size=5 bbWeight=0.25 PerfScore 0.50 -G_M20594_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[esi edi] - call CORINFO_HELP_RNGCHKFAIL - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M20594_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 270, prolog size 9, PerfScore 107.50, instruction count 94, allocated bytes for code 270 (MethodHash=1632af8d) for method System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 308, prolog size 9, PerfScore 86.75, instruction count 98, allocated bytes for code 308 (MethodHash=1632af8d) for method System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================

+42 (+16.87%) : 695182.dasm - Internal.JitInterface.CorInfoImpl:CreateConstLookupToSymbol(ILCompiler.DependencyAnalysis.ISymbolNode):Internal.JitInterface.CORINFOCONSTLOOKUP:this (Tier1)

@@ -9,35 +9,35 @@ ; 4 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4.04) ref -> esi this class-hnd single-def <Internal.JitInterface.CorInfoImpl> -; V01 RetBuf [V01,T04] ( 3, 3 ) byref -> [ebp-0x18] single-def -; V02 arg1 [V02,T06] ( 7, 3.64) ref -> ebx class-hnd single-def <ILCompiler.DependencyAnalysis.ISymbolNode>
+; V00 this [V00,T01] ( 5, 3.11) ref -> esi this class-hnd single-def <Internal.JitInterface.CorInfoImpl> +; V01 RetBuf [V01,T02] ( 3, 3 ) byref -> edi single-def +; V02 arg1 [V02,T03] ( 7, 3.64) ref -> ebx class-hnd single-def <ILCompiler.DependencyAnalysis.ISymbolNode>
; V03 loc0 [V03 ] ( 3, 3 ) struct ( 8) [ebp-0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Internal.JitInterface.CORINFO_CONST_LOOKUP> ;* V04 loc1 [V04 ] ( 0, 0 ) byref -> zero-ref
-; V05 tmp1 [V05,T13] ( 2, 2 ) byref -> eax single-def -; V06 tmp2 [V06,T14] ( 2, 2 ) int -> edx -; V07 tmp3 [V07,T12] ( 3, 2 ) int -> esi "guarded devirt return temp"
+; V05 tmp1 [V05,T07] ( 2, 2 ) byref -> eax single-def +; V06 tmp2 [V06,T08] ( 2, 2 ) int -> edx +; V07 tmp3 [V07,T06] ( 3, 2 ) int -> esi "guarded devirt return temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadHelperImport>
-; V09 tmp5 [V09,T05] ( 4, 2.98) int -> registers ld-addr-op "Inline ldloca(s) first use temp" -;* V10 tmp6 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V11 tmp7 [V11,T02] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> -; V12 tmp8 [V12,T09] ( 3, 2.94) byref -> eax single-def "Inline stloc first use temp"
+; V09 tmp5 [V09,T05] ( 4, 2.04) int -> [ebp-0x18] ld-addr-op "Inline ldloca(s) first use temp" +;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V11 tmp7 [V11,T00] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> +; V12 tmp8 [V12,T04] ( 3, 2.94) byref -> eax single-def "Inline stloc first use temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> ;* V14 tmp10 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp11 [V15,T00] ( 6, 8.09) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> -; V16 tmp12 [V16,T11] ( 3, 2.04) ref -> [ebp-0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V17 tmp13 [V17,T10] ( 4, 2.09) int -> edx single-def "Inline stloc first use temp" -; V18 tmp14 [V18,T16] ( 3, 0.26) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V15 tmp11 [V15,T10] ( 6, 0.59) ref -> [ebp-0x24] class-hnd spill-single-def "Inlining Arg" <<unknown class>> +; V16 tmp12 [V16,T16] ( 3, 0.17) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V17 tmp13 [V17,T13] ( 4, 0.21) int -> [ebp-0x1C] spill-single-def "Inline stloc first use temp" +; V18 tmp14 [V18,T12] ( 3, 0.26) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V22 tmp18 [V22 ] ( 2, 2 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V03.accessType (fldOffset=0x0)" P-DEP ; V23 tmp19 [V23 ] ( 3, 3 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._value (fldOffset=0x4)" P-DEP
-; V24 cse0 [V24,T08] ( 3, 3 ) int -> edx "CSE - conservative" -; V25 cse1 [V25,T07] ( 3, 3 ) ref -> ecx "CSE - conservative" -; V26 rat0 [V26,T03] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V24 cse0 [V24,T15] ( 3, 0.19) int -> [ebp-0x20] spill-single-def "CSE - conservative" +; V25 cse1 [V25,T14] ( 3, 0.19) ref -> ecx "CSE - conservative" +; V26 rat0 [V26,T11] ( 3, 0.38) int -> eax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 28
G_M42418_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -45,18 +45,18 @@ G_M42418_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 28
xor eax, eax mov dword ptr [ebp-0x14], eax mov dword ptr [ebp-0x10], eax
- mov bword ptr [ebp-0x18], edx - ; GC ptr vars +{V01}
mov esi, ecx ; gcrRegs +[esi]
+ mov edi, edx + ; byrRegs +[edi]
mov ebx, gword ptr [ebp+0x08] ; gcrRegs +[ebx]
- ;; size=25 bbWeight=1 PerfScore 9.00 -G_M42418_IG02: ; bbWeight=1, gcVars=00000010 {V01}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 8.25 +G_M42418_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref, isz
mov edx, ebx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -78,98 +78,110 @@ G_M42418_IG02: ; bbWeight=1, gcVars=00000010 {V01}, gcrefRegs=00000048 {e test eax, eax je SHORT G_M42418_IG06 ;; size=42 bbWeight=1 PerfScore 15.50
-G_M42418_IG03: ; bbWeight=0.94, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
+G_M42418_IG03: ; bbWeight=0.94, gcrefRegs=00000008 {ebx}, byrefRegs=00000081 {eax edi}, byref
; gcrRegs -[esi] mov esi, dword ptr [eax] ;; size=2 bbWeight=0.94 PerfScore 1.87
-G_M42418_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M42418_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref
; byrRegs -[eax] mov dword ptr [ebp-0x10], esi cmp dword ptr [ebx], 0xD1FFAB1E
- jne SHORT G_M42418_IG11 - ;; size=11 bbWeight=1 PerfScore 5.00 -G_M42418_IG05: ; bbWeight=0.45, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jne G_M42418_IG11 + ;; size=15 bbWeight=1 PerfScore 5.00 +G_M42418_IG05: ; bbWeight=0.45, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[ebx] mov esi, 1
- jmp SHORT G_M42418_IG12 - ;; size=7 bbWeight=0.45 PerfScore 1.01 -G_M42418_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp G_M42418_IG12 + ;; size=10 bbWeight=0.45 PerfScore 1.01 +G_M42418_IG06: ; bbWeight=0.06, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs +[ebx esi] mov ecx, gword ptr [esi+0x54] ; gcrRegs +[ecx] mov edx, dword ptr [ecx+0x08]
+ mov dword ptr [ebp-0x20], edx
lea eax, [8*edx+D1FFAB1EH]
- mov edi, eax - sar edi, 31
+ mov edx, eax + sar edx, 31
or eax, 0xD1FFAB1E
- or edi, 0
+ or edx, 0
test eax, eax js SHORT G_M42418_IG07
- test edi, edi - jne SHORT G_M42418_IG15
+ test edx, edx + jne G_M42418_IG15
jmp SHORT G_M42418_IG08
- ;; size=36 bbWeight=1 PerfScore 10.25 -G_M42418_IG07: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, -1 - jne SHORT G_M42418_IG15 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M42418_IG08: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - mov edi, eax
+ ;; size=43 bbWeight=0.06 PerfScore 0.71 +G_M42418_IG07: ; bbWeight=0.06, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000080 {edi}, byref + cmp edx, -1 + jne G_M42418_IG15 + ;; size=9 bbWeight=0.06 PerfScore 0.08 +G_M42418_IG08: ; bbWeight=0.06, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000080 {edi}, byref, isz + mov edx, eax + mov dword ptr [ebp-0x18], edx + mov gword ptr [ebp-0x24], ecx + ; GC ptr vars +{V15}
inc dword ptr [ecx+0x0C]
- mov eax, gword ptr [ecx+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x1C], eax
+ mov edx, gword ptr [ecx+0x04] + ; gcrRegs +[edx] + mov gword ptr [ebp-0x28], edx
; GC ptr vars +{V16}
- cmp dword ptr [eax+0x04], edx
+ mov edx, dword ptr [ebp-0x20] + ; gcrRegs -[edx] + mov dword ptr [ebp-0x1C], edx + mov ecx, gword ptr [ebp-0x28] + cmp dword ptr [ecx+0x04], edx
jbe SHORT G_M42418_IG14
- ;; size=16 bbWeight=1 PerfScore 10.25 -G_M42418_IG09: ; bbWeight=0.04, gcVars=00000810 {V01 V16}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] - lea eax, [edx+0x01] - mov dword ptr [ecx+0x08], eax
+ ;; size=31 bbWeight=0.06 PerfScore 0.96 +G_M42418_IG09: ; bbWeight=0.04, gcVars=00010400 {V15 V16}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref + ; gcrRegs -[ecx] + lea ecx, [edx+0x01] + mov edx, gword ptr [ebp-0x24] + ; gcrRegs +[edx] + mov dword ptr [edx+0x08], ecx
push ebx
- mov ecx, gword ptr [ebp-0x1C] - ; GC ptr vars -{V16}
+ mov ecx, gword ptr [ebp-0x28] + ; gcrRegs +[ecx] + mov edx, dword ptr [ebp-0x1C] + ; gcrRegs -[edx] + ; GC ptr vars -{V15 V16}
call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx]
- ;; size=15 bbWeight=0.04 PerfScore 0.19 -G_M42418_IG10: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=21 bbWeight=0.04 PerfScore 0.28 +G_M42418_IG10: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref
mov ecx, gword ptr [esi+0x4C] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl
- push edi
+ mov esi, dword ptr [ebp-0x18] + ; gcrRegs -[esi] + push esi
push 2 mov edx, ebx ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx]
mov ecx, eax call [<unknown method>]
- mov esi, edi - jmp SHORT G_M42418_IG04 - ;; size=28 bbWeight=0.04 PerfScore 0.68 -G_M42418_IG11: ; bbWeight=0.55, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+ jmp G_M42418_IG04 + ;; size=32 bbWeight=0.04 PerfScore 0.71 +G_M42418_IG11: ; bbWeight=0.55, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref
mov ecx, ebx ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx ebx] mov esi, eax ;; size=10 bbWeight=0.55 PerfScore 1.92
-G_M42418_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M42418_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
lea eax, bword ptr [ebp-0x14] ; byrRegs +[eax] xor edx, edx test esi, esi setne dl mov dword ptr [eax], edx
- mov edi, bword ptr [ebp-0x18] - ; byrRegs +[edi]
mov eax, dword ptr [ebp-0x14] ; byrRegs -[eax] mov dword ptr [edi], eax mov eax, dword ptr [ebp-0x10] mov dword ptr [edi+0x04], eax
- ;; size=26 bbWeight=1 PerfScore 8.00
+ ;; size=23 bbWeight=1 PerfScore 7.00
G_M42418_IG13: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -178,22 +190,25 @@ G_M42418_IG13: ; bbWeight=1, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M42418_IG14: ; bbWeight=0.00, gcVars=00000010 {V01}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx ebx esi] - ; byrRegs -[edi]
+G_M42418_IG14: ; bbWeight=0.00, gcVars=00000400 {V15}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[ebx esi] + ; GC ptr vars +{V10 V15} + mov ecx, gword ptr [ebp-0x24] + ; gcrRegs +[ecx]
mov edx, ebx ; gcrRegs +[edx]
+ ; GC ptr vars -{V10 V15}
call [<unknown method>] ; gcrRegs -[ecx edx] jmp SHORT G_M42418_IG10 ...

libraries.pmi.windows.x86.checked.mch

-32 (-8.27%) : 80874.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)

@@ -63,20 +63,34 @@ G_M15591_IG01: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1.00 PerfScore 4.75
-G_M15591_IG02: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15591_IG02: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne G_M15591_IG27 - ;; size=10 bbWeight=1.00 PerfScore 3.00 -G_M15591_IG03: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M15591_IG04 + ;; size=6 bbWeight=1.00 PerfScore 3.00 +G_M15591_IG03: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M15591_IG28 + ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG04: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GetMembersAndInitializers():Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializers:this] ; gcrRegs -[ecx] +[eax] cmp gword ptr [ebp+0x08], 0
- jne G_M15591_IG26 - ;; size=18 bbWeight=1.00 PerfScore 6.25 -G_M15591_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M15591_IG06 + ;; size=14 bbWeight=1.00 PerfScore 6.25 +G_M15591_IG05: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M15591_IG28 + ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edi, dword ptr [esi] @@ -91,9 +105,9 @@ G_M15591_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor ecx, ecx mov dword ptr [ebp-0x10], ecx test ebx, ebx
- jle SHORT G_M15591_IG08
+ jle SHORT G_M15591_IG10
;; size=29 bbWeight=1 PerfScore 14.00
-G_M15591_IG05: ; bbWeight=4, gcVars=00000040 {V32}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15591_IG07: ; bbWeight=4, gcVars=00000040 {V32}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, gword ptr [eax+4*edx+0x08] ; gcrRegs +[edx] mov gword ptr [ebp-0x18], edx @@ -105,9 +119,9 @@ G_M15591_IG05: ; bbWeight=4, gcVars=00000040 {V32}, gcrefRegs=00000041 {e call [edi+0x18]<unknown method> ; gcrRegs -[eax ecx edx] cmp eax, 11
- je SHORT G_M15591_IG07
+ je SHORT G_M15591_IG09
;; size=22 bbWeight=4 PerfScore 46.00
-G_M15591_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15591_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push gword ptr [ebp+0x08] mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] @@ -117,7 +131,7 @@ G_M15591_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [eax+0x1C]<unknown method> ; gcrRegs -[ecx] ;; size=14 bbWeight=2 PerfScore 18.00
-G_M15591_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15591_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [ebp-0x10] lea edx, [edi+0x01] mov edi, edx @@ -125,33 +139,54 @@ G_M15591_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x10], edi mov eax, gword ptr [ebp-0x1C] ; gcrRegs +[eax]
- jg SHORT G_M15591_IG05
+ jg SHORT G_M15591_IG07
;; size=18 bbWeight=4 PerfScore 20.00
-G_M15591_IG08: ; bbWeight=1.00, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M15591_IG10: ; bbWeight=1.00, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; GC ptr vars -{V32} cmp gword ptr [ebp+0x08], 0
- jne G_M15591_IG25 - ;; size=10 bbWeight=1.00 PerfScore 3.00 -G_M15591_IG09: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M15591_IG12 + ;; size=6 bbWeight=1.00 PerfScore 3.00 +G_M15591_IG11: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M15591_IG28 + ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG12: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_BaseTypeNoUseSiteDiagnostics():Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this] ; gcrRegs -[ecx] +[eax] cmp gword ptr [ebp+0x08], 0
- jne G_M15591_IG24 - ;; size=18 bbWeight=1.00 PerfScore 6.25 -G_M15591_IG10: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M15591_IG14 + ;; size=14 bbWeight=1.00 PerfScore 6.25 +G_M15591_IG13: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M15591_IG28 + ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG14: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_InterfacesNoUseSiteDiagnostics():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this] ; gcrRegs -[ecx] +[eax] cmp gword ptr [ebp+0x08], 0
- jne G_M15591_IG23 - ;; size=18 bbWeight=1.00 PerfScore 6.25 -G_M15591_IG11: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M15591_IG16 + ;; size=14 bbWeight=1.00 PerfScore 6.25 +G_M15591_IG15: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M15591_IG28 + ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG16: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edi, dword ptr [ebp-0x14] @@ -159,53 +194,81 @@ G_M15591_IG11: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [eax+0x08]<unknown method> ; gcrRegs -[ecx] +[eax] cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M15591_IG22
+ je SHORT G_M15591_IG18
;; size=17 bbWeight=1.00 PerfScore 9.25
-G_M15591_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15591_IG17: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M15591_IG28 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x94] call [eax+0x18]<unknown method> ; gcrRegs -[ecx] +[eax] cmp dword ptr [eax+0x04], 0
- je SHORT G_M15591_IG14
+ je SHORT G_M15591_IG20
;; size=17 bbWeight=1 PerfScore 9.25
-G_M15591_IG13: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+G_M15591_IG19: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
push eax call [Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol:EnsureAllConstraintsAreResolved(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol])] ; gcrRegs -[eax] ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M15591_IG14: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15591_IG20: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M15591_IG21
+ je SHORT G_M15591_IG22
;; size=6 bbWeight=1.00 PerfScore 3.00
-G_M15591_IG15: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15591_IG21: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M15591_IG28 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG22: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x58] call [eax+0x04]<unknown method> ; gcrRegs -[ecx] +[eax] cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M15591_IG20
+ je SHORT G_M15591_IG24
;; size=14 bbWeight=1.00 PerfScore 8.25
-G_M15591_IG16: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15591_IG23: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M15591_IG28 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG24: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
push gword ptr [ebp+0x08] mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M15591_IG19
+ je SHORT G_M15591_IG26
;; size=17 bbWeight=1.00 PerfScore 7.25
-G_M15591_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15591_IG25: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M15591_IG28 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M15591_IG26: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=8 bbWeight=1 PerfScore 3.25
-G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M15591_IG27: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -213,84 +276,12 @@ G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M15591_IG19: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je SHORT G_M15591_IG17 - jmp SHORT G_M15591_IG28 - ;; size=11 bbWeight=0.17 PerfScore 1.20 -G_M15591_IG20: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08]
...

-26 (-7.05%) : 59432.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

@@ -62,11 +62,18 @@ G_M48701_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov gword ptr [ebp-0x24], eax ; GC ptr vars +{V02} ;; size=17 bbWeight=0.50 PerfScore 4.50
-G_M48701_IG05: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M48701_IG05: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp gword ptr [ebp+0x08], 0
+ je SHORT G_M48701_IG07 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M48701_IG06: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0
jne G_M48701_IG17
- ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
push gword ptr [ebp+0x08] ; gcr arg push 0 mov ecx, esi @@ -77,9 +84,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0 ; gcrRegs -[eax ecx edx] ; gcr arg pop 1 cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG16 - ;; size=23 bbWeight=0.50 PerfScore 3.75 -G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M48701_IG09 + ;; size=19 bbWeight=0.50 PerfScore 3.75 +G_M48701_IG08: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG17 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -87,9 +101,16 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG15 - ;; size=21 bbWeight=0.50 PerfScore 3.63 -G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M48701_IG11 + ;; size=17 bbWeight=0.50 PerfScore 3.63 +G_M48701_IG10: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG17 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -103,13 +124,20 @@ G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] cmp eax, 7
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG15
;; size=26 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M48701_IG14
+ je SHORT G_M48701_IG14
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG17 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -117,7 +145,7 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=11 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea edi, bword ptr [esi+0x38] ; byrRegs +[edi] push gword ptr [ebp+0x08] @@ -132,13 +160,28 @@ G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax ; gcrRegs +[edx] test edi, edi
- je SHORT G_M48701_IG19
+ jne SHORT G_M48701_IG18 + ;; size=23 bbWeight=0.50 PerfScore 3.62 +G_M48701_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx esi] + ; byrRegs -[edi] + call [System.ThrowHelper:ThrowNullReferenceException()] + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M48701_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + lea ecx, [ebp+0x08] + call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M48701_IG18: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs +[edx esi] + ; byrRegs +[edi]
push 0 ; gcr arg push 0 mov ecx, edi ; byrRegs +[ecx] call <unknown method>
- ; gcrRegs -[edx]
+ ; gcrRegs -[edx] +[eax]
; byrRegs -[ecx edi] ; gcr arg pop 1 test eax, eax @@ -154,8 +197,8 @@ G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx edx] lea ecx, bword ptr [esi+0x48] ; byrRegs +[ecx]
- ;; size=52 bbWeight=0.50 PerfScore 9.75 -G_M48701_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=29 bbWeight=0.50 PerfScore 6.12 +G_M48701_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
mov eax, dword ptr [ecx] mov dword ptr [ebp-0x20], eax mov edx, eax @@ -165,54 +208,10 @@ G_M48701_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 lock cmpxchg dword ptr [ecx], edx cmp eax, dword ptr [ebp-0x20]
- jne SHORT G_M48701_IG12
+ jne SHORT G_M48701_IG19
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ecx] - jmp SHORT G_M48701_IG20 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je SHORT G_M48701_IG10 - jmp SHORT G_M48701_IG18 - ;; size=11 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG18 - jmp G_M48701_IG08 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG18 - jmp G_M48701_IG07 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG17: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[eax] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je G_M48701_IG06 - ;; size=13 bbWeight=0.17 PerfScore 0.86 -G_M48701_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx esi] - lea ecx, [ebp+0x08] - call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] - int3 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M48701_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call [System.ThrowHelper:ThrowNullReferenceException()] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; byrRegs -[ecx]
mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -253,7 +252,7 @@ G_M48701_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} jmp G_M48701_IG04 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 24, PerfScore 166.08, instruction count 115, allocated bytes for code 369 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 343, prolog size 24, PerfScore 164.05, instruction count 111, allocated bytes for code 343 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================ *************** EH table for Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this

-22 (-7.01%) : 164382.dasm - System.Xml.Base64Decoder:Decode(ushort[],int,int):int:this (FullOpts)

@@ -11,15 +11,15 @@ ; V00 this [V00,T01] ( 8, 5 ) ref -> esi this class-hnd single-def <System.Xml.Base64Decoder> ; V01 arg1 [V01,T00] ( 6, 5.00) ref -> edx class-hnd single-def <ushort[]> ; V02 arg2 [V02,T07] ( 5, 3.00) int -> ebx single-def
-; V03 arg3 [V03,T04] ( 8, 4.08) int -> edi single-def
+; V03 arg3 [V03,T03] ( 8, 4.08) int -> edi single-def
; V04 loc0 [V04 ] ( 2, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op ; V05 loc1 [V05 ] ( 2, 1 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V10 tmp4 [V10,T03] ( 4, 4.16) int -> [ebp-0x18] spill-single-def "Inlining Arg" -;* V11 tmp5 [V11,T18] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V10 tmp4 [V10,T02] ( 4, 4.16) int -> [ebp-0x18] spill-single-def "Inlining Arg" +;* V11 tmp5 [V11,T19] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V14 tmp8 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -27,8 +27,8 @@ ; V16 tmp10 [V16,T09] ( 2, 2 ) byref -> eax single-def "Inlining Arg" ;* V17 tmp11 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp13 [V19,T02] ( 5, 5.03) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]> -; V20 tmp14 [V20,T05] ( 5, 4.03) int -> ebx "Inlining Arg"
+; V19 tmp13 [V19,T05] ( 4, 4.02) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]> +; V20 tmp14 [V20,T04] ( 5, 4.03) int -> ebx "Inlining Arg"
; V21 tmp15 [V21,T06] ( 4, 3.02) int -> eax "Inlining Arg" ;* V22 tmp16 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP @@ -37,18 +37,19 @@ ;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP ;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V29 tmp23 [V29,T14] ( 2, 1 ) byref -> eax single-def "field V12._reference (fldOffset=0x0)" P-INDEP -; V30 tmp24 [V30,T16] ( 2, 1 ) int -> edi "field V12._length (fldOffset=0x4)" P-INDEP
+; V29 tmp23 [V29,T15] ( 2, 1 ) byref -> eax single-def "field V12._reference (fldOffset=0x0)" P-INDEP +; V30 tmp24 [V30,T17] ( 2, 1 ) int -> edi "field V12._length (fldOffset=0x4)" P-INDEP
;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP ;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
-; V33 tmp27 [V33,T15] ( 2, 1 ) byref -> [ebp-0x1C] spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP -; V34 tmp28 [V34,T17] ( 2, 1 ) int -> edi "field V14._length (fldOffset=0x4)" P-INDEP -; V35 tmp29 [V35,T12] ( 3, 1 ) byref -> ecx "field V22._reference (fldOffset=0x0)" P-INDEP -; V36 tmp30 [V36,T13] ( 3, 1 ) int -> eax "field V22._length (fldOffset=0x4)" P-INDEP -; V37 tmp31 [V37,T19] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V38 tmp32 [V38,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V33 tmp27 [V33,T16] ( 2, 1 ) byref -> [ebp-0x1C] spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP +; V34 tmp28 [V34,T18] ( 2, 1 ) int -> edi "field V14._length (fldOffset=0x4)" P-INDEP +; V35 tmp29 [V35,T13] ( 3, 1 ) byref -> ecx "field V22._reference (fldOffset=0x0)" P-INDEP +; V36 tmp30 [V36,T14] ( 3, 1 ) int -> eax "field V22._length (fldOffset=0x4)" P-INDEP +; V37 tmp31 [V37,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V38 tmp32 [V38,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
; V39 cse0 [V39,T08] ( 3, 2.50) int -> ecx "CSE - moderate"
-; V40 cse1 [V40,T11] ( 3, 1.50) int -> ecx "CSE - conservative"
+; V40 cse1 [V40,T12] ( 3, 1.50) int -> ecx "CSE - moderate" +; V41 cse2 [V41,T11] ( 3, 1.53) int -> ecx "CSE - moderate"
; ; Lcl frame size = 16 @@ -67,31 +68,27 @@ G_M47596_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M47596_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edx] test edx, edx
- je G_M47596_IG15
+ je G_M47596_IG18
test edi, edi
- jl G_M47596_IG16
+ jl G_M47596_IG19
test ebx, ebx
- jl G_M47596_IG17
+ jl G_M47596_IG20
mov ecx, dword ptr [edx+0x04] sub ecx, ebx mov eax, ecx mov dword ptr [ebp-0x18], eax cmp edi, eax
- jl SHORT G_M47596_IG04
+ jge SHORT G_M47596_IG06
;; size=38 bbWeight=1 PerfScore 8.50
-G_M47596_IG03: ; bbWeight=0.08, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref - cmp edi, eax - jg G_M47596_IG18 - ;; size=8 bbWeight=0.08 PerfScore 0.10 -G_M47596_IG04: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+G_M47596_IG03: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- jne SHORT G_M47596_IG07
+ jne SHORT G_M47596_IG13
;; size=4 bbWeight=1 PerfScore 1.25
-G_M47596_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M47596_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx esi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47596_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M47596_IG05: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -99,44 +96,30 @@ G_M47596_IG06: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M47596_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M47596_IG06: ; bbWeight=0.08, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx esi]
- cmp dword ptr [edx+0x04], ebx - jb G_M47596_IG20 - ;; size=9 bbWeight=0.50 PerfScore 2.01 -G_M47596_IG08: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref - cmp ecx, edi - jb G_M47596_IG20 - ;; size=8 bbWeight=0.50 PerfScore 0.63 -G_M47596_IG09: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref - lea eax, bword ptr [edx+2*ebx+0x08] - ; byrRegs +[eax] - mov bword ptr [ebp-0x1C], eax - ; GC ptr vars +{V33} - mov edx, gword ptr [esi+0x04] - mov ecx, dword ptr [esi+0x0C] - mov ebx, ecx - mov eax, dword ptr [esi+0x10] - ; byrRegs -[eax] - sub eax, ecx - test edx, edx - je G_M47596_IG19 - ;; size=28 bbWeight=0.50 PerfScore 4.88 -G_M47596_IG10: ; bbWeight=0.51, gcVars=00008000 {V33}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref - cmp dword ptr [edx+0x04], ebx - jb G_M47596_IG20 - ;; size=9 bbWeight=0.51 PerfScore 2.04 -G_M47596_IG11: ; bbWeight=0.51, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ cmp edi, eax + jg G_M47596_IG21 + ;; size=8 bbWeight=0.08 PerfScore 0.10 +G_M47596_IG07: ; bbWeight=0.07, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M47596_IG03 + ;; size=2 bbWeight=0.07 PerfScore 0.15 +G_M47596_IG08: ; bbWeight=0.51, gcVars=00010000 {V33}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars +{V16 V33}
mov ecx, dword ptr [edx+0x04]
+ cmp ecx, ebx + jb SHORT G_M47596_IG17 + ;; size=7 bbWeight=0.51 PerfScore 1.65 +G_M47596_IG09: ; bbWeight=0.51, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
sub ecx, ebx cmp ecx, eax
- jb G_M47596_IG20 - ;; size=13 bbWeight=0.51 PerfScore 1.78 -G_M47596_IG12: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ jb SHORT G_M47596_IG17 + ;; size=6 bbWeight=0.51 PerfScore 0.76 +G_M47596_IG10: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
lea ecx, bword ptr [edx+ebx+0x08] ; byrRegs +[ecx] ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M47596_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref
+G_M47596_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[edx] push edi push bword ptr [ebp-0x1C] @@ -148,14 +131,14 @@ G_M47596_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, esi ; gcrRegs +[ecx] ; byrRegs -[ecx]
- ; GC ptr vars -{V33}
+ ; GC ptr vars -{V16 V33}
call [<unknown method>] ; gcrRegs -[ecx] mov eax, dword ptr [ebp-0x14] add dword ptr [esi+0x0C], eax mov eax, dword ptr [ebp-0x10] ;; size=30 bbWeight=0.50 PerfScore 7.12
-G_M47596_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47596_IG12: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -163,8 +146,46 @@ G_M47596_IG14: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M47596_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47596_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[edx] + cmp dword ptr [edx+0x04], ebx + jb SHORT G_M47596_IG17 + ;; size=5 bbWeight=0.50 PerfScore 2.01 +G_M47596_IG14: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz + cmp ecx, edi + jb SHORT G_M47596_IG17 + ;; size=4 bbWeight=0.50 PerfScore 0.63 +G_M47596_IG15: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz + lea eax, bword ptr [edx+2*ebx+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x1C], eax + ; GC ptr vars +{V33} + mov edx, gword ptr [esi+0x04] + mov ecx, dword ptr [esi+0x0C] + mov ebx, ecx + mov eax, dword ptr [esi+0x10] + ; byrRegs -[eax] + sub eax, ecx + test edx, edx + jne SHORT G_M47596_IG08 + ;; size=24 bbWeight=0.50 PerfScore 4.88 +G_M47596_IG16: ; bbWeight=0, gcVars=00010000 {V33}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edx] + or ebx, eax + jne SHORT G_M47596_IG17 + xor ecx, ecx + ; byrRegs +[ecx] + xor eax, eax + jmp SHORT G_M47596_IG11 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M47596_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
+ ; byrRegs -[ecx] + ; GC ptr vars -{V33} + call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M47596_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1D8 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -175,7 +196,7 @@ G_M47596_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ; gcrRegs -[eax ecx] int3 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M47596_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M47596_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1E4 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -187,7 +208,7 @@ G_M47596_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[eax edx] int3 ;; size=26 bbWeight=0 PerfScore 0.00
-G_M47596_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M47596_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1EC mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -199,7 +220,7 @@ G_M47596_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[eax edx] int3 ;; size=26 bbWeight=0 PerfScore 0.00
-G_M47596_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M47596_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
...

+14 (+6.36%) : 259325.dasm - System.Net.Sockets.SendPacketsElement:.ctor(ubyte[],int,int,ubyte):this (FullOpts)

@@ -8,7 +8,7 @@ ; 6 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 9 ) ref -> ecx this class-hnd single-def <System.Net.Sockets.SendPacketsElement>
+; V00 this [V00,T00] ( 9, 9 ) ref -> [ebp-0x14] this class-hnd single-def <System.Net.Sockets.SendPacketsElement>
; V01 arg1 [V01,T02] ( 5, 5 ) ref -> edx class-hnd single-def <ubyte[]> ; V02 arg2 [V02,T03] ( 7, 5.10) int -> esi single-def ; V03 arg3 [V03,T06] ( 6, 4.10) int -> edi single-def @@ -20,7 +20,7 @@ ; V09 tmp4 [V09,T07] ( 4, 4.20) int -> ebx "Inlining Arg" ;* V10 tmp5 [V10,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V12 tmp7 [V12,T08] ( 4, 4.20) int -> ebx "Inlining Arg"
+; V12 tmp7 [V12,T08] ( 4, 4.20) int -> [ebp-0x10] spill-single-def "Inlining Arg"
;* V13 tmp8 [V13,T17] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp9 [V14 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ;* V15 tmp10 [V15 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]> @@ -48,13 +48,13 @@ ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "V16.[008..012)" ;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "V16.[012..016)" ; V39 tmp34 [V39,T01] ( 5, 10 ) byref -> ebx single-def "Spilling address for field-by-field copy"
-; V40 cse0 [V40,T12] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V40 cse0 [V40,T12] ( 3, 3 ) int -> ebx "CSE - moderate"
; V41 cse1 [V41,T09] ( 4, 4 ) int -> eax "CSE - moderate" ; V42 rat0 [V42,T05] ( 3, 6 ) int -> esi "ReplaceWithLclVar is creating a new local variable" ; V43 rat1 [V43,T04] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable" ; V44 rat2 [V44,T10] ( 2, 4 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M19816_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -62,46 +62,44 @@ G_M19816_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
+ sub esp, 8 + mov gword ptr [ebp-0x14], ecx + ; GC ptr vars +{V00}
mov esi, dword ptr [ebp+0x10] mov edi, dword ptr [ebp+0x0C]
- ;; size=13 bbWeight=1 PerfScore 7.25 -G_M19816_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx edx]
+ ;; size=18 bbWeight=1 PerfScore 7.50 +G_M19816_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[edx]
test edx, edx
- je G_M19816_IG10
+ je G_M19816_IG11
mov eax, dword ptr [edx+0x04] mov ebx, eax cmp esi, ebx
- jb SHORT G_M19816_IG04
+ jae SHORT G_M19816_IG07
;; size=17 bbWeight=1 PerfScore 4.75
-G_M19816_IG03: ; bbWeight=0.10, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - cmp esi, ebx - ja G_M19816_IG12 - ;; size=8 bbWeight=0.10 PerfScore 0.12 -G_M19816_IG04: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+G_M19816_IG03: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax sub ebx, esi
- mov dword ptr [ebp-0x10], ebx - cmp edi, ebx - jb SHORT G_M19816_IG06 - ;; size=11 bbWeight=1 PerfScore 2.75 -G_M19816_IG05: ; bbWeight=0.10, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp edi, ebx - ja SHORT G_M19816_IG09 - ;; size=4 bbWeight=0.10 PerfScore 0.12 -G_M19816_IG06: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, ebx + mov dword ptr [ebp-0x10], ecx + cmp edi, ecx + jae SHORT G_M19816_IG09 + ;; size=13 bbWeight=1 PerfScore 3.00 +G_M19816_IG04: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
cmp eax, esi
- jb G_M19816_IG11 - cmp dword ptr [ebp-0x10], edi - jb SHORT G_M19816_IG11
+ jb G_M19816_IG12 + cmp ebx, edi + jb G_M19816_IG12
mov eax, edx ; gcrRegs +[eax] xor edx, edx
+ mov ecx, gword ptr [ebp-0x14] + ; gcrRegs +[ecx]
mov gword ptr [ecx+0x0C], edx
- ;; size=20 bbWeight=1 PerfScore 5.75 -G_M19816_IG07: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 5.00 +G_M19816_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
+ ; GC ptr vars -{V00}
mov gword ptr [ecx+0x10], edx lea edx, bword ptr [ecx+0x14] ; byrRegs +[edx] @@ -128,29 +126,47 @@ G_M19816_IG07: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=0000 ; byrRegs -[eax] mov byte ptr [ecx+0x1C], al ;; size=54 bbWeight=1 PerfScore 13.75
-G_M19816_IG08: ; bbWeight=1, epilog, nogc, extend - pop ecx
+G_M19816_IG06: ; bbWeight=1, epilog, nogc, extend + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 12
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M19816_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ecx]
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M19816_IG07: ; bbWeight=0.10, gcVars=00000001 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ecx] +[edx]
; byrRegs -[ebx]
+ ; GC ptr vars +{V00} + cmp esi, ebx + jbe SHORT G_M19816_IG03 + ;; size=4 bbWeight=0.10 PerfScore 0.12 +G_M19816_IG08: ; bbWeight=0.07, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edx] + ; GC ptr vars -{V00} + jmp SHORT G_M19816_IG13 + ;; size=2 bbWeight=0.07 PerfScore 0.14 +G_M19816_IG09: ; bbWeight=0.10, gcVars=00000001 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[edx] + ; GC ptr vars +{V00} + cmp edi, ecx + jbe SHORT G_M19816_IG04 + ;; size=4 bbWeight=0.10 PerfScore 0.12 +G_M19816_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edx] + ; GC ptr vars -{V00}
mov ecx, 0x1147 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS ; gcrRegs +[eax] push eax
- mov edx, ebx
+ mov edx, dword ptr [ebp-0x10]
mov ecx, edi call [System.ArgumentOutOfRangeException:ThrowGreater[uint](uint,uint,System.String)] ; gcrRegs -[eax] int3
- ;; size=27 bbWeight=0 PerfScore 0.00 -G_M19816_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M19816_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x1169 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -161,11 +177,11 @@ G_M19816_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[eax ecx] int3 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M19816_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19816_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M19816_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19816_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x1139 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -178,6 +194,6 @@ G_M19816_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 7, PerfScore 39.00, instruction count 77, allocated bytes for code 220 (MethodHash=360db297) for method System.Net.Sockets.SendPacketsElement:.ctor(ubyte[],int,int,ubyte):this (FullOpts)
+; Total bytes of code 234, prolog size 9, PerfScore 38.89, instruction count 81, allocated bytes for code 234 (MethodHash=360db297) for method System.Net.Sockets.SendPacketsElement:.ctor(ubyte[],int,int,ubyte):this (FullOpts)
; ============================================================

+30 (+6.59%) : 236059.dasm - System.Diagnostics.Metrics.MetricsEventSource+MetricSpec:Parse(System.String):System.Diagnostics.Metrics.MetricsEventSource+MetricSpec (FullOpts)

@@ -33,8 +33,8 @@ ; V22 tmp17 [V22 ] ( 4, 1.50) struct ( 8) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp18 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V24 tmp19 [V24,T21] ( 2, 1.95) int -> ecx "Span.get_Item index"
-; V25 tmp20 [V25,T28] ( 2, 0.97) ubyte -> eax "Inline return value spill temp" -; V26 tmp21 [V26,T07] ( 4, 3.89) ushort -> ecx "Inlining Arg"
+; V25 tmp20 [V25,T30] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V26 tmp21 [V26,T09] ( 4, 2.92) ushort -> ecx "Inlining Arg"
;* V27 tmp22 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V28 tmp23 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V29 tmp24 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -42,8 +42,8 @@ ;* V31 tmp26 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V32 tmp27 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V34 tmp29 [V34,T30] ( 2, 0.96) ubyte -> eax "Inline return value spill temp" -; V35 tmp30 [V35,T09] ( 4, 3.87) ushort -> ecx "Inlining Arg"
+; V34 tmp29 [V34,T31] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V35 tmp30 [V35,T11] ( 4, 2.91) ushort -> ecx "Inlining Arg"
;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V37 tmp32 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V38 tmp33 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -55,15 +55,15 @@ ; V44 tmp39 [V44,T04] ( 4, 4 ) int -> edi "Inlining Arg" ;* V45 tmp40 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V46 tmp41 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp42 [V47,T12] ( 3, 3 ) int -> edi "Inlining Arg"
+; V47 tmp42 [V47,T08] ( 3, 3 ) int -> edi "Inlining Arg"
; V48 tmp43 [V48,T15] ( 2, 2 ) byref -> ebx single-def "Inlining Arg" ;* V49 tmp44 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp45 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V51 tmp46 [V51 ] ( 4, 1.50) struct ( 8) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V52 tmp47 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V53 tmp48 [V53,T22] ( 2, 1.95) int -> ecx "Span.get_Item index"
-; V54 tmp49 [V54,T29] ( 2, 0.97) ubyte -> eax "Inline return value spill temp" -; V55 tmp50 [V55,T08] ( 4, 3.89) ushort -> ecx "Inlining Arg"
+; V54 tmp49 [V54,T32] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V55 tmp50 [V55,T10] ( 4, 2.92) ushort -> ecx "Inlining Arg"
;* V56 tmp51 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V57 tmp52 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V58 tmp53 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -71,8 +71,8 @@ ;* V60 tmp55 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V61 tmp56 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V62 tmp57 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V63 tmp58 [V63,T31] ( 2, 0.96) ubyte -> eax "Inline return value spill temp" -; V64 tmp59 [V64,T10] ( 4, 3.87) ushort -> ecx "Inlining Arg"
+; V63 tmp58 [V63,T33] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V64 tmp59 [V64,T12] ( 4, 2.91) ushort -> ecx "Inlining Arg"
;* V65 tmp60 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V66 tmp61 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V67 tmp62 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -87,9 +87,9 @@ ;* V76 tmp71 [V76 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp72 [V77 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ; V78 tmp73 [V78,T19] ( 5, 1.97) byref -> [ebp-0x34] spill-single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V79 tmp74 [V79,T32] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
+;* V79 tmp74 [V79,T28] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
; V80 tmp75 [V80,T25] ( 2, 1 ) byref -> eax single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V81 tmp76 [V81,T33] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
+;* V81 tmp76 [V81,T29] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
;* V82 tmp77 [V82 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp78 [V83 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ; V84 tmp79 [V84 ] ( 3, 1 ) byref -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V22._reference (fldOffset=0x0)" P-DEP @@ -154,7 +154,7 @@ ;* V143 tmp138 [V143 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x4)" P-INDEP ;* V144 tmp139 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP ;* V145 tmp140 [V145 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x4)" P-INDEP
-; V146 cse0 [V146,T11] ( 5, 3.50) int -> [ebp-0x2C] spill-single-def "CSE - moderate"
+; V146 cse0 [V146,T07] ( 5, 3.50) int -> [ebp-0x2C] spill-single-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -220,7 +220,7 @@ G_M65424_IG04: ; bbWeight=0.50, epilog, nogc, extend G_M65424_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax esi] +[ebx] cmp esi, edi
- jb G_M65424_IG31
+ jb G_M65424_IG23
;; size=8 bbWeight=0.50 PerfScore 0.63 G_M65424_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz lea eax, bword ptr [ebx+0x08] @@ -228,57 +228,30 @@ G_M65424_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov bword ptr [ebp-0x34], eax ; GC ptr vars +{V78} test edi, edi
- je SHORT G_M65424_IG15
+ je SHORT G_M65424_IG10
;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M65424_IG07: ; bbWeight=0.49, gcVars=0000000000080000 {V78}, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+G_M65424_IG07: ; bbWeight=0.49, gcVars=0000000000080000 {V78}, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, gcvars, byref
movzx ecx, word ptr [eax] cmp ecx, 256
- jb SHORT G_M65424_IG10 - ;; size=11 bbWeight=0.49 PerfScore 1.58 -G_M65424_IG08: ; bbWeight=0.49, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref - call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] - ; byrRegs -[eax] - test eax, eax - mov eax, bword ptr [ebp-0x34] - ; byrRegs +[eax] - jne G_M65424_IG21 - ;; size=17 bbWeight=0.49 PerfScore 2.55 -G_M65424_IG09: ; bbWeight=0.48, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz - jmp SHORT G_M65424_IG11 - ;; size=2 bbWeight=0.48 PerfScore 0.96 -G_M65424_IG10: ; bbWeight=0.49, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
+ jae G_M65424_IG21
test byte ptr [ecx+D1FFAB1EH], 128
- jne G_M65424_IG21 - ;; size=13 bbWeight=0.49 PerfScore 1.95 -G_M65424_IG11: ; bbWeight=0.49, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz
+ jne G_M65424_IG16 + ;; size=28 bbWeight=0.49 PerfScore 3.53 +G_M65424_IG08: ; bbWeight=0.49, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
lea ecx, [edi-0x01] movzx ecx, word ptr [eax+2*ecx] cmp ecx, 256
- jb SHORT G_M65424_IG14 - ;; size=15 bbWeight=0.49 PerfScore 1.82 -G_M65424_IG12: ; bbWeight=0.48, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[eax] - call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] - test eax, eax - mov eax, bword ptr [ebp-0x34] - ; byrRegs +[eax] - jne SHORT G_M65424_IG21 - ;; size=13 bbWeight=0.48 PerfScore 2.53 -G_M65424_IG13: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz - jmp SHORT G_M65424_IG15 - ;; size=2 bbWeight=0.50 PerfScore 0.99 -G_M65424_IG14: ; bbWeight=0.48, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[eax]
+ jae G_M65424_IG22 + ;; size=19 bbWeight=0.49 PerfScore 1.82 +G_M65424_IG09: ; bbWeight=0.48, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
test byte ptr [ecx+D1FFAB1EH], 128
- mov eax, bword ptr [ebp-0x34] - ; byrRegs +[eax] - jne SHORT G_M65424_IG21 - ;; size=12 bbWeight=0.48 PerfScore 2.41 -G_M65424_IG15: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
+ jne G_M65424_IG16 + ;; size=13 bbWeight=0.48 PerfScore 1.93 +G_M65424_IG10: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref
mov bword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], edi ;; size=6 bbWeight=0.50 PerfScore 0.99
-G_M65424_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M65424_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[eax] ; GC ptr vars -{V78} lea edi, bword ptr [ebp-0x18] @@ -298,7 +271,7 @@ G_M65424_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov eax, dword ptr [ebp-0x2C] ; gcrRegs -[eax] cmp eax, edi
- jb G_M65424_IG31
+ jb G_M65424_IG23
lea ebx, bword ptr [ebx+2*edi+0x08] ; gcrRegs -[ebx] ; byrRegs +[ebx] @@ -306,7 +279,7 @@ G_M65424_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 sub edx, edi mov edi, edx test edi, edi
- jge SHORT G_M65424_IG17
+ jge SHORT G_M65424_IG12
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -314,24 +287,29 @@ G_M65424_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=65 bbWeight=0.50 PerfScore 8.75
-G_M65424_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
+G_M65424_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test edi, edi
- je G_M65424_IG30 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M65424_IG18: ; bbWeight=0.49, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+ je SHORT G_M65424_IG17 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M65424_IG13: ; bbWeight=0.49, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
movzx ecx, word ptr [ebx] cmp ecx, 256
- jb SHORT G_M65424_IG25 - ;; size=11 bbWeight=0.49 PerfScore 1.58 -G_M65424_IG19: ; bbWeight=0.49, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz - call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] - test eax, eax - jne SHORT G_M65424_IG22 - ;; size=10 bbWeight=0.49 PerfScore 2.07 -G_M65424_IG20: ; bbWeight=0.48, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz - jmp SHORT G_M65424_IG26 - ;; size=2 bbWeight=0.48 PerfScore 0.96 -G_M65424_IG21: ; bbWeight=0.00, gcVars=0000000000080000 {V78}, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+ jae G_M65424_IG24 + test byte ptr [ecx+D1FFAB1EH], 128 + jne SHORT G_M65424_IG18 + ;; size=24 bbWeight=0.49 PerfScore 3.53 +G_M65424_IG14: ; bbWeight=0.49, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref + lea ecx, [edi-0x01] + movzx ecx, word ptr [ebx+2*ecx] + cmp ecx, 256 + jae G_M65424_IG25 + ;; size=19 bbWeight=0.49 PerfScore 1.82 +G_M65424_IG15: ; bbWeight=0.48, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + test byte ptr [ecx+D1FFAB1EH], 128 + jne SHORT G_M65424_IG18 + jmp SHORT G_M65424_IG17 + ;; size=11 bbWeight=0.48 PerfScore 2.89 +G_M65424_IG16: ; bbWeight=0.00, gcVars=0000000000080000 {V78}, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, gcvars, byref
; gcrRegs +[ebx] ; byrRegs -[ebx] +[eax] ; GC ptr vars -{V02} +{V19 V78} @@ -341,19 +319,24 @@ G_M65424_IG21: ; bbWeight=0.00, gcVars=0000000000080000 {V78}, gcrefRegs= ; GC ptr vars -{V19 V78} call [<unknown method>] ; byrRegs -[eax]
- jmp SHORT G_M65424_IG16 - ;; size=13 bbWeight=0.00 PerfScore 0.03 -G_M65424_IG22: ; bbWeight=0.00, gcVars=0000000000800000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jmp G_M65424_IG11 + ;; size=16 bbWeight=0.00 PerfScore 0.03 +G_M65424_IG17: ; bbWeight=0.50, gcVars=0000000000800000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs -[ebx] ; byrRegs +[ebx] ; GC ptr vars +{V02}
+ mov bword ptr [ebp-0x28], ebx + mov dword ptr [ebp-0x24], edi + jmp SHORT G_M65424_IG19 + ;; size=8 bbWeight=0.50 PerfScore 1.98 +G_M65424_IG18: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
push edi push ebx lea ecx, [ebp-0x28] call [<unknown method>] ; byrRegs -[ebx] ;; size=11 bbWeight=0.00 PerfScore 0.02
-G_M65424_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M65424_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea edi, bword ptr [ebp-0x18] ; byrRegs +[edi] lea esi, bword ptr [ebp-0x28] @@ -382,7 +365,7 @@ G_M65424_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ; gcrRegs -[ebx] ; byrRegs -[edx] ;; size=48 bbWeight=0.50 PerfScore 6.00
-G_M65424_IG24: ; bbWeight=0.50, epilog, nogc, extend
...

+19 (+6.64%) : 167357.dasm - System.Xml.XmlWellFormedWriter:WriteBase64Async(ubyte[],int,int):System.Threading.Tasks.Task:this (FullOpts)

@@ -46,83 +46,27 @@ G_M43339_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M43339_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx] test esi, esi
- je SHORT G_M43339_IG07
+ je G_M43339_IG12
test ebx, ebx
- jl SHORT G_M43339_IG06
+ jl G_M43339_IG11
test edi, edi
- jl SHORT G_M43339_IG05
+ jl G_M43339_IG10
mov eax, dword ptr [esi+0x04] sub eax, ebx mov dword ptr [ebp-0x24], eax cmp edi, eax
- jl SHORT G_M43339_IG09 - ;; size=24 bbWeight=1 PerfScore 8.25 -G_M43339_IG03: ; bbWeight=0.08, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, eax - jg SHORT G_M43339_IG08 - ;; size=4 bbWeight=0.08 PerfScore 0.10 -G_M43339_IG04: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43339_IG09 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M43339_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx esi] - mov ecx, 293 - mov edx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[eax] - mov edx, eax - ; gcrRegs +[edx] - mov ecx, edi - call [System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)] - ; gcrRegs -[eax edx] - int3 - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M43339_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov ecx, 0xD214 - mov edx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[eax] - mov edx, eax - ; gcrRegs +[edx] - mov ecx, ebx - call [System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)] - ; gcrRegs -[eax edx] - int3 - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M43339_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov ecx, 0xD206 - mov edx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - call [System.ArgumentNullException:Throw(System.String)] - ; gcrRegs -[eax ecx] - int3 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M43339_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov ecx, 293 - mov edx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[eax] - push eax - mov edx, dword ptr [ebp-0x24] - mov ecx, edi - call [System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)] - ; gcrRegs -[eax] - int3 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M43339_IG09: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx esi]
+ jge SHORT G_M43339_IG06 + ;; size=36 bbWeight=1 PerfScore 8.25 +G_M43339_IG03: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
mov edx, 12 call [<unknown method>] ; gcrRegs -[ecx] +[eax] mov ecx, dword ptr [eax+0x1C] and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E
- jne SHORT G_M43339_IG13 - ;; size=28 bbWeight=1 PerfScore 6.75 -G_M43339_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M43339_IG13 + ;; size=32 bbWeight=1 PerfScore 6.75 +G_M43339_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, gword ptr [ebp-0x28] ; gcrRegs +[ecx] @@ -141,23 +85,80 @@ G_M43339_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr [eax+0x1C] and ecx, 0xD1FFAB1E cmp ecx, 0xD1FFAB1E
- jne SHORT G_M43339_IG11
+ jne SHORT G_M43339_IG08
mov eax, gword ptr [D1FFAB1EH] ; static handle
- jmp SHORT G_M43339_IG12 - ;; size=44 bbWeight=0.50 PerfScore 10.00 -G_M43339_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ ;; size=42 bbWeight=0.50 PerfScore 9.00 +G_M43339_IG05: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref + jmp G_M43339_IG15 + ;; size=5 bbWeight=0.50 PerfScore 1.00 +G_M43339_IG06: ; bbWeight=0.08, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] +[ecx esi] + cmp edi, eax + jg SHORT G_M43339_IG09 + ;; size=4 bbWeight=0.08 PerfScore 0.10 +G_M43339_IG07: ; bbWeight=0.07, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M43339_IG03 + ;; size=2 bbWeight=0.07 PerfScore 0.15 +G_M43339_IG08: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx esi] +[eax]
mov ecx, gword ptr [ebp-0x28] ; gcrRegs +[ecx] mov edx, eax ; gcrRegs +[edx] call [System.Xml.XmlWellFormedWriter:_TryReturnTask(System.Threading.Tasks.Task):System.Threading.Tasks.Task:this] ; gcrRegs -[ecx edx]
- ;; size=11 bbWeight=0.50 PerfScore 2.12 -G_M43339_IG12: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43339_IG15 - ;; size=2 bbWeight=0.50 PerfScore 1.00
+ jmp SHORT G_M43339_IG05 + ;; size=13 bbWeight=0.50 PerfScore 3.12 +G_M43339_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov ecx, 293 + mov edx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[eax] + push eax + mov edx, dword ptr [ebp-0x24] + mov ecx, edi + call [System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)] + ; gcrRegs -[eax] + int3 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M43339_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 293 + mov edx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[eax] + mov edx, eax + ; gcrRegs +[edx] + mov ecx, edi + call [System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)] + ; gcrRegs -[eax edx] + int3 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M43339_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 0xD214 + mov edx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[eax] + mov edx, eax + ; gcrRegs +[edx] + mov ecx, ebx + call [System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)] + ; gcrRegs -[eax edx] + int3 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M43339_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 0xD206 + mov edx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[eax] + mov ecx, eax + ; gcrRegs +[ecx] + call [System.ArgumentNullException:Throw(System.String)] + ; gcrRegs -[eax ecx] + int3 + ;; size=24 bbWeight=0 PerfScore 0.00
G_M43339_IG13: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; gcrRegs +[eax esi]
push esi push ebx push edi @@ -189,7 +190,7 @@ G_M43339_IG15: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 286, prolog size 14, PerfScore 47.35, instruction count 96, allocated bytes for code 286 (MethodHash=b74b56b4) for method System.Xml.XmlWellFormedWriter:WriteBase64Async(ubyte[],int,int):System.Threading.Tasks.Task:this (FullOpts)
+; Total bytes of code 305, prolog size 14, PerfScore 46.50, instruction count 96, allocated bytes for code 305 (MethodHash=b74b56b4) for method System.Xml.XmlWellFormedWriter:WriteBase64Async(ubyte[],int,int):System.Threading.Tasks.Task:this (FullOpts)
; ============================================================ *************** EH table for System.Xml.XmlWellFormedWriter:WriteBase64Async(ubyte[],int,int):System.Threading.Tasks.Task:this

libraries_tests.run.windows.x86.Release.mch

-46 (-18.70%) : 723655.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,24 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 9, 62.04) ref -> edi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T04] ( 5,116 ) ref -> esi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T11] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 61.47) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T12] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 62.04) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 58.50) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T08] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 61.47) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13,291.06) int -> ebx
-; V08 tmp0 [V08,T05] ( 4,115 ) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 8,460 ) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10,345 ) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V11 cse0 [V11,T09] ( 3, 1.73) ref -> ecx "CSE - moderate"
+; V11 cse0 [V11,T07] ( 3, 1.73) ref -> ecx "CSE - moderate"
; V12 cse1 [V12,T02] ( 3,170.78) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3,170.78) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; V14 cse3 [V14,T10] ( 3, 1.73) int -> [ebp-0x18] spill-single-def "CSE - moderate" -; TEMP_02 ref -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 20
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -35,172 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - xor eax, eax - mov dword ptr [ebp-0x1C], eax - mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x10]
+ push eax + mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x10] + ; gcrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax - test esi, esi - je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75 -G_M28111_IG03: ; bbWeight=0.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [edi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M28111_IG03: ; bbWeight=0.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + test esi, esi + je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.98 PerfScore 6.63 G_M28111_IG04: ; bbWeight=56.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edi+4*ebx+0x08]
+ mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx] test ecx, ecx
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18 + cmp ecx, edi
je SHORT G_M28111_IG08
- mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07 - cmp ecx, esi - jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=56.92 PerfScore 498.09 -G_M28111_IG05: ; bbWeight=28.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=28.75 PerfScore 57.50 -G_M28111_IG06: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=20 bbWeight=56.92 PerfScore 483.86 +G_M28111_IG05: ; bbWeight=56.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=56.92 PerfScore 85.39 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=57.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=57.50 PerfScore 14.38 +G_M28111_IG09: ; bbWeight=57.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=57.50 PerfScore 258.75 +G_M28111_IG10: ; bbWeight=0.58, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.49 PerfScore 1.47 -G_M28111_IG07: ; bbWeight=56.92, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
- mov edx, esi
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp ecx, edi + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.58 PerfScore 7.19 +G_M28111_IG11: ; bbWeight=0.58, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.58 PerfScore 0.86 +G_M28111_IG12: ; bbWeight=0.29, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.29 PerfScore 0.58 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi] + mov edx, edi
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]System.Object:Equals(System.Object):ubyte:this ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=56.92 PerfScore 426.94 -G_M28111_IG08: ; bbWeight=56.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=56.92 PerfScore 185.01 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=57.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=57.50 PerfScore 14.38 -G_M28111_IG12: ; bbWeight=57.50, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=57.50 PerfScore 258.75 -G_M28111_IG13: ; bbWeight=0.58, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [edi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [edi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x18], edx
...

-46 (-18.70%) : 724276.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,24 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 9, 63.05) ref -> edi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T04] ( 5,118.00) ref -> esi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T11] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 62.47) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T12] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 63.05) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 59.50) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T08] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 62.47) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13,296.07) int -> ebx
-; V08 tmp0 [V08,T05] ( 4,117.00) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 8,468.00) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10,351.00) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V11 cse0 [V11,T09] ( 3, 1.76) ref -> ecx "CSE - moderate"
+; V11 cse0 [V11,T07] ( 3, 1.76) ref -> ecx "CSE - moderate"
; V12 cse1 [V12,T02] ( 3,173.74) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3,173.74) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; V14 cse3 [V14,T10] ( 3, 1.76) int -> [ebp-0x18] spill-single-def "CSE - moderate" -; TEMP_02 ref -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 20
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -35,172 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - xor eax, eax - mov dword ptr [ebp-0x1C], eax - mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x10]
+ push eax + mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x10] + ; gcrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax - test esi, esi - je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75 -G_M28111_IG03: ; bbWeight=0.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [edi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M28111_IG03: ; bbWeight=0.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + test esi, esi + je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.98 PerfScore 6.64 G_M28111_IG04: ; bbWeight=57.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edi+4*ebx+0x08]
+ mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx] test ecx, ecx
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18 + cmp ecx, edi
je SHORT G_M28111_IG08
- mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07 - cmp ecx, esi - jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=57.91 PerfScore 506.76 -G_M28111_IG05: ; bbWeight=29.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=29.25 PerfScore 58.50 -G_M28111_IG06: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=20 bbWeight=57.91 PerfScore 492.28 +G_M28111_IG05: ; bbWeight=57.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=57.91 PerfScore 86.87 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=58.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=58.50 PerfScore 14.62 +G_M28111_IG09: ; bbWeight=58.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=58.50 PerfScore 263.25 +G_M28111_IG10: ; bbWeight=0.59, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.49 PerfScore 1.47 -G_M28111_IG07: ; bbWeight=57.91, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
- mov edx, esi
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp ecx, edi + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.59 PerfScore 7.31 +G_M28111_IG11: ; bbWeight=0.59, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.59 PerfScore 0.88 +G_M28111_IG12: ; bbWeight=0.29, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.29 PerfScore 0.59 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi] + mov edx, edi
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]System.Object:Equals(System.Object):ubyte:this ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=57.91 PerfScore 434.36 -G_M28111_IG08: ; bbWeight=57.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=57.91 PerfScore 188.22 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=58.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=58.50 PerfScore 14.62 -G_M28111_IG12: ; bbWeight=58.50, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=58.50 PerfScore 263.25 -G_M28111_IG13: ; bbWeight=0.59, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [edi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [edi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x18], edx
...

-40 (-16.67%) : 224557.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,23 +10,20 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 9, 36.26) ref -> edi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T04] ( 5, 65 ) ref -> esi class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T08] ( 3, 2 ) int -> ebx single-def -; V04 arg4 [V04,T09] ( 1, 1 ) int -> [ebp+0x08] single-def -; V05 loc0 [V05,T07] ( 7, 35.94) int -> [ebp-0x10] spill-single-def -; V06 loc1 [V06,T11] ( 7, 0 ) int -> edx
+; V01 arg1 [V01,T03] ( 9, 36.26) ref -> esi class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T05] ( 5, 33 ) ref -> edi class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T06] ( 3, 2 ) int -> ebx single-def +; V04 arg4 [V04,T07] ( 1, 1 ) int -> [ebp+0x08] single-def +; V05 loc0 [V05,T04] ( 7, 35.94) int -> [ebp-0x10] spill-single-def +; V06 loc1 [V06,T09] ( 7, 0 ) int -> eax
; V07 loc2 [V07,T01] ( 13,163.29) int -> ebx
-; V08 tmp0 [V08,T05] ( 4, 64 ) int -> eax "guarded devirt return temp" -; V09 tmp1 [V09,T00] ( 9,256.64) ref -> ecx "guarded devirt arg temp"
+; V08 tmp0 [V08,T10] ( 4, 0 ) int -> eax "guarded devirt return temp" +; V09 tmp1 [V09,T00] ( 10,192 ) ref -> ecx "guarded devirt arg temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V11 cse0 [V11,T10] ( 3, 0.96) ref -> ecx "CSE - conservative"
+; V11 cse0 [V11,T08] ( 3, 0.96) ref -> ecx "CSE - conservative"
; V12 cse1 [V12,T02] ( 3, 95.04) ref -> ecx "CSE - aggressive"
-; V13 cse2 [V13,T03] ( 3, 95.04) int -> [ebp-0x14] spill-single-def "CSE - aggressive" -; TEMP_02 ref -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 16
+; Lcl frame size = 4
G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,170 +31,149 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x18], eax - mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x10]
+ push eax + mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x10] + ; gcrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, ebx - add eax, dword ptr [ebp+0x08] - mov dword ptr [ebp-0x10], eax - test esi, esi - je G_M28111_IG19 - cmp ebx, eax - jge SHORT G_M28111_IG09 - ;; size=20 bbWeight=1 PerfScore 5.75 -G_M28111_IG03: ; bbWeight=0.97, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, ebx + add edx, dword ptr [ebp+0x08] + mov dword ptr [ebp-0x10], edx
test edi, edi
- je SHORT G_M28111_IG13 - mov ecx, ebx - or ecx, eax - jl SHORT G_M28111_IG13 - cmp dword ptr [edi+0x04], eax - jl SHORT G_M28111_IG06
+ je SHORT G_M28111_IG14 + cmp ebx, edx + jge SHORT G_M28111_IG06 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M28111_IG03: ; bbWeight=0.97, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + test esi, esi + je SHORT G_M28111_IG10 + mov eax, ebx + or eax, edx + jl SHORT G_M28111_IG10 + cmp dword ptr [esi+0x04], edx + jl SHORT G_M28111_IG10
;; size=15 bbWeight=0.97 PerfScore 6.55 G_M28111_IG04: ; bbWeight=31.68, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edi+4*ebx+0x08]
+ mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx] test ecx, ecx
+ je SHORT G_M28111_IG05 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG18 + cmp edi, ecx
je SHORT G_M28111_IG08
- mov edx, dword ptr [ecx] - mov dword ptr [ebp-0x14], edx - cmp edx, 0xD1FFAB1E - jne SHORT G_M28111_IG07 - cmp esi, ecx - jne SHORT G_M28111_IG08 - ;; size=25 bbWeight=31.68 PerfScore 277.20 -G_M28111_IG05: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx esi edi] - jmp SHORT G_M28111_IG11 - ;; size=2 bbWeight=16 PerfScore 32.00 -G_M28111_IG06: ; bbWeight=0.48, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=20 bbWeight=31.68 PerfScore 269.28 +G_M28111_IG05: ; bbWeight=31.68, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG04 + ;; size=5 bbWeight=31.68 PerfScore 47.52 +G_M28111_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + mov eax, -1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M28111_IG07: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M28111_IG08: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, ebx + ;; size=2 bbWeight=32 PerfScore 8.00 +G_M28111_IG09: ; bbWeight=32, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=32 PerfScore 144.00 +G_M28111_IG10: ; bbWeight=0.32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M28111_IG13 - ;; size=5 bbWeight=0.48 PerfScore 1.45 -G_M28111_IG07: ; bbWeight=31.68, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + mov ecx, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[ecx]
- mov edx, esi
+ test ecx, ecx + je SHORT G_M28111_IG11 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M28111_IG19 + cmp edi, ecx + je SHORT G_M28111_IG08 + ;; size=25 bbWeight=0.32 PerfScore 4.00 +G_M28111_IG11: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + inc ebx + cmp ebx, edx + jl SHORT G_M28111_IG10 + ;; size=5 bbWeight=0.32 PerfScore 0.48 +G_M28111_IG12: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + jmp SHORT G_M28111_IG06 + ;; size=2 bbWeight=0.16 PerfScore 0.32 +G_M28111_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M28111_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi] + mov eax, ebx + jmp SHORT G_M28111_IG16 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28111_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [esi+0x04] + jae SHORT G_M28111_IG13 + cmp gword ptr [esi+4*eax+0x08], 0 + je SHORT G_M28111_IG17 + inc eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28111_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, edx + jl SHORT G_M28111_IG15 + jmp SHORT G_M28111_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M28111_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[esi] + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M28111_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi edi] + mov edx, edi
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C] call [eax+0x08]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M28111_IG11 - ;; size=15 bbWeight=31.68 PerfScore 237.60 -G_M28111_IG08: ; bbWeight=31.68, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - cmp ebx, dword ptr [ebp-0x10] - jl SHORT G_M28111_IG04 - ;; size=6 bbWeight=31.68 PerfScore 102.96 -G_M28111_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - mov eax, -1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M28111_IG10: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M28111_IG11: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, ebx - ;; size=2 bbWeight=32 PerfScore 8.00 -G_M28111_IG12: ; bbWeight=32, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=10 bbWeight=32 PerfScore 144.00 -G_M28111_IG13: ; bbWeight=0.32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - cmp ebx, dword ptr [edi+0x04] - jae SHORT G_M28111_IG18 - mov ecx, gword ptr [edi+4*ebx+0x08]
+ jne SHORT G_M28111_IG08 + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M28111_IG05 + ;; size=19 bbWeight=0 PerfScore 0.00 +G_M28111_IG19: ; bbWeight=0, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- test ecx, ecx - je SHORT G_M28111_IG16 - cmp dword ptr [ecx], 0xD1FFAB1E - jne SHORT G_M28111_IG15 - cmp esi, ecx
...

+20 (+26.67%) : 202150.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)

@@ -3,85 +3,101 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; ebp based frame
+; double-aligned frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]>
-; V02 tmp0 [V02,T04] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations> -;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations> +;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]>
-;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]>
-; V07 tmp5 [V07,T00] ( 3, 2 ) ref -> esi single-def "field V00.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T01] ( 3, 2 ) ref -> edi single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T01] ( 3, 2 ) ref -> edi single-def "field V00.array (fldOffset=0x0)" P-INDEP +; V08 tmp6 [V08,T00] ( 4, 2 ) ref -> esi single-def "field V01.array (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP ;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.array (fldOffset=0x0)" P-INDEP ;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M50794_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50794_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
+ and esp, -8
push edi push esi push ebx
- mov esi, gword ptr [ebp+0x0C] - ; gcrRegs +[esi] - mov edi, gword ptr [ebp+0x08]
+ push eax + mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.25
+ mov esi, gword ptr [ebp+0x08] + ; gcrRegs +[esi] + ;; size=16 bbWeight=1 PerfScore 7.50
G_M50794_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- test esi, esi - je SHORT G_M50794_IG03 - cmp dword ptr [esi+0x04], 0 - jne SHORT G_M50794_IG06 - ;; size=10 bbWeight=1 PerfScore 5.25 -G_M50794_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M50794_IG04
+ je SHORT G_M50794_IG08
cmp dword ptr [edi+0x04], 0 jne SHORT G_M50794_IG06
- ;; size=10 bbWeight=1 PerfScore 5.25
+ test esi, esi + je SHORT G_M50794_IG04 + ;; size=14 bbWeight=1 PerfScore 6.50 +G_M50794_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [esi+0x04], 0 + jne SHORT G_M50794_IG06 + ;; size=6 bbWeight=1 PerfScore 4.00
G_M50794_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi edi] mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00 G_M50794_IG05: ; bbWeight=1, epilog, nogc, extend
+ add esp, 4
pop ebx pop esi pop edi
+ mov esp, ebp
pop ebp ret 8
- ;; size=7 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.50
G_M50794_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] +[esi edi] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
+ ; gcr arg pop 0
mov ebx, eax ; gcrRegs +[ebx]
- push esi
push edi
+ ; gcr arg push 0 + push esi + ; gcr arg push 1
mov ecx, ebx ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:.ctor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):this] ; gcrRegs -[eax ecx esi edi]
+ ; gcr arg pop 2
mov eax, ebx ; gcrRegs +[eax] ;; size=24 bbWeight=0 PerfScore 0.00 G_M50794_IG07: ; bbWeight=0, epilog, nogc, extend
+ add esp, 4
pop ebx pop esi pop edi
+ mov esp, ebp
pop ebp ret 8
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M50794_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax ebx] +[esi edi] + test esi, esi + jne SHORT G_M50794_IG03 + jmp SHORT G_M50794_IG04 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 75, prolog size 6, PerfScore 22.75, instruction count 34, allocated bytes for code 75 (MethodHash=341e3995) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)
+; Total bytes of code 95, prolog size 10, PerfScore 24.50, instruction count 43, allocated bytes for code 95 (MethodHash=341e3995) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)
; ============================================================

+20 (+26.67%) : 672147.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)

@@ -3,85 +3,101 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; ebp based frame
+; double-aligned frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5006
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5006
; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]>
-; V02 tmp0 [V02,T04] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations> -;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations> +;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]>
-;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]>
-; V07 tmp5 [V07,T00] ( 3, 2 ) ref -> esi single-def "field V00.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T01] ( 3, 2 ) ref -> edi single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T01] ( 3, 2 ) ref -> edi single-def "field V00.array (fldOffset=0x0)" P-INDEP +; V08 tmp6 [V08,T00] ( 4, 2 ) ref -> esi single-def "field V01.array (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP ;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.array (fldOffset=0x0)" P-INDEP ;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M50794_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50794_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
+ and esp, -8
push edi push esi push ebx
- mov esi, gword ptr [ebp+0x0C] - ; gcrRegs +[esi] - mov edi, gword ptr [ebp+0x08]
+ push eax + mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.25
+ mov esi, gword ptr [ebp+0x08] + ; gcrRegs +[esi] + ;; size=16 bbWeight=1 PerfScore 7.50
G_M50794_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- test esi, esi - je SHORT G_M50794_IG03 - cmp dword ptr [esi+0x04], 0 - jne SHORT G_M50794_IG06 - ;; size=10 bbWeight=1 PerfScore 5.25 -G_M50794_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M50794_IG04
+ je SHORT G_M50794_IG08
cmp dword ptr [edi+0x04], 0 jne SHORT G_M50794_IG06
- ;; size=10 bbWeight=1 PerfScore 5.25
+ test esi, esi + je SHORT G_M50794_IG04 + ;; size=14 bbWeight=1 PerfScore 6.50 +G_M50794_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [esi+0x04], 0 + jne SHORT G_M50794_IG06 + ;; size=6 bbWeight=1 PerfScore 4.00
G_M50794_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi edi] mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] ;; size=5 bbWeight=1 PerfScore 2.00 G_M50794_IG05: ; bbWeight=1, epilog, nogc, extend
+ add esp, 4
pop ebx pop esi pop edi
+ mov esp, ebp
pop ebp ret 8
- ;; size=7 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.50
G_M50794_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] +[esi edi] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
+ ; gcr arg pop 0
mov ebx, eax ; gcrRegs +[ebx]
- push esi
push edi
+ ; gcr arg push 0 + push esi + ; gcr arg push 1
mov ecx, ebx ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:.ctor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):this] ; gcrRegs -[eax ecx esi edi]
+ ; gcr arg pop 2
mov eax, ebx ; gcrRegs +[eax] ;; size=24 bbWeight=0 PerfScore 0.00 G_M50794_IG07: ; bbWeight=0, epilog, nogc, extend
+ add esp, 4
pop ebx pop esi pop edi
+ mov esp, ebp
pop ebp ret 8
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M50794_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax ebx] +[esi edi] + test esi, esi + jne SHORT G_M50794_IG03 + jmp SHORT G_M50794_IG04 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 75, prolog size 6, PerfScore 22.75, instruction count 34, allocated bytes for code 75 (MethodHash=341e3995) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)
+; Total bytes of code 95, prolog size 10, PerfScore 24.50, instruction count 43, allocated bytes for code 95 (MethodHash=341e3995) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:Create(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations (Tier1)
; ============================================================

+19 (+38.78%) : 102243.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 85360
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 85360
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> eax ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> edx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V06 tmp1 [V06,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp1 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V07 tmp2 [V07,T01] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]> ; V08 tmp3 [V08,T06] ( 3, 3 ) byref -> eax single-def "Inline stloc first use temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V10 tmp5 [V10,T07] ( 3, 3 ) ref -> edx single-def "field V04.array (fldOffset=0x0)" P-INDEP -;* V11 rat0 [V11,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree" -;* V12 rat1 [V12,T09] ( 0, 0 ) int -> zero-ref "runtime lookup" -;* V13 rat2 [V13,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 tmp5 [V10,T07] ( 3, 3 ) ref -> ecx single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V11 rat0 [V11,T04] ( 2, 4 ) int -> eax "Spilling to split statement for tree" +;* V12 rat1 [V12,T08] ( 0, 0 ) int -> zero-ref "runtime lookup" +; V13 rat2 [V13,T02] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -43,36 +43,48 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ; byrRegs +[eax] test eax, eax je SHORT G_M43979_IG04
- mov eax, dword ptr [eax]
+ mov edx, dword ptr [eax] + mov ecx, gword ptr [esi+0x44] + ; gcrRegs +[ecx] + mov eax, dword ptr [esi]
; byrRegs -[eax]
- mov edx, gword ptr [esi+0x44] - ; gcrRegs +[edx] - cmp eax, dword ptr [edx+0x04] - jae SHORT G_M43979_IG06 - mov eax, gword ptr [edx+4*eax+0x08] - ; gcrRegs +[eax] - ;; size=29 bbWeight=1 PerfScore 19.25 -G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=1 PerfScore 2.00 -G_M43979_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax edx]
+ mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x84] + test eax, eax + jne SHORT G_M43979_IG06 + ;; size=37 bbWeight=1 PerfScore 22.50 +G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M43979_IG06 + ;; size=2 bbWeight=0.20 PerfScore 0.40 +G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
xor eax, eax ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend + pop esi + pop ebp + ret + ;; size=3 bbWeight=0.00 PerfScore 0.00 +G_M43979_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[ecx] + cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M43979_IG08 + mov eax, gword ptr [ecx+4*edx+0x08] + ; gcrRegs +[eax] + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-G_M43979_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax]
+G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax ecx]
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 49, prolog size 4, PerfScore 26.00, instruction count 23, allocated bytes for code 49 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 68, prolog size 4, PerfScore 33.40, instruction count 30, allocated bytes for code 68 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-26 (-7.74%) : 8216.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

@@ -58,11 +58,18 @@ G_M48701_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov gword ptr [ebp-0x24], eax ; GC ptr vars +{V02} ;; size=17 bbWeight=0.50 PerfScore 4.50
-G_M48701_IG04: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M48701_IG04: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp gword ptr [ebp+0x08], 0
+ je SHORT G_M48701_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M48701_IG05: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0
jne G_M48701_IG16
- ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
push gword ptr [ebp+0x08] ; gcr arg push 0 mov ecx, esi @@ -73,9 +80,16 @@ G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0 ; gcrRegs -[eax ecx edx] ; gcr arg pop 1 cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG15 - ;; size=23 bbWeight=0.50 PerfScore 3.75 -G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M48701_IG08 + ;; size=19 bbWeight=0.50 PerfScore 3.75 +G_M48701_IG07: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -83,9 +97,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG14 - ;; size=21 bbWeight=0.50 PerfScore 3.63 -G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M48701_IG10 + ;; size=17 bbWeight=0.50 PerfScore 3.63 +G_M48701_IG09: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -99,13 +120,20 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [eax+0x14]<unknown method> ; gcrRegs -[ecx] cmp eax, 7
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG14
;; size=26 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M48701_IG13
+ je SHORT G_M48701_IG13
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -113,7 +141,7 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=11 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea edi, bword ptr [esi+0x38] ; byrRegs +[edi] push gword ptr [ebp+0x08] @@ -128,13 +156,28 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax ; gcrRegs +[edx] test edi, edi
- je SHORT G_M48701_IG18
+ jne SHORT G_M48701_IG17 + ;; size=23 bbWeight=0.50 PerfScore 3.62 +G_M48701_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx esi] + ; byrRegs -[edi] + call [System.ThrowHelper:ThrowNullReferenceException()] + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M48701_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + lea ecx, [ebp+0x08] + call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M48701_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs +[edx esi] + ; byrRegs +[edi]
push 0 ; gcr arg push 0 mov ecx, edi ; byrRegs +[ecx] call <unknown method>
- ; gcrRegs -[edx]
+ ; gcrRegs -[edx] +[eax]
; byrRegs -[ecx edi] ; gcr arg pop 1 test eax, eax @@ -150,8 +193,8 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx edx] lea ecx, bword ptr [esi+0x48] ; byrRegs +[ecx]
- ;; size=52 bbWeight=0.50 PerfScore 9.75 -G_M48701_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=29 bbWeight=0.50 PerfScore 6.12 +G_M48701_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
mov eax, dword ptr [ecx] mov dword ptr [ebp-0x20], eax mov edx, eax @@ -161,54 +204,10 @@ G_M48701_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 lock cmpxchg dword ptr [ecx], edx cmp eax, dword ptr [ebp-0x20]
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG18
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ecx] - jmp SHORT G_M48701_IG19 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je SHORT G_M48701_IG09 - jmp SHORT G_M48701_IG17 - ;; size=11 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG17 - jmp G_M48701_IG07 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG17 - jmp G_M48701_IG06 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[eax] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je G_M48701_IG05 - ;; size=13 bbWeight=0.17 PerfScore 0.86 -G_M48701_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx esi] - lea ecx, [ebp+0x08] - call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] - int3 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M48701_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call [System.ThrowHelper:ThrowNullReferenceException()] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; byrRegs -[ecx]
mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -242,7 +241,7 @@ G_M48701_IG22: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=9 bbWeight=1 PerfScore 4.00
-; Total bytes of code 336, prolog size 24, PerfScore 164.08, instruction count 109, allocated bytes for code 336 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 310, prolog size 24, PerfScore 162.05, instruction count 105, allocated bytes for code 310 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================ *************** EH table for Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this

-26 (-7.74%) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

@@ -58,11 +58,18 @@ G_M48701_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov gword ptr [ebp-0x24], eax ; GC ptr vars +{V02} ;; size=17 bbWeight=0.50 PerfScore 4.50
-G_M48701_IG04: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M48701_IG04: ; bbWeight=0.50, gcVars=00000010 {V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp gword ptr [ebp+0x08], 0
+ je SHORT G_M48701_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M48701_IG05: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0
jne G_M48701_IG16
- ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ;; size=13 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
push gword ptr [ebp+0x08] ; gcr arg push 0 mov ecx, esi @@ -73,9 +80,16 @@ G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0 ; gcrRegs -[eax ecx edx] ; gcr arg pop 1 cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG15 - ;; size=23 bbWeight=0.50 PerfScore 3.75 -G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M48701_IG08 + ;; size=19 bbWeight=0.50 PerfScore 3.75 +G_M48701_IG07: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -83,9 +97,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] cmp gword ptr [ebp+0x08], 0
- jne G_M48701_IG14 - ;; size=21 bbWeight=0.50 PerfScore 3.63 -G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M48701_IG10 + ;; size=17 bbWeight=0.50 PerfScore 3.63 +G_M48701_IG09: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -99,13 +120,20 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [eax+0x14]<unknown method> ; gcrRegs -[ecx] cmp eax, 7
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG14
;; size=26 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne SHORT G_M48701_IG13
+ je SHORT G_M48701_IG13
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M48701_IG16 + ;; size=9 bbWeight=0.17 PerfScore 0.86 +G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x24] @@ -113,7 +141,7 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=11 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea edi, bword ptr [esi+0x38] ; byrRegs +[edi] push gword ptr [ebp+0x08] @@ -128,13 +156,28 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax ; gcrRegs +[edx] test edi, edi
- je SHORT G_M48701_IG18
+ jne SHORT G_M48701_IG17 + ;; size=23 bbWeight=0.50 PerfScore 3.62 +G_M48701_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx esi] + ; byrRegs -[edi] + call [System.ThrowHelper:ThrowNullReferenceException()] + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M48701_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + lea ecx, [ebp+0x08] + call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M48701_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz + ; gcrRegs +[edx esi] + ; byrRegs +[edi]
push 0 ; gcr arg push 0 mov ecx, edi ; byrRegs +[ecx] call <unknown method>
- ; gcrRegs -[edx]
+ ; gcrRegs -[edx] +[eax]
; byrRegs -[ecx edi] ; gcr arg pop 1 test eax, eax @@ -150,8 +193,8 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx edx] lea ecx, bword ptr [esi+0x48] ; byrRegs +[ecx]
- ;; size=52 bbWeight=0.50 PerfScore 9.75 -G_M48701_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=29 bbWeight=0.50 PerfScore 6.12 +G_M48701_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
mov eax, dword ptr [ecx] mov dword ptr [ebp-0x20], eax mov edx, eax @@ -161,54 +204,10 @@ G_M48701_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000002 lock cmpxchg dword ptr [ecx], edx cmp eax, dword ptr [ebp-0x20]
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG18
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ecx] - jmp SHORT G_M48701_IG19 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je SHORT G_M48701_IG09 - jmp SHORT G_M48701_IG17 - ;; size=11 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG17 - jmp G_M48701_IG07 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M48701_IG17 - jmp G_M48701_IG06 - ;; size=14 bbWeight=0.17 PerfScore 1.20 -G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[eax] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je G_M48701_IG05 - ;; size=13 bbWeight=0.17 PerfScore 0.86 -G_M48701_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx esi] - lea ecx, [ebp+0x08] - call [System.Threading.CancellationToken:ThrowOperationCanceledException():this] - int3 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M48701_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call [System.ThrowHelper:ThrowNullReferenceException()] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; byrRegs -[ecx]
mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -242,7 +241,7 @@ G_M48701_IG22: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=9 bbWeight=1 PerfScore 4.00
-; Total bytes of code 336, prolog size 24, PerfScore 164.08, instruction count 109, allocated bytes for code 336 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 310, prolog size 24, PerfScore 162.05, instruction count 105, allocated bytes for code 310 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================ *************** EH table for Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this

-20 (-7.30%) : 42661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 10, 26 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase> ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.SourceLocation> ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V03 arg3 [V03 ] ( 5, 8.71) struct ( 4) [ebp+0x08] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
+; V03 arg3 [V03 ] ( 4, 12.69) struct ( 4) [ebp+0x08] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
; V04 loc0 [V04,T00] ( 10,102 ) int -> edi ;* V05 tmp0 [V05 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> @@ -22,25 +22,25 @@ ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp9 [V14,T03] ( 3, 68 ) byref -> ecx "Inlining Arg"
+; V14 tmp9 [V14,T03] ( 3, 68 ) byref -> ebx "Inlining Arg"
; V15 tmp10 [V15,T02] ( 5, 80 ) int -> [ebp-0x10] spill-single-def "Inline stloc first use temp"
-; V16 tmp11 [V16,T05] ( 3, 48 ) int -> edx "Inline stloc first use temp"
+; V16 tmp11 [V16,T05] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V17 tmp12 [V17,T01] ( 4, 88 ) byref -> ebx "Inlining Arg" ; V18 tmp13 [V18 ] ( 3, 40 ) struct ( 4) [ebp-0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait> ; V19 tmp14 [V19 ] ( 4, 77.49) struct ( 4) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-;* V20 tmp15 [V20,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V20 tmp15 [V20,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V21 tmp16 [V21,T07] ( 2, 10.97) ref -> ecx class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V22 tmp17 [V22 ] ( 5, 8.71) ref -> [ebp+0x08] do-not-enreg[X] addr-exposed single-def "field V03._source (fldOffset=0x0)" P-DEP
+; V22 tmp17 [V22 ] ( 4, 12.69) ref -> [ebp+0x08] do-not-enreg[X] addr-exposed single-def "field V03._source (fldOffset=0x0)" P-DEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP ;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP ; V25 tmp20 [V25 ] ( 3, 40 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V18._count (fldOffset=0x0)" P-DEP ; V26 tmp21 [V26 ] ( 4, 38.74) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V19._source (fldOffset=0x0)" P-DEP
-; V27 tmp22 [V27,T09] ( 2, 4 ) ref -> eax "Field obj" -; V28 cse0 [V28,T10] ( 3, 6 ) int -> ebx "CSE - moderate"
+; V27 tmp22 [V27,T08] ( 2, 4 ) ref -> eax "Field obj" +; V28 cse0 [V28,T09] ( 3, 6 ) int -> ebx "CSE - moderate"
; ; Lcl frame size = 12
-G_M17922_IG01: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M17922_IG01: ; bbWeight=8.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -52,12 +52,19 @@ G_M17922_IG01: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 mov dword ptr [ebp-0x18], eax mov esi, ecx ; gcrRegs +[esi]
- ;; size=19 bbWeight=0.02 PerfScore 0.14 -G_M17922_IG02: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=19 bbWeight=8.00 PerfScore 56.00 +G_M17922_IG02: ; bbWeight=8.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [ebp+0x08], 0
- jne G_M17922_IG14 - ;; size=10 bbWeight=0.02 PerfScore 0.06 -G_M17922_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M17922_IG04 + ;; size=6 bbWeight=8.00 PerfScore 24.00 +G_M17922_IG03: ; bbWeight=0.69, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne G_M17922_IG17 + ;; size=13 bbWeight=0.69 PerfScore 3.43 +G_M17922_IG04: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx]
mov ecx, dword ptr [esi+0x28] mov eax, 0x3FFFF andn ecx, ecx, eax @@ -65,16 +72,74 @@ G_M17922_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 andn edi, eax, ecx je G_M17922_IG15 ;; size=27 bbWeight=8 PerfScore 38.00
-G_M17922_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M17922_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, 1
- je SHORT G_M17922_IG06
+ je SHORT G_M17922_IG13
;; size=5 bbWeight=4 PerfScore 5.00
-G_M17922_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 0x800 - je SHORT G_M17922_IG07 - jmp SHORT G_M17922_IG08 - ;; size=10 bbWeight=2 PerfScore 6.50
G_M17922_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ cmp edi, 0x800 + je SHORT G_M17922_IG14 + lea ebx, bword ptr [esi+0x28] + ; byrRegs +[ebx] + ;; size=11 bbWeight=2 PerfScore 3.50 +G_M17922_IG07: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + mov eax, dword ptr [ebx] + mov dword ptr [ebp-0x10], eax + mov ecx, eax + or ecx, 0x3F7FE + cmp ecx, eax + je SHORT G_M17922_IG08 + lock + cmpxchg dword ptr [ebx], ecx + cmp eax, dword ptr [ebp-0x10] + jne SHORT G_M17922_IG07 + ;; size=26 bbWeight=16 PerfScore 412.00 +G_M17922_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; byrRegs -[ebx] + lea ebx, bword ptr [esi+0x28] + ; byrRegs +[ebx] + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x18], ecx + xor ecx, ecx + ; gcrRegs -[ecx] + mov dword ptr [ebp-0x14], ecx + mov ecx, edi + and ecx, dword ptr [ebx] + cmp ecx, edi + je SHORT G_M17922_IG02 + xor ecx, ecx + mov dword ptr [ebp-0x14], ecx + mov ecx, edi + and ecx, dword ptr [ebx] + cmp ecx, edi + je SHORT G_M17922_IG02 + ;; size=35 bbWeight=4 PerfScore 56.00 +G_M17922_IG09: ; bbWeight=32.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + cmp gword ptr [ebp-0x18], 0 + je SHORT G_M17922_IG11 + ;; size=6 bbWeight=32.00 PerfScore 96.00 +G_M17922_IG10: ; bbWeight=2.74, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + mov ecx, gword ptr [ebp-0x18] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x10], 0 + jne SHORT G_M17922_IG16 + ;; size=9 bbWeight=2.74 PerfScore 13.71 +G_M17922_IG11: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + ; gcrRegs -[ecx] + lea ecx, [ebp-0x14] + mov edx, 20 + call [<unknown method>] + mov ecx, edi + and ecx, dword ptr [ebx] + cmp ecx, edi + jne SHORT G_M17922_IG09 + ;; size=22 bbWeight=32 PerfScore 264.00 +G_M17922_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; byrRegs -[ebx] + jmp G_M17922_IG02 + ;; size=5 bbWeight=4 PerfScore 8.00 +G_M17922_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi] @@ -82,9 +147,9 @@ G_M17922_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [eax+0x10]<unknown method> ; gcrRegs -[ecx] +[eax] cmp byte ptr [eax], al
- jmp SHORT G_M17922_IG10
+ jmp SHORT G_M17922_IG08
;; size=17 bbWeight=2 PerfScore 24.50
-G_M17922_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M17922_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, esi ; gcrRegs +[ecx] @@ -98,73 +163,10 @@ G_M17922_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [ebx+0x10]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- jmp SHORT G_M17922_IG10
+ jmp SHORT G_M17922_IG08
;; size=23 bbWeight=2 PerfScore 29.00
-G_M17922_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - lea ecx, bword ptr [esi+0x28] - ; byrRegs +[ecx] - ;; size=3 bbWeight=2 PerfScore 1.00 -G_M17922_IG09: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - mov eax, dword ptr [ecx] - mov dword ptr [ebp-0x10], eax - mov edx, eax - or edx, 0x3F7FE - cmp edx, eax - je SHORT G_M17922_IG10 - lock - cmpxchg dword ptr [ecx], edx - cmp eax, dword ptr [ebp-0x10] - jne SHORT G_M17922_IG09 - ;; size=26 bbWeight=16 PerfScore 412.00 -G_M17922_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - lea ebx, bword ptr [esi+0x28] - ; byrRegs +[ebx] - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x18], ecx - xor ecx, ecx - ; gcrRegs -[ecx] - mov dword ptr [ebp-0x14], ecx - mov ecx, edi - and ecx, dword ptr [ebx] - cmp ecx, edi - je G_M17922_IG02 - xor ecx, ecx - mov dword ptr [ebp-0x14], ecx - mov ecx, edi - and ecx, dword ptr [ebx] - cmp ecx, edi - je G_M17922_IG02 - ;; size=43 bbWeight=4 PerfScore 56.00 -G_M17922_IG11: ; bbWeight=32.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz - cmp gword ptr [ebp-0x18], 0 - jne SHORT G_M17922_IG16 - ;; size=6 bbWeight=32.00 PerfScore 96.00 -G_M17922_IG12: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz - lea ecx, [ebp-0x14] - mov edx, 20 - call [<unknown method>] - mov ecx, edi - and ecx, dword ptr [ebx] - cmp ecx, edi - jne SHORT G_M17922_IG11 - ;; size=22 bbWeight=32 PerfScore 264.00 -G_M17922_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ebx] - cmp gword ptr [ebp+0x08], 0 - je G_M17922_IG03 - ;; size=10 bbWeight=4 PerfScore 12.00 -G_M17922_IG14: ; bbWeight=0.69, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp+0x08] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - jne SHORT G_M17922_IG18 - jmp G_M17922_IG03 - ;; size=14 bbWeight=0.69 PerfScore 4.80
G_M17922_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; gcrRegs -[ecx esi]
+ ; gcrRegs -[eax esi]
lea esp, [ebp-0x0C] pop ebx pop esi @@ -172,27 +174,17 @@ G_M17922_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M17922_IG16: ; bbWeight=2.74, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ebx] - mov ecx, gword ptr [ebp-0x18] - ; gcrRegs +[ecx] - cmp dword ptr [ecx+0x10], 0 - je SHORT G_M17922_IG12 - ;; size=9 bbWeight=2.74 PerfScore 13.71 -G_M17922_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
...

+42 (+10.00%) : 148946.dasm - System.IO.Tests.DirectoryMove:SameDirectoryWithDifferentCasingWithDirectoryContent():this (FullOpts)

@@ -13,11 +13,11 @@ ; V02 loc1 [V02,T08] ( 3, 3 ) ref -> edi class-hnd exact single-def <System.String> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String[]> ; V04 tmp0 [V04,T00] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String>
-; V05 tmp1 [V05,T21] ( 3, 1.95) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
+; V05 tmp1 [V05,T21] ( 3, 1.48) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp5 [V09,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp5 [V09,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -32,11 +32,11 @@ ;* V21 tmp17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V23 tmp19 [V23,T01] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String>
-; V24 tmp20 [V24,T22] ( 3, 1.95) ref -> edi class-hnd "Inline return value spill temp" <System.String>
+; V24 tmp20 [V24,T22] ( 3, 1.48) ref -> edi class-hnd "Inline return value spill temp" <System.String>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V26 tmp22 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V27 tmp23 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V28 tmp24 [V28,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V28 tmp24 [V28,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp27 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -50,11 +50,11 @@ ;* V39 tmp35 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V40 tmp36 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V42 tmp38 [V42,T23] ( 3, 1.95) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
+; V42 tmp38 [V42,T23] ( 3, 1.48) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp40 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp41 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V46 tmp42 [V46,T46] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp42 [V46,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V48 tmp44 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V49 tmp45 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -76,8 +76,8 @@ ;* V65 tmp61 [V65 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V66 tmp62 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp63 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V68 tmp64 [V68,T07] ( 2, 4 ) int -> ebx "Inlining Arg" -; V69 tmp65 [V69,T06] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
+; V68 tmp64 [V68,T07] ( 2, 4 ) int -> edi "Inlining Arg" +; V69 tmp65 [V69,T06] ( 2, 4 ) byref -> esi single-def "Inlining Arg"
;* V70 tmp66 [V70 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V71 tmp67 [V71 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ; V72 tmp68 [V72,T29] ( 2, 0.89) byref -> eax "field V07._reference (fldOffset=0x0)" P-INDEP @@ -87,7 +87,7 @@ ;* V76 tmp72 [V76 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp73 [V77 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ; V78 tmp74 [V78,T26] ( 2, 0.98) byref -> eax single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V79 tmp75 [V79,T47] ( 0, 0 ) int -> zero-ref single-def "field V12._length (fldOffset=0x4)" P-INDEP
+;* V79 tmp75 [V79,T44] ( 0, 0 ) int -> zero-ref single-def "field V12._length (fldOffset=0x4)" P-INDEP
; V80 tmp76 [V80,T30] ( 2, 0.89) byref -> eax single-def "field V14._reference (fldOffset=0x0)" P-INDEP ; V81 tmp77 [V81,T39] ( 2, 0.89) int -> edx single-def "field V14._length (fldOffset=0x4)" P-INDEP ;* V82 tmp78 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP @@ -95,7 +95,7 @@ ;* V84 tmp80 [V84 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V85 tmp81 [V85 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP ; V86 tmp82 [V86,T31] ( 2, 0.89) byref -> ecx single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-;* V87 tmp83 [V87,T50] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
+;* V87 tmp83 [V87,T47] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
;* V88 tmp84 [V88 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ; V90 tmp86 [V90,T32] ( 2, 0.89) byref -> eax "field V26._reference (fldOffset=0x0)" P-INDEP @@ -105,7 +105,7 @@ ;* V94 tmp90 [V94 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp91 [V95 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP ; V96 tmp92 [V96,T27] ( 2, 0.98) byref -> eax single-def "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V97 tmp93 [V97,T48] ( 0, 0 ) int -> zero-ref single-def "field V31._length (fldOffset=0x4)" P-INDEP
+;* V97 tmp93 [V97,T45] ( 0, 0 ) int -> zero-ref single-def "field V31._length (fldOffset=0x4)" P-INDEP
; V98 tmp94 [V98,T33] ( 2, 0.89) byref -> eax single-def "field V33._reference (fldOffset=0x0)" P-INDEP ; V99 tmp95 [V99,T41] ( 2, 0.89) int -> edx single-def "field V33._length (fldOffset=0x4)" P-INDEP ;* V100 tmp96 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP @@ -113,7 +113,7 @@ ;* V102 tmp98 [V102 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp99 [V103 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP ; V104 tmp100 [V104,T34] ( 2, 0.89) byref -> ecx single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V105 tmp101 [V105,T51] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x4)" P-INDEP
+;* V105 tmp101 [V105,T48] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x4)" P-INDEP
;* V106 tmp102 [V106 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V107 tmp103 [V107 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP ; V108 tmp104 [V108,T35] ( 2, 0.89) byref -> eax "field V44._reference (fldOffset=0x0)" P-INDEP @@ -123,7 +123,7 @@ ;* V112 tmp108 [V112 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp109 [V113 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x4)" P-INDEP ; V114 tmp110 [V114,T28] ( 2, 0.98) byref -> eax single-def "field V49._reference (fldOffset=0x0)" P-INDEP
-;* V115 tmp111 [V115,T49] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x4)" P-INDEP
+;* V115 tmp111 [V115,T46] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x4)" P-INDEP
; V116 tmp112 [V116,T36] ( 2, 0.89) byref -> eax single-def "field V51._reference (fldOffset=0x0)" P-INDEP ; V117 tmp113 [V117,T43] ( 2, 0.89) int -> edx single-def "field V51._length (fldOffset=0x4)" P-INDEP ;* V118 tmp114 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP @@ -131,17 +131,17 @@ ;* V120 tmp116 [V120 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP ;* V121 tmp117 [V121 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x4)" P-INDEP ; V122 tmp118 [V122,T37] ( 2, 0.89) byref -> ecx single-def "field V58._reference (fldOffset=0x0)" P-INDEP
-;* V123 tmp119 [V123,T52] ( 0, 0 ) int -> zero-ref single-def "field V58._length (fldOffset=0x4)" P-INDEP -; V124 tmp120 [V124,T09] ( 2, 2 ) byref -> esi single-def "field V61._reference (fldOffset=0x0)" P-INDEP
+;* V123 tmp119 [V123,T49] ( 0, 0 ) int -> zero-ref single-def "field V58._length (fldOffset=0x4)" P-INDEP +; V124 tmp120 [V124,T09] ( 2, 2 ) byref -> ebx single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp121 [V125,T24] ( 0, 0 ) int -> zero-ref single-def "field V61._length (fldOffset=0x4)" P-INDEP ;* V126 tmp122 [V126 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V127 tmp123 [V127 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x4)" P-INDEP
-; V128 tmp124 [V128,T10] ( 2, 2 ) byref -> esi single-def "field V63._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp124 [V128,T10] ( 2, 2 ) byref -> ebx single-def "field V63._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp125 [V129,T25] ( 0, 0 ) int -> zero-ref single-def "field V63._length (fldOffset=0x4)" P-INDEP
-; V130 tmp126 [V130,T11] ( 2, 2 ) byref -> edi single-def "field V65._reference (fldOffset=0x0)" P-INDEP -; V131 tmp127 [V131,T13] ( 2, 2 ) int -> ebx single-def "field V65._length (fldOffset=0x4)" P-INDEP -; V132 tmp128 [V132,T12] ( 2, 2 ) byref -> edi single-def "field V66._reference (fldOffset=0x0)" P-INDEP -; V133 tmp129 [V133,T14] ( 2, 2 ) int -> ebx single-def "field V66._length (fldOffset=0x4)" P-INDEP
+; V130 tmp126 [V130,T11] ( 2, 2 ) byref -> esi single-def "field V65._reference (fldOffset=0x0)" P-INDEP +; V131 tmp127 [V131,T13] ( 2, 2 ) int -> edi single-def "field V65._length (fldOffset=0x4)" P-INDEP +; V132 tmp128 [V132,T12] ( 2, 2 ) byref -> esi single-def "field V66._reference (fldOffset=0x0)" P-INDEP +; V133 tmp129 [V133,T14] ( 2, 2 ) int -> edi single-def "field V66._length (fldOffset=0x4)" P-INDEP
;* V134 tmp130 [V134 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp131 [V135 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP ; V136 tmp132 [V136,T05] ( 3, 6 ) ref -> eax single-def "arr expr" @@ -158,7 +158,7 @@ G_M34154_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, ecx ; gcrRegs +[esi] ;; size=8 bbWeight=1 PerfScore 4.50
-G_M34154_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M34154_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [esi+0x08] ; gcrRegs +[edi] mov ecx, edi @@ -174,13 +174,13 @@ G_M34154_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[ecx edx] test edi, edi
- je SHORT G_M34154_IG05 - ;; size=36 bbWeight=1 PerfScore 10.25 -G_M34154_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG16 + ;; size=40 bbWeight=1 PerfScore 10.25 +G_M34154_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi+0x04], 0
- je SHORT G_M34154_IG05 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M34154_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG16 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M34154_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -188,16 +188,9 @@ G_M34154_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] ; byrRegs -[eax] test eax, eax
- je SHORT G_M34154_IG06 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M34154_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ebx, 0xD1FFAB1E - ; gcrRegs +[ebx] - jmp SHORT G_M34154_IG07 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M34154_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] +[edi]
+ jne G_M34154_IG16 + ;; size=22 bbWeight=0.49 PerfScore 3.18 +G_M34154_IG05: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+0x08] ; byrRegs +[eax] mov edx, dword ptr [edi+0x04] @@ -213,7 +206,7 @@ G_M34154_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov ebx, eax ; gcrRegs +[ebx] ;; size=24 bbWeight=0.45 PerfScore 4.47
-G_M34154_IG07: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M34154_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov edi, gword ptr [esi+0x08] ; gcrRegs +[edi] @@ -230,13 +223,13 @@ G_M34154_IG07: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[ecx edx] test edi, edi
- je SHORT G_M34154_IG10 - ;; size=36 bbWeight=1 PerfScore 10.25 -G_M34154_IG08: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG17 + ;; size=40 bbWeight=1 PerfScore 10.25 +G_M34154_IG07: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi+0x04], 0
- je SHORT G_M34154_IG10 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M34154_IG09: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG17 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M34154_IG08: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -244,15 +237,9 @@ G_M34154_IG09: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRe call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] ; byrRegs -[eax] test eax, eax
- je SHORT G_M34154_IG11 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M34154_IG10: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov edi, 0xD1FFAB1E - ; gcrRegs +[edi] - jmp SHORT G_M34154_IG12 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M34154_IG11: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ jne G_M34154_IG17 + ;; size=22 bbWeight=0.49 PerfScore 3.18 +G_M34154_IG09: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+0x08] ; byrRegs +[eax] mov edx, dword ptr [edi+0x04] @@ -268,7 +255,7 @@ G_M34154_IG11: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRe mov edi, eax ; gcrRegs +[edi] ;; size=24 bbWeight=0.45 PerfScore 4.47
-G_M34154_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M34154_IG10: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov ecx, ebx ; gcrRegs +[ecx] @@ -287,13 +274,13 @@ G_M34154_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= call [<unknown method>] ; gcrRegs -[ecx edx] test ebx, ebx
- je SHORT G_M34154_IG15 - ;; size=41 bbWeight=1 PerfScore 11.50 -G_M34154_IG13: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG18 + ;; size=45 bbWeight=1 PerfScore 11.50 +G_M34154_IG11: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebx+0x04], 0
- je SHORT G_M34154_IG15 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M34154_IG14: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M34154_IG18 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M34154_IG12: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -301,15 +288,9 @@ G_M34154_IG14: ; bbWeight=0.49, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ...

+47 (+10.49%) : 148900.dasm - System.IO.Tests.DirectoryMove:DirectoryWithDifferentCasingThanFileSystemToItself():this (FullOpts)

@@ -11,11 +11,11 @@ ; V00 this [V00,T00] ( 8, 8 ) ref -> esi this class-hnd single-def <System.IO.Tests.Directory_Move> ; V01 tmp0 [V01,T05] ( 2, 4 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String> ; V02 tmp1 [V02,T01] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String>
-; V03 tmp2 [V03,T15] ( 3, 1.95) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T15] ( 3, 1.48) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp6 [V07,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp6 [V07,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -29,12 +29,12 @@ ;* V18 tmp17 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp20 [V21,T02] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String> -; V22 tmp21 [V22,T16] ( 3, 1.95) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
+; V21 tmp20 [V21,T02] ( 6, 8.71) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.String> +; V22 tmp21 [V22,T16] ( 3, 1.48) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
;* V23 tmp22 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp23 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V26 tmp25 [V26,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V26 tmp25 [V26,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp26 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V28 tmp27 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp28 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -49,11 +49,11 @@ ;* V38 tmp37 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp38 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V40 tmp39 [V40,T03] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String>
-; V41 tmp40 [V41,T17] ( 3, 1.95) ref -> eax class-hnd "Inline return value spill temp" <System.String>
+; V41 tmp40 [V41,T17] ( 3, 1.48) ref -> edi class-hnd "Inline return value spill temp" <System.String>
;* V42 tmp41 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp43 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V45 tmp44 [V45,T46] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V45 tmp44 [V45,T54] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V46 tmp45 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V47 tmp46 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V48 tmp47 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -68,11 +68,11 @@ ;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp57 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V59 tmp58 [V59,T04] ( 6, 8.71) ref -> esi class-hnd exact single-def "Inlining Arg" <System.String>
-; V60 tmp59 [V60,T18] ( 3, 1.95) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
+; V60 tmp59 [V60,T18] ( 3, 1.48) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
;* V61 tmp60 [V61 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V62 tmp61 [V62 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V63 tmp62 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V64 tmp63 [V64,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V64 tmp63 [V64,T55] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V65 tmp64 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp66 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -96,7 +96,7 @@ ;* V85 tmp84 [V85 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp85 [V86 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP ; V87 tmp86 [V87,T20] ( 2, 0.98) byref -> eax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp87 [V88,T48] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
+;* V88 tmp87 [V88,T44] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
; V89 tmp88 [V89,T25] ( 2, 0.89) byref -> eax single-def "field V12._reference (fldOffset=0x0)" P-INDEP ; V90 tmp89 [V90,T37] ( 2, 0.89) int -> edx single-def "field V12._length (fldOffset=0x4)" P-INDEP ;* V91 tmp90 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP @@ -104,7 +104,7 @@ ;* V93 tmp92 [V93 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V94 tmp93 [V94 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ; V95 tmp94 [V95,T26] ( 2, 0.89) byref -> ecx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp95 [V96,T52] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x4)" P-INDEP
+;* V96 tmp95 [V96,T48] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x4)" P-INDEP
;* V97 tmp96 [V97 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP ; V99 tmp98 [V99,T27] ( 2, 0.89) byref -> eax "field V24._reference (fldOffset=0x0)" P-INDEP @@ -114,7 +114,7 @@ ;* V103 tmp102 [V103 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP ; V105 tmp104 [V105,T21] ( 2, 0.98) byref -> eax single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-;* V106 tmp105 [V106,T49] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP
+;* V106 tmp105 [V106,T45] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP
; V107 tmp106 [V107,T28] ( 2, 0.89) byref -> eax single-def "field V31._reference (fldOffset=0x0)" P-INDEP ; V108 tmp107 [V108,T39] ( 2, 0.89) int -> edx single-def "field V31._length (fldOffset=0x4)" P-INDEP ;* V109 tmp108 [V109 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP @@ -122,7 +122,7 @@ ;* V111 tmp110 [V111 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP ; V113 tmp112 [V113,T29] ( 2, 0.89) byref -> ecx single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp113 [V114,T53] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
+;* V114 tmp113 [V114,T49] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
;* V115 tmp114 [V115 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V116 tmp115 [V116 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP ; V117 tmp116 [V117,T30] ( 2, 0.89) byref -> eax "field V43._reference (fldOffset=0x0)" P-INDEP @@ -132,7 +132,7 @@ ;* V121 tmp120 [V121 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V122 tmp121 [V122 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP ; V123 tmp122 [V123,T22] ( 2, 0.98) byref -> eax single-def "field V48._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp123 [V124,T50] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP
+;* V124 tmp123 [V124,T46] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP
; V125 tmp124 [V125,T31] ( 2, 0.89) byref -> eax single-def "field V50._reference (fldOffset=0x0)" P-INDEP ; V126 tmp125 [V126,T41] ( 2, 0.89) int -> edx single-def "field V50._length (fldOffset=0x4)" P-INDEP ;* V127 tmp126 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP @@ -140,7 +140,7 @@ ;* V129 tmp128 [V129 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V130 tmp129 [V130 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP ; V131 tmp130 [V131,T32] ( 2, 0.89) byref -> ecx single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V132 tmp131 [V132,T54] ( 0, 0 ) int -> zero-ref single-def "field V57._length (fldOffset=0x4)" P-INDEP
+;* V132 tmp131 [V132,T50] ( 0, 0 ) int -> zero-ref single-def "field V57._length (fldOffset=0x4)" P-INDEP
;* V133 tmp132 [V133 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP ;* V134 tmp133 [V134 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP ; V135 tmp134 [V135,T33] ( 2, 0.89) byref -> edi "field V62._reference (fldOffset=0x0)" P-INDEP @@ -150,7 +150,7 @@ ;* V139 tmp138 [V139 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP ; V141 tmp140 [V141,T23] ( 2, 0.98) byref -> eax single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-;* V142 tmp141 [V142,T51] ( 0, 0 ) int -> zero-ref single-def "field V67._length (fldOffset=0x4)" P-INDEP
+;* V142 tmp141 [V142,T47] ( 0, 0 ) int -> zero-ref single-def "field V67._length (fldOffset=0x4)" P-INDEP
; V143 tmp142 [V143,T34] ( 2, 0.89) byref -> edi single-def "field V69._reference (fldOffset=0x0)" P-INDEP ; V144 tmp143 [V144,T43] ( 2, 0.89) int -> esi single-def "field V69._length (fldOffset=0x4)" P-INDEP ;* V145 tmp144 [V145 ] ( 0, 0 ) byref -> zero-ref single-def "field V70._reference (fldOffset=0x0)" P-INDEP @@ -158,7 +158,7 @@ ;* V147 tmp146 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP ;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x4)" P-INDEP ; V149 tmp148 [V149,T35] ( 2, 0.89) byref -> eax single-def "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V150 tmp149 [V150,T55] ( 0, 0 ) int -> zero-ref single-def "field V74._length (fldOffset=0x4)" P-INDEP
+;* V150 tmp149 [V150,T51] ( 0, 0 ) int -> zero-ref single-def "field V74._length (fldOffset=0x4)" P-INDEP
;* V151 tmp150 [V151,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP ; V152 tmp151 [V152,T06] ( 2, 2 ) ubyte -> eax single-def "field V77.value (fldOffset=0x1)" P-INDEP ;* V153 tmp152 [V153 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V78.hasValue (fldOffset=0x0)" P-INDEP @@ -175,7 +175,7 @@ G_M29816_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, ecx ; gcrRegs +[esi] ;; size=8 bbWeight=1 PerfScore 4.50
-G_M29816_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M29816_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [esi+0x08] ; gcrRegs +[edi] mov ecx, edi @@ -191,13 +191,13 @@ G_M29816_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[ecx edx] test edi, edi
- je SHORT G_M29816_IG05 - ;; size=36 bbWeight=1 PerfScore 10.25 -G_M29816_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M29816_IG20 + ;; size=40 bbWeight=1 PerfScore 10.25 +G_M29816_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi+0x04], 0
- je SHORT G_M29816_IG05 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M29816_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M29816_IG20 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M29816_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -205,16 +205,9 @@ G_M29816_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] ; byrRegs -[eax] test eax, eax
- je SHORT G_M29816_IG06 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M29816_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp SHORT G_M29816_IG07 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M29816_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[edi]
+ jne G_M29816_IG20 + ;; size=22 bbWeight=0.49 PerfScore 3.18 +G_M29816_IG05: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+0x08] ; byrRegs +[eax] mov edx, dword ptr [edi+0x04] @@ -230,13 +223,13 @@ G_M29816_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov ecx, eax ; gcrRegs +[ecx] ;; size=24 bbWeight=0.45 PerfScore 4.47
-G_M29816_IG07: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29816_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] call [System.IO.Directory:CreateDirectory(System.String):System.IO.DirectoryInfo] ; gcrRegs -[ecx] +[eax]
- mov edi, gword ptr [esi+0x08] - ; gcrRegs +[edi] - mov ecx, edi
+ mov ebx, gword ptr [esi+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] @@ -248,14 +241,14 @@ G_M29816_IG07: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- test edi, edi - je SHORT G_M29816_IG10 - ;; size=42 bbWeight=1 PerfScore 13.25 -G_M29816_IG08: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [edi+0x04], 0 - je SHORT G_M29816_IG10 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M29816_IG09: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx + je G_M29816_IG21 + ;; size=46 bbWeight=1 PerfScore 13.25 +G_M29816_IG07: ; bbWeight=0.46, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + cmp dword ptr [ebx+0x04], 0 + je G_M29816_IG21 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M29816_IG08: ; bbWeight=0.49, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -263,19 +256,12 @@ G_M29816_IG09: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] ; byrRegs -[eax] test eax, eax
- je SHORT G_M29816_IG11 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M29816_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ebx, 0xD1FFAB1E - ; gcrRegs +[ebx] - jmp SHORT G_M29816_IG12 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M29816_IG11: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] +[edi] - lea eax, bword ptr [edi+0x08]
+ jne G_M29816_IG21 + ;; size=22 bbWeight=0.49 PerfScore 3.18 +G_M29816_IG09: ; bbWeight=0.45, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + lea eax, bword ptr [ebx+0x08]
; byrRegs +[eax]
- mov edx, dword ptr [edi+0x04]
+ mov edx, dword ptr [ebx+0x04]
mov ecx, 0xD1FFAB1E ; byrRegs +[ecx] push edx @@ -283,12 +269,12 @@ G_M29816_IG11: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 push 3 push ecx call [<unknown method>]
- ; gcrRegs -[edi] +[eax]
...

+42 (+11.14%) : 148891.dasm - System.IO.Tests.DirectoryMove:DirectoryWithDifferentCasingThanFileSystemToAnotherDirectory():this (FullOpts)

@@ -11,11 +11,11 @@ ; V00 this [V00,T00] ( 8, 8 ) ref -> esi this class-hnd single-def <System.IO.Tests.Directory_Move> ;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.String> ; V02 tmp1 [V02,T01] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String>
-; V03 tmp2 [V03,T11] ( 3, 1.95) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T11] ( 3, 1.48) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp6 [V07,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp6 [V07,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -29,12 +29,12 @@ ;* V18 tmp17 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp20 [V21,T02] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String> -; V22 tmp21 [V22,T12] ( 3, 1.95) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
+; V21 tmp20 [V21,T02] ( 6, 8.71) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.String> +; V22 tmp21 [V22,T12] ( 3, 1.48) ref -> ecx class-hnd "Inline return value spill temp" <System.String>
;* V23 tmp22 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp23 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V26 tmp25 [V26,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V26 tmp25 [V26,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp26 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V28 tmp27 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp28 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -48,12 +48,12 @@ ;* V37 tmp36 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V38 tmp37 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp38 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V40 tmp39 [V40,T03] ( 6, 8.71) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String> -; V41 tmp40 [V41,T13] ( 3, 1.95) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
+; V40 tmp39 [V40,T03] ( 6, 8.71) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.String> +; V41 tmp40 [V41,T13] ( 3, 1.48) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
;* V42 tmp41 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp43 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V45 tmp44 [V45,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V45 tmp44 [V45,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V46 tmp45 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V47 tmp46 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V48 tmp47 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -77,7 +77,7 @@ ;* V66 tmp65 [V66 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp66 [V67 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP ; V68 tmp67 [V68,T14] ( 2, 0.98) byref -> eax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V69 tmp68 [V69,T35] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
+;* V69 tmp68 [V69,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
; V70 tmp69 [V70,T18] ( 2, 0.89) byref -> eax single-def "field V12._reference (fldOffset=0x0)" P-INDEP ; V71 tmp70 [V71,T27] ( 2, 0.89) int -> edx single-def "field V12._length (fldOffset=0x4)" P-INDEP ;* V72 tmp71 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP @@ -85,7 +85,7 @@ ;* V74 tmp73 [V74 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V75 tmp74 [V75 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ; V76 tmp75 [V76,T19] ( 2, 0.89) byref -> ecx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V77 tmp76 [V77,T38] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x4)" P-INDEP
+;* V77 tmp76 [V77,T35] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x4)" P-INDEP
;* V78 tmp77 [V78 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V79 tmp78 [V79 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP ; V80 tmp79 [V80,T20] ( 2, 0.89) byref -> eax "field V24._reference (fldOffset=0x0)" P-INDEP @@ -95,7 +95,7 @@ ;* V84 tmp83 [V84 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V85 tmp84 [V85 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP ; V86 tmp85 [V86,T15] ( 2, 0.98) byref -> eax single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-;* V87 tmp86 [V87,T36] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP
+;* V87 tmp86 [V87,T33] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP
; V88 tmp87 [V88,T21] ( 2, 0.89) byref -> eax single-def "field V31._reference (fldOffset=0x0)" P-INDEP ; V89 tmp88 [V89,T29] ( 2, 0.89) int -> edx single-def "field V31._length (fldOffset=0x4)" P-INDEP ;* V90 tmp89 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP @@ -103,7 +103,7 @@ ;* V92 tmp91 [V92 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp92 [V93 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP ; V94 tmp93 [V94,T22] ( 2, 0.89) byref -> ecx single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V95 tmp94 [V95,T39] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
+;* V95 tmp94 [V95,T36] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
;* V96 tmp95 [V96 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V97 tmp96 [V97 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP ; V98 tmp97 [V98,T23] ( 2, 0.89) byref -> eax "field V43._reference (fldOffset=0x0)" P-INDEP @@ -113,7 +113,7 @@ ;* V102 tmp101 [V102 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP ; V104 tmp103 [V104,T16] ( 2, 0.98) byref -> eax single-def "field V48._reference (fldOffset=0x0)" P-INDEP
-;* V105 tmp104 [V105,T37] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP
+;* V105 tmp104 [V105,T34] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP
; V106 tmp105 [V106,T24] ( 2, 0.89) byref -> eax single-def "field V50._reference (fldOffset=0x0)" P-INDEP ; V107 tmp106 [V107,T31] ( 2, 0.89) int -> edx single-def "field V50._length (fldOffset=0x4)" P-INDEP ;* V108 tmp107 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP @@ -121,7 +121,7 @@ ;* V110 tmp109 [V110 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V111 tmp110 [V111 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP ; V112 tmp111 [V112,T25] ( 2, 0.89) byref -> ecx single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp112 [V113,T40] ( 0, 0 ) int -> zero-ref single-def "field V57._length (fldOffset=0x4)" P-INDEP
+;* V113 tmp112 [V113,T37] ( 0, 0 ) int -> zero-ref single-def "field V57._length (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 @@ -134,7 +134,7 @@ G_M49595_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, ecx ; gcrRegs +[esi] ;; size=8 bbWeight=1 PerfScore 4.50
-G_M49595_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M49595_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [esi+0x08] ; gcrRegs +[edi] mov ecx, edi @@ -150,13 +150,13 @@ G_M49595_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[ecx edx] test edi, edi
- je SHORT G_M49595_IG05 - ;; size=36 bbWeight=1 PerfScore 10.25 -G_M49595_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M49595_IG16 + ;; size=40 bbWeight=1 PerfScore 10.25 +G_M49595_IG03: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi+0x04], 0
- je SHORT G_M49595_IG05 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M49595_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M49595_IG16 + ;; size=10 bbWeight=0.46 PerfScore 1.85 +G_M49595_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; byrRegs +[eax] push 3 @@ -164,16 +164,9 @@ G_M49595_IG04: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] ; byrRegs -[eax] test eax, eax
- je SHORT G_M49595_IG06 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M49595_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp SHORT G_M49595_IG07 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M49595_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[edi]
+ jne G_M49595_IG16 + ;; size=22 bbWeight=0.49 PerfScore 3.18 +G_M49595_IG05: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+0x08] ; byrRegs +[eax] mov edx, dword ptr [edi+0x04] @@ -189,110 +182,45 @@ G_M49595_IG06: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov ecx, eax ; gcrRegs +[ecx] ;; size=24 bbWeight=0.45 PerfScore 4.47
-G_M49595_IG07: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M49595_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] call [System.IO.Directory:CreateDirectory(System.String):System.IO.DirectoryInfo] ; gcrRegs -[ecx] +[eax]
- mov edi, gword ptr [esi+0x08] - ; gcrRegs +[edi] - mov ecx, edi - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - test edi, edi - je SHORT G_M49595_IG10 - ;; size=42 bbWeight=1 PerfScore 13.25 -G_M49595_IG08: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [edi+0x04], 0 - je SHORT G_M49595_IG10 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M49595_IG09: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - mov eax, 0xD1FFAB1E - ; byrRegs +[eax] - push 3 - push eax - call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] - ; byrRegs -[eax] - test eax, eax - je SHORT G_M49595_IG11 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M49595_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp SHORT G_M49595_IG12 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M49595_IG11: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] +[edi] - lea eax, bword ptr [edi+0x08] - ; byrRegs +[eax] - mov edx, dword ptr [edi+0x04] - mov ecx, 0xD1FFAB1E - ; byrRegs +[ecx] - push edx - push eax - push 3 - push ecx - call [<unknown method>] - ; gcrRegs -[edi] +[eax] - ; byrRegs -[eax ecx] - mov ecx, eax - ; gcrRegs +[ecx] - ;; size=24 bbWeight=0.45 PerfScore 4.47 -G_M49595_IG12: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - call [System.IO.Directory:CreateDirectory(System.String):System.IO.DirectoryInfo] - ; gcrRegs -[ecx] +[eax] - mov edi, gword ptr [esi+0x08] - ; gcrRegs +[edi] - mov ecx, edi - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - test edi, edi - je SHORT G_M49595_IG15 - ;; size=42 bbWeight=1 PerfScore 13.25 -G_M49595_IG13: ; bbWeight=0.46, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [edi+0x04], 0 - je SHORT G_M49595_IG15 - ;; size=6 bbWeight=0.46 PerfScore 1.85 -G_M49595_IG14: ; bbWeight=0.49, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - mov eax, 0xD1FFAB1E - ; byrRegs +[eax] - push 3 - push eax - call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte] - ; byrRegs -[eax] - test eax, eax - je SHORT G_M49595_IG16 - ;; size=18 bbWeight=0.49 PerfScore 3.18 -G_M49595_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - mov ebx, 0xD1FFAB1E
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x86.checked.mch 19,129 10,685 1,053 7,391 -127,082 +9,375
benchmarks.run_tiered.windows.x86.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x86.checked.mch 3,248 1,089 1,426 733 -11,651 +18,406
libraries.crossgen2.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x86.checked.mch 909 296 416 197 -1,658 +4,729
libraries_tests.run.windows.x86.Release.mch 14,849 4,396 7,215 3,238 -80,419 +124,865
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1,546 385 843 318 -2,940 +14,599
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
39,681 16,851 10,953 11,877 -223,750 +171,974

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 38,900 7 38,893 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 162,708 68,715 93,993 0 (0.00%) 90 (0.06%)
benchmarks.run_tiered.windows.x86.checked.mch 72,054 44,198 27,856 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 702,092 419,078 283,014 1 (0.00%) 61 (0.01%)
libraries.crossgen2.windows.x86.checked.mch 273,633 15 273,618 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x86.checked.mch 310,328 6 310,322 5 (0.00%) 14 (0.00%)
libraries_tests.run.windows.x86.Release.mch 730,284 500,484 229,800 0 (0.00%) 448 (0.06%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 350,463 22,241 328,222 5 (0.00%) 43 (0.01%)
realworld.run.windows.x86.checked.mch 38,240 3 38,237 0 (0.00%) 0 (0.00%)
2,678,702 1,054,747 1,623,955 11 (0.00%) 656 (0.02%)

jit-analyze output

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: 55285524 (overridden on cmd)
Total bytes of diff: 55167817 (overridden on cmd)
Total bytes of delta: -117707 (-0.21 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         115 : 118481.dasm (2.89 % of base)
          91 : 161307.dasm (8.79 % of base)
          91 : 62507.dasm (8.79 % of base)
          80 : 126501.dasm (8.07 % of base)
          67 : 161240.dasm (8.77 % of base)
          64 : 70014.dasm (6.37 % of base)
          64 : 78960.dasm (6.37 % of base)
          60 : 149808.dasm (5.25 % of base)
          60 : 85648.dasm (3.98 % of base)
          57 : 6160.dasm (14.47 % of base)
          55 : 122772.dasm (2.39 % of base)
          51 : 34102.dasm (2.83 % of base)
          51 : 129370.dasm (2.83 % of base)
          51 : 134154.dasm (2.83 % of base)
          51 : 143824.dasm (2.83 % of base)
          50 : 118488.dasm (1.07 % of base)
          50 : 87980.dasm (6.03 % of base)
          48 : 114970.dasm (3.23 % of base)
          47 : 90138.dasm (5.80 % of base)
          47 : 56836.dasm (5.67 % of base)

Top file improvements (bytes):
        -109 : 70917.dasm (-5.79 % of base)
         -88 : 74402.dasm (-4.86 % of base)
         -77 : 141328.dasm (-20.70 % of base)
         -77 : 156513.dasm (-20.70 % of base)
         -77 : 157014.dasm (-20.70 % of base)
         -75 : 103960.dasm (-4.64 % of base)
         -66 : 30253.dasm (-2.21 % of base)
         -64 : 31960.dasm (-17.83 % of base)
         -63 : 105440.dasm (-3.54 % of base)
         -62 : 56806.dasm (-17.37 % of base)
         -55 : 143728.dasm (-5.61 % of base)
         -55 : 98845.dasm (-6.45 % of base)
         -54 : 94486.dasm (-3.10 % of base)
         -53 : 150860.dasm (-0.79 % of base)
         -53 : 126984.dasm (-15.23 % of base)
         -52 : 126686.dasm (-14.29 % of base)
         -50 : 110575.dasm (-2.78 % of base)
         -48 : 118941.dasm (-1.01 % of base)
         -42 : 84755.dasm (-2.71 % of base)
         -42 : 141485.dasm (-2.63 % of base)

72 total files with Code Size differences (33 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         115 (2.89 % of base) : 118481.dasm - Microsoft.Cci.MetadataVisitor:Visit(Microsoft.Cci.ICustomAttribute):this (Tier1)
          91 (8.79 % of base) : 161307.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
          91 (8.79 % of base) : 62507.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
          80 (8.07 % of base) : 126501.dasm - Newtonsoft.Json.Linq.JProperty:InsertItem(int,Newtonsoft.Json.Linq.JToken,ubyte,ubyte):ubyte:this (Tier1)
          67 (8.77 % of base) : 161240.dasm - System.Text.RegularExpressions.RegexNode:ReduceSet():System.Text.RegularExpressions.RegexNode:this (Tier1)
          64 (6.37 % of base) : 70014.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Not(System.Text.RegularExpressions.Symbolic.BDD):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          64 (6.37 % of base) : 78960.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Not(System.Text.RegularExpressions.Symbolic.BDD):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          60 (5.25 % of base) : 149808.dasm - System.IO.FileStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          60 (3.98 % of base) : 85648.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
          57 (14.47 % of base) : 6160.dasm - System.Enum:ToStringInlined[int,uint](System.RuntimeType,byref):System.String (Tier1)
          55 (2.39 % of base) : 122772.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,ubyte,ubyte):this (Tier1)
          51 (2.83 % of base) : 34102.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
          51 (2.83 % of base) : 129370.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
          51 (2.83 % of base) : 134154.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
          51 (2.83 % of base) : 143824.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
          50 (1.07 % of base) : 118488.dasm - Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.IMethodReference):this (Tier1)
          50 (6.03 % of base) : 87980.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:CreateLoop(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,int,int):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
          48 (3.23 % of base) : 114970.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
          47 (5.80 % of base) : 90138.dasm - System.Text.RegularExpressions.RegexNode:ReduceSet():System.Text.RegularExpressions.RegexNode:this (Tier1)
          47 (5.67 % of base) : 56836.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:CreateLoop(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,int,int):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

Top method improvements (bytes):
        -109 (-5.79 % of base) : 70917.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -88 (-4.86 % of base) : 74402.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -77 (-20.70 % of base) : 141328.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -77 (-20.70 % of base) : 156513.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -77 (-20.70 % of base) : 157014.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -75 (-4.64 % of base) : 103960.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -66 (-2.21 % of base) : 30253.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier0-FullOpts)
         -64 (-17.83 % of base) : 31960.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -63 (-3.54 % of base) : 105440.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -62 (-17.37 % of base) : 56806.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -55 (-5.61 % of base) : 143728.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Tier1)
         -55 (-6.45 % of base) : 98845.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:CreateLoop(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,int,int):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
         -54 (-3.10 % of base) : 94486.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
         -53 (-0.79 % of base) : 150860.dasm - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (Tier1)
         -53 (-15.23 % of base) : 126984.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -52 (-14.29 % of base) : 126686.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -50 (-2.78 % of base) : 110575.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
         -48 (-1.01 % of base) : 118941.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock (Tier1)
         -42 (-2.63 % of base) : 141485.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
         -42 (-2.71 % of base) : 84755.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)

Top method regressions (percentages):
          39 (14.83 % of base) : 9469.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 66555.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 121729.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 18084.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 28068.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 59815.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 7561.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 9980.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          39 (14.83 % of base) : 100382.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          18 (14.52 % of base) : 122836.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          57 (14.47 % of base) : 6160.dasm - System.Enum:ToStringInlined[int,uint](System.RuntimeType,byref):System.String (Tier1)
          35 (14.06 % of base) : 118526.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
          26 (12.04 % of base) : 147411.dasm - System.Array:CopyTo(System.Array,int):this (Tier1)
          13 (10.92 % of base) : 153307.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          13 (10.92 % of base) : 18802.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          13 (10.92 % of base) : 41202.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          41 (10.90 % of base) : 117090.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:RecordVarRead(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
          27 (10.55 % of base) : 162007.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          27 (10.31 % of base) : 73320.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          27 (10.31 % of base) : 61872.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)

Top method improvements (percentages):
         -77 (-20.70 % of base) : 141328.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -77 (-20.70 % of base) : 156513.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -77 (-20.70 % of base) : 157014.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -64 (-17.83 % of base) : 31960.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -62 (-17.37 % of base) : 56806.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -53 (-15.23 % of base) : 126984.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -52 (-14.29 % of base) : 126686.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -37 (-11.04 % of base) : 98924.dasm - System.ValueTuple`3[int,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[int,System.__Canon,System.__Canon]):ubyte:this (Tier1)
         -28 (-10.41 % of base) : 126453.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 70503.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 100737.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 149667.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 89463.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 125018.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 76462.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 33173.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 42673.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 145225.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 23856.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
         -28 (-10.41 % of base) : 125019.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 371677826 (overridden on cmd)
Total bytes of diff: 371684581 (overridden on cmd)
Total bytes of delta: 6755 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         253 : 695295.dasm (7.96 % of base)
         183 : 698614.dasm (5.80 % of base)
         175 : 698455.dasm (57.19 % of base)
         170 : 684471.dasm (55.92 % of base)
         170 : 658343.dasm (55.92 % of base)
         168 : 692267.dasm (54.90 % of base)
         164 : 695153.dasm (2.23 % of base)
         155 : 698544.dasm (5.85 % of base)
         129 : 698529.dasm (5.12 % of base)
         124 : 698632.dasm (2.70 % of base)
         115 : 695289.dasm (2.51 % of base)
         115 : 589063.dasm (3.19 % of base)
         108 : 661234.dasm (5.95 % of base)
          88 : 698662.dasm (3.05 % of base)
          87 : 698516.dasm (4.79 % of base)
          87 : 590404.dasm (8.19 % of base)
          84 : 566147.dasm (2.28 % of base)
          83 : 587436.dasm (1.87 % of base)
          81 : 530624.dasm (1.83 % of base)
          78 : 695051.dasm (3.09 % of base)

Top file improvements (bytes):
        -211 : 698862.dasm (-9.45 % of base)
        -133 : 367668.dasm (-7.51 % of base)
        -106 : 540659.dasm (-8.58 % of base)
         -90 : 698552.dasm (-2.10 % of base)
         -87 : 315256.dasm (-5.48 % of base)
         -80 : 531053.dasm (-4.62 % of base)
         -68 : 686104.dasm (-2.48 % of base)
         -68 : 689361.dasm (-2.48 % of base)
         -68 : 656728.dasm (-2.48 % of base)
         -68 : 662778.dasm (-2.48 % of base)
         -68 : 684320.dasm (-2.48 % of base)
         -68 : 685178.dasm (-2.48 % of base)
         -62 : 689465.dasm (-2.59 % of base)
         -62 : 688592.dasm (-2.59 % of base)
         -58 : 698228.dasm (-2.90 % of base)
         -56 : 351127.dasm (-3.95 % of base)
         -56 : 678773.dasm (-21.88 % of base)
         -56 : 525757.dasm (-21.88 % of base)
         -56 : 663168.dasm (-2.44 % of base)
         -56 : 665127.dasm (-21.88 % of base)

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

Top method regressions (bytes):
         253 (7.96 % of base) : 695295.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,uint,int,uint):this (Tier1)
         183 (5.80 % of base) : 698614.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,uint,int,uint):this (Tier1)
         175 (57.19 % of base) : 698455.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         170 (55.92 % of base) : 684471.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         170 (55.92 % of base) : 658343.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         168 (54.90 % of base) : 692267.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         164 (2.23 % of base) : 695153.dasm - Internal.JitInterface.CorInfoImpl:ceeInfoGetCallInfo(byref,uint,uint,int,uint,byref,byref,byref,byref,byref,byref,byref,byref):this (Tier1)
         155 (5.85 % of base) : 698544.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
         129 (5.12 % of base) : 698529.dasm - Internal.JitInterface.CorInfoImpl:resolveToken(byref):this (Tier1)
         124 (2.70 % of base) : 698632.dasm - Internal.JitInterface.CorInfoImpl:CompileMethodInternal(ILCompiler.DependencyAnalysis.IMethodNode,Internal.IL.MethodIL):int:this (Tier1)
         115 (2.51 % of base) : 695289.dasm - Internal.JitInterface.CorInfoImpl:CompileMethodInternal(ILCompiler.DependencyAnalysis.IMethodNode,Internal.IL.MethodIL):int:this (Tier1)
         115 (3.19 % of base) : 589063.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (Tier1)
         108 (5.95 % of base) : 661234.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
          88 (3.05 % of base) : 698662.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          87 (4.79 % of base) : 698516.dasm - Internal.JitInterface.CorInfoImpl:Get_CORINFO_SIG_INFO(Internal.TypeSystem.MethodDesc,uint,Internal.IL.MethodILScope,ubyte):this (Tier1)
          87 (8.19 % of base) : 590404.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:VisitSideEffect(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          84 (2.28 % of base) : 566147.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
          83 (1.87 % of base) : 587436.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
          81 (1.83 % of base) : 530624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
          78 (3.09 % of base) : 695051.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)

Top method improvements (bytes):
        -211 (-9.45 % of base) : 698862.dasm - Internal.IL.Stubs.InterlockedIntrinsics:EmitIL(ILCompiler.CompilationModuleGroup,Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
        -133 (-7.51 % of base) : 367668.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -106 (-8.58 % of base) : 540659.dasm - System.Linq.Expressions.Compiler.ILGen:EmitConvertToType(System.Reflection.Emit.ILGenerator,System.Type,System.Type,ubyte,System.Linq.Expressions.Compiler.ILocalCache) (Tier1)
         -90 (-2.10 % of base) : 698552.dasm - Internal.JitInterface.CorInfoImpl:getCallInfo(byref,uint,uint,int,uint):this (Tier1)
         -87 (-5.48 % of base) : 315256.dasm - Program+TestDelegateToCanonMethods:Run() (FullOpts)
         -80 (-4.62 % of base) : 531053.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -68 (-2.48 % of base) : 686104.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -68 (-2.48 % of base) : 689361.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -68 (-2.48 % of base) : 656728.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -68 (-2.48 % of base) : 662778.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -68 (-2.48 % of base) : 684320.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -68 (-2.48 % of base) : 685178.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
         -62 (-2.59 % of base) : 689465.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -62 (-2.59 % of base) : 688592.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -58 (-2.90 % of base) : 698228.dasm - ILCompiler.ReadyToRunCompilerContext:GetLayoutAlgorithmForType(Internal.TypeSystem.DefType):Internal.TypeSystem.FieldLayoutAlgorithm:this (Tier1)
         -56 (-21.88 % of base) : 678773.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 525757.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 665127.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-2.44 % of base) : 663168.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -56 (-3.95 % of base) : 351127.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)

Top method regressions (percentages):
         175 (57.19 % of base) : 698455.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         170 (55.92 % of base) : 684471.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         170 (55.92 % of base) : 658343.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         168 (54.90 % of base) : 692267.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
          42 (16.87 % of base) : 695182.dasm - Internal.JitInterface.CorInfoImpl:CreateConstLookupToSymbol(ILCompiler.DependencyAnalysis.ISymbolNode):Internal.JitInterface.CORINFO_CONST_LOOKUP:this (Tier1)
          38 (14.07 % of base) : 687966.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          33 (12.99 % of base) : 590502.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitOpCode(ushort):this (Tier1)
          57 (12.67 % of base) : 581138.dasm - System.Threading.ThreadPoolWorkQueue:Dequeue(System.Threading.ThreadPoolWorkQueueThreadLocals,byref):System.Object:this (Tier1)
          28 (11.91 % of base) : 699708.dasm - System.Threading.TimerQueueTimer:CallCallback(ubyte):this (Tier1)
          28 (11.91 % of base) : 699802.dasm - System.Threading.TimerQueueTimer:CallCallback(ubyte):this (Tier1)
          28 (11.91 % of base) : 699857.dasm - System.Threading.TimerQueueTimer:CallCallback(ubyte):this (Tier1)
          28 (11.91 % of base) : 699914.dasm - System.Threading.TimerQueueTimer:CallCallback(ubyte):this (Tier1)
          13 (10.92 % of base) : 702080.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          13 (10.92 % of base) : 323599.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          13 (10.92 % of base) : 515230.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
          41 (10.90 % of base) : 590457.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:RecordVarRead(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
          13 (10.74 % of base) : 686634.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
          28 (10.69 % of base) : 689537.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
          28 (10.69 % of base) : 689270.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
          11 (10.58 % of base) : 549630.dasm - System.String:Trim():System.String:this (Tier1)

Top method improvements (percentages):
         -56 (-21.88 % of base) : 678773.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 525757.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 665127.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 700645.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 701587.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 515121.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 553201.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 555109.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 561146.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 607312.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 661309.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 685566.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 699324.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 510478.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 549406.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 699899.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-15.75 % of base) : 700014.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -42 (-11.57 % of base) : 560864.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
         -42 (-11.57 % of base) : 571332.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
         -40 (-11.43 % of base) : 323375.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)


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: 49759154 (overridden on cmd)
Total bytes of diff: 49762225 (overridden on cmd)
Total bytes of delta: 3071 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         374 : 251157.dasm (8.18 % of base)
         133 : 70040.dasm (9.22 % of base)
         121 : 177045.dasm (3.45 % of base)
          93 : 229813.dasm (10.81 % of base)
          90 : 203259.dasm (15.90 % of base)
          76 : 305795.dasm (9.62 % of base)
          75 : 594.dasm (4.78 % of base)
          64 : 272130.dasm (4.02 % of base)
          60 : 251004.dasm (2.15 % of base)
          59 : 251023.dasm (2.36 % of base)
          55 : 235560.dasm (2.95 % of base)
          55 : 279902.dasm (3.47 % of base)
          53 : 257676.dasm (5.56 % of base)
          50 : 251171.dasm (3.45 % of base)
          45 : 305950.dasm (6.17 % of base)
          44 : 192226.dasm (1.34 % of base)
          42 : 279436.dasm (3.48 % of base)
          38 : 4495.dasm (3.44 % of base)
          36 : 251705.dasm (3.78 % of base)
          30 : 236059.dasm (6.59 % of base)

Top file improvements (bytes):
         -60 : 101025.dasm (-0.96 % of base)
         -35 : 126244.dasm (-5.44 % of base)
         -32 : 80874.dasm (-8.27 % of base)
         -31 : 240016.dasm (-1.08 % of base)
         -31 : 34279.dasm (-1.53 % of base)
         -27 : 251786.dasm (-1.25 % of base)
         -26 : 59432.dasm (-7.05 % of base)
         -25 : 35046.dasm (-0.99 % of base)
         -22 : 164382.dasm (-7.01 % of base)
         -22 : 164406.dasm (-6.90 % of base)
         -22 : 238022.dasm (-0.66 % of base)
         -22 : 30092.dasm (-1.06 % of base)
         -21 : 35400.dasm (-3.58 % of base)
         -21 : 172228.dasm (-3.94 % of base)
         -21 : 34287.dasm (-2.22 % of base)
         -18 : 35103.dasm (-0.72 % of base)
         -17 : 13209.dasm (-2.92 % of base)
         -17 : 274443.dasm (-4.78 % of base)
         -17 : 60063.dasm (-0.79 % of base)
         -17 : 60092.dasm (-5.90 % of base)

69 total files with Code Size differences (31 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         374 (8.18 % of base) : 251157.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
         133 (9.22 % of base) : 70040.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
         121 (3.45 % of base) : 177045.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
          93 (10.81 % of base) : 229813.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
          90 (15.90 % of base) : 203259.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
          76 (9.62 % of base) : 305795.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
          75 (4.78 % of base) : 594.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          64 (4.02 % of base) : 272130.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:TryDecode(System.ReadOnlyMemory`1[ubyte],byref,byref):ubyte (FullOpts)
          60 (2.15 % of base) : 251004.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
          59 (2.36 % of base) : 251023.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
          55 (2.95 % of base) : 235560.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:AddNewActivitySourceTransform(System.String,int,int,System.Diagnostics.DiagnosticSourceEventSource) (FullOpts)
          55 (3.47 % of base) : 279902.dasm - System.Speech.Internal.Synthesis.ConvertTextFrag:ToSapi(System.Collections.Generic.List`1[System.Speech.Synthesis.TtsEngine.TextFragment],byref):ubyte (FullOpts)
          53 (5.56 % of base) : 257676.dasm - System.Net.HttpWebResponse:get_CharacterSet():System.String:this (FullOpts)
          50 (3.45 % of base) : 251171.dasm - System.Management.QualifierData:MapQualValueToWmiValue(System.Object):System.Object (FullOpts)
          45 (6.17 % of base) : 305950.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          44 (1.34 % of base) : 192226.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          42 (3.48 % of base) : 279436.dasm - System.Speech.Recognition.RecognizedPhrase:GetRuleInstance(System.Speech.Recognition.Grammar,System.String,System.String,byref,byref) (FullOpts)
          38 (3.44 % of base) : 4495.dasm - System.Numerics.Vector`1[ubyte]:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
          36 (3.78 % of base) : 251705.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          30 (6.59 % of base) : 236059.dasm - System.Diagnostics.Metrics.MetricsEventSource+MetricSpec:Parse(System.String):System.Diagnostics.Metrics.MetricsEventSource+MetricSpec (FullOpts)

Top method improvements (bytes):
         -60 (-0.96 % of base) : 101025.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsCore(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
         -35 (-5.44 % of base) : 126244.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
         -32 (-8.27 % of base) : 80874.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
         -31 (-1.53 % of base) : 34279.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
         -31 (-1.08 % of base) : 240016.dasm - System.Formats.Tar.TarWriter:ConstructEntryForWriting(System.String,System.String,int):System.Formats.Tar.TarEntry:this (FullOpts)
         -27 (-1.25 % of base) : 251786.dasm - System.Net.HttpListener:SendError(System.Net.HttpListenerSession,ulong,int,System.Collections.ArrayList) (FullOpts)
         -26 (-7.05 % of base) : 59432.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -25 (-0.99 % of base) : 35046.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
         -22 (-1.06 % of base) : 30092.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupAttributeType(Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
         -22 (-0.66 % of base) : 238022.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:LoadPropertyMappingTable(int,System.Object[,]) (FullOpts)
         -22 (-7.01 % of base) : 164382.dasm - System.Xml.Base64Decoder:Decode(ushort[],int,int):int:this (FullOpts)
         -22 (-6.90 % of base) : 164406.dasm - System.Xml.BinHexDecoder:Decode(ushort[],int,int):int:this (FullOpts)
         -21 (-2.22 % of base) : 34287.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsForSyntaxTree(int,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],ubyte,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic]:this (FullOpts)
         -21 (-3.58 % of base) : 35400.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTable:ContainsNameHelper(Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration,System.Func`2[System.String,ubyte],int,System.Func`2[Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,ubyte],System.Threading.CancellationToken):ubyte (FullOpts)
         -21 (-3.94 % of base) : 172228.dasm - System.Xml.Xsl.Xslt.XPathPatternParser:ParseIdKeyPattern():System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -18 (-0.72 % of base) : 35103.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
         -17 (-0.79 % of base) : 60063.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -17 (-5.90 % of base) : 60092.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -17 (-2.92 % of base) : 13209.dasm - System.Diagnostics.Eventing.Reader.NativeWrapper:ConvertToSysTimeArray(Microsoft.Win32.UnsafeNativeMethods+EvtVariant):System.DateTime[] (FullOpts)
         -17 (-4.78 % of base) : 274443.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)

Top method regressions (percentages):
          90 (15.90 % of base) : 203259.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
          93 (10.81 % of base) : 229813.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
          76 (9.62 % of base) : 305795.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
         133 (9.22 % of base) : 70040.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
         374 (8.18 % of base) : 251157.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
          19 (6.64 % of base) : 167357.dasm - System.Xml.XmlWellFormedWriter:WriteBase64Async(ubyte[],int,int):System.Threading.Tasks.Task:this (FullOpts)
          30 (6.59 % of base) : 236059.dasm - System.Diagnostics.Metrics.MetricsEventSource+MetricSpec:Parse(System.String):System.Diagnostics.Metrics.MetricsEventSource+MetricSpec (FullOpts)
          14 (6.36 % of base) : 259325.dasm - System.Net.Sockets.SendPacketsElement:.ctor(ubyte[],int,int,ubyte):this (FullOpts)
          16 (6.30 % of base) : 252043.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
          22 (6.20 % of base) : 167263.dasm - System.Xml.XmlWellFormedWriter:WriteChars(ushort[],int,int):this (FullOpts)
          45 (6.17 % of base) : 305950.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
          27 (5.59 % of base) : 310008.dasm - System.Xaml.Permissions.XamlAccessLevel:PrivateAccessTo(System.String):System.Xaml.Permissions.XamlAccessLevel (FullOpts)
          53 (5.56 % of base) : 257676.dasm - System.Net.HttpWebResponse:get_CharacterSet():System.String:this (FullOpts)
           9 (5.39 % of base) : 259357.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
          23 (5.01 % of base) : 13327.dasm - System.Diagnostics.Process:BuildCommandLine(System.Diagnostics.ProcessStartInfo,byref) (FullOpts)
          23 (5.01 % of base) : 75894.dasm - System.Diagnostics.Process:BuildCommandLine(System.Diagnostics.ProcessStartInfo,byref) (FullOpts)
          11 (4.87 % of base) : 279903.dasm - System.Speech.Internal.Synthesis.ConvertTextFrag:SapiCategory(System.Speech.Synthesis.TtsEngine.SPVTEXTFRAG,System.String,System.String):int (FullOpts)
           8 (4.82 % of base) : 264830.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          75 (4.78 % of base) : 594.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
           4 (4.65 % of base) : 256895.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)

Top method improvements (percentages):
         -32 (-8.27 % of base) : 80874.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
         -26 (-7.05 % of base) : 59432.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -22 (-7.01 % of base) : 164382.dasm - System.Xml.Base64Decoder:Decode(ushort[],int,int):int:this (FullOpts)
         -22 (-6.90 % of base) : 164406.dasm - System.Xml.BinHexDecoder:Decode(ushort[],int,int):int:this (FullOpts)
         -17 (-5.90 % of base) : 60092.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -35 (-5.44 % of base) : 126244.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
          -8 (-5.30 % of base) : 212805.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
         -17 (-4.78 % of base) : 274443.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
         -17 (-4.78 % of base) : 274579.dasm - System.Security.Cryptography.ECDsa:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
         -13 (-4.00 % of base) : 164383.dasm - System.Xml.Base64Decoder:Decode(System.String,int,int):int:this (FullOpts)
         -21 (-3.94 % of base) : 172228.dasm - System.Xml.Xsl.Xslt.XPathPatternParser:ParseIdKeyPattern():System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -13 (-3.94 % of base) : 164407.dasm - System.Xml.BinHexDecoder:Decode(System.String,int,int):int:this (FullOpts)
         -21 (-3.58 % of base) : 35400.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTable:ContainsNameHelper(Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration,System.Func`2[System.String,ubyte],int,System.Func`2[Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,ubyte],System.Threading.CancellationToken):ubyte (FullOpts)
          -4 (-3.51 % of base) : 104437.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:VisitProperty(Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
          -4 (-3.45 % of base) : 84283.dasm - Microsoft.CodeAnalysis.VisualBasic.ClsComplianceChecker:VisitAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):this (FullOpts)
          -4 (-3.45 % of base) : 104428.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:VisitEvent(Microsoft.CodeAnalysis.VisualBasic.Symbols.EventSymbol):this (FullOpts)
          -4 (-3.45 % of base) : 104430.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:VisitField(Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldSymbol):this (FullOpts)
          -4 (-3.31 % of base) : 81216.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
         -13 (-3.23 % of base) : 125684.dasm - Microsoft.Diagnostics.Tracing.ZippedETLReader:AtomicExtract(System.IO.Compression.ZipArchiveEntry,System.String) (FullOpts)
          -8 (-3.17 % of base) : 299049.dasm - System.Collections.Specialized.ListDictionary+NodeKeyValueCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 206782528 (overridden on cmd)
Total bytes of diff: 206826974 (overridden on cmd)
Total bytes of delta: 44446 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1080 : 723826.dasm (93.10 % of base)
        1040 : 360307.dasm (89.66 % of base)
        1022 : 415797.dasm (88.10 % of base)
        1022 : 720331.dasm (88.10 % of base)
        1022 : 353546.dasm (88.10 % of base)
        1020 : 438450.dasm (87.40 % of base)
        1019 : 152423.dasm (87.84 % of base)
        1012 : 421562.dasm (86.42 % of base)
        1010 : 117065.dasm (86.55 % of base)
        1008 : 285490.dasm (86.90 % of base)
        1000 : 450570.dasm (85.69 % of base)
        1000 : 405743.dasm (85.69 % of base)
         997 : 389995.dasm (85.43 % of base)
         980 : 430474.dasm (83.98 % of base)
         928 : 683099.dasm (61.05 % of base)
         748 : 389873.dasm (34.84 % of base)
         747 : 350788.dasm (34.79 % of base)
         747 : 449476.dasm (34.79 % of base)
         726 : 219853.dasm (34.23 % of base)
         719 : 324885.dasm (33.15 % of base)

Top file improvements (bytes):
        -531 : 390423.dasm (-8.21 % of base)
        -507 : 14896.dasm (-8.20 % of base)
        -488 : 717016.dasm (-7.71 % of base)
        -488 : 570065.dasm (-7.71 % of base)
        -488 : 230322.dasm (-7.71 % of base)
        -488 : 90412.dasm (-7.71 % of base)
        -487 : 167375.dasm (-7.69 % of base)
        -483 : 361681.dasm (-8.94 % of base)
        -483 : 410422.dasm (-8.94 % of base)
        -483 : 415864.dasm (-8.94 % of base)
        -483 : 531999.dasm (-8.94 % of base)
        -483 : 126976.dasm (-8.94 % of base)
        -483 : 562606.dasm (-8.94 % of base)
        -481 : 182236.dasm (-7.60 % of base)
        -481 : 327465.dasm (-7.60 % of base)
        -481 : 353640.dasm (-7.60 % of base)
        -481 : 589764.dasm (-8.90 % of base)
        -479 : 499251.dasm (-8.87 % of base)
        -478 : 270985.dasm (-8.85 % of base)
        -478 : 516245.dasm (-8.85 % of base)

72 total files with Code Size differences (40 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
        1080 (93.10 % of base) : 723826.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1040 (89.66 % of base) : 360307.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 415797.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 720331.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 353546.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1020 (87.40 % of base) : 438450.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1019 (87.84 % of base) : 152423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1012 (86.42 % of base) : 421562.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1010 (86.55 % of base) : 117065.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1008 (86.90 % of base) : 285490.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1000 (85.69 % of base) : 450570.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1000 (85.69 % of base) : 405743.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         997 (85.43 % of base) : 389995.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         980 (83.98 % of base) : 430474.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         928 (61.05 % of base) : 683099.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
         748 (34.84 % of base) : 389873.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         747 (34.79 % of base) : 350788.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         747 (34.79 % of base) : 449476.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         726 (34.23 % of base) : 219853.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         719 (33.15 % of base) : 324885.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

Top method improvements (bytes):
        -531 (-8.21 % of base) : 390423.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -507 (-8.20 % of base) : 14896.dasm - System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_RefArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_RefArgs (Tier1)
        -488 (-7.71 % of base) : 717016.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -488 (-7.71 % of base) : 570065.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -488 (-7.71 % of base) : 230322.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -488 (-7.71 % of base) : 90412.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -487 (-7.69 % of base) : 167375.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 361681.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 410422.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 415864.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 531999.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 126976.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -483 (-8.94 % of base) : 562606.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -481 (-7.60 % of base) : 182236.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -481 (-7.60 % of base) : 327465.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -481 (-7.60 % of base) : 353640.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -481 (-8.90 % of base) : 589764.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -479 (-8.87 % of base) : 499251.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -478 (-8.85 % of base) : 270985.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -478 (-8.85 % of base) : 516245.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)

Top method regressions (percentages):
        1080 (93.10 % of base) : 723826.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1040 (89.66 % of base) : 360307.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 415797.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 720331.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1022 (88.10 % of base) : 353546.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1019 (87.84 % of base) : 152423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1020 (87.40 % of base) : 438450.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1008 (86.90 % of base) : 285490.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1010 (86.55 % of base) : 117065.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1012 (86.42 % of base) : 421562.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1000 (85.69 % of base) : 450570.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        1000 (85.69 % of base) : 405743.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         997 (85.43 % of base) : 389995.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         980 (83.98 % of base) : 430474.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         316 (61.72 % of base) : 126899.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         928 (61.05 % of base) : 683099.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
         157 (51.82 % of base) : 634161.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         193 (46.62 % of base) : 681641.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
          19 (38.78 % of base) : 102243.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
         748 (34.84 % of base) : 389873.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

Top method improvements (percentages):
         -56 (-21.88 % of base) : 139066.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 510922.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -56 (-21.88 % of base) : 271483.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -52 (-20.63 % of base) : 431640.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -52 (-20.63 % of base) : 439859.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -50 (-20.00 % of base) : 532106.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -46 (-18.70 % of base) : 723655.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -46 (-18.70 % of base) : 724276.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -63 (-17.85 % of base) : 196124.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:IsLocationContainedWithin(Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.Text.TextSpan,byref):ubyte (Tier1)
         -40 (-16.67 % of base) : 230339.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 330457.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 353878.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 410841.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 592541.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 397234.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 224557.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 332857.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 590638.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 372458.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         -40 (-16.67 % of base) : 562701.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)


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: 112705032 (overridden on cmd)
Total bytes of diff: 112716691 (overridden on cmd)
Total bytes of delta: 11659 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         372 : 168263.dasm (8.25 % of base)
         133 : 110951.dasm (9.35 % of base)
         119 : 78338.dasm (3.45 % of base)
         111 : 149639.dasm (9.12 % of base)
         107 : 60204.dasm (2.67 % of base)
         107 : 150482.dasm (4.92 % of base)
         107 : 319041.dasm (2.92 % of base)
         100 : 147881.dasm (6.74 % of base)
          93 : 148718.dasm (5.29 % of base)
          89 : 242755.dasm (1.80 % of base)
          89 : 224333.dasm (1.80 % of base)
          84 : 149101.dasm (6.51 % of base)
          83 : 148935.dasm (11.17 % of base)
          81 : 149103.dasm (5.23 % of base)
          76 : 179352.dasm (10.12 % of base)
          72 : 224289.dasm (4.32 % of base)
          72 : 242871.dasm (4.32 % of base)
          67 : 215638.dasm (9.93 % of base)
          64 : 202237.dasm (2.93 % of base)
          64 : 148656.dasm (2.58 % of base)

Top file improvements (bytes):
         -98 : 234957.dasm (-2.91 % of base)
         -98 : 237566.dasm (-2.91 % of base)
         -90 : 34611.dasm (-5.34 % of base)
         -80 : 335071.dasm (-2.22 % of base)
         -63 : 181078.dasm (-0.48 % of base)
         -51 : 66699.dasm (-2.58 % of base)
         -51 : 60004.dasm (-2.58 % of base)
         -41 : 22292.dasm (-2.29 % of base)
         -41 : 5592.dasm (-2.25 % of base)
         -37 : 343482.dasm (-1.64 % of base)
         -35 : 179798.dasm (-1.65 % of base)
         -34 : 337382.dasm (-2.05 % of base)
         -31 : 141287.dasm (-1.08 % of base)
         -27 : 147486.dasm (-2.22 % of base)
         -27 : 343286.dasm (-0.88 % of base)
         -26 : 8216.dasm (-7.74 % of base)
         -26 : 23516.dasm (-7.74 % of base)
         -25 : 8846.dasm (-1.03 % of base)
         -25 : 24919.dasm (-1.03 % of base)
         -22 : 30753.dasm (-6.57 % of base)

77 total files with Code Size differences (37 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         372 (8.25 % of base) : 168263.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
         133 (9.35 % of base) : 110951.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
         119 (3.45 % of base) : 78338.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
         111 (9.12 % of base) : 149639.dasm - System.IO.Tests.Enumeration.RecursionDepthTests:EnumerateDirectory_WithSpecifedRecursionDepth(int,int):this (FullOpts)
         107 (2.67 % of base) : 60204.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]:this (FullOpts)
         107 (4.92 % of base) : 150482.dasm - System.IO.Tests.Enumeration.MatchCasingTests:MatchCase():this (FullOpts)
         107 (2.92 % of base) : 319041.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29073_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         100 (6.74 % of base) : 147881.dasm - System.IO.Compression.Tests.ZipFile_Extract:Windows_ZipWithInvalidFileNames():this (FullOpts)
          93 (5.29 % of base) : 148718.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternExactMatch():this (FullOpts)
          89 (1.80 % of base) : 242755.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim_Memory() (FullOpts)
          89 (1.80 % of base) : 224333.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim_Memory() (FullOpts)
          84 (6.51 % of base) : 149101.dasm - System.IO.Tests.Enumeration.MatchTypesTests:StarDotBehavior():this (FullOpts)
          83 (11.17 % of base) : 148935.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
          81 (5.23 % of base) : 149103.dasm - System.IO.Tests.Enumeration.MatchTypesTests:QuestionMarkBehavior():this (FullOpts)
          76 (10.12 % of base) : 179352.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
          72 (4.32 % of base) : 224289.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes() (FullOpts)
          72 (4.32 % of base) : 242871.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes() (FullOpts)
          67 (9.93 % of base) : 215638.dasm - System.Reflection.Tests.AssemblyTests:.ctor():this (FullOpts)
          64 (2.58 % of base) : 148656.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithLeadingStar():this (FullOpts)
          64 (2.93 % of base) : 202237.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_RemoveRecursive:v6():this (FullOpts)

Top method improvements (bytes):
         -98 (-2.91 % of base) : 234957.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
         -98 (-2.91 % of base) : 237566.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
         -90 (-5.34 % of base) : 34611.dasm - Microsoft.CodeAnalysis.CSharp.FindSymbols.CSharpDeclaredSymbolInfoFactoryService:AddLocalFunctionInfos(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax,Roslyn.Utilities.StringTable,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
         -80 (-2.22 % of base) : 335071.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31933_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -63 (-0.48 % of base) : 181078.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+<HandleConnectionAsync>d__62:MoveNext():this (FullOpts)
         -51 (-2.58 % of base) : 66699.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
         -51 (-2.58 % of base) : 60004.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
         -41 (-2.29 % of base) : 22292.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
         -41 (-2.25 % of base) : 5592.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
         -37 (-1.64 % of base) : 343482.dasm - System.Threading.Tasks.Tests.ParallelForTests:TestParallelForEachConversions() (FullOpts)
         -35 (-1.65 % of base) : 179798.dasm - System.Net.HttpListener:SendError(System.Net.HttpListenerSession,ulong,int,System.Collections.ArrayList) (FullOpts)
         -34 (-2.05 % of base) : 337382.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33161_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -31 (-1.08 % of base) : 141287.dasm - System.Formats.Tar.TarWriter:ConstructEntryForWriting(System.String,System.String,int):System.Formats.Tar.TarEntry:this (FullOpts)
         -27 (-2.22 % of base) : 147486.dasm - System.IO.Compression.Tests.zip_UpdateTests+<updateArchive>d__10:MoveNext():this (FullOpts)
         -27 (-0.88 % of base) : 343286.dasm - System.Threading.Tasks.Tests.ParallelForTests:TestParallelForPaths() (FullOpts)
         -26 (-7.74 % of base) : 8216.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -26 (-7.74 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -25 (-1.03 % of base) : 8846.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
         -25 (-1.03 % of base) : 24919.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
         -22 (-6.57 % of base) : 30753.dasm - NuGet.Protocol.LocalFolderUtility+<CancellableYieldEnumeration>d__49`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
          83 (11.17 % of base) : 148935.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
          42 (11.14 % of base) : 148891.dasm - System.IO.Tests.Directory_Move:DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory():this (FullOpts)
          47 (10.49 % of base) : 148900.dasm - System.IO.Tests.Directory_Move:DirectoryWithDifferentCasingThanFileSystem_ToItself():this (FullOpts)
          76 (10.12 % of base) : 179352.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
          42 (10.00 % of base) : 148946.dasm - System.IO.Tests.Directory_Move:SameDirectoryWithDifferentCasing_WithDirectoryContent():this (FullOpts)
          67 (9.93 % of base) : 215638.dasm - System.Reflection.Tests.AssemblyTests:.ctor():this (FullOpts)
          46 (9.87 % of base) : 148930.dasm - System.IO.Tests.Directory_Move:SameDirectoryWithDifferentCasing_WithFileContent():this (FullOpts)
         133 (9.35 % of base) : 110951.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
          32 (9.14 % of base) : 201716.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Add_Schema:v7():this (FullOpts)
          32 (9.14 % of base) : 201732.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Add_Schema:v8():this (FullOpts)
          32 (9.14 % of base) : 201734.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Add_Schema:v9():this (FullOpts)
         111 (9.12 % of base) : 149639.dasm - System.IO.Tests.Enumeration.RecursionDepthTests:EnumerateDirectory_WithSpecifedRecursionDepth(int,int):this (FullOpts)
          41 (8.95 % of base) : 170747.dasm - System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseRange|145_3(System.String):System.Range (FullOpts)
          30 (8.45 % of base) : 119831.dasm - System.Diagnostics.Tests.ProcessTests:ProcessStart_UseShellExecute_ExecuteOrder():this (FullOpts)
         372 (8.25 % of base) : 168263.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
          30 (7.75 % of base) : 205445.dasm - System.Xml.Tests.CGenericTestModule:Init(System.Object):int:this (FullOpts)
          30 (7.59 % of base) : 200754.dasm - System.Xml.XslCompiledTransformApiTests.ReflectionTestCaseBase:get_AMethodInfo():System.Reflection.MethodInfo:this (FullOpts)
          46 (7.26 % of base) : 224045.dasm - System.Tests.StringTests:MakeSureNoTrimChecksGoOutOfRange() (FullOpts)
          46 (7.26 % of base) : 242842.dasm - System.Tests.StringTests:MakeSureNoTrimChecksGoOutOfRange() (FullOpts)
          46 (7.23 % of base) : 242915.dasm - System.Tests.StringTests:NoWhiteSpaceTrim() (FullOpts)

Top method improvements (percentages):
         -26 (-7.74 % of base) : 8216.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -26 (-7.74 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -20 (-7.30 % of base) : 11958.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
         -20 (-7.30 % of base) : 42661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
         -22 (-7.01 % of base) : 78849.dasm - System.Xml.Base64Decoder:Decode(ushort[],int,int):int:this (FullOpts)
         -22 (-6.90 % of base) : 78841.dasm - System.Xml.BinHexDecoder:Decode(ushort[],int,int):int:this (FullOpts)
         -22 (-6.57 % of base) : 30753.dasm - NuGet.Protocol.LocalFolderUtility+<CancellableYieldEnumeration>d__49`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -90 (-5.34 % of base) : 34611.dasm - Microsoft.CodeAnalysis.CSharp.FindSymbols.CSharpDeclaredSymbolInfoFactoryService:AddLocalFunctionInfos(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax,Roslyn.Utilities.StringTable,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
         -18 (-5.19 % of base) : 256735.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
         -18 (-5.19 % of base) : 254365.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
         -17 (-4.78 % of base) : 252753.dasm - System.Security.Cryptography.ECDsa:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
         -13 (-4.17 % of base) : 203549.dasm - System.Xml.Base64Decoder:Decode(System.String,int,int):int:this (FullOpts)
         -13 (-4.10 % of base) : 203617.dasm - System.Xml.BinHexDecoder:Decode(System.String,int,int):int:this (FullOpts)
          -9 (-3.59 % of base) : 34862.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticFacts:AppendAliasNames(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Syntax.BaseNamespaceDeclarationSyntax],System.Collections.Immutable.ImmutableHashSet`1+Builder[System.String],System.Threading.CancellationToken) (FullOpts)
         -21 (-3.45 % of base) : 32952.dasm - NuGet.Packaging.Signing.CertificateUtility:IsDateInsideValidityPeriod(System.Security.Cryptography.X509Certificates.X509Certificate2,System.DateTimeOffset):ubyte (FullOpts)
         -15 (-3.36 % of base) : 325824.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29843_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-3.17 % of base) : 91785.dasm - System.Collections.Specialized.ListDictionary+NodeKeyValueCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
          -9 (-3.11 % of base) : 52468.dasm - System.Security.Cryptography.IncrementalHash:AppendData(ubyte[],int,int):this (FullOpts)
          -5 (-3.01 % of base) : 160843.dasm - System.Linq.ParallelEnumerable:AsOrdered(System.Linq.ParallelQuery):System.Linq.ParallelQuery (FullOpts)
         -19 (-2.99 % of base) : 33034.dasm - NuGet.Packaging.Signing.Rfc3161TimestampVerificationUtility:ValidateSignerCertificateAgainstTimestamp(System.Security.Cryptography.X509Certificates.X509Certificate2,NuGet.Packaging.Signing.Timestamp):ubyte (FullOpts)