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)