Assembly Diffs
linux arm
Diffs are based on 1,449,330 contexts (345,734 MinOpts, 1,103,596 FullOpts).
MISSED contexts: 55,656 (3.70%)
Overall (+306 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
13,690,874 |
+242 |
benchmarks.run_pgo.linux.arm.checked.mch |
24,676,696 |
+70 |
benchmarks.run_tiered.linux.arm.checked.mch |
17,982,904 |
+278 |
coreclr_tests.run.linux.arm.checked.mch |
321,240,776 |
+90 |
libraries.crossgen2.linux.arm.checked.mch |
35,803,568 |
-72 |
libraries.pmi.linux.arm.checked.mch |
49,871,588 |
+422 |
libraries_tests.run.linux.arm.Release.mch |
17,138,182 |
-1,874 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
93,850,820 |
+1,366 |
realworld.run.linux.arm.checked.mch |
13,596,898 |
-216 |
FullOpts (+306 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
13,378,298 |
+242 |
benchmarks.run_pgo.linux.arm.checked.mch |
19,755,544 |
+70 |
benchmarks.run_tiered.linux.arm.checked.mch |
10,615,614 |
+278 |
coreclr_tests.run.linux.arm.checked.mch |
108,805,826 |
+90 |
libraries.crossgen2.linux.arm.checked.mch |
35,802,338 |
-72 |
libraries.pmi.linux.arm.checked.mch |
49,765,364 |
+422 |
libraries_tests.run.linux.arm.Release.mch |
16,541,122 |
-1,874 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
83,821,050 |
+1,366 |
realworld.run.linux.arm.checked.mch |
13,161,826 |
-216 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-22 (-2.27%) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
@@ -9,53 +9,53 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <BenchmarksGame.FannkuchRedux_2>
; V01 arg1 [V01,T21] ( 23, 81.50) int -> r4 single-def
-; V02 loc0 [V02,T15] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]>
-; V03 loc1 [V03,T30] ( 11, 36.25) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]>
-; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x00] class-hnd exact spill-single-def <int[]>
-; V05 loc3 [V05,T33] ( 5, 23 ) int -> [sp+0x2C]
+; V02 loc0 [V02,T17] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]>
+; V03 loc1 [V03,T31] ( 11, 36.25) ref -> [sp+0x08] class-hnd exact spill-single-def <int[]>
+; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]>
+; V05 loc3 [V05,T34] ( 5, 23 ) int -> [sp+0x2C]
; V06 loc4 [V06,T40] ( 4, 6 ) int -> [sp+0x28]
; V07 loc5 [V07,T41] ( 4, 6 ) int -> [sp+0x24]
; V08 loc6 [V08,T24] ( 3, 65 ) int -> r10 single-def
-; V09 loc7 [V09,T32] ( 18, 29.12) int -> r1
+; V09 loc7 [V09,T33] ( 18, 29.12) int -> r1
; V10 loc8 [V10,T19] ( 8,104 ) int -> r2
-; V11 loc9 [V11,T29] ( 6, 40 ) int -> [sp+0x20]
+; V11 loc9 [V11,T29] ( 6, 45.92) int -> [sp+0x20]
; V12 loc10 [V12,T23] ( 12, 66.48) int -> r12
; V13 loc11 [V13,T26] ( 3, 48 ) int -> r9
; V14 loc12 [V14,T01] ( 6,328 ) int -> r8
; V15 loc13 [V15,T02] ( 6,328 ) int -> r2
-; V16 loc14 [V16,T17] ( 2,128 ) int -> r7
+; V16 loc14 [V16,T18] ( 2,128 ) int -> r7
; V17 loc15 [V17,T39] ( 2, 8 ) int -> r3
; V18 loc16 [V18,T22] ( 6, 80 ) int -> registers
-; V19 loc17 [V19,T00] ( 23,372.92) int -> r12
-; V20 loc18 [V20,T16] ( 5,132 ) int -> registers
+; V19 loc17 [V19,T00] ( 23,428.28) int -> r12
+; V20 loc18 [V20,T14] ( 5,159.68) int -> registers
; V21 loc19 [V21,T04] ( 16,289.27) int -> registers
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T31] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V23 tmp1 [V23,T32] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
; V24 tmp2 [V24,T05] ( 6,256.00) int -> registers "Strict ordering of exceptions for Array store"
; V25 tmp3 [V25,T38] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
-; V26 tmp4 [V26,T34] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V26 tmp4 [V26,T35] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
; V27 tmp5 [V27,T25] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store"
; V28 tmp6 [V28,T06] ( 2,256 ) int -> lr "Strict ordering of exceptions for Array store"
; V29 cse0 [V29,T03] ( 15,325.55) byref -> registers hoist multi-def "CSE - aggressive"
; V30 cse1 [V30,T13] ( 12,163.40) int -> registers multi-def "CSE - aggressive"
-; V31 cse2 [V31,T14] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
+; V31 cse2 [V31,T15] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
; V32 cse3 [V32,T07] ( 21,217.59) byref -> registers hoist multi-def "CSE - aggressive"
-; V33 cse4 [V33,T18] ( 11,109.18) byref -> registers hoist multi-def "CSE - moderate"
+; V33 cse4 [V33,T16] ( 11,136.86) byref -> registers hoist multi-def "CSE - moderate"
; V34 cse5 [V34,T08] ( 3,192 ) int -> r0 "CSE - aggressive"
; V35 cse6 [V35,T09] ( 3,192 ) int -> r6 "CSE - aggressive"
; V36 cse7 [V36,T10] ( 4,190.08) int -> r2 "CSE - aggressive"
; V37 cse8 [V37,T11] ( 3,188.18) int -> r9 "CSE - aggressive"
-; V38 cse9 [V38,T12] ( 3,188.18) int -> lr "CSE - aggressive"
+; V38 cse9 [V38,T12] ( 3,188.18) int -> r6 "CSE - aggressive"
; V39 cse10 [V39,T20] ( 3, 95.04) int -> r12 "CSE - moderate"
; V40 cse11 [V40,T27] ( 3, 48 ) int -> r8 "CSE - moderate"
; V41 cse12 [V41,T28] ( 3, 47.52) int -> r8 "CSE - moderate"
-; V42 cse13 [V42,T35] ( 4, 15.84) int -> r3 "CSE - moderate"
-; V43 cse14 [V43,T36] ( 9, 13.76) int -> [sp+0x1C] hoist multi-def "CSE - moderate"
-; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate"
-; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate"
-; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x10] spill-single-def "CSE - moderate"
-; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x08] spill-single-def "CSE - moderate"
+; V42 cse13 [V42,T36] ( 4, 15.84) int -> r3 "CSE - moderate"
+; V43 cse14 [V43,T30] ( 9, 41.44) int -> lr hoist multi-def "CSE - moderate"
+; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate"
+; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x10] spill-single-def "CSE - moderate"
+; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
; V49 cse20 [V49,T47] ( 4, 0.16) int -> r2 "CSE - conservative"
;
; Lcl frame size = 52
@@ -88,7 +88,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov r6, r0
; gcrRegs +[r6]
- str r6, [sp+0x04]
+ str r6, [sp+0x08]
; GC ptr vars +{V03}
mov r1, r4
movw r0, 0xd1ff
@@ -99,7 +99,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
- str r0, [sp]
+ str r0, [sp+0x04]
; GC ptr vars +{V04}
movs r7, 1
str r7, [sp+0x2C] // [V05 loc3]
@@ -112,7 +112,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r4, 0
ble SHORT G_M61974_IG06
;; size=98 bbWeight=1 PerfScore 32.00
-G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002040000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002080000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r3, [r5+0x04]
cmp r3, r4
blt SHORT G_M61974_IG05
@@ -161,7 +161,7 @@ G_M61974_IG05: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000
str r1, [r12+r2]
adds r1, r1, 1
cmp r1, r4
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
blt SHORT G_M61974_IG05
;; size=60 bbWeight=0.04 PerfScore 0.76
G_M61974_IG06: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
@@ -200,10 +200,10 @@ G_M61974_IG09: ; bbWeight=15.84, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=400
cmp r12, r4
blt SHORT G_M61974_IG09
;; size=20 bbWeight=15.84 PerfScore 95.04
-G_M61974_IG10: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M61974_IG10: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 lr]
b SHORT G_M61974_IG13
- ;; size=2 bbWeight=2 PerfScore 2.00
+ ;; size=2 bbWeight=7.92 PerfScore 7.92
G_M61974_IG11: ; bbWeight=0.01, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
add lr, r5, 8
; byrRegs +[lr]
@@ -224,11 +224,11 @@ G_M61974_IG12: ; bbWeight=0.16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=4002
cmp r12, r4
blt SHORT G_M61974_IG12
;; size=40 bbWeight=0.16 PerfScore 1.92
-G_M61974_IG13: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
+G_M61974_IG13: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1 lr]
mov lr, 1
str lr, [sp+0x20] // [V11 loc9]
- ;; size=8 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=7.92 PerfScore 15.84
G_M61974_IG14: ; bbWeight=16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r6+0x04]
cmp r2, r1
@@ -271,9 +271,9 @@ G_M61974_IG17: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byr
ldr lr, [sp+0x20] // [V11 loc9]
add lr, lr, 1
str lr, [sp+0x20] // [V11 loc9]
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
; gcrRegs +[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
b SHORT G_M61974_IG14
;; size=20 bbWeight=16 PerfScore 112.00
@@ -294,7 +294,7 @@ G_M61974_IG19: ; bbWeight=2, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b
ble SHORT G_M61974_IG22
str lr, [sp+0x28] // [V06 loc4]
str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
;; size=40 bbWeight=2 PerfScore 26.00
G_M61974_IG20: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
@@ -317,7 +317,7 @@ G_M61974_IG21: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}
G_M61974_IG22: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
b SHORT G_M61974_IG20
;; size=6 bbWeight=1 PerfScore 3.00
@@ -333,21 +333,20 @@ G_M61974_IG23: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}
str r1, [r5+0x0C]
str lr, [r5+0x10]
movs r7, 1
+ str r7, [sp+0x2C] // [V05 loc3]
mov r12, 2
cmp r4, 2
- str r7, [sp+0x2C] // [V05 loc3]
ble G_M61974_IG06
;; size=42 bbWeight=8 PerfScore 120.00
G_M61974_IG24: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
ldr lr, [r0+0x04]
- str lr, [sp+0x1C] // [V43 cse14]
cmp lr, r4
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
add r1, r0, 8
; byrRegs +[r1]
- ;; size=20 bbWeight=4 PerfScore 28.00
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M61974_IG25: ; bbWeight=63.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r0]
lsl r2, r12, 2
@@ -362,7 +361,7 @@ G_M61974_IG26: ; bbWeight=31.68, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {
ldr r8, [r5+0x08]
mov r9, 0
cmp r12, 0
- blt SHORT G_M61974_IG32
+ blt SHORT G_M61974_IG33
;; size=18 bbWeight=31.68 PerfScore 158.40
G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz
cmp r3, r12
@@ -372,47 +371,52 @@ G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r
;; size=8 bbWeight=3.96 PerfScore 11.88
G_M61974_IG28: ; bbWeight=62.73, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz
; gcrRegs -[r6]
- add lr, r9, 1
- cmp lr, r3
+ add r6, r9, 1
+ cmp r6, r3
bhs G_M61974_IG44
lsl r9, r9, 2
- add r6, r9, 4
- ldr r6, [r0+r6]
- str r6, [r0+r9]
- mov r9, lr
+ add r7, r9, 4
+ ldr r7, [r0+r7]
+ str r7, [r0+r9]
+ mov r9, r6
cmp r9, r12
ble SHORT G_M61974_IG28
;; size=30 bbWeight=62.73 PerfScore 627.26
G_M61974_IG29: ; bbWeight=31.68, gcrefRegs=0020 {r5}, byrefRegs=0002 {r1}, byref, isz
; byrRegs -[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
- b SHORT G_M61974_IG32
+ b SHORT G_M61974_IG33
;; size=4 bbWeight=31.68 PerfScore 63.36
G_M61974_IG30: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref
add r0, r5, 8
; byrRegs +[r0]
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0060 {r5 r6}, byrefRegs=0003 {r0 r1}, byref, isz
- add lr, r9, 1
- str lr, [sp+0x08] // [V48 cse19]
- cmp lr, r3
- bhs G_M61974_IG44
- lsl lr, r9, 2
- str lr, [sp+0x0C] // [V47 cse18]
- add lr, lr, 4
- ldr lr, [r0+lr]
+G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz
+ ; gcrRegs -[r6]
+ add r6, r9, 1
+ str r6, [sp+0x0C] // [V48 cse19]
+ cmp r6, r3
...
-28 (-1.61%) : 12745.dasm - System.Text.RegularExpressions.Generated.FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952_Regex13+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
@@ -8,151 +8,151 @@
; 0 inlinees with PGO data; 44 single block inlinees; 32 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 54,214.25) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
-; V01 arg1 [V01,T80] ( 4, 4 ) struct ( 8) [sp+0x88] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T01] ( 49,130.50) int -> [sp+0x5C]
-; V03 loc1 [V03,T84] ( 6, 5 ) int -> [sp+0x58] spill-single-def
-; V04 loc2 [V04,T60] ( 4, 14 ) int -> r8
-; V05 loc3 [V05,T48] ( 5, 13 ) int -> [sp+0x54]
-; V06 loc4 [V06,T18] ( 2, 32.50) int -> [sp+0x50] spill-single-def
-; V07 loc5 [V07,T26] ( 7, 24.50) int -> [sp+0x4C]
-; V08 loc6 [V08,T62] ( 5, 13 ) int -> [sp+0x48]
-; V09 loc7 [V09,T30] ( 7, 27 ) int -> [sp+0x44]
-; V10 loc8 [V10 ] ( 9, 23 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 53,156.75) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
+; V01 arg1 [V01,T70] ( 4, 4 ) struct ( 8) [sp+0x78] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 loc0 [V02,T01] ( 49,123.50) int -> [sp+0x4C]
+; V03 loc1 [V03,T75] ( 6, 5 ) int -> [sp+0x48] spill-single-def
+; V04 loc2 [V04,T47] ( 4, 14 ) int -> r8
+; V05 loc3 [V05,T58] ( 5, 6 ) int -> r10
+; V06 loc4 [V06,T78] ( 2, 4.50) int -> [sp+0x44] spill-single-def
+; V07 loc5 [V07,T68] ( 7, 3.50) int -> [sp+0x40]
+; V08 loc6 [V08,T91] ( 5, 2.50) int -> [sp+0x3C]
+; V09 loc7 [V09,T22] ( 7, 27 ) int -> [sp+0x38]
+; V10 loc8 [V10 ] ( 9, 23 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed ld-addr-op
;* V11 loc9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V12 loc10 [V12,T23] ( 8, 30 ) int -> r7
-; V13 loc11 [V13,T47] ( 4, 18 ) int -> r7
-; V14 loc12 [V14,T61] ( 4, 14 ) int -> r8
-; V15 loc13 [V15,T24] ( 8, 30 ) int -> [sp+0x3C]
-; V16 loc14 [V16,T25] ( 8, 30 ) int -> [sp+0x38]
+; V12 loc10 [V12,T38] ( 8, 16 ) int -> r7
+; V13 loc11 [V13,T35] ( 4, 18 ) int -> r7
+; V14 loc12 [V14,T48] ( 4, 14 ) int -> r8
+; V15 loc13 [V15,T16] ( 8, 30 ) int -> [sp+0x30]
+; V16 loc14 [V16,T17] ( 8, 30 ) int -> [sp+0x2C]
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V18 tmp1 [V18,T15] ( 3, 36 ) byref -> r0 "impAppendStmt"
+; V18 tmp1 [V18,T10] ( 3, 36 ) byref -> r0 "impAppendStmt"
;* V19 tmp2 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V20 tmp3 [V20,T92] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V21 tmp4 [V21,T73] ( 2, 8 ) int -> lr "dup spill"
-; V22 tmp5 [V22,T50] ( 4, 16 ) int -> r2 "dup spill"
-; V23 tmp6 [V23,T63] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
-; V24 tmp7 [V24,T51] ( 4, 16 ) int -> r3 "dup spill"
-; V25 tmp8 [V25,T64] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+;* V20 tmp3 [V20,T85] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V21 tmp4 [V21,T63] ( 2, 8 ) int -> lr "dup spill"
+; V22 tmp5 [V22,T39] ( 4, 16 ) int -> r2 "dup spill"
+; V23 tmp6 [V23,T49] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
+; V24 tmp7 [V24,T40] ( 4, 16 ) int -> r3 "dup spill"
+; V25 tmp8 [V25,T50] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V26 tmp9 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp10 [V27,T49] ( 3, 17 ) int -> r0 "dup spill"
+; V27 tmp10 [V27,T88] ( 3, 3 ) int -> r0 "dup spill"
;* V28 tmp11 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V29 tmp12 [V29,T82] ( 3, 6 ) int -> r10 "Inlining Arg"
-; V30 tmp13 [V30,T89] ( 2, 4 ) byref -> r9 single-def "Inlining Arg"
-; V31 tmp14 [V31,T43] ( 5, 22 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp15 [V32,T44] ( 5, 22 ) int -> r3 "Inline stloc first use temp"
-; V33 tmp16 [V33,T36] ( 3, 24 ) int -> r2 "Inlining Arg"
+; V29 tmp12 [V29,T72] ( 3, 6 ) int -> r10 "Inlining Arg"
+; V30 tmp13 [V30,T82] ( 2, 4 ) byref -> r9 single-def "Inlining Arg"
+; V31 tmp14 [V31,T32] ( 5, 22 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V32 tmp15 [V32,T33] ( 5, 22 ) int -> r3 "Inline stloc first use temp"
+; V33 tmp16 [V33,T27] ( 3, 24 ) int -> r2 "Inlining Arg"
;* V34 tmp17 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp18 [V35,T08] ( 6, 44 ) int -> r10 "Inlining Arg"
-; V36 tmp19 [V36,T31] ( 3, 24 ) byref -> r9 "Inlining Arg"
+; V35 tmp18 [V35,T05] ( 6, 44 ) int -> r10 "Inlining Arg"
+; V36 tmp19 [V36,T23] ( 3, 24 ) byref -> r9 "Inlining Arg"
;* V37 tmp20 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V38 tmp21 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V39 tmp22 [V39,T76] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V39 tmp22 [V39,T65] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V40 tmp23 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V41 tmp24 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp25 [V42 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V43 tmp26 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp27 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V45 tmp28 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V46 tmp29 [V46,T37] ( 3, 24 ) int -> r10 "Inlining Arg"
-; V47 tmp30 [V47,T55] ( 2, 16 ) byref -> r9 "Inlining Arg"
-; V48 tmp31 [V48,T27] ( 4, 28 ) int -> [sp+0x34] "Inlining Arg"
-; V49 tmp32 [V49,T12] ( 5, 36 ) int -> [sp+0x30] "Inlining Arg"
+; V46 tmp29 [V46,T28] ( 3, 24 ) int -> r10 "Inlining Arg"
+; V47 tmp30 [V47,T44] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V48 tmp31 [V48,T19] ( 4, 28 ) int -> [sp+0x28] "Inlining Arg"
+; V49 tmp32 [V49,T07] ( 5, 36 ) int -> [sp+0x24] "Inlining Arg"
;* V50 tmp33 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V51 tmp34 [V51,T52] ( 4, 16 ) int -> lr "Inline stloc first use temp"
-; V52 tmp35 [V52,T32] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V51 tmp34 [V51,T41] ( 4, 16 ) int -> lr "Inline stloc first use temp"
+; V52 tmp35 [V52,T24] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V53 tmp36 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp37 [V54,T38] ( 3, 24 ) int -> r10 "Inlining Arg"
-; V55 tmp38 [V55,T56] ( 2, 16 ) byref -> r9 "Inlining Arg"
-; V56 tmp39 [V56,T28] ( 4, 28 ) int -> [sp+0x2C] "Inlining Arg"
-; V57 tmp40 [V57,T13] ( 5, 36 ) int -> [sp+0x28] "Inlining Arg"
+; V54 tmp37 [V54,T29] ( 3, 24 ) int -> r10 "Inlining Arg"
+; V55 tmp38 [V55,T45] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V56 tmp39 [V56,T20] ( 4, 28 ) int -> [sp+0x20] "Inlining Arg"
+; V57 tmp40 [V57,T08] ( 5, 36 ) int -> [sp+0x1C] "Inlining Arg"
;* V58 tmp41 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V59 tmp42 [V59,T53] ( 4, 16 ) int -> r1 "Inline stloc first use temp"
-; V60 tmp43 [V60,T33] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
-; V61 tmp44 [V61,T83] ( 3, 6 ) int -> r0 "Inline stloc first use temp"
-; V62 tmp45 [V62,T69] ( 4, 8 ) int -> r3 "Inline stloc first use temp"
-; V63 tmp46 [V63,T65] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V59 tmp42 [V59,T42] ( 4, 16 ) int -> r1 "Inline stloc first use temp"
+; V60 tmp43 [V60,T25] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V61 tmp44 [V61,T73] ( 3, 6 ) int -> r0 "Inline stloc first use temp"
+; V62 tmp45 [V62,T59] ( 4, 8 ) int -> r3 "Inline stloc first use temp"
+; V63 tmp46 [V63,T51] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V64 tmp47 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V65 tmp48 [V65,T66] ( 3, 12 ) byref -> r0 "dup spill"
-; V66 tmp49 [V66,T16] ( 2, 36 ) int -> r3 "Inlining Arg"
-; V67 tmp50 [V67,T39] ( 3, 24 ) int -> r0 "Inline stloc first use temp"
-; V68 tmp51 [V68,T20] ( 4, 32 ) int -> r1 "Inline stloc first use temp"
+; V65 tmp48 [V65,T52] ( 3, 12 ) byref -> r0 "dup spill"
+; V66 tmp49 [V66,T11] ( 2, 36 ) int -> r3 "Inlining Arg"
+; V67 tmp50 [V67,T30] ( 3, 24 ) int -> r0 "Inline stloc first use temp"
+; V68 tmp51 [V68,T14] ( 4, 32 ) int -> r1 "Inline stloc first use temp"
; V69 tmp52 [V69,T02] ( 3, 48 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V70 tmp53 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
; V71 tmp54 [V71,T03] ( 3, 48 ) byref -> r0 "dup spill"
;* V72 tmp55 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V73 tmp56 [V73,T68] ( 3, 12 ) int -> r10 "Inlining Arg"
-; V74 tmp57 [V74,T70] ( 2, 8 ) byref -> r9 "Inlining Arg"
+; V73 tmp56 [V73,T57] ( 3, 12 ) int -> r10 "Inlining Arg"
+; V74 tmp57 [V74,T61] ( 2, 8 ) byref -> r9 "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V76 tmp59 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V77 tmp60 [V77,T77] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V77 tmp60 [V77,T66] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V78 tmp61 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp62 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V80 tmp63 [V80 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V82 tmp65 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V83 tmp66 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V84 tmp67 [V84,T40] ( 3, 24 ) int -> r10 "Inlining Arg"
-; V85 tmp68 [V85,T57] ( 2, 16 ) byref -> r9 "Inlining Arg"
-; V86 tmp69 [V86,T29] ( 4, 28 ) int -> [sp+0x24] "Inlining Arg"
-; V87 tmp70 [V87,T14] ( 5, 36 ) int -> [sp+0x20] "Inlining Arg"
+; V84 tmp67 [V84,T31] ( 3, 24 ) int -> r10 "Inlining Arg"
+; V85 tmp68 [V85,T46] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V86 tmp69 [V86,T21] ( 4, 28 ) int -> [sp+0x18] "Inlining Arg"
+; V87 tmp70 [V87,T09] ( 5, 36 ) int -> [sp+0x14] "Inlining Arg"
;* V88 tmp71 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V89 tmp72 [V89,T54] ( 4, 16 ) int -> r1 "Inline stloc first use temp"
-; V90 tmp73 [V90,T34] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V89 tmp72 [V89,T43] ( 4, 16 ) int -> r1 "Inline stloc first use temp"
+; V90 tmp73 [V90,T26] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V91 tmp74 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V92 tmp75 [V92,T09] ( 6, 44 ) int -> r9 "Inlining Arg"
-; V93 tmp76 [V93,T35] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V92 tmp75 [V92,T18] ( 6, 30 ) int -> r9 "Inlining Arg"
+; V93 tmp76 [V93,T37] ( 3, 17 ) byref -> r8 "Inlining Arg"
;* V94 tmp77 [V94 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V95 tmp78 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V96 tmp79 [V96,T78] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V96 tmp79 [V96,T67] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V97 tmp80 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V98 tmp81 [V98 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V99 tmp82 [V99 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V101 tmp84 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V102 tmp85 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V103 tmp86 [V103,T41] ( 3, 24 ) int -> r9 "Inlining Arg"
-; V104 tmp87 [V104,T58] ( 2, 16 ) byref -> r8 "Inlining Arg"
-; V105 tmp88 [V105,T42] ( 3, 24 ) int -> r3 "Inline stloc first use temp"
-; V106 tmp89 [V106,T21] ( 4, 32 ) int -> r2 "Inline stloc first use temp"
-; V107 tmp90 [V107,T04] ( 3, 48 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
+; V103 tmp86 [V103,T89] ( 3, 3 ) int -> r9 "Inlining Arg"
+; V104 tmp87 [V104,T94] ( 2, 2 ) byref -> r8 "Inlining Arg"
+; V105 tmp88 [V105,T74] ( 3, 6 ) int -> r3 "Inline stloc first use temp"
+; V106 tmp89 [V106,T60] ( 4, 8 ) int -> r2 "Inline stloc first use temp"
+; V107 tmp90 [V107,T53] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
;* V108 tmp91 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V109 tmp92 [V109,T05] ( 3, 48 ) byref -> r3 "dup spill"
-; V110 tmp93 [V110,T22] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V109 tmp92 [V109,T54] ( 3, 12 ) byref -> r3 "dup spill"
+; V110 tmp93 [V110,T79] ( 4, 4 ) int -> r9 "Inlining Arg"
;* V111 tmp94 [V111 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V112 tmp95 [V112,T59] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V112 tmp95 [V112,T95] ( 2, 2 ) byref -> r8 "Inlining Arg"
;* V113 tmp96 [V113 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V114 tmp97 [V114 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V115 tmp98 [V115,T79] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V115 tmp98 [V115,T104] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V116 tmp99 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V117 tmp100 [V117 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V118 tmp101 [V118 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V119 tmp102 [V119 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V120 tmp103 [V120 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V121 tmp104 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V122 tmp105 [V122,T95] ( 3, 3 ) int -> [sp+0x1C] spill-single-def "Inlining Arg"
-; V123 tmp106 [V123,T98] ( 2, 2 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
-; V124 tmp107 [V124,T87] ( 4, 4 ) int -> [sp+0x18] "Inlining Arg"
-; V125 tmp108 [V125,T85] ( 5, 5 ) int -> [sp+0x14] "Inlining Arg"
+; V122 tmp105 [V122,T90] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V123 tmp106 [V123,T96] ( 2, 2 ) byref -> [sp+0x00] spill-single-def "Inlining Arg"
+; V124 tmp107 [V124,T80] ( 4, 4 ) int -> [sp+0x0C] "Inlining Arg"
+; V125 tmp108 [V125,T76] ( 5, 5 ) int -> [sp+0x08] "Inlining Arg"
;* V126 tmp109 [V126 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V127 tmp110 [V127,T96] ( 4, 2 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp"
-; V128 tmp111 [V128,T93] ( 3, 3 ) ref -> [sp+0x08] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V127 tmp110 [V127,T92] ( 4, 2 ) int -> [sp+0x04] spill-single-def "Inline stloc first use temp"
+; V128 tmp111 [V128,T86] ( 3, 3 ) ref -> r1 class-hnd "impAppendStmt" <<unknown class>>
;* V129 tmp112 [V129 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V130 tmp113 [V130 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V131 tmp114 [V131 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V132 tmp115 [V132,T88] ( 4, 4 ) int -> r6 "Inlining Arg"
-; V133 tmp116 [V133,T86] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V132 tmp115 [V132,T81] ( 4, 4 ) int -> r6 "Inlining Arg"
+; V133 tmp116 [V133,T77] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V134 tmp117 [V134 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V135 tmp118 [V135,T97] ( 4, 2 ) int -> r0 "Inline stloc first use temp"
-; V136 tmp119 [V136,T94] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V137 tmp120 [V137,T45] ( 10, 21.50) byref -> registers "field V11._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp121 [V138,T17] ( 13, 35 ) int -> registers "field V11._length (fldOffset=0x4)" P-INDEP
+; V135 tmp118 [V135,T93] ( 4, 2 ) int -> r0 "Inline stloc first use temp"
+; V136 tmp119 [V136,T87] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V137 tmp120 [V137,T34] ( 10, 18 ) byref -> registers "field V11._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp121 [V138,T15] ( 13, 31.50) int -> registers "field V11._length (fldOffset=0x4)" P-INDEP
;* V139 tmp122 [V139 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp123 [V140 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
;* V141 tmp124 [V141 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp125 [V142 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V143 tmp126 [V143,T99] ( 2, 2 ) byref -> r9 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp127 [V144,T100] ( 2, 2 ) int -> r10 "field V28._length (fldOffset=0x4)" P-INDEP
+; V143 tmp126 [V143,T97] ( 2, 2 ) byref -> r9 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp127 [V144,T98] ( 2, 2 ) int -> r10 "field V28._length (fldOffset=0x4)" P-INDEP
;* V145 tmp128 [V145 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp129 [V146 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP
;* V147 tmp130 [V147 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
@@ -163,10 +163,10 @@
;* V152 tmp135 [V152 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x4)" P-INDEP
;* V153 tmp136 [V153 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V154 tmp137 [V154 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP
-; V155 tmp138 [V155,T71] ( 2, 8 ) byref -> r9 "field V53._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp139 [V156,T74] ( 2, 8 ) int -> r10 "field V53._length (fldOffset=0x4)" P-INDEP
-; V157 tmp140 [V157,T90] ( 2, 4 ) byref -> r9 "field V72._reference (fldOffset=0x0)" P-INDEP
-; V158 tmp141 [V158,T91] ( 2, 4 ) int -> r10 "field V72._length (fldOffset=0x4)" P-INDEP
+; V155 tmp138 [V155,T62] ( 2, 8 ) byref -> r9 "field V53._reference (fldOffset=0x0)" P-INDEP
+; V156 tmp139 [V156,T64] ( 2, 8 ) int -> r10 "field V53._length (fldOffset=0x4)" P-INDEP
+; V157 tmp140 [V157,T83] ( 2, 4 ) byref -> r9 "field V72._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp141 [V158,T84] ( 2, 4 ) int -> r10 "field V72._length (fldOffset=0x4)" P-INDEP
...
-6 (-1.59%) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2
; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr
@@ -30,7 +30,7 @@
;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.50) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 7 ) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,14 +70,15 @@ G_M43427_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
bne SHORT G_M43427_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -92,28 +93,24 @@ G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
G_M43427_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq SHORT G_M43427_IG09
+ beq SHORT G_M43427_IG08
;; size=6 bbWeight=1 PerfScore 3.00
G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M43427_IG06
movs r0, 0
b SHORT G_M43427_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M43427_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- bne SHORT G_M43427_IG10
+ bne SHORT G_M43427_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- str r8, [sp+0x4C]
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M43427_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -123,148 +120,147 @@ G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
- ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M43427_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M43427_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M43427_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r7
- b SHORT G_M43427_IG13
+G_M43427_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r8
+ b SHORT G_M43427_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r6
+G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x3C] // [V01 arg1]
+G_M43427_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x3C]
; byrRegs +[r3]
str r3, [sp+0x14] // [V07 loc2]
ldr r1, [sp+0x44] // [V02 arg2]
; byrRegs +[r1]
str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2
subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1
sub lr, lr, 2
cmp r0, 0
- beq SHORT G_M43427_IG15
+ beq SHORT G_M43427_IG14
;; size=28 bbWeight=1 PerfScore 12.00
-G_M43427_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3]
ldrh r12, [r2]
ldrh r9, [lr]
cmp r12, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
cmp r9, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r12]
cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r9]
cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2
sub lr, lr, 2
subs r0, r0, 1
cmp r0, 0
- bne SHORT G_M43427_IG14
+ bne SHORT G_M43427_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M43427_IG20
+G_M43427_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ bge SHORT G_M43427_IG19
ldrh r2, [lr]
cmp r2, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw lr, 0xd1ff
movt lr, 0xd1ff
ldrb r0, [lr+r2]
cmp r0, 0
- bne SHORT G_M43427_IG24
- b SHORT G_M43427_IG18
+ bne SHORT G_M43427_IG23
+ b SHORT G_M43427_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r0, [r2-0x02]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
- bls SHORT G_M43427_IG18
+ bls SHORT G_M43427_IG17
ldrh r0, [lr-0x02]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43427_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7
- ble SHORT G_M43427_IG21
+ cmp r7, r8
+ ble SHORT G_M43427_IG20
ldrh r0, [r2]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
...
+8 (+1.90%) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 34,131.50) byref -> r4 this single-def
-; V01 arg1 [V01,T13] ( 8, 5 ) byref -> r6 single-def
-; V02 arg2 [V02,T10] ( 9, 13 ) byref -> r5 single-def
-; V03 arg3 [V03,T14] ( 4, 3 ) ref -> r7 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T12] ( 3, 12 ) int -> r2
-; V05 loc1 [V05,T19] ( 3, 1.50) int -> r3
-; V06 loc2 [V06,T04] ( 9, 37.50) int -> r8
-; V07 loc3 [V07,T22] ( 2, 1 ) int -> r8
-; V08 loc4 [V08,T23] ( 2, 1 ) ushort -> r9
+; V00 this [V00,T00] ( 34, 56.50) byref -> r4 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> r6 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> r5 single-def
+; V03 arg3 [V03,T11] ( 4, 3 ) ref -> r7 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> r2
+; V05 loc1 [V05,T18] ( 3, 1.75) int -> r3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> r9
+; V07 loc3 [V07,T23] ( 2, 1 ) int -> r8
+; V08 loc4 [V08,T24] ( 2, 1 ) ushort -> r9
; V09 loc5 [V09 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V10 loc6 [V10 ] ( 2, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> r0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> r3 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T09] ( 3, 24 ) int -> r2 "Span.get_Item index"
-; V16 tmp5 [V16,T08] ( 3, 24 ) byref -> r0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T18] ( 3, 3 ) int -> r2 "Span.get_Item index"
-; V18 tmp7 [V18,T17] ( 3, 3 ) byref -> r3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> r0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> r10 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> r2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> r0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T16] ( 3, 3 ) int -> r2 "Span.get_Item index"
+; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> r3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T16] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
-; V21 tmp10 [V21,T07] ( 4, 24 ) ushort -> r0 "Inlining Arg"
+; V20 tmp9 [V20,T25] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V21 tmp10 [V21,T12] ( 4, 4 ) ushort -> r0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -37,8 +37,8 @@
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V29 tmp18 [V29,T06] ( 2, 32 ) ubyte -> r0 "Inline return value spill temp"
-; V30 tmp19 [V30,T01] ( 4,128 ) ushort -> r0 "Inlining Arg"
+; V29 tmp18 [V29,T14] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
+; V30 tmp19 [V30,T04] ( 4, 16 ) ushort -> r0 "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp21 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp22 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,7 +56,7 @@
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP
;* V46 tmp35 [V46 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp36 [V47 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V48 tmp37 [V48,T15] ( 2, 4 ) byref -> r3 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp37 [V48,T22] ( 2, 1 ) byref -> r3 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp38 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
;* V50 tmp39 [V50 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
@@ -68,18 +68,20 @@
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP
;* V58 tmp47 [V58 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP
-; V60 tmp49 [V60,T05] ( 2, 32 ) byref -> r3 "field V37._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp49 [V60,T13] ( 2, 4 ) byref -> r3 "field V37._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp50 [V61 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP
-; V62 cse0 [V62,T20] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V63 cse1 [V63,T11] ( 4, 12.50) int -> r0 "CSE - moderate"
-; V64 cse2 [V64,T21] ( 3, 1.50) int -> r2 "CSE - conservative"
+; V62 cse0 [V62,T17] ( 3, 2 ) int -> r2 "CSE - moderate"
+; V63 cse1 [V63,T19] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V64 cse2 [V64,T20] ( 3, 1.50) int -> r0 "CSE - moderate"
+; V65 cse3 [V65,T21] ( 3, 1.50) int -> r2 "CSE - moderate"
+; V66 cse4 [V66,T09] ( 6, 9.25) byref -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 16
- add r11, sp, 40
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 20
+ add r11, sp, 48
mov r4, r0
; byrRegs +[r4]
mov r6, r1
@@ -95,104 +97,105 @@ G_M44776_IG02: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r
ldr r0, [r4+0x04]
ldr r3, [r4+0x10]
cmp r0, r3
- bge SHORT G_M44776_IG12
+ bge SHORT G_M44776_IG10
;; size=12 bbWeight=1 PerfScore 6.00
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldrh r0, [r4+0x08]
- sub r3, r0, 48
- cmp r3, 9
- bls SHORT G_M44776_IG13
+ sub r8, r0, 48
+ cmp r8, 9
+ bls SHORT G_M44776_IG11
cmp r0, 256
- blo SHORT G_M44776_IG06
- ;; size=16 bbWeight=4 PerfScore 24.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ blo SHORT G_M44776_IG05
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M44776_IG11
- ;; size=16 bbWeight=2 PerfScore 12.00
-G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ bne SHORT G_M44776_IG09
+ ;; size=34 bbWeight=0.50 PerfScore 6.00
+G_M44776_IG04: ; bbWeight=0.25, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
b SHORT G_M44776_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG06: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldrb r0, [r3+r0]
ands r0, r0, 128
cmp r0, 0
- bne SHORT G_M44776_IG11
- ;; size=18 bbWeight=2 PerfScore 12.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ bne SHORT G_M44776_IG09
b SHORT G_M44776_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 3.50
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldr r0, [r4+0x04]
- add r3, r4, 12
- ; byrRegs +[r3]
- ldr r2, [r3+0x04]
- cmp r0, r2
+ add r10, r4, 12
+ ; byrRegs +[r10]
+ ldr r3, [r10+0x04]
+ cmp r0, r3
bhs G_M44776_IG22
- ldr r3, [r3]
+ ldr r3, [r10]
+ ; byrRegs +[r3]
lsls r0, r0, 1
ldrh r0, [r3+r0]
strh r0, [r4+0x08]
ldrh r0, [r4+0x08]
cmp r0, 256
- blo SHORT G_M44776_IG10
+ blo SHORT G_M44776_IG08
movw r3, 0xd1ff
; byrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ ; byrRegs -[r10]
; gcr arg pop 0
cmp r0, 0
beq SHORT G_M44776_IG03
- ;; size=46 bbWeight=16 PerfScore 288.00
-G_M44776_IG09: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
- b SHORT G_M44776_IG11
+ ;; size=50 bbWeight=2 PerfScore 36.00
+G_M44776_IG07: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ b SHORT G_M44776_IG09
;; size=2 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldrb r0, [r3+r0]
ands r0, r0, 128
cmp r0, 0
beq SHORT G_M44776_IG03
- ;; size=18 bbWeight=16 PerfScore 96.00
-G_M44776_IG11: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=18 bbWeight=2 PerfScore 12.00
+G_M44776_IG09: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldr r0, [r4+0x04]
- add r8, r0, 1
- str r8, [r4+0x04]
+ add r9, r0, 1
+ str r9, [r4+0x04]
ldr r0, [r4+0x10]
- cmp r8, r0
- blt SHORT G_M44776_IG08
- ;; size=16 bbWeight=8 PerfScore 48.00
-G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
+ cmp r9, r0
+ blt SHORT G_M44776_IG06
+ ;; size=16 bbWeight=4 PerfScore 24.00
+G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r7]
; byrRegs -[r4-r5]
movs r2, 6
str r2, [r6]
b SHORT G_M44776_IG21
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
; gcrRegs +[r7]
; byrRegs +[r4-r5]
- sub r2, r0, 48
- str r2, [r5]
+ str r8, [r5]
ldr r2, [r4+0x04]
mov r3, r2
- add r8, r2, 1
- str r8, [r4+0x04]
+ add r9, r2, 1
+ str r9, [r4+0x04]
ldr r2, [r4+0x10]
- cmp r8, r2
- bge SHORT G_M44776_IG15
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M44776_IG14: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ cmp r9, r2
+ bge SHORT G_M44776_IG14
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
+G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref
+ add r10, r4, 12
+ ; byrRegs +[r10]
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M44776_IG13: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0470 {r4 r5 r6 r10}, byref, isz
ldr r2, [r4+0x04]
- add r0, r4, 12
+ mov r0, r10
; byrRegs +[r0]
ldr r1, [r0+0x04]
cmp r2, r1
@@ -204,7 +207,7 @@ G_M44776_IG14: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r
ldrh r2, [r4+0x08]
subs r2, 48
...
+46 (+2.85%) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
@@ -10,33 +10,33 @@
;
; V00 this [V00,T19] ( 16, 27 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder>
; V01 arg1 [V01,T31] ( 9, 8.50) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator>
-; V02 loc0 [V02,T34] ( 4, 6.50) ref -> [sp+0x38] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
-; V03 loc1 [V03,T10] ( 9, 33 ) int -> [sp+0x94]
-; V04 loc2 [V04,T21] ( 9, 22.16) ref -> [sp+0x34] class-hnd spill-single-def <int[]>
-; V05 loc3 [V05,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]>
-; V06 loc4 [V06,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]>
-; V07 loc5 [V07,T24] ( 6, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <System.Type[]>
-; V08 loc6 [V08,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <int[]>
-; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x90] spill-single-def
-; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x8C] spill-single-def
-; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x88] spill-single-def
-; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x20] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc0 [V02,T35] ( 4, 6.50) ref -> [sp+0x34] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V03 loc1 [V03,T10] ( 9, 33 ) int -> registers
+; V04 loc2 [V04,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]>
+; V05 loc3 [V05,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]>
+; V06 loc4 [V06,T24] ( 9, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <int[]>
+; V07 loc5 [V07,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <System.Type[]>
+; V08 loc6 [V08,T26] ( 6, 22.16) ref -> [sp+0x20] class-hnd spill-single-def <int[]>
+; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x8C] spill-single-def
+; V10 loc8 [V10,T27] ( 5, 20 ) int -> [sp+0x88] spill-single-def
+; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x84] spill-single-def
+; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>>
; V13 loc11 [V13,T36] ( 3, 2.50) int -> r0
-; V14 loc12 [V14,T27] ( 5, 16.50) int -> [sp+0x84]
-; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x80]
+; V14 loc12 [V14,T21] ( 5, 28.26) int -> [sp+0x80]
+; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x7C]
; V16 loc14 [V16,T07] ( 8, 40 ) int -> lr
;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref
; V18 OutArgs [V18 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V19 tmp1 [V19,T02] ( 8, 64 ) int -> registers "impSpillLclRefs"
; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
-; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x64] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V22 tmp4 [V22,T03] ( 8, 64 ) int -> r6 "impSpillLclRefs"
-; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x44] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
; V25 tmp7 [V25,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp8 [V26,T41] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp9 [V27,T42] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp10 [V28,T33] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V28 tmp10 [V28,T34] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
; V29 tmp11 [V29,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -48,10 +48,10 @@
;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
-; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> registers class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
; V41 tmp23 [V41,T12] ( 4, 32 ) int -> registers "argument with side effect"
-; V42 tmp24 [V42,T13] ( 4, 32 ) int -> registers "argument with side effect"
-; V43 tmp25 [V43,T14] ( 4, 32 ) int -> registers "argument with side effect"
+; V42 tmp24 [V42,T13] ( 4, 32 ) int -> r1 "argument with side effect"
+; V43 tmp25 [V43,T14] ( 4, 32 ) int -> r12 "argument with side effect"
; V44 tmp26 [V44,T15] ( 4, 32 ) int -> registers "argument with side effect"
; V45 tmp27 [V45,T16] ( 4, 32 ) int -> r1 "argument with side effect"
; V46 tmp28 [V46,T17] ( 4, 32 ) int -> registers "argument with side effect"
@@ -59,27 +59,27 @@
; V48 tmp30 [V48,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V49 tmp31 [V49,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V50 tmp32 [V50,T45] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x44] spill-single-def "CSE - conservative"
-; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r12 "CSE - conservative"
+; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x40] spill-single-def "CSE - conservative"
+; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r5 "CSE - conservative"
; V53 cse2 [V53,T09] ( 9, 36 ) ref -> r1 "CSE - aggressive"
-; V54 cse3 [V54,T04] ( 5, 63.36) int -> r8 "CSE - aggressive"
-; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r8 "CSE - aggressive"
-; V56 cse5 [V56,T00] ( 9, 95.04) int -> r7 "CSE - aggressive"
-; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
-; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x40] spill-single-def "CSE - moderate"
-; V59 cse8 [V59,T35] ( 3, 5 ) int -> [sp+0x3C] spill-single-def "CSE - moderate"
-; TEMP_02 byref -> [r11-0xA0]
-; TEMP_01 ref -> [r11-0xA4]
+; V54 cse3 [V54,T04] ( 5, 63.36) int -> r7 "CSE - aggressive"
+; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r7 "CSE - aggressive"
+; V56 cse5 [V56,T00] ( 9, 95.04) int -> r5 "CSE - aggressive"
+; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
+; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x3C] spill-single-def "CSE - moderate"
+; V59 cse8 [V59,T33] ( 3, 8.92) int -> [sp+0x38] spill-single-def "CSE - moderate"
+; TEMP_02 byref -> [r11-0x9C]
+; TEMP_01 ref -> [r11-0xA0]
;
-; Lcl frame size = 156
+; Lcl frame size = 148
G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 156
- add r11, sp, 184
+ sub sp, 148
+ add r11, sp, 176
movs r2, 0
- str r2, [sp+0x18] // [TEMP_02]
- str r2, [sp+0x14] // [TEMP_01]
+ str r2, [sp+0x14] // [TEMP_02]
+ str r2, [sp+0x10] // [TEMP_01]
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -87,11 +87,11 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 8.00
G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq G_M41336_IG37
+ beq G_M41336_IG31
movs r6, 0
ldr r7, [r4+0x08]
; gcrRegs +[r7]
- str r7, [sp+0x20] // [V12 loc10]
+ str r7, [sp+0x1C] // [V12 loc10]
; GC ptr vars +{V12}
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
@@ -104,7 +104,7 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcr arg pop 0
ldrb r0, [r4+0x58]
cmp r0, 0
- bne G_M41336_IG38
+ bne G_M41336_IG32
ldr r0, [r5+0x2C]
; gcrRegs +[r0]
cmp r0, r4
@@ -128,7 +128,7 @@ G_M41336_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r0, [r5+0x2C]
; gcrRegs +[r0]
cmp r0, 0
- bne G_M41336_IG39
+ bne G_M41336_IG33
;; size=8 bbWeight=0.50 PerfScore 1.50
G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -145,7 +145,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r0, [r0+0x14]
; gcrRegs -[r0]
cmp r0, 0
- bne G_M41336_IG40
+ bne G_M41336_IG34
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -153,11 +153,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 32
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -171,11 +171,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // System.Reflection.Emit.RuntimeILGenerator:GetTokenFixups():int[]:this
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 16
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -192,7 +192,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r5, r0
; gcrRegs +[r5]
- str r5, [sp+0x38] // [V02 loc0]
+ str r5, [sp+0x34] // [V02 loc0]
; GC ptr vars +{V02}
mov r0, r5
movw r3, 0xd1ff
@@ -202,7 +202,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=126 bbWeight=1 PerfScore 45.00
G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r1, r0
@@ -213,11 +213,11 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 36
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -226,222 +226,209 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; byrRegs -[r0]
mov r8, 0
ldr r9, [r5+0x04]
- str r9, [sp+0x3C] // [V59 cse8]
+ str r9, [sp+0x38] // [V59 cse8]
cmp r9, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=58 bbWeight=0.50 PerfScore 8.50
G_M41336_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
add r3, r5, 8
; byrRegs +[r3]
- str r3, [sp+0x1C] // [V57 cse6]
+ str r3, [sp+0x18] // [V57 cse6]
; GC ptr vars +{V57}
- str r8, [sp+0x84] // [V14 loc12]
lsl lr, r8, 2
- str lr, [sp+0x40] // [V58 cse7]
+ str lr, [sp+0x3C] // [V58 cse7]
ldr r1, [r3+lr]
; gcrRegs +[r1]
ldr r12, [r1+0x04]
; gcrRegs +[r12]
- str r12, [sp+0x34] // [V04 loc2]
+ str r12, [sp+0x30] // [V04 loc2]
; GC ptr vars +{V04}
ldr r2, [r1+0x08]
; gcrRegs +[r2]
- str r2, [sp+0x30] // [V05 loc3]
+ str r2, [sp+0x2C] // [V05 loc3]
; GC ptr vars +{V05}
ldr r0, [r1+0x0C]
; gcrRegs +[r0]
- str r0, [sp+0x2C] // [V06 loc4]
+ str r0, [sp+0x28] // [V06 loc4]
; GC ptr vars +{V06}
- ldr r9, [r1+0x14]
- ; gcrRegs +[r9]
- str r9, [sp+0x28] // [V07 loc5]
+ ldr r5, [r1+0x14]
+ str r5, [sp+0x24] // [V07 loc5]
...
+16 (+4.57%) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
@@ -8,184 +8,191 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
-; V01 arg1 [V01,T05] ( 4, 3 ) ref -> r4 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T06] ( 4, 3 ) ref -> r5 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T07] ( 4, 3 ) int -> r6 single-def
-; V04 arg4 [V04,T16] ( 2, 1 ) ref -> [sp+0x38] class-hnd single-def <System.Reflection.Binder>
-; V05 arg5 [V05,T15] ( 4, 1.79) ref -> r7 class-hnd single-def <System.Object[]>
-; V06 arg6 [V06,T17] ( 2, 1 ) ref -> [sp+0x40] class-hnd single-def <System.Globalization.CultureInfo>
-; V07 loc0 [V07,T12] ( 3, 2.50) ref -> r8 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
-; V08 loc1 [V08,T10] ( 8, 2.58) ref -> r2 class-hnd exact single-def <System.Object[]>
-; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x0C]
+; V00 this [V00,T09] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V01 arg1 [V01,T06] ( 4, 4.48) ref -> r4 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T07] ( 4, 4.48) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T08] ( 4, 4.48) int -> r6 single-def
+; V04 arg4 [V04,T14] ( 2, 2.48) ref -> r7 class-hnd single-def <System.Reflection.Binder>
+; V05 arg5 [V05,T17] ( 4, 1.79) ref -> r9 class-hnd single-def <System.Object[]>
+; V06 arg6 [V06,T15] ( 2, 2.48) ref -> r8 class-hnd single-def <System.Globalization.CultureInfo>
+; V07 loc0 [V07,T11] ( 3, 3.98) ref -> r10 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
+; V08 loc1 [V08,T05] ( 8, 7.02) ref -> r2 class-hnd exact single-def <System.Object[]>
+; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x14]
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> lr class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> r12 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V13 tmp3 [V13,T12] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp7 [V17,T20] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V18 cse0 [V18,T13] ( 3, 2.50) ref -> r0 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r10 "CSE - aggressive"
-; V20 cse2 [V20,T09] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive"
-; V21 cse3 [V21,T04] ( 6, 5.29) byref -> [sp+0x08] hoist multi-def "CSE - aggressive"
+; V19 cse1 [V19,T03] ( 8, 9.71) int -> [sp+0x10] spill-single-def "CSE - aggressive"
+; V20 cse2 [V20,T10] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive"
+; V21 cse3 [V21,T04] ( 6, 8.25) byref -> [sp+0x0C] hoist multi-def "CSE - aggressive"
; V22 cse4 [V22,T02] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V23 rat0 [V23,T14] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
+; V23 rat0 [V23,T16] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
+ sub sp, 28
+ add r11, sp, 56
mov r4, r1
; gcrRegs +[r4]
mov r5, r2
; gcrRegs +[r5]
mov r6, r3
- ldr r7, [sp+0x3C] // [V05 arg5]
+ ldr r7, [sp+0x40] // [V04 arg4]
; gcrRegs +[r7]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M50642_IG02: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [sp+0x44] // [V05 arg5]
+ ; gcrRegs +[r9]
+ ldr r8, [sp+0x48] // [V06 arg6]
+ ; gcrRegs +[r8]
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M50642_IG02: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r0, [r0+0x10]
cmp r0, 0
bne SHORT G_M50642_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movs r0, 0
b SHORT G_M50642_IG04
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- mov r8, r0
- ; gcrRegs +[r8]
- cmp r8, 0
- beq SHORT G_M50642_IG15
- cmp r7, 0
+ mov r10, r0
+ ; gcrRegs +[r10]
+ cmp r10, 0
+ beq G_M50642_IG16
+ cmp r9, 0
bne SHORT G_M50642_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs -[r7-r8]
- ldr r7, [sp+0x38] // [V04 arg4]
- ; gcrRegs +[r7]
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=01B1 {r0 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs -[r9-r10]
mov r3, r7
; gcrRegs +[r3]
- str r5, [sp+0x38] // [V04 arg4]
- ldr r9, [sp+0x40] // [V06 arg6]
- ; gcrRegs +[r9]
- str r9, [sp+0x3C] // [V04 arg4+0x04]
+ str r5, [sp+0x40]
+ str r8, [sp+0x44]
mov r1, r4
; gcrRegs +[r1]
mov r2, r6
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr r12, [lr]
- ;; size=30 bbWeight=0.50 PerfScore 5.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 20
+ add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
bx r12 // System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0-r1 r3 r9] +[r8]
- ldr r10, [r7+0x04]
- add r1, r10, 1
+G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=07B0 {r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0-r1 r3] +[r9-r10]
+ ldr r3, [r9+0x04]
+ str r3, [sp+0x10]
+ adds r1, r3, 1
movw r0, 0xd1ff
movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWARR_1_OBJ
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ blx r2 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0]
; gcr arg pop 0
mov r2, r0
; gcrRegs +[r2]
movs r1, 0
- cmp r10, 0
+ ldr r3, [sp+0x10] // [V19 cse1]
+ cmp r3, 0
ble SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 6.50
+G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [r2+0x04]
- cmp r0, r10
+ cmp r0, r3
blt SHORT G_M50642_IG11
- adds r7, 8
- ; gcrRegs -[r7]
- ; byrRegs +[r7]
- add r3, r2, 8
- ; byrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.25
-G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0088 {r3 r7}, byref, isz
- str r1, [sp+0x0C] // [V09 loc2]
+ add r9, r9, 8
+ ; gcrRegs -[r9]
+ ; byrRegs +[r9]
+ add lr, r2, 8
+ ; byrRegs +[lr]
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=4200 {r9 lr}, byref, isz
+ str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- ldr lr, [r7+r0]
- ; gcrRegs +[lr]
- str r3, [sp+0x08] // [V21 cse3]
+ ldr r12, [r9+r0]
+ ; gcrRegs +[r12]
+ str lr, [sp+0x0C] // [V21 cse3]
; GC ptr vars +{V21}
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
+ mov r1, r12
; gcrRegs +[r1]
movw r12, 0xd1ff
+ ; gcrRegs -[r12]
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 lr]
- ; byrRegs -[r0 r3]
- ldr r1, [sp+0x0C] // [V09 loc2]
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0 lr]
+ ldr r1, [sp+0x14] // [V09 loc2]
adds r1, r1, 1
- cmp r10, r1
- ldr r3, [sp+0x08] // [V21 cse3]
- ; byrRegs +[r3]
+ ldr r3, [sp+0x10] // [V19 cse1]
+ cmp r3, r1
+ ldr lr, [sp+0x0C] // [V21 cse3]
+ ; byrRegs +[lr]
bgt SHORT G_M50642_IG09
- ;; size=34 bbWeight=3.96 PerfScore 55.44
-G_M50642_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[r3 r7]
+ ;; size=40 bbWeight=3.96 PerfScore 59.40
+G_M50642_IG10: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[r9 lr]
; GC ptr vars -{V21}
+ ldr r3, [sp+0x10] // [V19 cse1]
b SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r7]
- add r0, r7, 8
+ ;; size=4 bbWeight=1.98 PerfScore 3.96
+G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r9]
+ add r0, r9, 8
; byrRegs +[r0]
- lsls r3, r1, 2
- ldr lr, [r0+r3]
- ; gcrRegs +[lr]
+ lsl lr, r1, 2
+ ldr r12, [r0+lr]
+ ; gcrRegs +[r12]
ldr r0, [r2+0x04]
; byrRegs -[r0]
cmp r1, r0
- bhs SHORT G_M50642_IG14
- add r3, r2, 8
- ; byrRegs +[r3]
- str r1, [sp+0x0C] // [V09 loc2]
+ bhs SHORT G_M50642_IG15
+ add lr, r2, 8
+ ; byrRegs +[lr]
+ str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
...
benchmarks.run_pgo.linux.arm.checked.mch
-6 (-1.55%) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
@@ -8,15 +8,15 @@
; 4 inlinees with PGO data; 17 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T18] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2
; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.75) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6.25) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.25) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 6.75) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,41 +70,41 @@ G_M43427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
- beq G_M43427_IG24
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
+ beq G_M43427_IG23
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq G_M43427_IG25
+ beq G_M43427_IG24
;; size=8 bbWeight=1 PerfScore 3.00
G_M43427_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M43427_IG05
movs r0, 0
b SHORT G_M43427_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- beq SHORT G_M43427_IG14
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M43427_IG24
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M43427_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M43427_IG15
+ cmp r7, r8
+ ble SHORT G_M43427_IG14
;; size=4 bbWeight=1 PerfScore 2.00
G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.25 PerfScore 0.25
G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x3C]
@@ -113,10 +113,10 @@ G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r1, [sp+0x44] // [V02 arg2]
; byrRegs +[r1]
str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2
subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1
sub lr, lr, 2
cmp r0, 0
@@ -127,21 +127,21 @@ G_M43427_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldrh r12, [r2]
ldrh r9, [lr]
cmp r12, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
cmp r9, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r12]
cmp r10, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r9]
cmp r10, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2
sub lr, lr, 2
subs r0, r0, 1
@@ -149,16 +149,16 @@ G_M43427_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
bne SHORT G_M43427_IG10
;; size=72 bbWeight=4 PerfScore 92.00
G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M43427_IG18
+ cmp r7, r8
+ bge SHORT G_M43427_IG17
ldrh r2, [lr]
cmp r2, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw lr, 0xd1ff
movt lr, 0xd1ff
ldrb r0, [lr+r2]
cmp r0, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
;; size=28 bbWeight=0.50 PerfScore 5.00
G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
@@ -172,76 +172,72 @@ G_M43427_IG13: ; bbWeight=0.50, epilog, nogc, extend
;; size=10 bbWeight=0.50 PerfScore 2.00
G_M43427_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3]
- b SHORT G_M43427_IG25
- ;; size=6 bbWeight=0.25 PerfScore 0.50
-G_M43427_IG15: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r6
+ mov r0, r7
b SHORT G_M43427_IG09
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r2, [r2-0x02]
cmp r2, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
bls SHORT G_M43427_IG12
ldrh r0, [lr-0x02]
cmp r0, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
b SHORT G_M43427_IG12
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M43427_IG19
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M43427_IG18
ldrh r0, [r2]
cmp r0, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M43427_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
cmp r5, 0
- beq SHORT G_M43427_IG20
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M43427_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M43427_IG19
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M43427_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG20: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43427_IG21: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r4]
- str r6, [sp] // [V17 OutArgs]
- str r8, [sp+0x04] // [V17 OutArgs+0x04]
+ str r7, [sp] // [V17 OutArgs]
+ str r6, [sp+0x04] // [V17 OutArgs+0x04]
str r5, [sp+0x08] // [V17 OutArgs+0x08]
ldr r0, [r4+0x10]
- mov r2, r7
+ mov r2, r8
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r4]
; gcr arg pop 0
- ;; size=26 bbWeight=0.50 PerfScore 4.50
-G_M43427_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M43427_IG22: ; bbWeight=1, epilog, nogc, extend
add sp, 24
...
-4 (-1.04%) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
@@ -8,15 +8,15 @@
; 3 inlinees with PGO data; 17 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2
; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr
@@ -30,7 +30,7 @@
;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.50) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6 ) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,41 +70,41 @@ G_M3596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M3596_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
- beq G_M3596_IG24
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
+ beq G_M3596_IG23
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M3596_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq G_M3596_IG25
+ beq G_M3596_IG24
;; size=8 bbWeight=1 PerfScore 3.00
G_M3596_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M3596_IG05
movs r0, 0
b SHORT G_M3596_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M3596_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3596_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- beq SHORT G_M3596_IG14
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M3596_IG24
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M3596_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M3596_IG15
+ cmp r7, r8
+ ble SHORT G_M3596_IG14
;; size=4 bbWeight=1 PerfScore 2.00
G_M3596_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3596_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x3C]
@@ -123,21 +123,21 @@ G_M3596_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldrh r12, [r2]
ldrh r9, [lr]
cmp r12, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
cmp r9, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r12]
cmp r10, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r9]
cmp r10, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
cmp r12, r9
- bne SHORT G_M3596_IG16
+ bne SHORT G_M3596_IG15
adds r2, r2, 2
add lr, lr, 2
subs r0, r0, 1
@@ -145,16 +145,16 @@ G_M3596_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
bne SHORT G_M3596_IG10
;; size=72 bbWeight=4 PerfScore 92.00
G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M3596_IG18
+ cmp r7, r8
+ bge SHORT G_M3596_IG17
ldrh r2, [lr]
cmp r2, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw lr, 0xd1ff
movt lr, 0xd1ff
ldrb r0, [lr+r2]
cmp r0, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
;; size=28 bbWeight=0.50 PerfScore 5.00
G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
@@ -166,84 +166,80 @@ G_M3596_IG13: ; bbWeight=0.50, epilog, nogc, extend
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3596_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3]
- b SHORT G_M3596_IG25
- ;; size=6 bbWeight=0.25 PerfScore 0.50
-G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r6
+ mov r0, r7
b SHORT G_M3596_IG09
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- lsls r0, r6, 1
+G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ lsls r0, r7, 1
adds r0, r3, r0
subs r0, r0, 2
cmp r0, r2
- bls SHORT G_M3596_IG17
+ bls SHORT G_M3596_IG16
ldrh r2, [r2+0x02]
cmp r2, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- lsls r0, r7, 1
+G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ lsl r0, r8, 1
adds r0, r1, r0
subs r0, r0, 2
cmp r0, lr
bls SHORT G_M3596_IG12
ldrh r0, [lr+0x02]
cmp r0, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
b SHORT G_M3596_IG12
- ;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M3596_IG19
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M3596_IG18
ldrh r0, [r2]
cmp r0, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M3596_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
cmp r5, 0
- beq SHORT G_M3596_IG20
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3596_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M3596_IG19
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M3596_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M3596_IG20: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M3596_IG21: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r4]
- str r6, [sp] // [V17 OutArgs]
- str r8, [sp+0x04] // [V17 OutArgs+0x04]
+ str r7, [sp] // [V17 OutArgs]
+ str r6, [sp+0x04] // [V17 OutArgs+0x04]
str r5, [sp+0x08] // [V17 OutArgs+0x08]
ldr r0, [r4+0x10]
- mov r2, r7
+ mov r2, r8
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
...
-4 (-0.96%) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
@@ -8,15 +8,15 @@
; 4 inlinees with PGO data; 17 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T18] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T02] ( 5, 50 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T03] ( 7, 38.50) int -> r9
; V11 loc6 [V11,T04] ( 7, 38.50) int -> r10
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r12 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> r2 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> r2 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.75) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6.25) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.25) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 6.75) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,41 +70,41 @@ G_M23311_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M23311_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
- beq G_M23311_IG30
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
+ beq G_M23311_IG29
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M23311_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq G_M23311_IG31
+ beq G_M23311_IG30
;; size=8 bbWeight=1 PerfScore 3.00
G_M23311_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M23311_IG05
movs r0, 0
b SHORT G_M23311_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M23311_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M23311_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- beq SHORT G_M23311_IG15
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M23311_IG30
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M23311_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M23311_IG16
+ cmp r7, r8
+ ble SHORT G_M23311_IG15
;; size=4 bbWeight=1 PerfScore 2.00
G_M23311_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.25 PerfScore 0.25
G_M23311_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x3C]
@@ -113,35 +113,35 @@ G_M23311_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r1, [sp+0x44] // [V02 arg2]
; byrRegs +[r1]
str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2
sub r9, r2, 2
- lsls r2, r7, 1
+ lsl r2, r8, 1
adds r2, r1, r2
sub r10, r2, 2
cmp r0, 0
beq SHORT G_M23311_IG12
- ;; size=28 bbWeight=1 PerfScore 12.00
+ ;; size=30 bbWeight=1 PerfScore 12.00
G_M23311_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3]
ldrh r2, [r9]
ldrh lr, [r10]
cmp r2, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
cmp lr, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r12, 0xd1ff
movt r12, 0xd1ff
ldrb r12, [r12+r2]
cmp r12, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
movw r12, 0xd1ff
movt r12, 0xd1ff
ldrb r12, [r12+lr]
cmp r12, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
cmp r2, lr
- bne SHORT G_M23311_IG17
+ bne SHORT G_M23311_IG16
;; size=58 bbWeight=4 PerfScore 72.00
G_M23311_IG11: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r9, r9, 2
@@ -151,16 +151,16 @@ G_M23311_IG11: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr
bne SHORT G_M23311_IG10
;; size=14 bbWeight=16 PerfScore 80.00
G_M23311_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M23311_IG24
+ cmp r7, r8
+ bge SHORT G_M23311_IG23
ldrh r0, [r10]
cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
;; size=26 bbWeight=0.50 PerfScore 5.00
G_M23311_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
@@ -174,96 +174,92 @@ G_M23311_IG14: ; bbWeight=0.50, epilog, nogc, extend
;; size=10 bbWeight=0.50 PerfScore 2.00
G_M23311_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3]
- b SHORT G_M23311_IG31
- ;; size=6 bbWeight=0.25 PerfScore 0.50
-G_M23311_IG16: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r6
+ mov r0, r7
b SHORT G_M23311_IG09
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M23311_IG17: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG16: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r12, r2, 97
cmp r12, 25
- bhi SHORT G_M23311_IG19
+ bhi SHORT G_M23311_IG18
;; size=10 bbWeight=16 PerfScore 48.00
-G_M23311_IG18: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M23311_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
subs r2, 32
;; size=2 bbWeight=8 PerfScore 8.00
-G_M23311_IG19: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG18: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r12, lr, 97
cmp r12, 25
- bhi SHORT G_M23311_IG21
+ bhi SHORT G_M23311_IG20
;; size=10 bbWeight=16 PerfScore 48.00
-G_M23311_IG20: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M23311_IG19: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
sub lr, lr, 32
;; size=4 bbWeight=8 PerfScore 8.00
-G_M23311_IG21: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG20: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, lr
beq SHORT G_M23311_IG11
;; size=4 bbWeight=16 PerfScore 32.00
-G_M23311_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r9, r3
- bls SHORT G_M23311_IG23
+ bls SHORT G_M23311_IG22
ldrh r0, [r9-0x02]
cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M23311_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r10, r1
bls SHORT G_M23311_IG13
ldrh r0, [r10-0x02]
cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
b SHORT G_M23311_IG13
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M23311_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M23311_IG25
+G_M23311_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M23311_IG24
ldrh r0, [r9]
cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M23311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
cmp r5, 0
- beq SHORT G_M23311_IG26
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M23311_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M23311_IG25
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M23311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+4 (+0.87%) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T10] ( 3, 6 ) ref -> r6 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 RetBuf [V01,T13] ( 4, 4 ) byref -> r8 single-def
-; V02 arg1 [V02,T06] ( 11, 13.62) ref -> r5 class-hnd <System.Linq.Expressions.Expression>
+; V02 arg1 [V02,T07] ( 11, 13.62) ref -> r5 class-hnd <System.Linq.Expressions.Expression>
; V03 arg2 [V03,T11] ( 3, 6 ) int -> r7 single-def
; V04 loc0 [V04,T16] ( 3, 2 ) ref -> r9 class-hnd single-def <System.Linq.Expressions.BlockExpression>
; V05 loc1 [V05,T14] ( 3, 6 ) int -> [sp+0x24] spill-single-def
; V06 loc2 [V06,T08] ( 5, 11 ) int -> [sp+0x20]
-; V07 loc3 [V07,T07] ( 6, 13.50) ref -> [sp+0x0C] class-hnd <<unknown class>>
+; V07 loc3 [V07,T05] ( 6, 19.42) ref -> [sp+0x0C] class-hnd <<unknown class>>
; V08 loc4 [V08,T03] ( 10, 38 ) int -> [sp+0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Linq.Expressions.Expression>
; V10 loc6 [V10 ] ( 4, 12 ) struct ( 8) [sp+0x14] do-not-enreg[XS] must-init addr-exposed <System.Linq.Expressions.Compiler.StackSpiller+Result>
@@ -25,14 +25,14 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V16 tmp5 [V16,T02] ( 4, 40 ) ref -> [sp+0x08] class-hnd spill-single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
-; V17 tmp6 [V17,T04] ( 6, 21.16) ref -> [sp+0x04] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp6 [V17,T04] ( 6, 27.08) ref -> [sp+0x04] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V18 tmp7 [V18,T00] ( 12, 82.16) int -> [sp+0x10] "Inline stloc first use temp"
; V19 tmp8 [V19,T01] ( 4, 64 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Linq.Expressions.Expression>
; V20 tmp9 [V20 ] ( 2, 6 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V10.Node (fldOffset=0x0)" P-DEP
; V21 tmp10 [V21 ] ( 3, 10 ) int -> [sp+0x18] do-not-enreg[X] addr-exposed "field V10.Action (fldOffset=0x4)" P-DEP
; V22 tmp11 [V22,T17] ( 2, 2 ) ref -> r1 single-def "field V14.Node (fldOffset=0x0)" P-INDEP
; V23 tmp12 [V23,T18] ( 2, 2 ) int -> r2 "field V14.Action (fldOffset=0x4)" P-INDEP
-; V24 tmp13 [V24,T05] ( 2, 16 ) ref -> r2 "argument with side effect"
+; V24 tmp13 [V24,T06] ( 2, 16 ) ref -> r2 "argument with side effect"
; V25 tmp14 [V25,T12] ( 2, 8 ) int -> r1 "argument with side effect"
; V26 cse0 [V26,T09] ( 4, 8 ) int -> r10 "CSE - aggressive"
;
@@ -96,9 +96,9 @@ G_M11785_IG06: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r
; GC ptr vars +{V07}
mov lr, 0
cmp r4, 0
- ble SHORT G_M11785_IG12
+ ble SHORT G_M11785_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M11785_IG07: ; bbWeight=4, gcVars=00000080 {V07}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG07: ; bbWeight=4, gcVars=00000020 {V07}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
mov r0, r5
; gcrRegs +[r0]
str lr, [sp+0x1C] // [V08 loc4]
@@ -122,13 +122,13 @@ G_M11785_IG07: ; bbWeight=4, gcVars=00000080 {V07}, gcrefRegs=0260 {r5 r6
ldr r3, [sp+0x0C] // [V07 loc3]
; gcrRegs +[r3]
cmp r3, 0
- bne SHORT G_M11785_IG16
+ bne SHORT G_M11785_IG13
;; size=50 bbWeight=4 PerfScore 80.00
G_M11785_IG08: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V07}
ldr r0, [sp+0x18] // [V21 tmp10]
cmp r0, 0
- beq SHORT G_M11785_IG16
+ beq SHORT G_M11785_IG12
mov r0, r5
; gcrRegs +[r0]
ldr r3, [r10+0x18]
@@ -158,14 +158,14 @@ G_M11785_IG08: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6
movs r2, 0
ldr r4, [sp+0x1C] // [V08 loc4]
cmp r4, 0
- ble SHORT G_M11785_IG15
+ ble SHORT G_M11785_IG17
;; size=64 bbWeight=2 PerfScore 50.00
G_M11785_IG09: ; bbWeight=1, gcVars=00000014 {V16 V17}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r0]
ldr r0, [r3+0x04]
str r4, [sp+0x1C] // [V08 loc4]
cmp r0, r4
- blt SHORT G_M11785_IG13
+ blt SHORT G_M11785_IG15
;; size=8 bbWeight=1 PerfScore 4.00
G_M11785_IG10: ; bbWeight=15.84, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r3]
@@ -200,23 +200,32 @@ G_M11785_IG10: ; bbWeight=15.84, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=010
cmp r2, r4
blt SHORT G_M11785_IG10
;; size=60 bbWeight=15.84 PerfScore 332.64
-G_M11785_IG11: ; bbWeight=2, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG11: ; bbWeight=7.92, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V16}
ldr r3, [sp+0x04] // [V17 tmp6]
; gcrRegs +[r3]
ldr r4, [sp+0x1C] // [V08 loc4]
- b SHORT G_M11785_IG15
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M11785_IG12: ; bbWeight=0.50, gcVars=00000080 {V07}, gcrefRegs=0220 {r5 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+ b SHORT G_M11785_IG17
+ ;; size=6 bbWeight=7.92 PerfScore 23.76
+G_M11785_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+ ; GC ptr vars -{V17}
+ ldr r4, [sp+0x1C] // [V08 loc4]
+ b SHORT G_M11785_IG17
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M11785_IG13: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref, isz
+ ldr r4, [sp+0x1C] // [V08 loc4]
+ b SHORT G_M11785_IG17
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M11785_IG14: ; bbWeight=0.50, gcVars=00000020 {V07}, gcrefRegs=0220 {r5 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3 r6]
- ; GC ptr vars -{V17} +{V07}
+ ; GC ptr vars +{V05 V07}
ldr r3, [sp+0x0C] // [V07 loc3]
; gcrRegs +[r3]
- b SHORT G_M11785_IG19
+ b SHORT G_M11785_IG20
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG15: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3] +[r6]
- ; GC ptr vars -{V07} +{V02 V04 V16 V17}
+ ; GC ptr vars -{V05 V07} +{V02 V04 V16 V17}
ldr lr, [sp+0x08]
; gcrRegs +[lr]
ldr r0, [lr+0x04]
@@ -236,7 +245,7 @@ G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260
; gcrRegs -[r0]
ldr r2, [sp+0x10] // [V18 tmp7]
cmp r2, r0
- bhs SHORT G_M11785_IG25
+ bhs SHORT G_M11785_IG26
add r0, r3, 8
; byrRegs +[r0]
lsl lr, r2, 2
@@ -249,27 +258,24 @@ G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260
adds r2, r2, 1
ldr r4, [sp+0x1C] // [V08 loc4]
cmp r2, r4
- blt SHORT G_M11785_IG24
+ blt SHORT G_M11785_IG25
;; size=66 bbWeight=0.16 PerfScore 3.84
-G_M11785_IG14: ; bbWeight=0.08, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref
+G_M11785_IG16: ; bbWeight=0.08, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref
; GC ptr vars -{V02 V04 V16}
ldr r3, [sp+0x04] // [V17 tmp6]
; gcrRegs +[r3]
;; size=2 bbWeight=0.08 PerfScore 0.08
-G_M11785_IG15: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref
- str r4, [sp+0x1C] // [V08 loc4]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M11785_IG16: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG17: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V17}
cmp r3, 0
- beq SHORT G_M11785_IG18
+ beq SHORT G_M11785_IG19
;; size=4 bbWeight=4 PerfScore 8.00
-G_M11785_IG17: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref
+G_M11785_IG18: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref
str r3, [sp+0x0C] // [V07 loc3]
; GC ptr vars +{V07}
mov r0, r3
; gcrRegs +[r0]
- ldr r1, [sp+0x1C] // [V08 loc4]
+ mov r1, r4
ldr r2, [sp+0x14] // [V20 tmp9]
; gcrRegs +[r2]
movw lr, 0xd1ff
@@ -279,21 +285,20 @@ G_M11785_IG17: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100
ldr r3, [sp+0x0C] // [V07 loc3]
; gcrRegs +[r3]
;; size=20 bbWeight=2 PerfScore 16.00
-G_M11785_IG18: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG19: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V07}
- ldr lr, [sp+0x1C] // [V08 loc4]
- add lr, lr, 1
- ldr r4, [sp+0x24] // [V05 loc1]
- cmp lr, r4
- blt SHORT G_M11785_IG23
- ;; size=14 bbWeight=4 PerfScore 20.00
-G_M11785_IG19: ; bbWeight=1, gcrefRegs=0228 {r3 r5 r9}, byrefRegs=0100 {r8}, byref, isz
+ adds r4, r4, 1
+ ldr lr, [sp+0x24] // [V05 loc1]
+ cmp r4, lr
+ blt SHORT G_M11785_IG24
+ ;; size=10 bbWeight=4 PerfScore 16.00
+G_M11785_IG20: ; bbWeight=1, gcrefRegs=0228 {r3 r5 r9}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r6]
- ldr r2, [sp+0x20] // [V06 loc2]
- cmp r2, 0
- beq SHORT G_M11785_IG21
+ ldr r6, [sp+0x20] // [V06 loc2]
+ cmp r6, 0
+ beq SHORT G_M11785_IG22
;; size=6 bbWeight=1 PerfScore 3.00
-G_M11785_IG20: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r8}, byref
+G_M11785_IG21: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r8}, byref
; gcrRegs -[r5]
mov r0, r9
; gcrRegs +[r0]
@@ -309,9 +314,9 @@ G_M11785_IG20: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r
mov r5, r0
; gcrRegs +[r5]
;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M11785_IG21: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, byref
+G_M11785_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, byref
; gcrRegs -[r0]
- ldr r2, [sp+0x20] // [V06 loc2]
+ mov r2, r6
mov r1, r5
; gcrRegs +[r1]
mov r0, r8
@@ -323,23 +328,24 @@ G_M11785_IG21: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, by
; byrRegs -[r0]
str r2, [r8+0x04]
;; size=20 bbWeight=1 PerfScore 7.00
-G_M11785_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M11785_IG23: ; bbWeight=1, epilog, nogc, extend
add sp, 44
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M11785_IG23: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG24: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs +[r3 r5-r6 r9]
str r3, [sp+0x0C] // [V07 loc3]
; GC ptr vars +{V07}
+ mov lr, r4
b SHORT G_M11785_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M11785_IG24: ; bbWeight=0.08, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M11785_IG25: ; bbWeight=0.08, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3]
; GC ptr vars -{V07} +{V02 V04 V16 V17}
str r4, [sp+0x1C] // [V08 loc4]
- b SHORT G_M11785_IG13
+ b SHORT G_M11785_IG15
;; size=4 bbWeight=0.08 PerfScore 0.16
-G_M11785_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11785_IG26: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r5-r6 r9]
; byrRegs -[r8]
; GC ptr vars -{V02 V04 V16 V17}
@@ -349,7 +355,7 @@ G_M11785_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 14, PerfScore 571.60, instruction count 180, allocated bytes for code 460 (MethodHash=be09d1f6) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
+; Total bytes of code 464, prolog size 14, PerfScore 591.35, instruction count 183, allocated bytes for code 464 (MethodHash=be09d1f6) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -361,7 +367,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
+4 (+1.24%) : 13986.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 5.67) byref -> r4 this single-def
-; V01 TypeCtx [V01,T06] ( 6, 4 ) int -> r1 single-def
+; V00 this [V00,T03] ( 7, 8.13) byref -> r4 this single-def
+; V01 TypeCtx [V01,T07] ( 6, 4 ) int -> r1 single-def
; V02 arg1 [V02,T09] ( 3, 3 ) ref -> r5 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T10] ( 3, 3 ) ref -> r6 class-hnd single-def <System.__Canon>
; V04 loc0 [V04,T15] ( 4, 2.33) ref -> r0 class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
@@ -18,13 +18,13 @@
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 3, 5.00) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09,T08] ( 4, 5 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V09 tmp3 [V09,T06] ( 4, 7.47) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V10 tmp4 [V10,T13] ( 4, 3.33) ref -> r2 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V11 tmp5 [V11,T04] ( 4, 8.33) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V12 tmp6 [V12,T07] ( 6, 5.03) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T05] ( 4, 8.33) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V12 tmp6 [V12,T08] ( 6, 5.03) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V13 tmp7 [V13,T00] ( 11, 27.57) int -> r10 "Inline stloc first use temp"
; V14 tmp8 [V14,T01] ( 6, 16.67) ref -> r1 class-hnd "Inline stloc first use temp" <System.__Canon>
-; V15 cse0 [V15,T03] ( 5, 8.75) int -> [sp+0x00] spill-single-def "CSE - aggressive"
+; V15 cse0 [V15,T04] ( 5, 8.75) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V16 cse1 [V16,T02] ( 3, 16.50) int -> r0 "CSE - aggressive"
; V17 rat0 [V17,T14] ( 3, 3.33) int -> r0 "runtime lookup"
; V18 rat1 [V18,T12] ( 3, 4.67) int -> r0 "fgMakeTemp is creating a new local variable"
@@ -47,59 +47,17 @@ G_M35195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4},
ldr r0, [r4]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M35195_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
+ bne G_M35195_IG18
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M35195_IG03: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0]
ldr r0, [r1+0x24]
ldr r0, [r0]
ldr r0, [r0+0x0C]
cmp r0, 0
- beq SHORT G_M35195_IG08
+ beq SHORT G_M35195_IG11
;; size=10 bbWeight=0.83 PerfScore 4.17
-G_M35195_IG04: ; bbWeight=0.67, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
- b SHORT G_M35195_IG09
- ;; size=2 bbWeight=0.67 PerfScore 0.67
-G_M35195_IG05: ; bbWeight=0.17, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0+0x0C]
- lsls r3, r3, 1
- adds r2, r3, 2
- ldr r0, [r0+0x04]
- ldr r0, [r0+0x04]
- ; gcrRegs -[r0]
- cmp r0, r2
- ble SHORT G_M35195_IG21
- ;; size=14 bbWeight=0.17 PerfScore 1.17
-G_M35195_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref
- ldr r0, [r4]
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- mov r2, r6
- ; gcrRegs +[r2]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr r3, [lr]
- ldr lr, [r0]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M35195_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- bx r3 // <unknown method>
- ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M35195_IG08: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, gcvars, byref
- ; gcrRegs -[r0-r2]
- mov r0, r1
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.17 PerfScore 1.00
-G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG04: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWSFAST
@@ -118,7 +76,7 @@ G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r
ldr r2, [r4]
; gcrRegs +[r2]
cmp r2, 0
- beq SHORT G_M35195_IG19
+ beq SHORT G_M35195_IG15
ldr r8, [r2+0x04]
; gcrRegs +[r8]
ldr r9, [r2+0x08]
@@ -127,26 +85,26 @@ G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r
ldr r3, [r8+0x04]
str r3, [sp]
cmp r3, 0
- ble SHORT G_M35195_IG19
+ ble SHORT G_M35195_IG15
;; size=56 bbWeight=0.83 PerfScore 16.67
-G_M35195_IG10: ; bbWeight=0.42, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG05: ; bbWeight=0.42, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r2]
cmp r9, 0
- beq SHORT G_M35195_IG16
+ beq SHORT G_M35195_IG12
ldr r2, [r9+0x04]
cmp r2, r3
- blt SHORT G_M35195_IG15
+ blt SHORT G_M35195_IG10
;; size=14 bbWeight=0.42 PerfScore 2.08
-G_M35195_IG11: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG06: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r2, r8, 8
; byrRegs +[r2]
lsl r0, r10, 2
ldr r1, [r2+r0]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M35195_IG13
+ beq SHORT G_M35195_IG08
;; size=14 bbWeight=6.60 PerfScore 33.00
-G_M35195_IG12: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+G_M35195_IG07: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
; byrRegs -[r2]
add r2, r9, 8
; byrRegs +[r2]
@@ -162,34 +120,47 @@ G_M35195_IG12: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref
; gcrRegs -[r0-r2]
; gcr arg pop 0
;; size=22 bbWeight=3.30 PerfScore 23.10
-G_M35195_IG13: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG08: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1
ldr r3, [sp] // [V15 cse0]
cmp r3, r10
- bgt SHORT G_M35195_IG11
+ bgt SHORT G_M35195_IG06
;; size=10 bbWeight=6.60 PerfScore 26.40
-G_M35195_IG14: ; bbWeight=0.38, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG09: ; bbWeight=3.30, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r8-r9]
- b SHORT G_M35195_IG19
- ;; size=2 bbWeight=0.38 PerfScore 0.38
-G_M35195_IG15: ; bbWeight=0.21, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+ b SHORT G_M35195_IG15
+ ;; size=2 bbWeight=3.30 PerfScore 3.30
+G_M35195_IG10: ; bbWeight=0.21, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r8-r9]
ldr r3, [sp] // [V15 cse0]
- ;; size=2 bbWeight=0.21 PerfScore 0.21
-G_M35195_IG16: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ b SHORT G_M35195_IG12
+ ;; size=4 bbWeight=0.21 PerfScore 0.42
+G_M35195_IG11: ; bbWeight=0.17, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs -[r7-r9]
+ mov r0, r1
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ b SHORT G_M35195_IG04
+ ;; size=22 bbWeight=0.17 PerfScore 1.17
+G_M35195_IG12: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs +[r7-r9]
add r2, r8, 8
; byrRegs +[r2]
lsl r0, r10, 2
ldr r1, [r2+r0]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M35195_IG18
+ beq SHORT G_M35195_IG14
;; size=14 bbWeight=0.07 PerfScore 0.33
-G_M35195_IG17: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG13: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r2]
ldr r2, [r9+0x04]
cmp r10, r2
- bhs SHORT G_M35195_IG20
+ bhs SHORT G_M35195_IG19
add r2, r9, 8
; byrRegs +[r2]
lsl r0, r10, 2
@@ -206,12 +177,12 @@ G_M35195_IG17: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref
; gcr arg pop 0
ldr r3, [sp] // [V15 cse0]
;; size=36 bbWeight=0.03 PerfScore 0.40
-G_M35195_IG18: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG14: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1
cmp r3, r10
- bgt SHORT G_M35195_IG16
+ bgt SHORT G_M35195_IG12
;; size=8 bbWeight=0.07 PerfScore 0.20
-G_M35195_IG19: ; bbWeight=0.83, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG15: ; bbWeight=3.30, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r8-r9]
mov r0, r4
; byrRegs +[r0]
@@ -222,9 +193,38 @@ G_M35195_IG19: ; bbWeight=0.83, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r7]
; byrRegs -[r0]
- b SHORT G_M35195_IG06
- ;; size=16 bbWeight=0.83 PerfScore 5.00
-G_M35195_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=3.30 PerfScore 16.50
+G_M35195_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref
+ ldr r0, [r4]
+ ; gcrRegs +[r0]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ mov r2, r6
+ ; gcrRegs +[r2]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr r3, [lr]
+ ldr lr, [r0]
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M35195_IG17: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ bx r3 // <unknown method>
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M35195_IG18: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz
+ ; gcrRegs -[r1-r2]
+ ldr r3, [r0+0x0C]
+ lsls r3, r3, 1
+ adds r2, r3, 2
+ ldr r0, [r0+0x04]
+ ldr r0, [r0+0x04]
+ ; gcrRegs -[r0]
...
+4 (+1.24%) : 24592.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 5.75) byref -> r4 this single-def
-; V01 TypeCtx [V01,T06] ( 6, 4.05) int -> r1 single-def
+; V00 this [V00,T03] ( 7, 8.34) byref -> r4 this single-def
+; V01 TypeCtx [V01,T07] ( 6, 4.05) int -> r1 single-def
; V02 arg1 [V02,T10] ( 3, 3 ) ref -> r5 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T11] ( 3, 3 ) ref -> r6 class-hnd single-def <System.__Canon>
; V04 loc0 [V04,T15] ( 4, 2.25) ref -> r0 class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
@@ -18,13 +18,13 @@
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 3, 5.25) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09,T08] ( 4, 5.25) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V09 tmp3 [V09,T06] ( 4, 7.84) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V10 tmp4 [V10,T13] ( 4, 3.50) ref -> r2 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V11 tmp5 [V11,T04] ( 4, 8.75) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V12 tmp6 [V12,T07] ( 6, 5.29) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T05] ( 4, 8.75) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V12 tmp6 [V12,T08] ( 6, 5.29) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V13 tmp7 [V13,T00] ( 11, 28.95) int -> r10 "Inline stloc first use temp"
; V14 tmp8 [V14,T01] ( 6, 17.50) ref -> r1 class-hnd "Inline stloc first use temp" <System.__Canon>
-; V15 cse0 [V15,T03] ( 5, 9.19) int -> [sp+0x00] spill-single-def "CSE - aggressive"
+; V15 cse0 [V15,T04] ( 5, 9.19) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V16 cse1 [V16,T02] ( 3, 17.33) int -> r0 "CSE - aggressive"
; V17 rat0 [V17,T14] ( 3, 3.50) int -> r0 "runtime lookup"
; V18 rat1 [V18,T12] ( 3, 4.90) int -> r0 "fgMakeTemp is creating a new local variable"
@@ -47,59 +47,17 @@ G_M35195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4},
ldr r0, [r4]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M35195_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
+ bne G_M35195_IG18
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M35195_IG03: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0]
ldr r0, [r1+0x24]
ldr r0, [r0]
ldr r0, [r0+0x0C]
cmp r0, 0
- beq SHORT G_M35195_IG08
+ beq SHORT G_M35195_IG11
;; size=10 bbWeight=0.88 PerfScore 4.38
-G_M35195_IG04: ; bbWeight=0.70, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
- b SHORT G_M35195_IG09
- ;; size=2 bbWeight=0.70 PerfScore 0.70
-G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0+0x0C]
- lsls r3, r3, 1
- adds r2, r3, 2
- ldr r0, [r0+0x04]
- ldr r0, [r0+0x04]
- ; gcrRegs -[r0]
- cmp r0, r2
- ble SHORT G_M35195_IG21
- ;; size=14 bbWeight=0.12 PerfScore 0.88
-G_M35195_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref
- ldr r0, [r4]
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- mov r2, r6
- ; gcrRegs +[r2]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr r3, [lr]
- ldr lr, [r0]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M35195_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- bx r3 // <unknown method>
- ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M35195_IG08: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, gcvars, byref
- ; gcrRegs -[r0-r2]
- mov r0, r1
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.18 PerfScore 1.05
-G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG04: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWSFAST
@@ -118,7 +76,7 @@ G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r
ldr r2, [r4]
; gcrRegs +[r2]
cmp r2, 0
- beq SHORT G_M35195_IG19
+ beq SHORT G_M35195_IG15
ldr r8, [r2+0x04]
; gcrRegs +[r8]
ldr r9, [r2+0x08]
@@ -127,26 +85,26 @@ G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r
ldr r3, [r8+0x04]
str r3, [sp]
cmp r3, 0
- ble SHORT G_M35195_IG19
+ ble SHORT G_M35195_IG15
;; size=56 bbWeight=0.88 PerfScore 17.50
-G_M35195_IG10: ; bbWeight=0.44, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG05: ; bbWeight=0.44, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r2]
cmp r9, 0
- beq SHORT G_M35195_IG16
+ beq SHORT G_M35195_IG12
ldr r2, [r9+0x04]
cmp r2, r3
- blt SHORT G_M35195_IG15
+ blt SHORT G_M35195_IG10
;; size=14 bbWeight=0.44 PerfScore 2.19
-G_M35195_IG11: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG06: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r2, r8, 8
; byrRegs +[r2]
lsl r0, r10, 2
ldr r1, [r2+r0]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M35195_IG13
+ beq SHORT G_M35195_IG08
;; size=14 bbWeight=6.93 PerfScore 34.65
-G_M35195_IG12: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+G_M35195_IG07: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
; byrRegs -[r2]
add r2, r9, 8
; byrRegs +[r2]
@@ -162,34 +120,47 @@ G_M35195_IG12: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref
; gcrRegs -[r0-r2]
; gcr arg pop 0
;; size=22 bbWeight=3.47 PerfScore 24.26
-G_M35195_IG13: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG08: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1
ldr r3, [sp] // [V15 cse0]
cmp r3, r10
- bgt SHORT G_M35195_IG11
+ bgt SHORT G_M35195_IG06
;; size=10 bbWeight=6.93 PerfScore 27.72
-G_M35195_IG14: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG09: ; bbWeight=3.47, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r8-r9]
- b SHORT G_M35195_IG19
- ;; size=2 bbWeight=0.40 PerfScore 0.40
-G_M35195_IG15: ; bbWeight=0.22, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+ b SHORT G_M35195_IG15
+ ;; size=2 bbWeight=3.47 PerfScore 3.47
+G_M35195_IG10: ; bbWeight=0.22, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r8-r9]
ldr r3, [sp] // [V15 cse0]
- ;; size=2 bbWeight=0.22 PerfScore 0.22
-G_M35195_IG16: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ b SHORT G_M35195_IG12
+ ;; size=4 bbWeight=0.22 PerfScore 0.44
+G_M35195_IG11: ; bbWeight=0.18, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs -[r7-r9]
+ mov r0, r1
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ b SHORT G_M35195_IG04
+ ;; size=22 bbWeight=0.18 PerfScore 1.23
+G_M35195_IG12: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs +[r7-r9]
add r2, r8, 8
; byrRegs +[r2]
lsl r0, r10, 2
ldr r1, [r2+r0]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M35195_IG18
+ beq SHORT G_M35195_IG14
;; size=14 bbWeight=0.07 PerfScore 0.35
-G_M35195_IG17: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG13: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r2]
ldr r2, [r9+0x04]
cmp r10, r2
- bhs SHORT G_M35195_IG20
+ bhs SHORT G_M35195_IG19
add r2, r9, 8
; byrRegs +[r2]
lsl r0, r10, 2
@@ -206,12 +177,12 @@ G_M35195_IG17: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref
; gcr arg pop 0
ldr r3, [sp] // [V15 cse0]
;; size=36 bbWeight=0.04 PerfScore 0.42
-G_M35195_IG18: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG14: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1
cmp r3, r10
- bgt SHORT G_M35195_IG16
+ bgt SHORT G_M35195_IG12
;; size=8 bbWeight=0.07 PerfScore 0.21
-G_M35195_IG19: ; bbWeight=0.88, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG15: ; bbWeight=3.47, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r8-r9]
mov r0, r4
; byrRegs +[r0]
@@ -222,9 +193,38 @@ G_M35195_IG19: ; bbWeight=0.88, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r7]
; byrRegs -[r0]
- b SHORT G_M35195_IG06
- ;; size=16 bbWeight=0.88 PerfScore 5.25
-G_M35195_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=3.47 PerfScore 17.33
+G_M35195_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref
+ ldr r0, [r4]
+ ; gcrRegs +[r0]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ mov r2, r6
+ ; gcrRegs +[r2]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr r3, [lr]
+ ldr lr, [r0]
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M35195_IG17: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ bx r3 // <unknown method>
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M35195_IG18: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz
+ ; gcrRegs -[r1-r2]
+ ldr r3, [r0+0x0C]
+ lsls r3, r3, 1
+ adds r2, r3, 2
+ ldr r0, [r0+0x04]
+ ldr r0, [r0+0x04]
+ ; gcrRegs -[r0]
...
benchmarks.run_tiered.linux.arm.checked.mch
-22 (-2.27%) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
@@ -9,53 +9,53 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <BenchmarksGame.FannkuchRedux_2>
; V01 arg1 [V01,T21] ( 23, 81.50) int -> r4 single-def
-; V02 loc0 [V02,T15] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]>
-; V03 loc1 [V03,T30] ( 11, 36.25) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]>
-; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x00] class-hnd exact spill-single-def <int[]>
-; V05 loc3 [V05,T33] ( 5, 23 ) int -> [sp+0x2C]
+; V02 loc0 [V02,T17] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]>
+; V03 loc1 [V03,T31] ( 11, 36.25) ref -> [sp+0x08] class-hnd exact spill-single-def <int[]>
+; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]>
+; V05 loc3 [V05,T34] ( 5, 23 ) int -> [sp+0x2C]
; V06 loc4 [V06,T40] ( 4, 6 ) int -> [sp+0x28]
; V07 loc5 [V07,T41] ( 4, 6 ) int -> [sp+0x24]
; V08 loc6 [V08,T24] ( 3, 65 ) int -> r10 single-def
-; V09 loc7 [V09,T32] ( 18, 29.12) int -> r1
+; V09 loc7 [V09,T33] ( 18, 29.12) int -> r1
; V10 loc8 [V10,T19] ( 8,104 ) int -> r2
-; V11 loc9 [V11,T29] ( 6, 40 ) int -> [sp+0x20]
+; V11 loc9 [V11,T29] ( 6, 45.92) int -> [sp+0x20]
; V12 loc10 [V12,T23] ( 12, 66.48) int -> r12
; V13 loc11 [V13,T26] ( 3, 48 ) int -> r9
; V14 loc12 [V14,T01] ( 6,328 ) int -> r8
; V15 loc13 [V15,T02] ( 6,328 ) int -> r2
-; V16 loc14 [V16,T17] ( 2,128 ) int -> r7
+; V16 loc14 [V16,T18] ( 2,128 ) int -> r7
; V17 loc15 [V17,T39] ( 2, 8 ) int -> r3
; V18 loc16 [V18,T22] ( 6, 80 ) int -> registers
-; V19 loc17 [V19,T00] ( 23,372.92) int -> r12
-; V20 loc18 [V20,T16] ( 5,132 ) int -> registers
+; V19 loc17 [V19,T00] ( 23,428.28) int -> r12
+; V20 loc18 [V20,T14] ( 5,159.68) int -> registers
; V21 loc19 [V21,T04] ( 16,289.27) int -> registers
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T31] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V23 tmp1 [V23,T32] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
; V24 tmp2 [V24,T05] ( 6,256.00) int -> registers "Strict ordering of exceptions for Array store"
; V25 tmp3 [V25,T38] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
-; V26 tmp4 [V26,T34] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V26 tmp4 [V26,T35] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
; V27 tmp5 [V27,T25] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store"
; V28 tmp6 [V28,T06] ( 2,256 ) int -> lr "Strict ordering of exceptions for Array store"
; V29 cse0 [V29,T03] ( 15,325.55) byref -> registers hoist multi-def "CSE - aggressive"
; V30 cse1 [V30,T13] ( 12,163.40) int -> registers multi-def "CSE - aggressive"
-; V31 cse2 [V31,T14] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
+; V31 cse2 [V31,T15] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
; V32 cse3 [V32,T07] ( 21,217.59) byref -> registers hoist multi-def "CSE - aggressive"
-; V33 cse4 [V33,T18] ( 11,109.18) byref -> registers hoist multi-def "CSE - moderate"
+; V33 cse4 [V33,T16] ( 11,136.86) byref -> registers hoist multi-def "CSE - moderate"
; V34 cse5 [V34,T08] ( 3,192 ) int -> r0 "CSE - aggressive"
; V35 cse6 [V35,T09] ( 3,192 ) int -> r6 "CSE - aggressive"
; V36 cse7 [V36,T10] ( 4,190.08) int -> r2 "CSE - aggressive"
; V37 cse8 [V37,T11] ( 3,188.18) int -> r9 "CSE - aggressive"
-; V38 cse9 [V38,T12] ( 3,188.18) int -> lr "CSE - aggressive"
+; V38 cse9 [V38,T12] ( 3,188.18) int -> r6 "CSE - aggressive"
; V39 cse10 [V39,T20] ( 3, 95.04) int -> r12 "CSE - moderate"
; V40 cse11 [V40,T27] ( 3, 48 ) int -> r8 "CSE - moderate"
; V41 cse12 [V41,T28] ( 3, 47.52) int -> r8 "CSE - moderate"
-; V42 cse13 [V42,T35] ( 4, 15.84) int -> r3 "CSE - moderate"
-; V43 cse14 [V43,T36] ( 9, 13.76) int -> [sp+0x1C] hoist multi-def "CSE - moderate"
-; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate"
-; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate"
-; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x10] spill-single-def "CSE - moderate"
-; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x08] spill-single-def "CSE - moderate"
+; V42 cse13 [V42,T36] ( 4, 15.84) int -> r3 "CSE - moderate"
+; V43 cse14 [V43,T30] ( 9, 41.44) int -> lr hoist multi-def "CSE - moderate"
+; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate"
+; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x10] spill-single-def "CSE - moderate"
+; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
; V49 cse20 [V49,T47] ( 4, 0.16) int -> r2 "CSE - conservative"
;
; Lcl frame size = 52
@@ -88,7 +88,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov r6, r0
; gcrRegs +[r6]
- str r6, [sp+0x04]
+ str r6, [sp+0x08]
; GC ptr vars +{V03}
mov r1, r4
movw r0, 0xd1ff
@@ -99,7 +99,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
- str r0, [sp]
+ str r0, [sp+0x04]
; GC ptr vars +{V04}
movs r7, 1
str r7, [sp+0x2C] // [V05 loc3]
@@ -112,7 +112,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r4, 0
ble SHORT G_M61974_IG06
;; size=98 bbWeight=1 PerfScore 32.00
-G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002040000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002080000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r3, [r5+0x04]
cmp r3, r4
blt SHORT G_M61974_IG05
@@ -161,7 +161,7 @@ G_M61974_IG05: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000
str r1, [r12+r2]
adds r1, r1, 1
cmp r1, r4
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
blt SHORT G_M61974_IG05
;; size=60 bbWeight=0.04 PerfScore 0.76
G_M61974_IG06: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
@@ -200,10 +200,10 @@ G_M61974_IG09: ; bbWeight=15.84, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=400
cmp r12, r4
blt SHORT G_M61974_IG09
;; size=20 bbWeight=15.84 PerfScore 95.04
-G_M61974_IG10: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M61974_IG10: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 lr]
b SHORT G_M61974_IG13
- ;; size=2 bbWeight=2 PerfScore 2.00
+ ;; size=2 bbWeight=7.92 PerfScore 7.92
G_M61974_IG11: ; bbWeight=0.01, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
add lr, r5, 8
; byrRegs +[lr]
@@ -224,11 +224,11 @@ G_M61974_IG12: ; bbWeight=0.16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=4002
cmp r12, r4
blt SHORT G_M61974_IG12
;; size=40 bbWeight=0.16 PerfScore 1.92
-G_M61974_IG13: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
+G_M61974_IG13: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1 lr]
mov lr, 1
str lr, [sp+0x20] // [V11 loc9]
- ;; size=8 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=7.92 PerfScore 15.84
G_M61974_IG14: ; bbWeight=16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r6+0x04]
cmp r2, r1
@@ -271,9 +271,9 @@ G_M61974_IG17: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byr
ldr lr, [sp+0x20] // [V11 loc9]
add lr, lr, 1
str lr, [sp+0x20] // [V11 loc9]
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
; gcrRegs +[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
b SHORT G_M61974_IG14
;; size=20 bbWeight=16 PerfScore 112.00
@@ -294,7 +294,7 @@ G_M61974_IG19: ; bbWeight=2, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b
ble SHORT G_M61974_IG22
str lr, [sp+0x28] // [V06 loc4]
str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
;; size=40 bbWeight=2 PerfScore 26.00
G_M61974_IG20: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
@@ -317,7 +317,7 @@ G_M61974_IG21: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}
G_M61974_IG22: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
b SHORT G_M61974_IG20
;; size=6 bbWeight=1 PerfScore 3.00
@@ -333,21 +333,20 @@ G_M61974_IG23: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}
str r1, [r5+0x0C]
str lr, [r5+0x10]
movs r7, 1
+ str r7, [sp+0x2C] // [V05 loc3]
mov r12, 2
cmp r4, 2
- str r7, [sp+0x2C] // [V05 loc3]
ble G_M61974_IG06
;; size=42 bbWeight=8 PerfScore 120.00
G_M61974_IG24: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
ldr lr, [r0+0x04]
- str lr, [sp+0x1C] // [V43 cse14]
cmp lr, r4
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
add r1, r0, 8
; byrRegs +[r1]
- ;; size=20 bbWeight=4 PerfScore 28.00
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M61974_IG25: ; bbWeight=63.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r0]
lsl r2, r12, 2
@@ -362,7 +361,7 @@ G_M61974_IG26: ; bbWeight=31.68, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {
ldr r8, [r5+0x08]
mov r9, 0
cmp r12, 0
- blt SHORT G_M61974_IG32
+ blt SHORT G_M61974_IG33
;; size=18 bbWeight=31.68 PerfScore 158.40
G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz
cmp r3, r12
@@ -372,47 +371,52 @@ G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r
;; size=8 bbWeight=3.96 PerfScore 11.88
G_M61974_IG28: ; bbWeight=62.73, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz
; gcrRegs -[r6]
- add lr, r9, 1
- cmp lr, r3
+ add r6, r9, 1
+ cmp r6, r3
bhs G_M61974_IG44
lsl r9, r9, 2
- add r6, r9, 4
- ldr r6, [r0+r6]
- str r6, [r0+r9]
- mov r9, lr
+ add r7, r9, 4
+ ldr r7, [r0+r7]
+ str r7, [r0+r9]
+ mov r9, r6
cmp r9, r12
ble SHORT G_M61974_IG28
;; size=30 bbWeight=62.73 PerfScore 627.26
G_M61974_IG29: ; bbWeight=31.68, gcrefRegs=0020 {r5}, byrefRegs=0002 {r1}, byref, isz
; byrRegs -[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
- b SHORT G_M61974_IG32
+ b SHORT G_M61974_IG33
;; size=4 bbWeight=31.68 PerfScore 63.36
G_M61974_IG30: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref
add r0, r5, 8
; byrRegs +[r0]
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0060 {r5 r6}, byrefRegs=0003 {r0 r1}, byref, isz
- add lr, r9, 1
- str lr, [sp+0x08] // [V48 cse19]
- cmp lr, r3
- bhs G_M61974_IG44
- lsl lr, r9, 2
- str lr, [sp+0x0C] // [V47 cse18]
- add lr, lr, 4
- ldr lr, [r0+lr]
+G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz
+ ; gcrRegs -[r6]
+ add r6, r9, 1
+ str r6, [sp+0x0C] // [V48 cse19]
+ cmp r6, r3
...
-6 (-1.59%) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2
; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr
@@ -30,7 +30,7 @@
;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.50) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 7 ) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,14 +70,15 @@ G_M43427_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
bne SHORT G_M43427_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -92,28 +93,24 @@ G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
G_M43427_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq SHORT G_M43427_IG09
+ beq SHORT G_M43427_IG08
;; size=6 bbWeight=1 PerfScore 3.00
G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M43427_IG06
movs r0, 0
b SHORT G_M43427_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M43427_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- bne SHORT G_M43427_IG10
+ bne SHORT G_M43427_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- str r8, [sp+0x4C]
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M43427_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -123,148 +120,147 @@ G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
- ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M43427_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M43427_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M43427_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r7
- b SHORT G_M43427_IG13
+G_M43427_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r8
+ b SHORT G_M43427_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r6
+G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x3C] // [V01 arg1]
+G_M43427_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x3C]
; byrRegs +[r3]
str r3, [sp+0x14] // [V07 loc2]
ldr r1, [sp+0x44] // [V02 arg2]
; byrRegs +[r1]
str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2
subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1
sub lr, lr, 2
cmp r0, 0
- beq SHORT G_M43427_IG15
+ beq SHORT G_M43427_IG14
;; size=28 bbWeight=1 PerfScore 12.00
-G_M43427_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3]
ldrh r12, [r2]
ldrh r9, [lr]
cmp r12, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
cmp r9, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r12]
cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r9]
cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2
sub lr, lr, 2
subs r0, r0, 1
cmp r0, 0
- bne SHORT G_M43427_IG14
+ bne SHORT G_M43427_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M43427_IG20
+G_M43427_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ bge SHORT G_M43427_IG19
ldrh r2, [lr]
cmp r2, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw lr, 0xd1ff
movt lr, 0xd1ff
ldrb r0, [lr+r2]
cmp r0, 0
- bne SHORT G_M43427_IG24
- b SHORT G_M43427_IG18
+ bne SHORT G_M43427_IG23
+ b SHORT G_M43427_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r0, [r2-0x02]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
- bls SHORT G_M43427_IG18
+ bls SHORT G_M43427_IG17
ldrh r0, [lr-0x02]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43427_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7
- ble SHORT G_M43427_IG21
+ cmp r7, r8
+ ble SHORT G_M43427_IG20
ldrh r0, [r2]
cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r2, 0xd1ff
movt r2, 0xd1ff
ldrb r0, [r2+r0]
cmp r0, 0
...
-4 (-1.06%) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
-; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def
-; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def
+; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def
; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2
; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr
@@ -30,7 +30,7 @@
;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -49,12 +49,12 @@
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.50) int -> r6 "V01.[004..008)"
-; V46 tmp29 [V46,T07] ( 9, 6 ) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC"
; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC"
;
@@ -70,14 +70,15 @@ G_M3596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
str r1, [sp+0x10] // [V09 loc4]
mov r4, r0
; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M3596_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40]
- ldr r7, [sp+0x48]
- cmp r7, 0
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
bne SHORT G_M3596_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M3596_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -92,28 +93,24 @@ G_M3596_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
G_M3596_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x18]
cmp r0, 0
- beq SHORT G_M3596_IG09
+ beq SHORT G_M3596_IG08
;; size=6 bbWeight=1 PerfScore 3.00
G_M3596_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C]
- ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0
beq SHORT G_M3596_IG06
movs r0, 0
b SHORT G_M3596_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M3596_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3596_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
- bne SHORT G_M3596_IG10
+ bne SHORT G_M3596_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3596_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- str r8, [sp+0x4C]
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M3596_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M3596_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -123,21 +120,20 @@ G_M3596_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
- ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M3596_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- ble SHORT G_M3596_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M3596_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ ble SHORT G_M3596_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r7
- b SHORT G_M3596_IG13
+G_M3596_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r8
+ b SHORT G_M3596_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r6
+G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x3C] // [V01 arg1]
+G_M3596_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x3C]
; byrRegs +[r3]
str r3, [sp+0x14] // [V07 loc2]
ldr r1, [sp+0x44] // [V02 arg2]
@@ -146,127 +142,127 @@ G_M3596_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r2, r3
mov lr, r1
cmp r0, 0
- beq SHORT G_M3596_IG15
+ beq SHORT G_M3596_IG14
;; size=16 bbWeight=1 PerfScore 8.00
-G_M3596_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3596_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3]
ldrh r12, [r2]
ldrh r9, [lr]
cmp r12, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
cmp r9, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r12]
cmp r10, 0
- bne SHORT G_M3596_IG24
+ bne SHORT G_M3596_IG23
movw r10, 0xd1ff
movt r10, 0xd1ff
ldrb r10, [r10+r9]
cmp r10, 0
- bne SHORT G_M3596_IG24
+ bne SHORT G_M3596_IG23
cmp r12, r9
- bne SHORT G_M3596_IG16
+ bne SHORT G_M3596_IG15
adds r2, r2, 2
add lr, lr, 2
subs r0, r0, 1
cmp r0, 0
- bne SHORT G_M3596_IG14
+ bne SHORT G_M3596_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
- bge SHORT G_M3596_IG20
+G_M3596_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
+ bge SHORT G_M3596_IG19
ldrh r2, [lr]
cmp r2, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw lr, 0xd1ff
movt lr, 0xd1ff
ldrb r0, [lr+r2]
cmp r0, 0
- bne SHORT G_M3596_IG24
- b SHORT G_M3596_IG18
+ bne SHORT G_M3596_IG23
+ b SHORT G_M3596_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- lsls r0, r6, 1
+G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ lsls r0, r7, 1
adds r0, r3, r0
subs r0, r0, 2
cmp r0, r2
- bls SHORT G_M3596_IG17
+ bls SHORT G_M3596_IG16
ldrh r0, [r2+0x02]
cmp r0, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- lsls r0, r7, 1
+G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ lsl r0, r8, 1
adds r0, r1, r0
subs r0, r0, 2
cmp r0, lr
- bls SHORT G_M3596_IG18
+ bls SHORT G_M3596_IG17
ldrh r0, [lr+0x02]
cmp r0, 128
- bge SHORT G_M3596_IG24
- ;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bge SHORT G_M3596_IG23
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M3596_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3596_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7
- ble SHORT G_M3596_IG21
+ cmp r7, r8
+ ble SHORT G_M3596_IG20
ldrh r0, [r2]
cmp r0, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw r2, 0xd1ff
movt r2, 0xd1ff
...
+46 (+2.85%) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
@@ -10,33 +10,33 @@
;
; V00 this [V00,T19] ( 16, 27 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder>
; V01 arg1 [V01,T31] ( 9, 8.50) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator>
-; V02 loc0 [V02,T34] ( 4, 6.50) ref -> [sp+0x38] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
-; V03 loc1 [V03,T10] ( 9, 33 ) int -> [sp+0x94]
-; V04 loc2 [V04,T21] ( 9, 22.16) ref -> [sp+0x34] class-hnd spill-single-def <int[]>
-; V05 loc3 [V05,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]>
-; V06 loc4 [V06,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]>
-; V07 loc5 [V07,T24] ( 6, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <System.Type[]>
-; V08 loc6 [V08,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <int[]>
-; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x90] spill-single-def
-; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x8C] spill-single-def
-; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x88] spill-single-def
-; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x20] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc0 [V02,T35] ( 4, 6.50) ref -> [sp+0x34] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V03 loc1 [V03,T10] ( 9, 33 ) int -> registers
+; V04 loc2 [V04,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]>
+; V05 loc3 [V05,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]>
+; V06 loc4 [V06,T24] ( 9, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <int[]>
+; V07 loc5 [V07,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <System.Type[]>
+; V08 loc6 [V08,T26] ( 6, 22.16) ref -> [sp+0x20] class-hnd spill-single-def <int[]>
+; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x8C] spill-single-def
+; V10 loc8 [V10,T27] ( 5, 20 ) int -> [sp+0x88] spill-single-def
+; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x84] spill-single-def
+; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>>
; V13 loc11 [V13,T36] ( 3, 2.50) int -> r0
-; V14 loc12 [V14,T27] ( 5, 16.50) int -> [sp+0x84]
-; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x80]
+; V14 loc12 [V14,T21] ( 5, 28.26) int -> [sp+0x80]
+; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x7C]
; V16 loc14 [V16,T07] ( 8, 40 ) int -> lr
;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref
; V18 OutArgs [V18 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V19 tmp1 [V19,T02] ( 8, 64 ) int -> registers "impSpillLclRefs"
; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
-; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x64] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V22 tmp4 [V22,T03] ( 8, 64 ) int -> r6 "impSpillLclRefs"
-; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x44] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
; V25 tmp7 [V25,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp8 [V26,T41] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp9 [V27,T42] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp10 [V28,T33] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V28 tmp10 [V28,T34] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
; V29 tmp11 [V29,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -48,10 +48,10 @@
;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
-; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> registers class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
; V41 tmp23 [V41,T12] ( 4, 32 ) int -> registers "argument with side effect"
-; V42 tmp24 [V42,T13] ( 4, 32 ) int -> registers "argument with side effect"
-; V43 tmp25 [V43,T14] ( 4, 32 ) int -> registers "argument with side effect"
+; V42 tmp24 [V42,T13] ( 4, 32 ) int -> r1 "argument with side effect"
+; V43 tmp25 [V43,T14] ( 4, 32 ) int -> r12 "argument with side effect"
; V44 tmp26 [V44,T15] ( 4, 32 ) int -> registers "argument with side effect"
; V45 tmp27 [V45,T16] ( 4, 32 ) int -> r1 "argument with side effect"
; V46 tmp28 [V46,T17] ( 4, 32 ) int -> registers "argument with side effect"
@@ -59,27 +59,27 @@
; V48 tmp30 [V48,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V49 tmp31 [V49,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V50 tmp32 [V50,T45] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x44] spill-single-def "CSE - conservative"
-; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r12 "CSE - conservative"
+; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x40] spill-single-def "CSE - conservative"
+; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r5 "CSE - conservative"
; V53 cse2 [V53,T09] ( 9, 36 ) ref -> r1 "CSE - aggressive"
-; V54 cse3 [V54,T04] ( 5, 63.36) int -> r8 "CSE - aggressive"
-; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r8 "CSE - aggressive"
-; V56 cse5 [V56,T00] ( 9, 95.04) int -> r7 "CSE - aggressive"
-; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
-; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x40] spill-single-def "CSE - moderate"
-; V59 cse8 [V59,T35] ( 3, 5 ) int -> [sp+0x3C] spill-single-def "CSE - moderate"
-; TEMP_02 byref -> [r11-0xA0]
-; TEMP_01 ref -> [r11-0xA4]
+; V54 cse3 [V54,T04] ( 5, 63.36) int -> r7 "CSE - aggressive"
+; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r7 "CSE - aggressive"
+; V56 cse5 [V56,T00] ( 9, 95.04) int -> r5 "CSE - aggressive"
+; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
+; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x3C] spill-single-def "CSE - moderate"
+; V59 cse8 [V59,T33] ( 3, 8.92) int -> [sp+0x38] spill-single-def "CSE - moderate"
+; TEMP_02 byref -> [r11-0x9C]
+; TEMP_01 ref -> [r11-0xA0]
;
-; Lcl frame size = 156
+; Lcl frame size = 148
G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 156
- add r11, sp, 184
+ sub sp, 148
+ add r11, sp, 176
movs r2, 0
- str r2, [sp+0x18] // [TEMP_02]
- str r2, [sp+0x14] // [TEMP_01]
+ str r2, [sp+0x14] // [TEMP_02]
+ str r2, [sp+0x10] // [TEMP_01]
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -87,11 +87,11 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 8.00
G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq G_M41336_IG37
+ beq G_M41336_IG31
movs r6, 0
ldr r7, [r4+0x08]
; gcrRegs +[r7]
- str r7, [sp+0x20] // [V12 loc10]
+ str r7, [sp+0x1C] // [V12 loc10]
; GC ptr vars +{V12}
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
@@ -104,7 +104,7 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcr arg pop 0
ldrb r0, [r4+0x58]
cmp r0, 0
- bne G_M41336_IG38
+ bne G_M41336_IG32
ldr r0, [r5+0x2C]
; gcrRegs +[r0]
cmp r0, r4
@@ -128,7 +128,7 @@ G_M41336_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r0, [r5+0x2C]
; gcrRegs +[r0]
cmp r0, 0
- bne G_M41336_IG39
+ bne G_M41336_IG33
;; size=8 bbWeight=0.50 PerfScore 1.50
G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -145,7 +145,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r0, [r0+0x14]
; gcrRegs -[r0]
cmp r0, 0
- bne G_M41336_IG40
+ bne G_M41336_IG34
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -153,11 +153,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 32
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -171,11 +171,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // System.Reflection.Emit.RuntimeILGenerator:GetTokenFixups():int[]:this
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 16
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -192,7 +192,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r5, r0
; gcrRegs +[r5]
- str r5, [sp+0x38] // [V02 loc0]
+ str r5, [sp+0x34] // [V02 loc0]
; GC ptr vars +{V02}
mov r0, r5
movw r3, 0xd1ff
@@ -202,7 +202,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=126 bbWeight=1 PerfScore 45.00
G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r1, r0
@@ -213,11 +213,11 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 36
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -226,222 +226,209 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; byrRegs -[r0]
mov r8, 0
ldr r9, [r5+0x04]
- str r9, [sp+0x3C] // [V59 cse8]
+ str r9, [sp+0x38] // [V59 cse8]
cmp r9, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=58 bbWeight=0.50 PerfScore 8.50
G_M41336_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
add r3, r5, 8
; byrRegs +[r3]
- str r3, [sp+0x1C] // [V57 cse6]
+ str r3, [sp+0x18] // [V57 cse6]
; GC ptr vars +{V57}
- str r8, [sp+0x84] // [V14 loc12]
lsl lr, r8, 2
- str lr, [sp+0x40] // [V58 cse7]
+ str lr, [sp+0x3C] // [V58 cse7]
ldr r1, [r3+lr]
; gcrRegs +[r1]
ldr r12, [r1+0x04]
; gcrRegs +[r12]
- str r12, [sp+0x34] // [V04 loc2]
+ str r12, [sp+0x30] // [V04 loc2]
; GC ptr vars +{V04}
ldr r2, [r1+0x08]
; gcrRegs +[r2]
- str r2, [sp+0x30] // [V05 loc3]
+ str r2, [sp+0x2C] // [V05 loc3]
; GC ptr vars +{V05}
ldr r0, [r1+0x0C]
; gcrRegs +[r0]
- str r0, [sp+0x2C] // [V06 loc4]
+ str r0, [sp+0x28] // [V06 loc4]
; GC ptr vars +{V06}
- ldr r9, [r1+0x14]
- ; gcrRegs +[r9]
- str r9, [sp+0x28] // [V07 loc5]
+ ldr r5, [r1+0x14]
+ str r5, [sp+0x24] // [V07 loc5]
...
+28 (+3.27%) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
@@ -8,88 +8,89 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) int -> [sp+0x20] single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r8 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> r5 single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r9 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r10
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [sp+0x64] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) int -> [sp+0x20] single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> r7 single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r8 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r10 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r9
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [sp+0x64] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [sp+0x18] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [sp+0x18] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [sp+0x10] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> r1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [sp+0x0C] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> r1
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> r3
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> r3
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> r3
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> r2
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> r2
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r1
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> r2
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> r2
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> r2
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r1
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r1
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> lr
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r1
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> lr
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> r3
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> r3
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> r0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> r0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [sp+0x0C] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [sp+0x08] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [sp+0x14] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0xa)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) int -> r0 "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [sp+0x10] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) int -> r0 "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 44
@@ -102,35 +103,35 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [r11-0x24]
mov r4, r0
; gcrRegs +[r4]
- mov r8, r2
- ; byrRegs +[r8]
- mov r5, r3
+ mov r7, r2
+ ; byrRegs +[r7]
+ mov r8, r3
mov r3, r1
ldr r6, [sp+0x54] // [V05 arg4]
; gcrRegs +[r6]
- ldr r7, [sp+0x58] // [V06 arg5]
- ; gcrRegs +[r7]
- ldr r9, [sp+0x5C] // [V07 arg6]
- ldr r10, [sp+0x60] // [V08 arg7]
+ ldr r5, [sp+0x58] // [V06 arg5]
+ ; gcrRegs +[r5]
+ ldr r10, [sp+0x5C] // [V07 arg6]
+ ldr r9, [sp+0x60] // [V08 arg7]
;; size=38 bbWeight=1 PerfScore 14.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldrb r2, [sp+0x64]
strb r2, [sp+0x14] // [V75 tmp62]
ldr lr, [sp+0x50] // [V04 arg3]
; gcrRegs +[lr]
- str lr, [sp+0x0C] // [V73 tmp60]
+ str lr, [sp+0x08] // [V73 tmp60]
; GC ptr vars +{V73}
ldr r0, [r3+0x20]
ldr r1, [r0+0x08]
cmp r1, 0
beq SHORT G_M39451_IG04
;; size=24 bbWeight=1 PerfScore 8.00
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, gcvars, byref, isz
; gcrRegs -[lr]
str r3, [sp+0x20] // [V01 TypeCtx]
b SHORT G_M39451_IG05
;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
str r3, [sp+0x20] // [V01 TypeCtx]
mov r0, r3
movw r1, 0xd1ff
@@ -140,7 +141,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100
blx r12 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r1, r0
;; size=24 bbWeight=0.20 PerfScore 1.60
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
ldr r0, [r4+0xA4]
; gcrRegs +[r0]
movw r12, 0xd1ff
@@ -150,13 +151,13 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r
blx r12 // Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this
str r0, [sp+0x1C] // [V11 loc1]
;; size=22 bbWeight=1 PerfScore 7.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r0]
- uxtb r0, r10
+ uxtb r0, r9
cmp r0, 0
bne SHORT G_M39451_IG16
;; size=8 bbWeight=8 PerfScore 24.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
@@ -180,239 +181,59 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r
mov r3, r1
; gcrRegs +[r3]
;; size=38 bbWeight=2 PerfScore 28.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r1]
ldrh r0, [r3+0x08]
- uxth r3, r5
+ uxth r3, r8
; gcrRegs -[r3]
+ str r3, [sp+0x10] // [V79 cse0]
cmp r0, r3
- beq G_M39451_IG39
- ;; size=10 bbWeight=2 PerfScore 8.00
-G_M39451_IG09: ; bbWeight=4, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ldr r3, [r4+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+ beq G_M39451_IG33
+ ;; size=14 bbWeight=2 PerfScore 10.00
+G_M39451_IG09: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
+ ldr r2, [r4+0x08]
+ ; gcrRegs +[r2]
+ cmp r2, 0
bne SHORT G_M39451_IG11
;; size=6 bbWeight=4 PerfScore 12.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
- ; gcrRegs -[r3]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
+ ; gcrRegs -[r2]
mov r0, r4
; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
...
+16 (+4.57%) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
@@ -8,184 +8,191 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
-; V01 arg1 [V01,T05] ( 4, 3 ) ref -> r4 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T06] ( 4, 3 ) ref -> r5 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T07] ( 4, 3 ) int -> r6 single-def
-; V04 arg4 [V04,T16] ( 2, 1 ) ref -> [sp+0x38] class-hnd single-def <System.Reflection.Binder>
-; V05 arg5 [V05,T15] ( 4, 1.79) ref -> r7 class-hnd single-def <System.Object[]>
-; V06 arg6 [V06,T17] ( 2, 1 ) ref -> [sp+0x40] class-hnd single-def <System.Globalization.CultureInfo>
-; V07 loc0 [V07,T12] ( 3, 2.50) ref -> r8 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
-; V08 loc1 [V08,T10] ( 8, 2.58) ref -> r2 class-hnd exact single-def <System.Object[]>
-; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x0C]
+; V00 this [V00,T09] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V01 arg1 [V01,T06] ( 4, 4.48) ref -> r4 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T07] ( 4, 4.48) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T08] ( 4, 4.48) int -> r6 single-def
+; V04 arg4 [V04,T14] ( 2, 2.48) ref -> r7 class-hnd single-def <System.Reflection.Binder>
+; V05 arg5 [V05,T17] ( 4, 1.79) ref -> r9 class-hnd single-def <System.Object[]>
+; V06 arg6 [V06,T15] ( 2, 2.48) ref -> r8 class-hnd single-def <System.Globalization.CultureInfo>
+; V07 loc0 [V07,T11] ( 3, 3.98) ref -> r10 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
+; V08 loc1 [V08,T05] ( 8, 7.02) ref -> r2 class-hnd exact single-def <System.Object[]>
+; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x14]
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> lr class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> r12 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V13 tmp3 [V13,T12] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp7 [V17,T20] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V18 cse0 [V18,T13] ( 3, 2.50) ref -> r0 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r10 "CSE - aggressive"
-; V20 cse2 [V20,T09] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive"
-; V21 cse3 [V21,T04] ( 6, 5.29) byref -> [sp+0x08] hoist multi-def "CSE - aggressive"
+; V19 cse1 [V19,T03] ( 8, 9.71) int -> [sp+0x10] spill-single-def "CSE - aggressive"
+; V20 cse2 [V20,T10] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive"
+; V21 cse3 [V21,T04] ( 6, 8.25) byref -> [sp+0x0C] hoist multi-def "CSE - aggressive"
; V22 cse4 [V22,T02] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V23 rat0 [V23,T14] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
+; V23 rat0 [V23,T16] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
+ sub sp, 28
+ add r11, sp, 56
mov r4, r1
; gcrRegs +[r4]
mov r5, r2
; gcrRegs +[r5]
mov r6, r3
- ldr r7, [sp+0x3C] // [V05 arg5]
+ ldr r7, [sp+0x40] // [V04 arg4]
; gcrRegs +[r7]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M50642_IG02: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [sp+0x44] // [V05 arg5]
+ ; gcrRegs +[r9]
+ ldr r8, [sp+0x48] // [V06 arg6]
+ ; gcrRegs +[r8]
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M50642_IG02: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r0, [r0+0x10]
cmp r0, 0
bne SHORT G_M50642_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movs r0, 0
b SHORT G_M50642_IG04
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- mov r8, r0
- ; gcrRegs +[r8]
- cmp r8, 0
- beq SHORT G_M50642_IG15
- cmp r7, 0
+ mov r10, r0
+ ; gcrRegs +[r10]
+ cmp r10, 0
+ beq G_M50642_IG16
+ cmp r9, 0
bne SHORT G_M50642_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs -[r7-r8]
- ldr r7, [sp+0x38] // [V04 arg4]
- ; gcrRegs +[r7]
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=01B1 {r0 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs -[r9-r10]
mov r3, r7
; gcrRegs +[r3]
- str r5, [sp+0x38] // [V04 arg4]
- ldr r9, [sp+0x40] // [V06 arg6]
- ; gcrRegs +[r9]
- str r9, [sp+0x3C] // [V04 arg4+0x04]
+ str r5, [sp+0x40]
+ str r8, [sp+0x44]
mov r1, r4
; gcrRegs +[r1]
mov r2, r6
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr r12, [lr]
- ;; size=30 bbWeight=0.50 PerfScore 5.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 20
+ add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
bx r12 // System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0-r1 r3 r9] +[r8]
- ldr r10, [r7+0x04]
- add r1, r10, 1
+G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=07B0 {r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0-r1 r3] +[r9-r10]
+ ldr r3, [r9+0x04]
+ str r3, [sp+0x10]
+ adds r1, r3, 1
movw r0, 0xd1ff
movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWARR_1_OBJ
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ blx r2 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0]
; gcr arg pop 0
mov r2, r0
; gcrRegs +[r2]
movs r1, 0
- cmp r10, 0
+ ldr r3, [sp+0x10] // [V19 cse1]
+ cmp r3, 0
ble SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 6.50
+G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [r2+0x04]
- cmp r0, r10
+ cmp r0, r3
blt SHORT G_M50642_IG11
- adds r7, 8
- ; gcrRegs -[r7]
- ; byrRegs +[r7]
- add r3, r2, 8
- ; byrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.25
-G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0088 {r3 r7}, byref, isz
- str r1, [sp+0x0C] // [V09 loc2]
+ add r9, r9, 8
+ ; gcrRegs -[r9]
+ ; byrRegs +[r9]
+ add lr, r2, 8
+ ; byrRegs +[lr]
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=4200 {r9 lr}, byref, isz
+ str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- ldr lr, [r7+r0]
- ; gcrRegs +[lr]
- str r3, [sp+0x08] // [V21 cse3]
+ ldr r12, [r9+r0]
+ ; gcrRegs +[r12]
+ str lr, [sp+0x0C] // [V21 cse3]
; GC ptr vars +{V21}
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
+ mov r1, r12
; gcrRegs +[r1]
movw r12, 0xd1ff
+ ; gcrRegs -[r12]
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 lr]
- ; byrRegs -[r0 r3]
- ldr r1, [sp+0x0C] // [V09 loc2]
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0 lr]
+ ldr r1, [sp+0x14] // [V09 loc2]
adds r1, r1, 1
- cmp r10, r1
- ldr r3, [sp+0x08] // [V21 cse3]
- ; byrRegs +[r3]
+ ldr r3, [sp+0x10] // [V19 cse1]
+ cmp r3, r1
+ ldr lr, [sp+0x0C] // [V21 cse3]
+ ; byrRegs +[lr]
bgt SHORT G_M50642_IG09
- ;; size=34 bbWeight=3.96 PerfScore 55.44
-G_M50642_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[r3 r7]
+ ;; size=40 bbWeight=3.96 PerfScore 59.40
+G_M50642_IG10: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[r9 lr]
; GC ptr vars -{V21}
+ ldr r3, [sp+0x10] // [V19 cse1]
b SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r7]
- add r0, r7, 8
+ ;; size=4 bbWeight=1.98 PerfScore 3.96
+G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r9]
+ add r0, r9, 8
; byrRegs +[r0]
- lsls r3, r1, 2
- ldr lr, [r0+r3]
- ; gcrRegs +[lr]
+ lsl lr, r1, 2
+ ldr r12, [r0+lr]
+ ; gcrRegs +[r12]
ldr r0, [r2+0x04]
; byrRegs -[r0]
cmp r1, r0
- bhs SHORT G_M50642_IG14
- add r3, r2, 8
- ; byrRegs +[r3]
- str r1, [sp+0x0C] // [V09 loc2]
+ bhs SHORT G_M50642_IG15
+ add lr, r2, 8
+ ; byrRegs +[lr]
+ str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
...
coreclr_tests.run.linux.arm.checked.mch
-22 (-5.67%) : 311135.dasm - System.Collections.Generic.HashSet1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable
1[System.__Canon]):this (Tier1)
@@ -10,42 +10,41 @@
; Final local variable assignments
;
; V00 this [V00,T11] ( 4, 6.46) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 loc0 [V02,T03] ( 11, 18.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 loc0 [V02,T05] ( 10, 17.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V04 loc2 [V04 ] ( 1, 3.46) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
;# 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,T15] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
+; V07 tmp2 [V07,T14] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T01] ( 4, 20.74) int -> r3 "VirtualCall with runtime lookup"
; V10 tmp5 [V10,T08] ( 2, 8.91) int -> r0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
-; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r8 "Inlining Arg"
+; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r7 "Inlining Arg"
; V14 tmp9 [V14,T06] ( 4, 16.47) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T04] ( 3, 18.63) ref -> r1 "arr expr"
-; V17 tmp12 [V17,T05] ( 3, 18.63) int -> r0 "index expr"
+; V16 tmp11 [V16,T03] ( 3, 18.63) ref -> r1 "arr expr"
+; V17 tmp12 [V17,T04] ( 3, 18.63) int -> r0 "index expr"
; V18 tmp13 [V18,T07] ( 2, 13.83) ref -> r1 "argument with side effect"
-; V19 PSPSym [V19,T18] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V19 PSPSym [V19,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
; V20 cse0 [V20,T09] ( 3, 12.02) int -> r0 "CSE - aggressive"
-; V21 cse1 [V21,T13] ( 4, 6.15) int -> r6 "CSE - moderate"
-; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r9 "CSE - aggressive"
-; V23 cse3 [V23,T12] ( 5, 6.46) int -> r7 hoist multi-def "CSE - aggressive"
-; V24 rat0 [V24,T17] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
-; V25 rat1 [V25,T16] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T12] ( 4, 6.15) int -> r6 "CSE - moderate"
+; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r8 "CSE - aggressive"
+; V23 rat0 [V23,T16] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
+; V24 rat1 [V24,T15] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V25 rat2 [V25,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 24
- add r11, sp, 48
- add r2, sp, 56
- str r2, [sp+0x14] // [V19 PSPSym]
- str r0, [r11-0x24]
+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ add r2, sp, 48
+ str r2, [sp+0x10] // [V19 PSPSym]
+ str r0, [r11-0x1C]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
mov r5, r0
@@ -55,7 +54,7 @@ G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=24 bbWeight=1 PerfScore 9.00
G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r4, 0
- beq G_M539_IG19
+ beq SHORT G_M539_IG18
ldr r6, [r5]
mov r0, r6
ldr r1, [r0+0x24]
@@ -63,7 +62,7 @@ G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5},
ldr r1, [r1+0x40]
cmp r1, 0
beq SHORT G_M539_IG16
- ;; size=20 bbWeight=1 PerfScore 9.00
+ ;; size=18 bbWeight=1 PerfScore 9.00
G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
@@ -77,13 +76,11 @@ G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr
str r4, [sp]
; GC ptr vars +{V02}
;; size=12 bbWeight=1 PerfScore 6.00
-G_M539_IG04: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M539_IG04: ; bbWeight=1, gcVars=00000820 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
ldr r1, [r4]
- movw r7, 0xd1ff
- movt r7, 0xd1ff
b SHORT G_M539_IG08
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M539_IG05: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
@@ -117,25 +114,27 @@ G_M539_IG07: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
;; size=28 bbWeight=3.46 PerfScore 41.48
G_M539_IG08: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4]
- cmp r1, r7
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
bne SHORT G_M539_IG10
- add r8, r4, 4
- ; byrRegs +[r8]
- ldr r9, [r8]
- ; gcrRegs +[r9]
- mov r1, r9
+ adds r7, r4, 4
+ ; byrRegs +[r7]
+ ldr r8, [r7]
+ ; gcrRegs +[r8]
+ mov r1, r8
; gcrRegs +[r1]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
ldr r3, [r1+0x0C]
cmp r0, r3
bne SHORT G_M539_IG14
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
ldr r3, [r1+0x08]
cmp r0, r3
bhs SHORT G_M539_IG15
- ;; size=36 bbWeight=4.46 PerfScore 62.39
-G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs -[r9]
+ ;; size=38 bbWeight=4.46 PerfScore 71.30
+G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0080 {r7}, byref, isz
+ ; gcrRegs -[r8]
ldr r1, [r1+0x04]
ldr r3, [r1+0x04]
cmp r0, r3
@@ -147,20 +146,20 @@ G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {
ldr r1, [r1+r0]
; gcrRegs +[r1]
; byrRegs -[r1]
- add r0, r8, 4
+ adds r0, r7, 4
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
b SHORT G_M539_IG05
- ;; size=40 bbWeight=3.11 PerfScore 46.58
+ ;; size=34 bbWeight=3.11 PerfScore 46.58
G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ; byrRegs -[r7]
mov r0, r4
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -171,13 +170,13 @@ G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
+ beq SHORT G_M539_IG19
+ ;; size=18 bbWeight=4.46 PerfScore 31.20
+G_M539_IG11: ; bbWeight=3.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp] // [V02 loc0]
; gcrRegs +[r4]
- bne SHORT G_M539_IG05
- ;; size=20 bbWeight=4.46 PerfScore 35.65
-G_M539_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M539_IG17
- ;; size=2 bbWeight=1 PerfScore 1.00
+ b SHORT G_M539_IG05
+ ;; size=4 bbWeight=3.46 PerfScore 6.91
G_M539_IG12: ; bbWeight=0.69, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r0, r6
movw r1, 0xd1ff
@@ -205,19 +204,19 @@ G_M539_IG14: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs +[r9]
- ; byrRegs +[r8]
- ldr r0, [r9+0x08]
+G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0080 {r7}, byref, isz
+ ; gcrRegs +[r8]
+ ; byrRegs +[r7]
+ ldr r0, [r8+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
movs r0, 0
- str r0, [r8+0x04]
+ str r0, [r7+0x04]
b SHORT G_M539_IG17
- ;; size=18 bbWeight=1.35 PerfScore 8.11
+ ;; size=14 bbWeight=1.35 PerfScore 8.11
G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9]
- ; byrRegs -[r8]
+ ; gcrRegs -[r8]
+ ; byrRegs -[r7]
; GC ptr vars -{V02}
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -228,19 +227,12 @@ G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r
mov r1, r0
b SHORT G_M539_IG03
;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M539_IG17: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02}
- ldr r0, [r4]
- cmp r0, r7
- bne SHORT G_M539_IG20
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M539_IG18: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M539_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; GC ptr vars -{V02}
- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M539_IG18: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
movs r0, 70
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -249,9 +241,10 @@ G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, by
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M539_IG19: ; bbWeight=0, gcVars=00000820 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02}
+ ldr r4, [sp] // [V02 loc0]
+ ; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -262,25 +255,25 @@ G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
...
-22 (-5.67%) : 304388.dasm - System.Collections.Generic.HashSet1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable
1[System.__Canon]):this (Tier1)
@@ -10,42 +10,41 @@
; Final local variable assignments
;
; V00 this [V00,T11] ( 4, 6.46) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 loc0 [V02,T03] ( 11, 18.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 loc0 [V02,T05] ( 10, 17.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V04 loc2 [V04 ] ( 1, 3.46) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
;# 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,T15] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
+; V07 tmp2 [V07,T14] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T01] ( 4, 20.74) int -> r3 "VirtualCall with runtime lookup"
; V10 tmp5 [V10,T08] ( 2, 8.91) int -> r0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
-; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r8 "Inlining Arg"
+; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r7 "Inlining Arg"
; V14 tmp9 [V14,T06] ( 4, 16.47) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T04] ( 3, 18.63) ref -> r1 "arr expr"
-; V17 tmp12 [V17,T05] ( 3, 18.63) int -> r0 "index expr"
+; V16 tmp11 [V16,T03] ( 3, 18.63) ref -> r1 "arr expr"
+; V17 tmp12 [V17,T04] ( 3, 18.63) int -> r0 "index expr"
; V18 tmp13 [V18,T07] ( 2, 13.83) ref -> r1 "argument with side effect"
-; V19 PSPSym [V19,T18] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V19 PSPSym [V19,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
; V20 cse0 [V20,T09] ( 3, 12.02) int -> r0 "CSE - aggressive"
-; V21 cse1 [V21,T13] ( 4, 6.15) int -> r6 "CSE - moderate"
-; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r9 "CSE - aggressive"
-; V23 cse3 [V23,T12] ( 5, 6.46) int -> r7 hoist multi-def "CSE - aggressive"
-; V24 rat0 [V24,T17] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
-; V25 rat1 [V25,T16] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T12] ( 4, 6.15) int -> r6 "CSE - moderate"
+; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r8 "CSE - aggressive"
+; V23 rat0 [V23,T16] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
+; V24 rat1 [V24,T15] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V25 rat2 [V25,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 24
- add r11, sp, 48
- add r2, sp, 56
- str r2, [sp+0x14] // [V19 PSPSym]
- str r0, [r11-0x24]
+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ add r2, sp, 48
+ str r2, [sp+0x10] // [V19 PSPSym]
+ str r0, [r11-0x1C]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
mov r5, r0
@@ -55,7 +54,7 @@ G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=24 bbWeight=1 PerfScore 9.00
G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r4, 0
- beq G_M539_IG19
+ beq SHORT G_M539_IG18
ldr r6, [r5]
mov r0, r6
ldr r1, [r0+0x24]
@@ -63,7 +62,7 @@ G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5},
ldr r1, [r1+0x40]
cmp r1, 0
beq SHORT G_M539_IG16
- ;; size=20 bbWeight=1 PerfScore 9.00
+ ;; size=18 bbWeight=1 PerfScore 9.00
G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
@@ -77,13 +76,11 @@ G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr
str r4, [sp]
; GC ptr vars +{V02}
;; size=12 bbWeight=1 PerfScore 6.00
-G_M539_IG04: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M539_IG04: ; bbWeight=1, gcVars=00000820 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
ldr r1, [r4]
- movw r7, 0xd1ff
- movt r7, 0xd1ff
b SHORT G_M539_IG08
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M539_IG05: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
@@ -117,25 +114,27 @@ G_M539_IG07: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
;; size=28 bbWeight=3.46 PerfScore 41.48
G_M539_IG08: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4]
- cmp r1, r7
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
bne SHORT G_M539_IG10
- add r8, r4, 4
- ; byrRegs +[r8]
- ldr r9, [r8]
- ; gcrRegs +[r9]
- mov r1, r9
+ adds r7, r4, 4
+ ; byrRegs +[r7]
+ ldr r8, [r7]
+ ; gcrRegs +[r8]
+ mov r1, r8
; gcrRegs +[r1]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
ldr r3, [r1+0x0C]
cmp r0, r3
bne SHORT G_M539_IG14
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
ldr r3, [r1+0x08]
cmp r0, r3
bhs SHORT G_M539_IG15
- ;; size=36 bbWeight=4.46 PerfScore 62.39
-G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs -[r9]
+ ;; size=38 bbWeight=4.46 PerfScore 71.30
+G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0080 {r7}, byref, isz
+ ; gcrRegs -[r8]
ldr r1, [r1+0x04]
ldr r3, [r1+0x04]
cmp r0, r3
@@ -147,20 +146,20 @@ G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {
ldr r1, [r1+r0]
; gcrRegs +[r1]
; byrRegs -[r1]
- add r0, r8, 4
+ adds r0, r7, 4
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
b SHORT G_M539_IG05
- ;; size=40 bbWeight=3.11 PerfScore 46.58
+ ;; size=34 bbWeight=3.11 PerfScore 46.58
G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ; byrRegs -[r7]
mov r0, r4
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -171,13 +170,13 @@ G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
+ beq SHORT G_M539_IG19
+ ;; size=18 bbWeight=4.46 PerfScore 31.20
+G_M539_IG11: ; bbWeight=3.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp] // [V02 loc0]
; gcrRegs +[r4]
- bne SHORT G_M539_IG05
- ;; size=20 bbWeight=4.46 PerfScore 35.65
-G_M539_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M539_IG17
- ;; size=2 bbWeight=1 PerfScore 1.00
+ b SHORT G_M539_IG05
+ ;; size=4 bbWeight=3.46 PerfScore 6.91
G_M539_IG12: ; bbWeight=0.69, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r0, r6
movw r1, 0xd1ff
@@ -205,19 +204,19 @@ G_M539_IG14: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs +[r9]
- ; byrRegs +[r8]
- ldr r0, [r9+0x08]
+G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0080 {r7}, byref, isz
+ ; gcrRegs +[r8]
+ ; byrRegs +[r7]
+ ldr r0, [r8+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
movs r0, 0
- str r0, [r8+0x04]
+ str r0, [r7+0x04]
b SHORT G_M539_IG17
- ;; size=18 bbWeight=1.35 PerfScore 8.11
+ ;; size=14 bbWeight=1.35 PerfScore 8.11
G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9]
- ; byrRegs -[r8]
+ ; gcrRegs -[r8]
+ ; byrRegs -[r7]
; GC ptr vars -{V02}
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -228,19 +227,12 @@ G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r
mov r1, r0
b SHORT G_M539_IG03
;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M539_IG17: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02}
- ldr r0, [r4]
- cmp r0, r7
- bne SHORT G_M539_IG20
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M539_IG18: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M539_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; GC ptr vars -{V02}
- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M539_IG18: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
movs r0, 70
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -249,9 +241,10 @@ G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, by
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M539_IG19: ; bbWeight=0, gcVars=00000820 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02}
+ ldr r4, [sp] // [V02 loc0]
+ ; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -262,25 +255,25 @@ G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
...
-10 (-5.10%) : 116194.dasm - System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 15, 4.90) int -> r0 single-def
-; V01 loc0 [V01,T01] ( 28, 4.90) int -> r4
+; V01 loc0 [V01,T01] ( 28, 4.98) int -> r4
; V02 loc1 [V02,T03] ( 10, 3 ) int -> r3
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -31,7 +31,7 @@
;* V20 loc19 [V20 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V21 loc20 [V21 ] ( 0, 0 ) int -> zero-ref
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T02] ( 9, 4 ) int -> registers "Single return block return value"
+; V23 tmp1 [V23,T02] ( 9, 4.15) int -> r0 "Single return block return value"
;
; Lcl frame size = 4
@@ -47,7 +47,7 @@ G_M6202_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
subs r3, 8
ldrb r2, [r0+r4]
cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r2, r4, 1
ldrb r2, [r0+r2]
cmp r2, 0
@@ -57,7 +57,7 @@ G_M6202_IG04: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
adds r2, r4, 2
ldrb r2, [r0+r2]
cmp r2, 0
- bne SHORT G_M6202_IG13
+ bne SHORT G_M6202_IG14
;; size=8 bbWeight=0.90 PerfScore 3.60
G_M6202_IG05: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adds r0, r4, 2
@@ -69,61 +69,60 @@ G_M6202_IG07: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byr
adds r0, r4, 1
b SHORT G_M6202_IG06
;; size=4 bbWeight=0.10 PerfScore 0.20
-G_M6202_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 3
+G_M6202_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r0, r4
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0.08 PerfScore 0.15
G_M6202_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 4
- mov r0, r4
+ adds r0, r4, 3
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 5
- mov r0, r4
+ adds r0, r4, 4
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 6
- mov r0, r4
+ adds r0, r4, 5
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 7
- mov r0, r4
+ adds r0, r4, 6
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ adds r0, r4, 7
+ b SHORT G_M6202_IG06
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6202_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
adds r2, r4, 3
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG08
+ beq SHORT G_M6202_IG09
adds r2, r4, 4
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG09
+ beq SHORT G_M6202_IG10
adds r2, r4, 5
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG10
+ beq SHORT G_M6202_IG11
adds r2, r4, 6
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG11
+ beq SHORT G_M6202_IG12
adds r2, r4, 7
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG12
+ beq SHORT G_M6202_IG13
adds r4, 8
cmp r3, 8
bhs SHORT G_M6202_IG03
cmp r3, 4
- blo SHORT G_M6202_IG15
+ blo SHORT G_M6202_IG16
subs r3, r3, 4
ldrb r2, [r0+r4]
cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r2, r4, 1
ldrb r2, [r0+r2]
cmp r2, 0
@@ -135,20 +134,20 @@ G_M6202_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
adds r2, r4, 3
ldrb r2, [r0+r2]
cmp r2, 0
- beq SHORT G_M6202_IG08
+ beq SHORT G_M6202_IG09
adds r4, r4, 4
- b SHORT G_M6202_IG15
+ b SHORT G_M6202_IG16
;; size=86 bbWeight=0 PerfScore 0.00
-G_M6202_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
subs r3, r3, 1
ldrb r2, [r0+r4]
cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r4, r4, 1
;; size=10 bbWeight=0 PerfScore 0.00
-G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6202_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- bne SHORT G_M6202_IG14
+ bne SHORT G_M6202_IG15
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -156,12 +155,8 @@ G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
bkpt
;; size=18 bbWeight=0 PerfScore 0.00
-G_M6202_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, r4
- b SHORT G_M6202_IG06
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 8, PerfScore 17.70, instruction count 92, allocated bytes for code 196 (MethodHash=304fe7c5) for method System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
+; Total bytes of code 186, prolog size 8, PerfScore 17.85, instruction count 87, allocated bytes for code 186 (MethodHash=304fe7c5) for method System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
; ============================================================
Unwind Info:
@@ -173,7 +168,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 93 (0x0005d) Actual length = 186 (0x0000ba)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+26 (+7.56%) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
@@ -9,19 +9,19 @@
; 3 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T14] ( 1, 1 ) byref -> [sp+0x50] single-def
-; V03 arg3 [V03,T15] ( 1, 1 ) byref -> [sp+0x54] single-def
-; V04 arg4 [V04,T31] ( 1, 0 ) ubyte -> [sp+0x58] single-def
-; V05 arg5 [V05,T32] ( 1, 0 ) ubyte -> [sp+0x5C] single-def
-; V06 loc0 [V06,T11] ( 3, 3 ) int -> r8
-; V07 loc1 [V07 ] ( 1, 1 ) byref -> [sp+0x14] pinned single-def
-; V08 loc2 [V08,T12] ( 3, 3 ) int -> r9
-; V09 loc3 [V09 ] ( 1, 1 ) byref -> [sp+0x10] pinned single-def
-; V10 loc4 [V10,T05] ( 8, 4.02) int -> registers
-; V11 loc5 [V11 ] ( 5, 3.01) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
-; V12 loc6 [V12 ] ( 5, 3.01) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T14] ( 1, 1.01) byref -> r4 single-def
+; V03 arg3 [V03,T15] ( 1, 1.01) byref -> r5 single-def
+; V04 arg4 [V04,T31] ( 1, 0 ) ubyte -> [sp+0x60] single-def
+; V05 arg5 [V05,T32] ( 1, 0 ) ubyte -> [sp+0x64] single-def
+; V06 loc0 [V06,T11] ( 3, 3.01) int -> r10
+; V07 loc1 [V07 ] ( 1, 1 ) byref -> [sp+0x1C] pinned single-def
+; V08 loc2 [V08,T12] ( 3, 3.01) int -> [sp+0x18] spill-single-def
+; V09 loc3 [V09 ] ( 1, 1 ) byref -> [sp+0x14] pinned single-def
+; V10 loc4 [V10,T05] ( 8, 4.04) int -> [sp+0x10]
+; V11 loc5 [V11 ] ( 5, 3.02) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
+; V12 loc6 [V12 ] ( 5, 3.02) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -34,16 +34,16 @@
;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V23 tmp10 [V23,T18] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V25 tmp12 [V25,T17] ( 5, 0 ) int -> r7 "Inlining Arg"
-; V26 tmp13 [V26,T16] ( 5, 0 ) byref -> r6 "Inlining Arg"
+; V25 tmp12 [V25,T17] ( 5, 0 ) int -> r9 "Inlining Arg"
+; V26 tmp13 [V26,T16] ( 5, 0 ) byref -> r8 "Inlining Arg"
;* V27 tmp14 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V28 tmp15 [V28,T20] ( 3, 0 ) int -> r7 "Inlining Arg"
-; V29 tmp16 [V29,T22] ( 2, 0 ) byref -> r6 "Inlining Arg"
+; V28 tmp15 [V28,T20] ( 3, 0 ) int -> r9 "Inlining Arg"
+; V29 tmp16 [V29,T22] ( 2, 0 ) byref -> r8 "Inlining Arg"
;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V31 tmp18 [V31,T19] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V32 tmp19 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp20 [V33,T21] ( 3, 0 ) int -> r5 "Inlining Arg"
-; V34 tmp21 [V34,T23] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V33 tmp20 [V33,T21] ( 3, 0 ) int -> r7 "Inlining Arg"
+; V34 tmp21 [V34,T23] ( 2, 0 ) byref -> r6 "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp23 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V37 tmp24 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -68,192 +68,202 @@
;* V56 tmp43 [V56 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP
;* V57 tmp44 [V57 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp45 [V58 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-; V59 tmp46 [V59,T06] ( 8, 4.01) byref -> r4 "V00.[000..004)"
-; V60 tmp47 [V60,T10] ( 7, 3.01) int -> r5 "V00.[004..008)"
-; V61 tmp48 [V61,T07] ( 8, 4.01) byref -> r6 "V01.[000..004)"
-; V62 tmp49 [V62,T13] ( 5, 2.01) int -> r7 "V01.[004..008)"
-; V63 tmp50 [V63,T08] ( 2, 4 ) int -> r8 "Cast away GC"
-; V64 tmp51 [V64,T09] ( 2, 4 ) int -> r9 "Cast away GC"
+; V59 tmp46 [V59,T06] ( 8, 4.01) byref -> r6 "V00.[000..004)"
+; V60 tmp47 [V60,T10] ( 7, 3.01) int -> r7 "V00.[004..008)"
+; V61 tmp48 [V61,T07] ( 8, 4.01) byref -> r8 "V01.[000..004)"
+; V62 tmp49 [V62,T13] ( 5, 2.01) int -> r9 "V01.[004..008)"
+; V63 tmp50 [V63,T08] ( 2, 4 ) int -> r10 "Cast away GC"
+; V64 tmp51 [V64,T09] ( 2, 4 ) int -> lr "Cast away GC"
; V65 tmp52 [V65,T02] ( 2, 4.05) int -> r0 "Cast away GC"
; V66 tmp53 [V66,T03] ( 2, 4.05) int -> r2 "Cast away GC"
; V67 tmp54 [V67,T04] ( 2, 4.05) int -> r2 "argument with side effect"
-; V68 tmp55 [V68,T26] ( 2, 0 ) int -> r2 "Cast away GC"
+; V68 tmp55 [V68,T26] ( 2, 0 ) int -> r3 "Cast away GC"
; V69 tmp56 [V69,T27] ( 2, 0 ) int -> r1 "Cast away GC"
; V70 tmp57 [V70,T28] ( 2, 0 ) int -> r0 "argument with side effect"
; V71 tmp58 [V71,T29] ( 2, 0 ) int -> r2 "Cast away GC"
; V72 tmp59 [V72,T30] ( 2, 0 ) int -> r2 "Cast away GC"
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M59130_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28
- add r11, sp, 56
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M59130_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r4, [sp+0x40]
+ sub sp, 36
+ add r11, sp, 64
+ ldr r4, [sp+0x58] // [V02 arg2]
; byrRegs +[r4]
- ldr r5, [sp+0x44]
+ ldr r5, [sp+0x5C] // [V03 arg3]
+ ; byrRegs +[r5]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M59130_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r6, [sp+0x48]
; byrRegs +[r6]
ldr r7, [sp+0x4C]
- str r4, [sp+0x14] // [V07 loc1]
- mov r8, r4
- str r6, [sp+0x10] // [V09 loc3]
- mov r9, r6
- mov r10, 0
- str r8, [sp+0x0C] // [V11 loc5]
- str r9, [sp+0x08] // [V12 loc6]
- cmp r5, 0
+ ldr r8, [sp+0x50]
+ ; byrRegs +[r8]
+ ldr r9, [sp+0x54]
+ str r6, [sp+0x1C] // [V07 loc1]
+ mov r10, r6
+ str r8, [sp+0x14] // [V09 loc3]
+ mov lr, r8
+ str lr, [sp+0x18] // [V08 loc2]
+ mov r12, 0
+ str r10, [sp+0x0C] // [V11 loc5]
+ str lr, [sp+0x08] // [V12 loc6]
+ cmp r7, 0
+ str r12, [sp+0x10] // [V10 loc4]
beq SHORT G_M59130_IG04
- ;; size=32 bbWeight=1 PerfScore 13.00
-G_M59130_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
- mov r0, r4
- mov r2, r6
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M59130_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz
+ mov r0, r6
+ mov r2, r8
add r1, sp, 12 // [V11 loc5]
str r1, [sp] // [V13 OutArgs]
add r1, sp, 8 // [V12 loc6]
str r1, [sp+0x04] // [V13 OutArgs+0x04]
- mov r1, r5
- mov r3, r7
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // <unknown method>
- mov r10, r0
- cmp r10, 1
+ mov r1, r7
+ mov r3, r9
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ ldr r12, [r12]
+ blx r12 // <unknown method>
+ mov r3, r0
+ str r3, [sp+0x10] // [V10 loc4]
+ cmp r3, 1
bgt SHORT G_M59130_IG06
- ;; size=38 bbWeight=1.01 PerfScore 15.18
-G_M59130_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4 r6]
+ ;; size=38 bbWeight=1.01 PerfScore 16.19
+G_M59130_IG04: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
+ ; byrRegs -[r6 r8]
ldr r0, [sp+0x0C] // [V11 loc5]
- sub r0, r0, r8
+ sub r0, r0, r10
movs r1, 2
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DIV
- ldr r8, [sp+0x50] // [V02 arg2]
- ; byrRegs +[r8]
- str r0, [r8]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ blx r2 // CORINFO_HELP_DIV
+ str r0, [r4]
ldr r0, [sp+0x08] // [V12 loc6]
- sub r0, r0, r9
- ldr r8, [sp+0x54] // [V03 arg3]
- str r0, [r8]
- mov r0, r10
- ;; size=42 bbWeight=1 PerfScore 13.00
-G_M59130_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 28
+ ldr r4, [sp+0x18] // [V08 loc2]
+ ; byrRegs -[r4]
+ subs r0, r0, r4
+ str r0, [r5]
+ ldr r0, [sp+0x10] // [V10 loc4]
+ ;; size=30 bbWeight=1.01 PerfScore 12.14
+G_M59130_IG05: ; bbWeight=1.01, epilog, nogc, extend
+ add sp, 36
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 16
bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M59130_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, gcvars, byref, isz
- ; byrRegs -[r8] +[r4 r6]
- cmp r10, 2
+ ;; size=10 bbWeight=1.01 PerfScore 4.05
+G_M59130_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, gcvars, byref, isz
+ ; byrRegs +[r4 r6 r8]
+ ldr r3, [sp+0x10] // [V10 loc4]
+ cmp r3, 2
bne SHORT G_M59130_IG07
- ldrb r0, [sp+0x5C] // [V05 arg5]
+ ldrb r0, [sp+0x64] // [V05 arg5]
cmp r0, 0
+ str r3, [sp+0x10] // [V10 loc4]
beq SHORT G_M59130_IG04
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M59130_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
- ldrb r10, [sp+0x58] // [V04 arg4]
- uxtb r0, r10
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M59130_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz
+ ldrb r0, [sp+0x60] // [V04 arg4]
cmp r0, 0
beq SHORT G_M59130_IG14
ldr r0, [sp+0x08] // [V12 loc6]
- mov r2, r6
- subs r0, r0, r2
- cmp r0, r7
+ mov r3, r8
+ subs r0, r0, r3
+ cmp r0, r9
bhi SHORT G_M59130_IG16
- adds r6, r6, r0
- subs r7, r7, r0
- cmp r7, 0
+ add r8, r0
+ sub r9, r9, r0
+ cmp r9, 0
bge SHORT G_M59130_IG08
movs r0, 0
b SHORT G_M59130_IG09
;; size=34 bbWeight=0 PerfScore 0.00
-G_M59130_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref
+G_M59130_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref
movs r0, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M59130_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // <unknown method>
- cmp r7, 2
+G_M59130_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz
+ movw r3, 0xd1ff
...
+14 (+11.48%) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -10,8 +10,8 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 18.97) int -> r0 single-def
-; V01 arg1 [V01,T03] ( 7, 5 ) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.80) int -> r4
+; V01 arg1 [V01,T03] ( 7, 9.88) ref -> r1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 5, 3.80) int -> r4
; V03 loc1 [V03,T02] ( 10, 14.90) int -> r5
; V04 loc2 [V04,T00] ( 10, 24.57) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,32 +25,32 @@ G_M10596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
ldr r4, [r1]
ldrh r5, [r4+0x0E]
cmp r5, 0
- beq SHORT G_M10596_IG07
+ beq SHORT G_M10596_IG10
ldr r6, [r4+0x28]
cmp r5, 4
- blt SHORT G_M10596_IG09
+ blt SHORT G_M10596_IG07
;; size=18 bbWeight=1 PerfScore 9.00
G_M10596_IG03: ; bbWeight=3.90, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6]
cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
;; size=6 bbWeight=3.90 PerfScore 11.70
G_M10596_IG04: ; bbWeight=3.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6+0x04]
cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
;; size=6 bbWeight=3.80 PerfScore 11.40
G_M10596_IG05: ; bbWeight=3.70, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6+0x08]
cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
ldr r3, [r6+0x0C]
cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
adds r6, 16
subs r5, r5, 4
cmp r5, 4
@@ -58,52 +58,59 @@ G_M10596_IG05: ; bbWeight=3.70, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, b
;; size=20 bbWeight=3.70 PerfScore 37.00
G_M10596_IG06: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- bne SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG10
;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M10596_IG07: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M10596_IG07: ; bbWeight=1.07, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r6]
+ cmp r3, r0
+ bne SHORT G_M10596_IG13
+ ;; size=6 bbWeight=1.07 PerfScore 3.22
+G_M10596_IG08: ; bbWeight=5.08, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=5.08 PerfScore 5.08
+G_M10596_IG09: ; bbWeight=5.08, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=5.08 PerfScore 5.08
+G_M10596_IG10: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- beq SHORT G_M10596_IG13
+ beq SHORT G_M10596_IG14
+ ;; size=16 bbWeight=0.80 PerfScore 4.80
+G_M10596_IG11: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=26 bbWeight=0.80 PerfScore 7.20
-G_M10596_IG08: ; bbWeight=0.80, epilog, nogc, extend
+ ;; size=10 bbWeight=0.80 PerfScore 2.40
+G_M10596_IG12: ; bbWeight=0.80, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.80 PerfScore 2.40
-G_M10596_IG09: ; bbWeight=1.07, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r3, [r6]
- cmp r3, r0
- bne SHORT G_M10596_IG12
- ;; size=6 bbWeight=1.07 PerfScore 3.22
-G_M10596_IG10: ; bbWeight=0.20, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- mov r0, r1
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.20 PerfScore 0.20
-G_M10596_IG11: ; bbWeight=0.20, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M10596_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
+G_M10596_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
adds r6, r6, 4
subs r5, r5, 1
cmp r5, 0
- bgt SHORT G_M10596_IG09
- b SHORT G_M10596_IG07
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10596_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bgt SHORT G_M10596_IG07
+ ldr r3, [r4]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ands r3, r2
+ cmp r3, 0
+ bne SHORT G_M10596_IG11
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M10596_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
movs r1, 0
- b SHORT G_M10596_IG10
+ b SHORT G_M10596_IG08
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 8, PerfScore 85.92, instruction count 53, allocated bytes for code 122 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 95.68, instruction count 58, allocated bytes for code 136 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -115,16 +122,16 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- 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 : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 1
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)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+16 (+13.33%) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -10,8 +10,8 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 36.29) int -> r0 single-def
-; V01 arg1 [V01,T03] ( 7, 5 ) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 4 ) int -> r4
+; V01 arg1 [V01,T03] ( 7, 15.67) ref -> r1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 5, 4 ) int -> r4
; V03 loc1 [V03,T02] ( 10, 28 ) int -> r5
; V04 loc2 [V04,T00] ( 10, 50.29) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -29,7 +29,7 @@ G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
ldr r4, [r1]
ldrh r5, [r4+0x0E]
cmp r5, 0
- beq SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG08
ldr r6, [r4+0x28]
cmp r5, 4
blt SHORT G_M10596_IG05
@@ -54,51 +54,59 @@ G_M10596_IG03: ; bbWeight=8, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
;; size=32 bbWeight=8 PerfScore 128.00
G_M10596_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG08
;; size=4 bbWeight=1 PerfScore 2.00
G_M10596_IG05: ; bbWeight=1.29, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6]
cmp r3, r0
- bne SHORT G_M10596_IG08
+ bne SHORT G_M10596_IG11
;; size=6 bbWeight=1.29 PerfScore 3.88
-G_M10596_IG06: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M10596_IG06: ; bbWeight=10.67, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
mov r0, r1
; gcrRegs +[r0]
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M10596_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=10.67 PerfScore 10.67
+G_M10596_IG07: ; bbWeight=10.67, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M10596_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=4 bbWeight=10.67 PerfScore 10.67
+G_M10596_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- adds r6, r6, 4
- subs r5, r5, 1
- cmp r5, 0
- bgt SHORT G_M10596_IG05
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M10596_IG09: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- beq SHORT G_M10596_IG11
+ beq SHORT G_M10596_IG12
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M10596_IG09: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M10596_IG10: ; bbWeight=1, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 3.00
-G_M10596_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10596_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ adds r6, r6, 4
+ subs r5, r5, 1
+ cmp r5, 0
+ bgt SHORT G_M10596_IG05
+ ldr r3, [r4]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ands r3, r2
+ cmp r3, 0
+ bne SHORT G_M10596_IG09
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M10596_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
movs r1, 0
b SHORT G_M10596_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 156.88, instruction count 52, allocated bytes for code 120 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 178.22, instruction count 58, allocated bytes for code 136 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -110,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.linux.arm.checked.mch
-12 (-4.14%) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
@@ -8,29 +8,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 3 ) ref -> r8 this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
-; V01 arg1 [V01,T05] ( 7, 5.29) ref -> r7 class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T03] ( 7, 6 ) int -> r5 single-def
-; V03 arg3 [V03,T04] ( 6, 6 ) int -> r6 single-def
-; V04 loc0 [V04,T00] ( 21, 23 ) int -> r9
-; V05 loc1 [V05,T06] ( 6, 5.50) int -> r3 single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> r7 this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
+; V01 arg1 [V01,T07] ( 7, 5.29) ref -> r8 class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T04] ( 7, 6 ) int -> r5 single-def
+; V03 arg3 [V03,T05] ( 6, 6 ) int -> r6 single-def
+; V04 loc0 [V04,T00] ( 21, 37.80) int -> r9
+; V05 loc1 [V05,T09] ( 6, 5.50) int -> r3 single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> r0 single-def
+; V07 loc3 [V07,T08] ( 3, 5.94) int -> r0 single-def
; V08 loc4 [V08,T02] ( 12, 17.29) int -> r1
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> r8 class-hnd <<unknown class>>
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> r7 class-hnd <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 3 ) ref -> r3 single-def "arr expr"
-; V12 cse0 [V12,T08] ( 4, 5 ) byref -> r0 "CSE - aggressive"
+; V11 tmp1 [V11,T03] ( 3, 11.88) ref -> r3 single-def "arr expr"
+; V12 cse0 [V12,T10] ( 4, 5 ) byref -> r0 "CSE - aggressive"
;
; Lcl frame size = 0
G_M57627_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 r8, r0
- ; gcrRegs +[r8]
- mov r7, r1
+ mov r7, r0
; gcrRegs +[r7]
+ mov r8, r1
+ ; gcrRegs +[r8]
mov r5, r2
mov r6, r3
;; size=16 bbWeight=1 PerfScore 6.00
@@ -62,10 +62,10 @@ G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8
ldr r0, [r0+0x208]
; byrRegs -[r0]
add r9, r0, r6
- ldr r0, [r7+0x04]
+ ldr r0, [r8+0x04]
cmp r5, r0
bhs SHORT G_M57627_IG18
- add r0, r7, 8
+ add r0, r8, 8
; byrRegs +[r0]
lsls r3, r5, 1
ldrh r3, [r0+r3]
@@ -76,15 +76,15 @@ G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8
adds r1, r5, 1
cmp r1, r3
bge SHORT G_M57627_IG10
- ;; size=52 bbWeight=0.50 PerfScore 10.00
+ ;; size=54 bbWeight=0.50 PerfScore 10.00
G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz
orrs r2, r1, r3
cmp r2, 0
blt SHORT G_M57627_IG09
- ldr r2, [r7+0x04]
+ ldr r2, [r8+0x04]
cmp r2, r3
blt SHORT G_M57627_IG09
- ;; size=14 bbWeight=0.25 PerfScore 1.50
+ ;; size=16 bbWeight=0.25 PerfScore 1.50
G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz
lsls r2, r1, 1
ldrh r2, [r0+r2]
@@ -95,13 +95,13 @@ G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r
cmp r1, r3
blt SHORT G_M57627_IG07
;; size=20 bbWeight=3.96 PerfScore 31.68
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
b SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- ldr r2, [r7+0x04]
+ ldr r2, [r8+0x04]
cmp r1, r2
bhs SHORT G_M57627_IG18
lsls r2, r1, 1
@@ -112,8 +112,8 @@ G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r
adds r1, r1, 1
cmp r1, r3
blt SHORT G_M57627_IG09
- ;; size=26 bbWeight=0.04 PerfScore 0.44
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=0.04 PerfScore 0.44
+G_M57627_IG10: ; bbWeight=1.98, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
asr r0, r9, 17
sub r9, r9, r0
@@ -121,10 +121,10 @@ G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}
sub r9, r9, r0
asr r0, r9, 5
sub r9, r9, r0
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
dmb 15
and r0, r9, r0
- ldr r3, [r8+0x04]
+ ldr r3, [r7+0x04]
; gcrRegs +[r3]
ldr r1, [r3+0x04]
cmp r0, r1
@@ -133,21 +133,21 @@ G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}
; gcrRegs -[r3]
; byrRegs +[r3]
lsls r0, r0, 2
- ldr r8, [r3+r0]
- cmp r8, 0
+ ldr r7, [r3+r0]
+ cmp r7, 0
beq SHORT G_M57627_IG14
- ;; size=60 bbWeight=0.50 PerfScore 9.00
+ ;; size=52 bbWeight=1.98 PerfScore 35.64
G_M57627_IG11: ; bbWeight=4, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r3]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
cmp r0, r9
bne SHORT G_M57627_IG13
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M57627_IG12: ; bbWeight=2, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r8+0x04]
+ ldr r0, [r7+0x04]
; gcrRegs +[r0]
mov r3, r6
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1]
mov r2, r5
movw r4, LOW RELOC 0xD1FFAB1E
@@ -159,12 +159,12 @@ G_M57627_IG12: ; bbWeight=2, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, b
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M57627_IG16
- ;; size=30 bbWeight=2 PerfScore 22.00
+ ;; size=28 bbWeight=2 PerfScore 22.00
G_M57627_IG13: ; bbWeight=4, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r8+0x08]
- cmp r8, 0
+ ldr r7, [r7+0x08]
+ cmp r7, 0
bne SHORT G_M57627_IG11
- ;; size=10 bbWeight=4 PerfScore 12.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M57627_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r7-r8]
movs r0, 0
@@ -173,16 +173,16 @@ G_M57627_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M57627_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57627_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0] +[r8]
- ldr r0, [r8+0x04]
+G_M57627_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0] +[r7]
+ ldr r0, [r7+0x04]
; gcrRegs +[r0]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M57627_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M57627_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r7]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -192,7 +192,7 @@ G_M57627_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 16, PerfScore 112.12, instruction count 105, allocated bytes for code 290 (MethodHash=33c41ee4) for method Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
+; Total bytes of code 278, prolog size 16, PerfScore 140.24, instruction count 105, allocated bytes for code 278 (MethodHash=33c41ee4) for method Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -204,7 +204,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 145 (0x00091) Actual length = 290 (0x000122)
+ Function Length : 139 (0x0008b) Actual length = 278 (0x000116)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-3.45%) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -54,7 +54,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
movs r0, 0
ldr r8, [r7+0x04]
cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
ldr r0, [r7+0x08]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -80,7 +80,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
mov r10, r0
subs r0, r5, 1
cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
add r4, r7, 8
; byrRegs +[r4]
str r4, [sp+0x04]
@@ -125,7 +125,7 @@ G_M10937_IG04: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}
G_M10937_IG05: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
movs r0, 1
cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
ldr r0, [r7+0x0C]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -134,14 +134,14 @@ G_M10937_IG05: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000
ldr r2, [r4]
blx r2 // Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String
cmp r0, 0
- beq SHORT G_M10937_IG10
+ beq SHORT G_M10937_IG11
movs r4, 2
cmp r5, 2
- ble SHORT G_M10937_IG13
+ ble SHORT G_M10937_IG10
;; size=34 bbWeight=0.50 PerfScore 7.00
G_M10937_IG06: ; bbWeight=0.25, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
cmp r8, r5
- blt SHORT G_M10937_IG12
+ blt SHORT G_M10937_IG09
;; size=4 bbWeight=0.25 PerfScore 0.50
G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
str r4, [sp+0x0C] // [V08 loc5]
@@ -170,7 +170,7 @@ G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M10937_IG09
+ bne SHORT G_M10937_IG11
ldr r4, [sp+0x08] // [V09 loc6]
; gcrRegs +[r4]
mov r0, r4
@@ -181,27 +181,13 @@ G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0
cmp r4, r5
blt SHORT G_M10937_IG07
;; size=58 bbWeight=3.96 PerfScore 99.00
-G_M10937_IG08: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG08: ; bbWeight=1.98, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- b SHORT G_M10937_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG09: ; bbWeight=1.98, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- ldr r4, [sp+0x10] // [V05 loc2]
- b SHORT G_M10937_IG14
- ;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M10937_IG10: ; bbWeight=0.25, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ldr r4, [sp+0x10] // [V05 loc2]
- b SHORT G_M10937_IG14
- ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ldr r4, [sp+0x10] // [V05 loc2]
- b SHORT G_M10937_IG14
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0]
+ b SHORT G_M10937_IG10
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
+G_M10937_IG09: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
cmp r4, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
str r4, [sp+0x0C] // [V08 loc5]
lsls r1, r4, 2
ldr r3, [sp+0x04] // [V27 cse1]
@@ -228,7 +214,7 @@ G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M10937_IG19
+ bne SHORT G_M10937_IG11
ldr r4, [sp+0x08] // [V09 loc6]
; gcrRegs +[r4]
mov r0, r4
@@ -237,21 +223,20 @@ G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0
; gcrRegs -[r4]
adds r4, r4, 1
cmp r4, r5
- blt SHORT G_M10937_IG12
+ blt SHORT G_M10937_IG09
;; size=64 bbWeight=0.04 PerfScore 1.08
-G_M10937_IG13: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref
+G_M10937_IG10: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- ldr r3, [r0+0x04]
- str r3, [sp+0x10] // [V05 loc2]
- ldr r4, [sp+0x10] // [V05 loc2]
+ ldr r1, [r0+0x04]
+ mov r4, r1
+ str r4, [sp+0x10] // [V05 loc2]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG14: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG11: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r10, 0
- bne SHORT G_M10937_IG24
+ bne SHORT G_M10937_IG20
;; size=6 bbWeight=1 PerfScore 2.00
-G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- str r4, [sp+0x10] // [V05 loc2]
+G_M10937_IG12: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x08]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -267,9 +252,9 @@ G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000
; gcrRegs +[r7]
ldr r10, [sp+0x14] // [V04 loc1]
cmp r10, 0
- bne SHORT G_M10937_IG16
+ bne SHORT G_M10937_IG13
cmp r5, 1
- bne SHORT G_M10937_IG16
+ bne SHORT G_M10937_IG13
mov r0, r7
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -279,8 +264,8 @@ G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000
; gcrRegs -[r7]
mov r7, r0
; gcrRegs +[r7]
- ;; size=56 bbWeight=0.50 PerfScore 11.00
-G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=0.50 PerfScore 10.50
+G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
@@ -298,7 +283,7 @@ G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
cmp r0, 0
- bne SHORT G_M10937_IG22
+ bne SHORT G_M10937_IG18
mov r1, r9
; gcrRegs +[r1]
mov r0, r7
@@ -310,66 +295,60 @@ G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r0-r1 r9]
cmp r0, 0
- bne SHORT G_M10937_IG21
- movw r1, LOW RELOC 0xD1FFAB1E
- movt r1, HIGH RELOC 0xD1FFAB1E
- add r1, pc
- ldr r1, [r1]
- ldr r1, [r1]
- ; gcrRegs +[r1]
- mov r0, r7
- ; gcrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
- cmp r0, 0
- bne SHORT G_M10937_IG20
- movw r1, LOW RELOC 0xD1FFAB1E
- movt r1, HIGH RELOC 0xD1FFAB1E
- add r1, pc
- ldr r1, [r1]
- ldr r1, [r1]
- ; gcrRegs +[r1]
- mov r0, r7
- ; gcrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
- cmp r0, 0
bne SHORT G_M10937_IG17
+ movw r1, LOW RELOC 0xD1FFAB1E
+ movt r1, HIGH RELOC 0xD1FFAB1E
+ add r1, pc
+ ldr r1, [r1]
+ ldr r1, [r1]
+ ; gcrRegs +[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1]
+ cmp r0, 0
+ bne SHORT G_M10937_IG16
+ movw r1, LOW RELOC 0xD1FFAB1E
+ movt r1, HIGH RELOC 0xD1FFAB1E
+ add r1, pc
+ ldr r1, [r1]
+ ldr r1, [r1]
+ ; gcrRegs +[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1]
+ cmp r0, 0
+ bne SHORT G_M10937_IG14
movs r1, 0
- b SHORT G_M10937_IG18
+ b SHORT G_M10937_IG15
;; size=130 bbWeight=0.50 PerfScore 25.50
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
+G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10937_IG23
+G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M10937_IG19
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG19: ; bbWeight=0.02, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r9]
- ldr r4, [sp+0x10] // [V05 loc2]
- b SHORT G_M10937_IG14
- ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10937_IG20: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
+G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
movs r1, 2
- b SHORT G_M10937_IG23
...
-40 (-2.86%) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span1[uint],System.Span
1[uint]) (FullOpts)
@@ -8,17 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 30, 48.50) struct ( 8) [sp+0x100] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Span`1[uint]>
-; V01 arg1 [V01 ] ( 26, 46.50) struct ( 8) [sp+0x108] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[uint]>
+; V00 arg0 [V00 ] ( 30, 48.50) struct ( 8) [sp+0x108] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Span`1[uint]>
+; V01 arg1 [V01 ] ( 26, 46.50) struct ( 8) [sp+0x110] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[uint]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.Span`1[uint]>
-; V03 loc1 [V03 ] ( 14,212 ) long -> [sp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op
-; V04 loc2 [V04 ] ( 18,252 ) long -> [sp+0xC8] do-not-enreg[X] addr-exposed ld-addr-op
-; V05 loc3 [V05,T13] ( 5, 54 ) int -> [sp+0xC4]
-; V06 loc4 [V06,T12] ( 6, 58 ) int -> [sp+0xC0]
+; V03 loc1 [V03 ] ( 14,212 ) long -> [sp+0xD8] do-not-enreg[X] addr-exposed ld-addr-op
+; V04 loc2 [V04 ] ( 18,252 ) long -> [sp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc3 [V05,T13] ( 5, 54 ) int -> [sp+0xCC]
+; V06 loc4 [V06,T10] ( 6, 67 ) int -> r8
; V07 loc5 [V07,T08] ( 7, 86 ) int -> r9
-; V08 loc6 [V08,T14] ( 5, 54 ) int -> [sp+0xBC]
-; V09 loc7 [V09,T09] ( 6, 70 ) int -> [sp+0xB8]
-; V10 loc8 [V10 ] ( 2, 32 ) long -> [sp+0xB0] multireg-ret
+; V08 loc6 [V08,T14] ( 5, 54 ) int -> [sp+0xC8]
+; V09 loc7 [V09,T09] ( 6, 70 ) int -> [sp+0xC4]
+; V10 loc8 [V10 ] ( 2, 32 ) long -> [sp+0xB8] multireg-ret
;* V11 loc9 [V11 ] ( 0, 0 ) long -> zero-ref
;* V12 loc10 [V12 ] ( 0, 0 ) long -> zero-ref
;* V13 loc11 [V13 ] ( 0, 0 ) long -> zero-ref
@@ -28,51 +28,51 @@
;* V17 loc15 [V17 ] ( 0, 0 ) long -> zero-ref
;* V18 loc16 [V18 ] ( 0, 0 ) long -> zero-ref
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V20 tmp1 [V20 ] ( 3, 24 ) struct ( 8) [sp+0xA8] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "non-inline candidate call" <System.ReadOnlySpan`1[uint]>
-; V21 tmp2 [V21 ] ( 3, 24 ) struct ( 8) [sp+0xA0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V20 tmp1 [V20 ] ( 3, 24 ) struct ( 8) [sp+0xB0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "non-inline candidate call" <System.ReadOnlySpan`1[uint]>
+; V21 tmp2 [V21 ] ( 3, 24 ) struct ( 8) [sp+0xA8] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V22 tmp3 [V22 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "non-inline candidate call" <System.Span`1[uint]>
-; V23 tmp4 [V23 ] ( 3, 12 ) struct ( 8) [sp+0x98] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V23 tmp4 [V23 ] ( 3, 12 ) struct ( 8) [sp+0xA0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V24 tmp5 [V24 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "non-inline candidate call" <System.Span`1[uint]>
-; V25 tmp6 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x90] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V25 tmp6 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x98] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V26 tmp7 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[uint]>
; V27 tmp8 [V27,T49] ( 2, 2 ) byref -> [sp+0x2C] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp9 [V28,T50] ( 2, 2 ) int -> [sp+0x8C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V28 tmp9 [V28,T50] ( 2, 2 ) int -> [sp+0x94] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
; V29 tmp10 [V29,T37] ( 2, 4 ) byref -> r0 "field V14._reference (fldOffset=0x0)" P-INDEP
; V30 tmp11 [V30,T40] ( 2, 4 ) int -> r1 "field V14._length (fldOffset=0x4)" P-INDEP
; V31 tmp12 [V31,T38] ( 2, 4 ) byref -> r1 "field V16._reference (fldOffset=0x0)" P-INDEP
; V32 tmp13 [V32,T41] ( 2, 4 ) int -> r2 "field V16._length (fldOffset=0x4)" P-INDEP
-; V33 tmp14 [V33,T27] ( 2, 12 ) byref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V20._reference (fldOffset=0x0)" P-DEP
-; V34 tmp15 [V34,T29] ( 2, 12 ) int -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V20._length (fldOffset=0x4)" P-DEP
-; V35 tmp16 [V35,T28] ( 2, 12 ) byref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V21._reference (fldOffset=0x0)" P-DEP
-; V36 tmp17 [V36,T30] ( 2, 12 ) int -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V21._length (fldOffset=0x4)" P-DEP
+; V33 tmp14 [V33,T27] ( 2, 12 ) byref -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V20._reference (fldOffset=0x0)" P-DEP
+; V34 tmp15 [V34,T29] ( 2, 12 ) int -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V20._length (fldOffset=0x4)" P-DEP
+; V35 tmp16 [V35,T28] ( 2, 12 ) byref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V21._reference (fldOffset=0x0)" P-DEP
+; V36 tmp17 [V36,T30] ( 2, 12 ) int -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V21._length (fldOffset=0x4)" P-DEP
; V37 tmp18 [V37,T39] ( 2, 4 ) byref -> r7 "field V22._reference (fldOffset=0x0)" P-INDEP
; V38 tmp19 [V38,T42] ( 2, 4 ) int -> r8 "field V22._length (fldOffset=0x4)" P-INDEP
-; V39 tmp20 [V39,T35] ( 2, 6 ) byref -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V23._reference (fldOffset=0x0)" P-DEP
-; V40 tmp21 [V40,T36] ( 2, 6 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V23._length (fldOffset=0x4)" P-DEP
+; V39 tmp20 [V39,T35] ( 2, 6 ) byref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V23._reference (fldOffset=0x0)" P-DEP
+; V40 tmp21 [V40,T36] ( 2, 6 ) int -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V23._length (fldOffset=0x4)" P-DEP
; V41 tmp22 [V41,T61] ( 2, 1 ) byref -> r7 single-def "field V24._reference (fldOffset=0x0)" P-INDEP
; V42 tmp23 [V42,T62] ( 2, 1 ) int -> r8 "field V24._length (fldOffset=0x4)" P-INDEP
-; V43 tmp24 [V43,T57] ( 2, 1.50) byref -> [sp+0x90] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP
-; V44 tmp25 [V44,T58] ( 2, 1.50) int -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
+; V43 tmp24 [V43,T57] ( 2, 1.50) byref -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP
+; V44 tmp25 [V44,T58] ( 2, 1.50) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
;* V45 tmp26 [V45 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp27 [V46 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
; V47 tmp28 [V47,T31] ( 2, 8 ) int -> r3 "argument with side effect"
; V48 tmp29 [V48,T32] ( 2, 8 ) int -> r3 "argument with side effect"
; V49 tmp30 [V49,T33] ( 2, 8 ) int -> r3 "argument with side effect"
-; V50 tmp31 [V50 ] ( 1, 1 ) long -> [sp+0x80] multireg-ret "argument with side effect"
-; V51 tmp32 [V51,T43] ( 3, 3 ) struct ( 8) [sp+0x78] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[uint]>
+; V50 tmp31 [V50 ] ( 1, 1 ) long -> [sp+0x88] multireg-ret "argument with side effect"
+; V51 tmp32 [V51,T43] ( 3, 3 ) struct ( 8) [sp+0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[uint]>
; V52 tmp33 [V52,T51] ( 2, 2 ) int -> r3 "argument with side effect"
; V53 cse0 [V53,T44] ( 4, 2 ) int -> r3 "CSE - moderate"
; V54 cse1 [V54,T54] ( 3, 1.50) byref -> r2 "CSE - moderate"
; V55 cse2 [V55,T56] ( 3, 1.50) int -> r12 "CSE - moderate"
; V56 cse3 [V56,T55] ( 3, 1.50) byref -> lr "CSE - moderate"
;* V57 cse4 [V57 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V58 rat0 [V58,T01] ( 8,128 ) int -> [sp+0x74] "field V10.lo (fldOffset=0x0)" P-INDEP
-; V59 rat1 [V59,T00] ( 10,160 ) int -> [sp+0x70] "field V10.hi (fldOffset=0x4)" P-INDEP
-; V60 rat2 [V60,T02] ( 8,128 ) int -> [sp+0x6C] "field V11.lo (fldOffset=0x0)" P-INDEP
-; V61 rat3 [V61,T06] ( 6, 96 ) int -> [sp+0x68] "field V11.hi (fldOffset=0x4)" P-INDEP
-; V62 rat4 [V62,T03] ( 8,128 ) int -> [sp+0x64] "field V12.lo (fldOffset=0x0)" P-INDEP
-; V63 rat5 [V63,T07] ( 6, 96 ) int -> [sp+0x60] "field V12.hi (fldOffset=0x4)" P-INDEP
-; V64 rat6 [V64,T04] ( 8,128 ) int -> registers "field V13.lo (fldOffset=0x0)" P-INDEP
+; V58 rat0 [V58,T01] ( 8,128 ) int -> [sp+0x7C] "field V10.lo (fldOffset=0x0)" P-INDEP
+; V59 rat1 [V59,T00] ( 10,160 ) int -> [sp+0x78] "field V10.hi (fldOffset=0x4)" P-INDEP
+; V60 rat2 [V60,T02] ( 8,128 ) int -> [sp+0x74] "field V11.lo (fldOffset=0x0)" P-INDEP
+; V61 rat3 [V61,T06] ( 6, 96 ) int -> [sp+0x70] "field V11.hi (fldOffset=0x4)" P-INDEP
+; V62 rat4 [V62,T03] ( 8,128 ) int -> [sp+0x6C] "field V12.lo (fldOffset=0x0)" P-INDEP
+; V63 rat5 [V63,T07] ( 6, 96 ) int -> [sp+0x68] "field V12.hi (fldOffset=0x4)" P-INDEP
+; V64 rat6 [V64,T04] ( 8,128 ) int -> r5 "field V13.lo (fldOffset=0x0)" P-INDEP
; V65 rat7 [V65,T05] ( 8,128 ) int -> lr "field V13.hi (fldOffset=0x4)" P-INDEP
; V66 rat8 [V66,T45] ( 4, 2 ) int -> r0 "field V17.lo (fldOffset=0x0)" P-INDEP
; V67 rat9 [V67,T46] ( 4, 2 ) int -> r1 "field V17.hi (fldOffset=0x4)" P-INDEP
@@ -80,8 +80,8 @@
; V69 rat11 [V69,T48] ( 4, 2 ) int -> r7 "field V18.hi (fldOffset=0x4)" P-INDEP
; V70 rat12 [V70,T59] ( 2, 1.50) int -> r2 "field V50.lo (fldOffset=0x0)" P-INDEP
; V71 rat13 [V71,T60] ( 2, 1.50) int -> r3 "field V50.hi (fldOffset=0x4)" P-INDEP
-; V72 rat14 [V72,T10] ( 4, 64 ) int -> r6 "field V57.lo (fldOffset=0x0)" P-INDEP
-; V73 rat15 [V73,T11] ( 4, 64 ) int -> r5 "field V57.hi (fldOffset=0x4)" P-INDEP
+; V72 rat14 [V72,T11] ( 4, 64 ) int -> r6 "field V57.lo (fldOffset=0x0)" P-INDEP
+; V73 rat15 [V73,T12] ( 4, 64 ) int -> [sp+0x64] spill-single-def "field V57.hi (fldOffset=0x4)" P-INDEP
; V74 rat16 [V74 ] ( 1, 32 ) long -> [sp+0x58] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V75 rat17 [V75,T15] ( 2, 48 ) int -> r0 "field V74.lo (fldOffset=0x0)" P-INDEP
; V76 rat18 [V76,T16] ( 2, 48 ) int -> r1 "field V74.hi (fldOffset=0x4)" P-INDEP
@@ -102,16 +102,16 @@
; V91 rat33 [V91,T26] ( 2, 48 ) int -> r1 "field V89.hi (fldOffset=0x4)" P-INDEP
; V92 rat34 [V92,T52] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
; V93 rat35 [V93,T53] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 int -> [r11-0xD0]
-; TEMP_01 int -> [r11-0xD4]
+; TEMP_02 int -> [r11-0xD8]
+; TEMP_01 int -> [r11-0xDC]
;
-; Lcl frame size = 220
+; Lcl frame size = 228
G_M11558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 220
- add r11, sp, 248
+ sub sp, 228
+ add r11, sp, 256
sub r2, r11, 128
movs r3, 7
movs r0, 0
@@ -121,23 +121,23 @@ G_M11558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
bhi SHORT pc-6 (-3 instructions)
;; size=28 bbWeight=1 PerfScore 11.00
G_M11558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x100]
+ ldr r5, [sp+0x108]
; byrRegs +[r5]
str r5, [sp+0x2C] // [V27 tmp8]
; GC ptr vars +{V27}
- ldr r6, [sp+0x104] // [V00 arg0+0x04]
- str r6, [sp+0x8C] // [V28 tmp9]
- ldr r1, [sp+0x10C] // [V01 arg1+0x04]
+ ldr r6, [sp+0x10C] // [V00 arg0+0x04]
+ str r6, [sp+0x94] // [V28 tmp9]
+ ldr r1, [sp+0x114] // [V01 arg1+0x04]
cmp r1, 2
ldr r5, [sp+0x2C] // [V27 tmp8]
- ldr r6, [sp+0x8C] // [V28 tmp9]
+ ldr r6, [sp+0x94] // [V28 tmp9]
ble G_M11558_IG28
;; size=20 bbWeight=1 PerfScore 9.00
G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ldr r1, [sp+0x100] // [V00 arg0]
+ ldr r1, [sp+0x108] // [V00 arg0]
; byrRegs +[r1]
- ldr r2, [sp+0x104] // [V00 arg0+0x04]
- add r0, sp, 168 // [V20 tmp1]
+ ldr r2, [sp+0x10C] // [V00 arg0+0x04]
+ add r0, sp, 176 // [V20 tmp1]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -145,10 +145,10 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000
blx r3 // <unknown method>
; byrRegs -[r1]
; gcr arg pop 0
- ldr r1, [sp+0x108] // [V01 arg1]
+ ldr r1, [sp+0x110] // [V01 arg1]
; byrRegs +[r1]
- ldr r2, [sp+0x10C] // [V01 arg1+0x04]
- add r0, sp, 160 // [V21 tmp2]
+ ldr r2, [sp+0x114] // [V01 arg1+0x04]
+ add r0, sp, 168 // [V21 tmp2]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -156,16 +156,16 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000
blx r3 // <unknown method>
; byrRegs -[r1]
; gcr arg pop 0
- add r0, sp, 208 // [V03 loc1]
+ add r0, sp, 216 // [V03 loc1]
str r0, [sp] // [V19 OutArgs]
- add r0, sp, 200 // [V04 loc2]
+ add r0, sp, 208 // [V04 loc2]
str r0, [sp+0x04] // [V19 OutArgs+0x04]
- ldr r0, [sp+0xA8] // [V33 tmp14]
+ ldr r0, [sp+0xB0] // [V33 tmp14]
; byrRegs +[r0]
- ldr r1, [sp+0xAC] // [V34 tmp15]
- ldr r2, [sp+0xA0] // [V35 tmp16]
+ ldr r1, [sp+0xB4] // [V34 tmp15]
+ ldr r2, [sp+0xA8] // [V35 tmp16]
; byrRegs +[r2]
- ldr r3, [sp+0xA4] // [V36 tmp17]
+ ldr r3, [sp+0xAC] // [V36 tmp17]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -178,17 +178,17 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000
mov r9, 0
movs r4, 1
mov lr, 0
- str lr, [sp+0xB8] // [V09 loc7]
- ldr r0, [sp+0xC8] // [V04 loc2]
- ldr r1, [sp+0xCC] // [V04 loc2+0x04]
+ str lr, [sp+0xC4] // [V09 loc7]
+ ldr r0, [sp+0xD0] // [V04 loc2]
+ ldr r1, [sp+0xD4] // [V04 loc2+0x04]
orrs r0, r1
beq G_M11558_IG06
;; size=102 bbWeight=4 PerfScore 156.00
G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [sp+0xD0] // [V03 loc1]
- ldr r1, [sp+0xD4] // [V03 loc1+0x04]
- ldr r2, [sp+0xC8] // [V04 loc2]
- ldr r3, [sp+0xCC] // [V04 loc2+0x04]
+ ldr r0, [sp+0xD8] // [V03 loc1]
+ ldr r1, [sp+0xDC] // [V03 loc1+0x04]
+ ldr r2, [sp+0xD0] // [V04 loc2]
+ ldr r3, [sp+0xD4] // [V04 loc2+0x04]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -201,9 +201,9 @@ G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byr
bhs G_M11558_IG06
mov r2, r9
movs r3, 0
- str lr, [sp+0x74] // [V58 rat0]
+ str lr, [sp+0x7C] // [V58 rat0]
mov r0, lr
- str r12, [sp+0x70] // [V59 rat1]
+ str r12, [sp+0x78] // [V59 rat1]
mov r1, r12
movw r6, LOW RELOC 0xD1FFAB1E
movt r6, HIGH RELOC 0xD1FFAB1E
@@ -215,12 +215,12 @@ G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byr
movs r2, 0
adds r6, r0, r7
adc lr, r1, r2
- str lr, [sp+0x68] // [V61 rat3]
- str r4, [sp+0xBC] // [V08 loc6]
+ str lr, [sp+0x70] // [V61 rat3]
+ str r4, [sp+0xC8] // [V08 loc6]
mov r2, r4
movs r3, 0
...
+22 (+3.67%) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
@@ -9,15 +9,15 @@
; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 12, 14 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol>
+; V00 this [V00,T02] ( 12, 15.96) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol>
; V01 arg1 [V01,T05] ( 7, 9 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.PEAssembly>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.DocumentationProvider>
-; V03 arg3 [V03,T10] ( 3, 3 ) ubyte -> r8 single-def
+; V02 arg2 [V02,T10] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.DocumentationProvider>
+; V03 arg3 [V03,T09] ( 3, 3.98) ubyte -> r7 single-def
; V04 arg4 [V04,T12] ( 2, 0.54) ubyte -> [sp+0x48] single-def
-; V05 loc0 [V05,T06] ( 6, 6.54) ref -> r9 class-hnd exact single-def <<unknown class>>
+; V05 loc0 [V05,T06] ( 6, 7.52) ref -> r9 class-hnd exact single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
; V07 loc2 [V07,T07] ( 5, 6.50) int -> r10 single-def
-; V08 loc3 [V08,T00] ( 15, 25.08) int -> r7
+; V08 loc3 [V08,T00] ( 15, 25.08) int -> r8
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T01] ( 6, 24 ) ref -> [sp+0x14] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol>
; V11 tmp2 [V11,T08] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -39,11 +39,11 @@ G_M53480_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r5]
mov r6, r1
; gcrRegs +[r6]
- mov r7, r2
- ; gcrRegs +[r7]
- mov r8, r3
+ mov r8, r2
+ ; gcrRegs +[r8]
+ mov r7, r3
;; size=22 bbWeight=1 PerfScore 9.00
-G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53480_IG02: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -117,14 +117,14 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
; byrRegs -[r0]
add r0, r5, 44
; byrRegs +[r0]
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
ldr r12, [r12]
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r7]
+ ; gcrRegs -[r1 r8]
; byrRegs -[r0]
mov r0, r6
; gcrRegs +[r0]
@@ -134,16 +134,16 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
ldr r2, [r0]
ldr r3, [r4]
blx r3 // <unknown method>
- mov r7, r0
- ; gcrRegs +[r7]
- ldr r0, [r7+0x04]
+ mov r8, r0
+ ; gcrRegs +[r8]
+ ldr r0, [r8+0x04]
; gcrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1
- ; gcrRegs -[r7] +[r0]
+ ; gcrRegs -[r8] +[r0]
mov r9, r0
; gcrRegs +[r9]
mov r0, r6
@@ -152,16 +152,16 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
add r4, pc
ldr r3, [r4]
blx r3 // <unknown method>
- mov r7, r0
- ; gcrRegs +[r7]
- ldr r0, [r7+0x04]
+ mov r8, r0
+ ; gcrRegs +[r8]
+ ldr r0, [r8+0x04]
; gcrRegs -[r0]
add r10, r0, -1
- movs r7, 0
- ; gcrRegs -[r7]
+ mov r8, 0
+ ; gcrRegs -[r8]
cmp r10, 0
- blt SHORT G_M53480_IG07
- ;; size=248 bbWeight=1 PerfScore 86.00
+ blt G_M53480_IG07
+ ;; size=256 bbWeight=1 PerfScore 86.00
G_M53480_IG03: ; bbWeight=0.50, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x04]
cmp r0, r10
@@ -186,15 +186,15 @@ G_M53480_IG04: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
blx r3 // CORINFO_HELP_READYTORUN_NEW
mov r4, r0
; gcrRegs +[r4]
- str r7, [sp] // [V09 OutArgs]
+ str r8, [sp] // [V09 OutArgs]
ldr lr, [sp+0x10] // [V13 tmp4]
; gcrRegs +[lr]
ldr r2, [lr+0x04]
- cmp r7, r2
- bhs SHORT G_M53480_IG09
+ cmp r8, r2
+ bhs G_M53480_IG09
add r2, lr, 8
; byrRegs +[r2]
- lsl lr, r7, 2
+ lsl lr, r8, 2
; gcrRegs -[lr]
str lr, [sp+0x18] // [V15 cse1]
ldr r2, [r2+lr]
@@ -230,14 +230,14 @@ G_M53480_IG04: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- adds r7, r7, 1
- cmp r7, r10
+ add r8, r8, 1
+ cmp r8, r10
ble SHORT G_M53480_IG04
- ;; size=120 bbWeight=3.96 PerfScore 170.28
-G_M53480_IG05: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=126 bbWeight=3.96 PerfScore 170.28
+G_M53480_IG05: ; bbWeight=1.98, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
b SHORT G_M53480_IG07
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
mov r0, r6
@@ -256,16 +256,16 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
blx r3 // CORINFO_HELP_READYTORUN_NEW
mov r4, r0
; gcrRegs +[r4]
- str r7, [sp] // [V09 OutArgs]
+ str r8, [sp] // [V09 OutArgs]
ldr r2, [sp+0x10] // [V13 tmp4]
; gcrRegs +[r2]
ldr r3, [r2+0x04]
- cmp r7, r3
+ cmp r8, r3
bhs SHORT G_M53480_IG09
adds r2, 8
; gcrRegs -[r2]
; byrRegs +[r2]
- lsls r3, r7, 2
+ lsl r3, r8, 2
ldr r2, [r2+r3]
; gcrRegs +[r2]
; byrRegs -[r2]
@@ -284,11 +284,11 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
blx r12 // <unknown method>
; gcrRegs -[r0-r2]
ldr r1, [r9+0x04]
- cmp r7, r1
+ cmp r8, r1
bhs SHORT G_M53480_IG09
add r1, r9, 8
; byrRegs +[r1]
- lsls r0, r7, 2
+ lsl r0, r8, 2
adds r0, r1, r0
; byrRegs +[r0]
ldr r1, [sp+0x14] // [V10 tmp1]
@@ -302,11 +302,11 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- adds r7, r7, 1
- cmp r7, r10
+ add r8, r8, 1
+ cmp r8, r10
ble SHORT G_M53480_IG06
- ;; size=116 bbWeight=0.04 PerfScore 1.80
-G_M53480_IG07: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref
+ ;; size=124 bbWeight=0.04 PerfScore 1.80
+G_M53480_IG07: ; bbWeight=1.98, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r6]
movw r0, LOW RELOC 0xD1FFAB1E
movt r0, HIGH RELOC 0xD1FFAB1E
@@ -333,12 +333,12 @@ G_M53480_IG07: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, b
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- strb r8, [r5+0x38]
- ;; size=56 bbWeight=1 PerfScore 19.00
-G_M53480_IG08: ; bbWeight=1, epilog, nogc, extend
+ strb r7, [r5+0x38]
+ ;; size=56 bbWeight=1.98 PerfScore 37.62
+G_M53480_IG08: ; bbWeight=1.98, epilog, nogc, extend
add sp, 36
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ;; size=6 bbWeight=1.98 PerfScore 3.96
G_M53480_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r5]
movw r3, LOW RELOC 0xD1FFAB1E
@@ -349,7 +349,7 @@ G_M53480_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 14, PerfScore 291.58, instruction count 216, allocated bytes for code 600 (MethodHash=1b0e2f17) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
+; Total bytes of code 622, prolog size 14, PerfScore 313.14, instruction count 216, allocated bytes for code 622 (MethodHash=1b0e2f17) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -361,7 +361,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 300 (0x0012c) Actual length = 600 (0x000258)
+ Function Length : 311 (0x00137) Actual length = 622 (0x00026e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+10 (+3.82%) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
@@ -8,17 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 2.50) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
-; V01 arg1 [V01,T05] ( 6, 7 ) ref -> r7 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
-; V02 arg2 [V02,T03] ( 6, 7.50) ref -> r5 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V03 arg3 [V03,T04] ( 7, 7.04) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V04 arg4 [V04,T08] ( 3, 2 ) int -> r9 single-def
-; V05 arg5 [V05,T09] ( 2, 1 ) int -> [sp+0x34] single-def
-; V06 arg6 [V06,T10] ( 1, 0.50) ref -> [sp+0x38] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
-; V07 loc0 [V07,T00] ( 16, 19.62) int -> r10
+; V00 this [V00,T07] ( 3, 3.98) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T03] ( 6, 8.48) ref -> r5 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
+; V02 arg2 [V02,T04] ( 6, 7.50) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V03 arg3 [V03,T05] ( 7, 7.04) ref -> r7 class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V04 arg4 [V04,T08] ( 3, 3.48) int -> r9 single-def
+; V05 arg5 [V05,T10] ( 2, 1 ) int -> [sp+0x34] single-def
+; V06 arg6 [V06,T09] ( 1, 1.98) ref -> r10 class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V07 loc0 [V07,T00] ( 16, 19.62) int -> [sp+0x04]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T01] ( 4, 16 ) ref -> r1 "argument with side effect"
-; V10 cse0 [V10,T06] ( 7, 7.04) int -> [sp+0x04] spill-single-def "CSE - aggressive"
+; V10 cse0 [V10,T06] ( 7, 8.52) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V11 cse1 [V11,T02] ( 3, 11.88) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 12
@@ -29,140 +29,147 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 40
mov r8, r0
; gcrRegs +[r8]
- mov r7, r1
- ; gcrRegs +[r7]
- mov r5, r2
+ mov r5, r1
; gcrRegs +[r5]
- mov r6, r3
+ mov r6, r2
; gcrRegs +[r6]
+ mov r7, r3
+ ; gcrRegs +[r7]
ldr r9, [sp+0x30] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M11155_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- add r10, r9, 1
- ldr r4, [r5+0x04]
- str r4, [sp+0x04]
- cmp r4, r10
+ ldr r10, [sp+0x38] // [V06 arg6]
+ ; gcrRegs +[r10]
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M11155_IG02: ; bbWeight=1, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ add r4, r9, 1
+ ldr r3, [r6+0x04]
+ str r3, [sp]
+ cmp r3, r4
ble SHORT G_M11155_IG07
;; size=12 bbWeight=1 PerfScore 5.00
-G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
+G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ cmp r7, 0
beq SHORT G_M11155_IG08
- cmp r10, 0
+ cmp r4, 0
blt SHORT G_M11155_IG08
- ldr r1, [r6+0x04]
- cmp r1, r4
+ ldr r1, [r7+0x04]
+ cmp r1, r3
blt SHORT G_M11155_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- add r1, r5, 8
+ ;; size=14 bbWeight=0.50 PerfScore 3.50
+G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ add r1, r6, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ str r4, [sp+0x04]
+ lsls r2, r4, 2
ldr r1, [r1+r2]
; gcrRegs +[r1]
; byrRegs -[r1]
- add r0, r6, 8
+ add r0, r7, 8
; byrRegs +[r0]
ldr r2, [r0+r2]
; gcrRegs +[r2]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0]
; byrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this
; gcrRegs -[r0-r2]
cmp r0, 0
bne SHORT G_M11155_IG12
- add r10, r10, 1
- ldr r4, [sp+0x04] // [V10 cse0]
- cmp r4, r10
+ ldr r4, [sp+0x04] // [V07 loc0]
+ adds r4, r4, 1
+ ldr r3, [sp] // [V10 cse0]
+ cmp r3, r4
bgt SHORT G_M11155_IG04
- ;; size=50 bbWeight=3.96 PerfScore 71.28
-G_M11155_IG05: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5-r6]
+ ;; size=52 bbWeight=3.96 PerfScore 79.20
+G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6-r7]
b SHORT G_M11155_IG09
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5-r6]
- ldr r4, [sp+0x04] // [V10 cse0]
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
+G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r6-r7]
+ ldr r3, [sp] // [V10 cse0]
b SHORT G_M11155_IG08
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5-r6]
+G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6-r7]
b SHORT G_M11155_IG09
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M11155_IG08: ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5-r6]
- cmp r10, r4
+G_M11155_IG08: ; bbWeight=0.04, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r6-r7]
+ cmp r4, r3
bhs SHORT G_M11155_IG15
- add r1, r5, 8
+ add r1, r6, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ lsls r2, r4, 2
ldr r1, [r1+r2]
; gcrRegs +[r1]
; byrRegs -[r1]
- ldr r2, [r6+0x04]
- cmp r10, r2
+ ldr r2, [r7+0x04]
+ cmp r4, r2
bhs SHORT G_M11155_IG15
- add r2, r6, 8
+ add r2, r7, 8
; byrRegs +[r2]
- lsl r0, r10, 2
+ str r4, [sp+0x04] // [V07 loc0]
+ lsls r0, r4, 2
ldr r2, [r2+r0]
; gcrRegs +[r2]
; byrRegs -[r2]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this
; gcrRegs -[r0-r2]
cmp r0, 0
bne SHORT G_M11155_IG12
- add r10, r10, 1
- ldr r4, [sp+0x04] // [V10 cse0]
- cmp r4, r10
+ ldr r4, [sp+0x04] // [V07 loc0]
+ adds r4, r4, 1
+ ldr lr, [sp] // [V10 cse0]
+ cmp lr, r4
bgt SHORT G_M11155_IG11
- ;; size=64 bbWeight=0.04 PerfScore 0.96
-G_M11155_IG09: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5-r6]
+ ;; size=66 bbWeight=0.04 PerfScore 1.04
+G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r6-r7]
mov r0, r8
; gcrRegs +[r0]
mov r3, r9
- mov r1, r7
+ mov r1, r5
; gcrRegs +[r1]
- ldr r2, [sp+0x38] // [V06 arg6]
+ mov r2, r10
; gcrRegs +[r2]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this
- ; gcrRegs -[r0-r2 r7-r8]
- ldr r0, [sp+0x04] // [V10 cse0]
- ;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M11155_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[r0-r2 r5 r8 r10]
+ ldr r0, [sp] // [V10 cse0]
+ ;; size=26 bbWeight=1.98 PerfScore 19.80
+G_M11155_IG10: ; bbWeight=1.98, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r5-r8]
- ldr r4, [sp+0x04] // [V10 cse0]
+ ;; size=6 bbWeight=1.98 PerfScore 3.96
+G_M11155_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r5-r8 r10]
+ ldr r3, [sp] // [V10 cse0]
b SHORT G_M11155_IG08
;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6 r8]
+G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7-r8 r10]
ldr r4, [sp+0x34] // [V05 arg5]
- cmp r4, r10
+ ldr r8, [sp+0x04] // [V07 loc0]
+ cmp r4, r8
bge SHORT G_M11155_IG13
- mov r3, r5
+ mov r3, r6
; gcrRegs +[r3]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0]
mov r1, r9
mov r2, r4
@@ -171,10 +178,10 @@ G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
add r4, pc
ldr lr, [r4]
blx lr // <unknown method>
- ; gcrRegs -[r0 r3 r5 r7]
- ;; size=30 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs -[r0 r3 r5-r6]
+ ;; size=34 bbWeight=0.50 PerfScore 6.50
G_M11155_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+12 (+5.22%) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
@@ -8,17 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 2.50) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
-; V01 arg1 [V01,T04] ( 5, 6.50) ref -> r6 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
-; V02 arg2 [V02,T06] ( 5, 3.54) ref -> r7 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V03 arg3 [V03,T03] ( 7, 7.04) ref -> r5 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V04 arg4 [V04,T09] ( 2, 1.50) int -> r9 single-def
-; V05 arg5 [V05,T10] ( 1, 0.50) ref -> [sp+0x34] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
-; V06 loc0 [V06,T00] ( 15, 19.12) int -> r10
+; V00 this [V00,T06] ( 3, 3.98) ref -> r7 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T03] ( 5, 7.98) ref -> r5 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
+; V02 arg2 [V02,T07] ( 5, 3.54) ref -> r8 class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V03 arg3 [V03,T04] ( 7, 7.04) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V04 arg4 [V04,T09] ( 2, 2.98) int -> r9 single-def
+; V05 arg5 [V05,T10] ( 1, 1.98) ref -> r10 class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V06 loc0 [V06,T00] ( 15, 19.12) int -> [sp+0x04]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> r1 "argument with side effect"
-; V09 cse0 [V09,T05] ( 7, 7.04) int -> [sp+0x04] spill-single-def "CSE - aggressive"
-; V10 cse1 [V10,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse0 [V09,T05] ( 7, 8.52) int -> [sp+0x00] spill-single-def "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V11 cse2 [V11,T02] ( 3, 11.88) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 12
@@ -27,138 +27,144 @@ G_M60484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
add r11, sp, 40
- mov r8, r0
- ; gcrRegs +[r8]
- mov r6, r1
- ; gcrRegs +[r6]
- mov r7, r2
+ mov r7, r0
; gcrRegs +[r7]
- mov r5, r3
+ mov r5, r1
; gcrRegs +[r5]
+ mov r8, r2
+ ; gcrRegs +[r8]
+ mov r6, r3
+ ; gcrRegs +[r6]
ldr r9, [sp+0x30] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M60484_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- add r10, r9, 1
- ldr r4, [r7+0x04]
- str r4, [sp+0x04]
- cmp r4, r10
+ ldr r10, [sp+0x34] // [V05 arg5]
+ ; gcrRegs +[r10]
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M60484_IG02: ; bbWeight=1, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ add r4, r9, 1
+ ldr r3, [r8+0x04]
+ str r3, [sp]
+ cmp r3, r4
ble SHORT G_M60484_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M60484_IG03: ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M60484_IG03: ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ cmp r6, 0
beq SHORT G_M60484_IG08
- cmp r10, 0
+ cmp r4, 0
blt SHORT G_M60484_IG08
- ldr r1, [r5+0x04]
- cmp r1, r4
+ ldr r1, [r6+0x04]
+ cmp r1, r3
blt SHORT G_M60484_IG06
- adds r7, 8
- ; gcrRegs -[r7]
- ; byrRegs +[r7]
+ add r8, r8, 8
+ ; gcrRegs -[r8]
+ ; byrRegs +[r8]
;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M60484_IG04: ; bbWeight=3.96, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, byref, isz
- lsl r2, r10, 2
- ldr r1, [r7+r2]
+G_M60484_IG04: ; bbWeight=3.96, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0100 {r8}, byref, isz
+ str r4, [sp+0x04]
+ lsls r2, r4, 2
+ ldr r1, [r8+r2]
; gcrRegs +[r1]
- add r0, r5, 8
+ add r0, r6, 8
; byrRegs +[r0]
ldr r2, [r0+r2]
; gcrRegs +[r2]
- mov r0, r6
+ mov r0, r5
; gcrRegs +[r0]
; byrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this
; gcrRegs -[r0-r2]
cmp r0, 0
bne SHORT G_M60484_IG12
- add r10, r10, 1
- ldr r4, [sp+0x04] // [V09 cse0]
- cmp r4, r10
+ ldr r4, [sp+0x04] // [V06 loc0]
+ adds r4, r4, 1
+ ldr r3, [sp] // [V09 cse0]
+ cmp r3, r4
bgt SHORT G_M60484_IG04
- ;; size=46 bbWeight=3.96 PerfScore 67.32
-G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ; byrRegs -[r7]
+ ;; size=50 bbWeight=3.96 PerfScore 75.24
+G_M60484_IG05: ; bbWeight=1.98, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
+ ; byrRegs -[r8]
b SHORT G_M60484_IG09
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- ldr r4, [sp+0x04] // [V09 cse0]
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
+G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r6 r8]
+ ldr r3, [sp] // [V09 cse0]
b SHORT G_M60484_IG08
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5 r7]
+G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6 r8]
b SHORT G_M60484_IG09
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG08: ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- cmp r10, r4
+G_M60484_IG08: ; bbWeight=0.04, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r6 r8]
+ cmp r4, r3
bhs SHORT G_M60484_IG14
- add r1, r7, 8
+ add r1, r8, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ lsls r2, r4, 2
ldr r1, [r1+r2]
; gcrRegs +[r1]
; byrRegs -[r1]
- ldr r2, [r5+0x04]
- cmp r10, r2
+ ldr r2, [r6+0x04]
+ cmp r4, r2
bhs SHORT G_M60484_IG14
- add r2, r5, 8
+ add r2, r6, 8
; byrRegs +[r2]
- lsl r0, r10, 2
+ str r4, [sp+0x04] // [V06 loc0]
+ lsls r0, r4, 2
ldr r2, [r2+r0]
; gcrRegs +[r2]
; byrRegs -[r2]
- mov r0, r6
+ mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this
; gcrRegs -[r0-r2]
cmp r0, 0
bne SHORT G_M60484_IG12
- add r10, r10, 1
- ldr r4, [sp+0x04] // [V09 cse0]
- cmp r4, r10
+ ldr r4, [sp+0x04] // [V06 loc0]
+ adds r4, r4, 1
+ ldr lr, [sp] // [V09 cse0]
+ cmp lr, r4
bgt SHORT G_M60484_IG11
- ;; size=64 bbWeight=0.04 PerfScore 0.96
-G_M60484_IG09: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5 r7]
- mov r0, r8
+ ;; size=66 bbWeight=0.04 PerfScore 1.04
+G_M60484_IG09: ; bbWeight=1.98, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r6 r8]
+ mov r0, r7
; gcrRegs +[r0]
mov r3, r9
- mov r1, r6
+ mov r1, r5
; gcrRegs +[r1]
- ldr r2, [sp+0x34] // [V05 arg5]
+ mov r2, r10
; gcrRegs +[r2]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr lr, [r4]
blx lr // System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this
- ; gcrRegs -[r0-r2 r6 r8]
- ldr r0, [sp+0x04] // [V09 cse0]
- ;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M60484_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[r0-r2 r5 r7 r10]
+ ldr r0, [sp] // [V09 cse0]
+ ;; size=26 bbWeight=1.98 PerfScore 19.80
+G_M60484_IG10: ; bbWeight=1.98, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r5-r8]
- ldr r4, [sp+0x04] // [V09 cse0]
+ ;; size=6 bbWeight=1.98 PerfScore 3.96
+G_M60484_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r5-r8 r10]
+ ldr r3, [sp] // [V09 cse0]
b SHORT G_M60484_IG08
;; size=4 bbWeight=0.02 PerfScore 0.04
G_M60484_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5-r8]
- mov r0, r10
+ ; gcrRegs -[r5-r8 r10]
+ ldr r0, [sp+0x04] // [V06 loc0]
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M60484_IG13: ; bbWeight=0.50, epilog, nogc, extend
add sp, 12
@@ -173,7 +179,7 @@ G_M60484_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 10, PerfScore 94.32, instruction count 89, allocated bytes for code 230 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 242, prolog size 10, PerfScore 122.56, instruction count 94, allocated bytes for code 242 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
; ============================================================
...
libraries.pmi.linux.arm.checked.mch
-6 (-9.68%) : 3170.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.61) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_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
@@ -31,7 +31,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M34838_IG09
+ blt SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 3.00
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,42 +45,30 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M34838_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bgt SHORT G_M34838_IG06
+ bgt SHORT G_M34838_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- bge SHORT G_M34838_IG11
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M34838_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r0, r3
- ;; size=2 bbWeight=1.61 PerfScore 1.61
-G_M34838_IG07: ; bbWeight=1.61, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1.61 PerfScore 1.61
-G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
+ blt SHORT G_M34838_IG08
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M34838_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- cmp r2, lr
- ble SHORT G_M34838_IG08
- ;; size=4 bbWeight=0.39 PerfScore 0.77
-G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M34838_IG08
- ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.71 PerfScore 0.71
+G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 62, prolog size 6, PerfScore 54.81, instruction count 25, allocated bytes for code 62 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.19, instruction count 22, allocated bytes for code 56 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -92,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-6 (-8.82%) : 3160.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T05] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 6, 18.61) int -> lr
+; V04 loc0 [V04,T00] ( 6, 17.71) int -> lr
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> r12
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r4 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> r12 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r12 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
; Lcl frame size = 4
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
@@ -31,7 +31,7 @@ G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
mov lr, 0
cmp r3, 0
- ble SHORT G_M35228_IG09
+ ble SHORT G_M35228_IG06
;; size=8 bbWeight=1 PerfScore 3.00
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl r12, lr, 2
@@ -45,42 +45,30 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M35228_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r4
- bgt SHORT G_M35228_IG06
+ bgt SHORT G_M35228_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, r12
- bge SHORT G_M35228_IG11
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M35228_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r0, lr
- ;; size=2 bbWeight=1.61 PerfScore 1.61
-G_M35228_IG07: ; bbWeight=1.61, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1.61 PerfScore 1.61
-G_M35228_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
+ blt SHORT G_M35228_IG08
add lr, lr, 1
cmp lr, r3
blt SHORT G_M35228_IG03
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M35228_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4 PerfScore 20.00
+G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- cmp r2, r12
- ble SHORT G_M35228_IG08
- ;; size=4 bbWeight=0.39 PerfScore 0.77
-G_M35228_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M35228_IG08
- ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M35228_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, lr
+ ;; size=2 bbWeight=0.71 PerfScore 0.71
+G_M35228_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 68, prolog size 8, PerfScore 54.81, instruction count 25, allocated bytes for code 68 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 52.19, instruction count 22, allocated bytes for code 62 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -92,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-34 (-4.34%) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -63,7 +63,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
movs r0, 0
ldr r7, [r6+0x04]
cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
ldr r0, [r6+0x08]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -109,7 +109,7 @@ G_M10937_IG06: ; bbWeight=0.27, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000
G_M10937_IG07: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
subs r0, r4, 1
cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
add r9, r6, 8
; byrRegs +[r9]
lsls r0, r4, 2
@@ -170,7 +170,7 @@ G_M10937_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9},
G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
movs r0, 1
cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
ldr r0, [r6+0x0C]
; gcrRegs +[r0]
movw r2, 0xd1ff
@@ -178,14 +178,14 @@ G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r
ldr r2, [r2]
blx r2 // Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String
cmp r0, 0
- beq SHORT G_M10937_IG22
+ beq SHORT G_M10937_IG23
movs r3, 2
cmp r4, 2
- ble SHORT G_M10937_IG25
+ ble SHORT G_M10937_IG22
;; size=32 bbWeight=0.50 PerfScore 6.50
G_M10937_IG18: ; bbWeight=0.25, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r4
- blt SHORT G_M10937_IG24
+ blt SHORT G_M10937_IG21
;; size=4 bbWeight=0.25 PerfScore 0.50
G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz
str r3, [sp+0x08] // [V08 loc5]
@@ -205,7 +205,7 @@ G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200
blx r3 // System.String:IsNullOrWhiteSpace(System.String):ubyte
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M10937_IG21
+ bne SHORT G_M10937_IG23
ldr r0, [sp+0x04] // [V09 loc6]
; gcrRegs +[r0]
ldr r3, [sp+0x08] // [V08 loc5]
@@ -213,27 +213,13 @@ G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200
cmp r3, r4
blt SHORT G_M10937_IG19
;; size=48 bbWeight=3.96 PerfScore 75.24
-G_M10937_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
+G_M10937_IG20: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
; GC ptr vars -{V09}
- b SHORT G_M10937_IG25
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG21: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs -[r0]
- ldr r3, [sp+0x0C] // [V05 loc2]
- b SHORT G_M10937_IG26
- ;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M10937_IG22: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- ldr r3, [sp+0x0C] // [V05 loc2]
- b SHORT G_M10937_IG26
- ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M10937_IG23: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- ldr r3, [sp+0x0C] // [V05 loc2]
- b SHORT G_M10937_IG26
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG24: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r0]
+ b SHORT G_M10937_IG22
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
+G_M10937_IG21: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz
cmp r3, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
str r3, [sp+0x08] // [V08 loc5]
lsls r1, r3, 2
ldr r1, [r9+r1]
@@ -251,43 +237,41 @@ G_M10937_IG24: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200
blx r3 // System.String:IsNullOrWhiteSpace(System.String):ubyte
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M10937_IG31
+ bne SHORT G_M10937_IG23
ldr r0, [sp+0x04] // [V09 loc6]
; gcrRegs +[r0]
ldr r1, [sp+0x08] // [V08 loc5]
adds r1, r1, 1
cmp r1, r4
mov r3, r1
- blt SHORT G_M10937_IG24
+ blt SHORT G_M10937_IG21
;; size=56 bbWeight=0.04 PerfScore 0.88
-G_M10937_IG25: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref
+G_M10937_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref
; GC ptr vars -{V09}
- ldr r3, [r0+0x04]
- str r3, [sp+0x0C] // [V05 loc2]
- ldr r3, [sp+0x0C] // [V05 loc2]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG26: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+ ldr r1, [r0+0x04]
+ str r1, [sp+0x0C] // [V05 loc2]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M10937_IG23: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0]
cmp r8, 0
- bne SHORT G_M10937_IG36
+ bne SHORT G_M10937_IG32
;; size=6 bbWeight=1 PerfScore 2.00
-G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- str r3, [sp+0x0C] // [V05 loc2]
+G_M10937_IG24: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
ldr r0, [r6+0x08]
; gcrRegs +[r0]
ldrsb r1, [r0]
movs r1, 1
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // System.String:TrimWhiteSpaceHelper(int):System.String:this
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.String:TrimWhiteSpaceHelper(int):System.String:this
; gcrRegs -[r6]
mov r6, r0
; gcrRegs +[r6]
cmp r10, 0
- bne SHORT G_M10937_IG28
+ bne SHORT G_M10937_IG25
cmp r4, 1
- bne SHORT G_M10937_IG28
+ bne SHORT G_M10937_IG25
mov r0, r6
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -296,8 +280,8 @@ G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r
; gcrRegs -[r6]
mov r6, r0
; gcrRegs +[r6]
- ;; size=50 bbWeight=0.50 PerfScore 9.50
-G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 9.00
+G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0]
ldrsb r0, [r6]
mov r0, r6
@@ -311,31 +295,7 @@ G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M10937_IG34
- mov r0, r6
- ; gcrRegs +[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- cmp r0, 0
- bne SHORT G_M10937_IG33
- mov r0, r6
- ; gcrRegs +[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- cmp r0, 0
- bne SHORT G_M10937_IG32
+ bne SHORT G_M10937_IG30
mov r0, r6
; gcrRegs +[r0]
movw r1, 0xd1ff
@@ -348,31 +308,51 @@ G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M10937_IG29
+ mov r0, r6
+ ; gcrRegs +[r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movs r2, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M10937_IG28
+ mov r0, r6
+ ; gcrRegs +[r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movs r2, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M10937_IG26
movs r1, 0
- b SHORT G_M10937_IG30
+ b SHORT G_M10937_IG27
;; size=120 bbWeight=0.50 PerfScore 21.50
-G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
+G_M10937_IG26: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG30: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- b SHORT G_M10937_IG35
+G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+ b SHORT G_M10937_IG31
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG31: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
- ldr r3, [sp+0x0C] // [V05 loc2]
- b SHORT G_M10937_IG26
- ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10937_IG32: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
movs r1, 2
- b SHORT G_M10937_IG35
+ b SHORT G_M10937_IG31
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG33: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
movs r1, 3
- b SHORT G_M10937_IG35
+ b SHORT G_M10937_IG31
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG34: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
+G_M10937_IG30: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
movs r1, 4
...
+20 (+5.43%) : 129495.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T05] ( 10, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Xml.XmlWellFormedWriter>
; V01 arg1 [V01,T06] ( 8, 12.27) ref -> r5 class-hnd single-def <System.String>
; V02 loc0 [V02,T00] ( 17, 44.50) int -> r6
-; V03 loc1 [V03,T07] ( 7, 11.47) ref -> r5 class-hnd exact <System.String>
+; V03 loc1 [V03,T07] ( 7, 11.47) ref -> r8 class-hnd exact <System.String>
; V04 loc2 [V04,T15] ( 4, 2.50) ref -> r0 class-hnd <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T13] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
@@ -26,7 +26,7 @@
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18,T02] ( 7, 32.95) ref -> r7 class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T02] ( 7, 32.95) ref -> r9 class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T12] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
; V20 tmp15 [V20,T09] ( 2, 8 ) byref -> r0 "impAppendStmt"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,18 +35,18 @@
;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V26 tmp21 [V26,T03] ( 3, 24 ) ref -> r2 "arr expr"
-; V27 tmp22 [V27,T14] ( 3, 3 ) ref -> r0 "arr expr"
-; V28 tmp23 [V28,T04] ( 3, 24 ) ref -> r0 "arr expr"
+; V27 tmp22 [V27,T14] ( 3, 3 ) ref -> r2 "arr expr"
+; V28 tmp23 [V28,T04] ( 3, 24 ) ref -> r2 "arr expr"
; V29 PSPSym [V29,T17] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T10] ( 6, 6.41) ref -> r1 multi-def "CSE - aggressive"
;
; Lcl frame size = 16
G_M50074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
sub sp, 16
- add r11, sp, 32
- add r2, sp, 40
+ add r11, sp, 40
+ add r2, sp, 48
str r2, [sp+0x0C] // [V29 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
@@ -57,17 +57,17 @@ G_M50074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 8.00
G_M50074_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r5, 0
- beq SHORT G_M50074_IG08
+ beq SHORT G_M50074_IG17
ldr r6, [r4+0x34]
cmp r6, 0
- blt SHORT G_M50074_IG13
+ blt SHORT G_M50074_IG21
;; size=10 bbWeight=1 PerfScore 5.00
G_M50074_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r2, [r4+0x14]
; gcrRegs +[r2]
ldr r1, [r2+0x04]
cmp r6, r1
- bhs SHORT G_M50074_IG09
+ bhs SHORT G_M50074_IG16
lsls r1, r6, 4
adds r1, 8
adds r2, r2, r1
@@ -76,30 +76,99 @@ G_M50074_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r7, [r2+0x04]
; gcrRegs +[r7]
cmp r7, r5
- beq SHORT G_M50074_IG14
+ beq SHORT G_M50074_IG08
;; size=20 bbWeight=4 PerfScore 40.00
G_M50074_IG04: ; bbWeight=1.71, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r2]
cmp r7, 0
- beq SHORT G_M50074_IG12
+ beq SHORT G_M50074_IG20
;; size=4 bbWeight=1.71 PerfScore 3.41
G_M50074_IG05: ; bbWeight=1.70, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
ldr r2, [r7+0x04]
ldr r1, [r5+0x04]
cmp r2, r1
- bne SHORT G_M50074_IG12
+ bne SHORT G_M50074_IG20
;; size=8 bbWeight=1.70 PerfScore 6.80
G_M50074_IG06: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
ldr r2, [r7+0x04]
ldr r1, [r5+0x04]
cmp r2, r1
- beq SHORT G_M50074_IG11
+ beq SHORT G_M50074_IG19
;; size=8 bbWeight=1.07 PerfScore 4.27
G_M50074_IG07: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M50074_IG10
+ b SHORT G_M50074_IG18
;; size=2 bbWeight=1.07 PerfScore 1.07
-G_M50074_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M50074_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5 r7]
+ ldr r2, [r4+0x14]
+ ; gcrRegs +[r2]
+ ldr r1, [r2+0x04]
+ cmp r6, r1
+ bhs SHORT G_M50074_IG16
+ lsls r1, r6, 4
+ adds r1, 8
+ ldr r8, [r2+r1]
+ ; gcrRegs +[r8]
+ adds r6, r6, 1
+ ldr r2, [r4+0x34]
+ ; gcrRegs -[r2]
+ cmp r6, r2
+ bgt SHORT G_M50074_IG25
+ ;; size=24 bbWeight=0.50 PerfScore 5.50
+G_M50074_IG09: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ ldr r4, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r4]
+ ldr r2, [r4+0x14]
+ ; gcrRegs +[r2]
+ ldr r1, [r2+0x04]
+ cmp r6, r1
+ bhs SHORT G_M50074_IG16
+ lsls r1, r6, 4
+ adds r1, 8
+ ldr r9, [r2+r1]
+ ; gcrRegs +[r9]
+ cmp r9, r8
+ beq SHORT G_M50074_IG15
+ ;; size=22 bbWeight=4 PerfScore 40.00
+G_M50074_IG10: ; bbWeight=1.71, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ cmp r9, 0
+ beq SHORT G_M50074_IG24
+ ;; size=6 bbWeight=1.71 PerfScore 3.41
+G_M50074_IG11: ; bbWeight=1.70, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ cmp r8, 0
+ beq SHORT G_M50074_IG24
+ ;; size=6 bbWeight=1.70 PerfScore 3.40
+G_M50074_IG12: ; bbWeight=1.70, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r9+0x04]
+ ldr r1, [r8+0x04]
+ cmp r2, r1
+ bne SHORT G_M50074_IG24
+ ;; size=12 bbWeight=1.70 PerfScore 6.80
+G_M50074_IG13: ; bbWeight=1.07, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r9+0x04]
+ ldr r1, [r8+0x04]
+ cmp r2, r1
+ beq SHORT G_M50074_IG23
+ ;; size=12 bbWeight=1.07 PerfScore 4.27
+G_M50074_IG14: ; bbWeight=1.07, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M50074_IG22
+ ;; size=2 bbWeight=1.07 PerfScore 1.07
+G_M50074_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8-r9]
+ movs r0, 0
+ b SHORT G_M50074_IG27
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M50074_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M50074_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
movw r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -116,15 +185,8 @@ G_M50074_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=36 bbWeight=0 PerfScore 0.00
-G_M50074_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M50074_IG10: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r4-r5 r7]
+G_M50074_IG18: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5 r7]
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r1
@@ -136,7 +198,7 @@ G_M50074_IG10: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=1.07 PerfScore 7.48
-G_M50074_IG11: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG19: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
add r0, r7, 8
; byrRegs +[r0]
ldr r2, [r7+0x04]
@@ -151,77 +213,24 @@ G_M50074_IG11: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; byrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M50074_IG14
+ bne SHORT G_M50074_IG08
;; size=28 bbWeight=2 PerfScore 20.00
-G_M50074_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG20: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
cmp r6, 0
bge SHORT G_M50074_IG03
;; size=6 bbWeight=4 PerfScore 12.00
-G_M50074_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG21: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x10]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M50074_IG25
+ bne SHORT G_M50074_IG26
movs r0, 0
; gcrRegs -[r0]
- b SHORT G_M50074_IG26
+ b SHORT G_M50074_IG27
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M50074_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- ldr r1, [r0+0x04]
- cmp r6, r1
- bhs SHORT G_M50074_IG09
- lsls r1, r6, 4
- adds r1, 8
- ldr r5, [r0+r1]
- ; gcrRegs +[r5]
- adds r6, r6, 1
- ldr r0, [r4+0x34]
- ; gcrRegs -[r0]
- cmp r6, r0
- bgt SHORT G_M50074_IG23
- ;; size=22 bbWeight=0.50 PerfScore 5.50
-G_M50074_IG15: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- ldr r1, [r0+0x04]
- cmp r6, r1
- bhs SHORT G_M50074_IG09
- lsls r1, r6, 4
- adds r1, 8
- ldr r7, [r0+r1]
...
+6 (+9.68%) : 3156.dasm - System.SpanHelpers:IndexOfAnyInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T05] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T08] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T08] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T03] ( 4, 7 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 6, 19 ) int -> lr
+; V04 loc0 [V04,T00] ( 6, 17.50) int -> lr
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r12
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r4 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T04] ( 2, 8 ) int -> r12 "Inlining Arg"
+; V10 tmp4 [V10,T04] ( 3, 8.77) int -> r12 "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> r12 "CSE - aggressive"
;
; Lcl frame size = 4
-G_M23107_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M23107_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
@@ -31,7 +31,7 @@ G_M23107_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
mov lr, 0
cmp r3, 0
- ble SHORT G_M23107_IG08
+ ble SHORT G_M23107_IG09
;; size=8 bbWeight=1 PerfScore 3.00
G_M23107_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl r12, lr, 2
@@ -45,32 +45,41 @@ G_M23107_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M23107_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r4
- bgt SHORT G_M23107_IG07
+ bgt SHORT G_M23107_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M23107_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, r12
- blt SHORT G_M23107_IG07
- mov r0, lr
+ blt SHORT G_M23107_IG08
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M23107_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M23107_IG06: ; bbWeight=2, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M23107_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, r12
+ ble SHORT G_M23107_IG11
+ ;; size=4 bbWeight=0.39 PerfScore 0.77
+G_M23107_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M23107_IG11
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M23107_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
add lr, lr, 1
cmp lr, r3
blt SHORT G_M23107_IG03
;; size=8 bbWeight=4 PerfScore 12.00
-G_M23107_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23107_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M23107_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M23107_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M23107_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, lr
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M23107_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 62, prolog size 8, PerfScore 50.77, instruction count 22, allocated bytes for code 62 (MethodHash=a163a5bc) for method System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 48.58, instruction count 25, allocated bytes for code 68 (MethodHash=a163a5bc) for method System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+6 (+10.71%) : 3166.dasm - System.SpanHelpers:LastIndexOfAnyInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.77) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M37321_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M37321_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
@@ -31,7 +31,7 @@ G_M37321_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M37321_IG08
+ blt SHORT G_M37321_IG09
;; size=6 bbWeight=1 PerfScore 3.00
G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,32 +45,41 @@ G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M37321_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bgt SHORT G_M37321_IG07
+ bgt SHORT G_M37321_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M37321_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- blt SHORT G_M37321_IG07
- mov r0, r3
+ blt SHORT G_M37321_IG08
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M37321_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M37321_IG06: ; bbWeight=2, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M37321_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr
+ ble SHORT G_M37321_IG11
+ ;; size=4 bbWeight=0.39 PerfScore 0.77
+G_M37321_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M37321_IG11
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M37321_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M37321_IG03
;; size=6 bbWeight=4 PerfScore 12.00
-G_M37321_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37321_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37321_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M37321_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M37321_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M37321_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.77, instruction count 22, allocated bytes for code 56 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 48.58, instruction count 25, allocated bytes for code 62 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- 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
-24 (-4.46%) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)
@@ -9,16 +9,16 @@
; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 8, 5.07) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 8, 8.95) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T04] ( 8, 5.07) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T06] ( 8, 4.67) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.36) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T07] ( 5, 6.81) int -> r7
-; V04 loc2 [V04,T10] ( 9, 6.24) int -> r8
-; V05 loc3 [V05,T05] ( 6, 7.93) int -> r9
-; V06 loc4 [V06,T08] ( 9, 6.49) ref -> r10 class-hnd <System.__Canon>
-;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T05] ( 5, 6.81) int -> r7
+; V04 loc2 [V04,T09] ( 9, 6.24) int -> r8
+; V05 loc3 [V05,T11] ( 6, 3.66) int -> r9
+; V06 loc4 [V06,T07] ( 9, 6.49) ref -> r10 class-hnd <System.__Canon>
+;* V07 loc5 [V07,T17] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 21.27) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 22.55) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 18.28) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.38) int -> [sp+0x0C]
; V11 loc9 [V11 ] ( 3, 0.57) ref -> [sp+0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,19 +27,19 @@
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+;* V18 tmp6 [V18,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
; V19 tmp7 [V19,T19] ( 4, 0.53) int -> r3 "Inline return value spill temp"
-; V20 tmp8 [V20,T15] ( 3, 0.83) int -> r3 "Inlining Arg"
+; V20 tmp8 [V20,T14] ( 3, 0.83) int -> r3 "Inlining Arg"
; V21 tmp9 [V21,T21] ( 3, 0.38) int -> r2 "Inline return value spill temp"
-; V22 tmp10 [V22,T16] ( 3, 0.83) int -> r2 "Inlining Arg"
+; V22 tmp10 [V22,T15] ( 3, 0.83) int -> r2 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
; V25 tmp13 [V25,T18] ( 2, 0.76) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.12) int -> registers multi-def "CSE - moderate"
-; V27 cse1 [V27,T04] ( 3, 8.28) ref -> r1 "CSE - aggressive"
-; V28 rat0 [V28,T14] ( 3, 0.83) int -> r0 "Spilling to split statement for tree"
-; V29 rat1 [V29,T17] ( 3, 0.76) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 1.06) int -> r2 "fgMakeTemp is creating a new local variable"
+; V26 cse0 [V26,T10] ( 6, 5.12) int -> r0 multi-def "CSE - moderate"
+; V27 cse1 [V27,T03] ( 3, 8.28) ref -> r1 "CSE - aggressive"
+; V28 rat0 [V28,T13] ( 3, 0.83) int -> r0 "Spilling to split statement for tree"
+; V29 rat1 [V29,T16] ( 3, 0.76) int -> r0 "runtime lookup"
+; V30 rat2 [V30,T12] ( 3, 1.06) int -> r2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 28
@@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movs r2, 0
str r2, [sp+0x08] // [V11 loc9]
str r0, [r11-0x24]
- mov r5, r0
- ; gcrRegs +[r5]
- mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00
G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6]
cmp r6, 0
beq SHORT G_M8298_IG09
@@ -65,139 +65,135 @@ G_M8298_IG03: ; bbWeight=0.72, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r7, [r6+0x04]
mov r8, 0
mov r9, 0
- ldr r0, [r4+0x04]
- cmp r0, 0
+ ldr r1, [r5+0x04]
+ cmp r1, 0
ble G_M8298_IG23
;; size=18 bbWeight=0.72 PerfScore 4.34
G_M8298_IG04: ; bbWeight=0.72, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8
- ; byrRegs +[r0]
- lsl r1, r9, 2
- ldr r10, [r0+r1]
+ add r1, r5, 8
+ ; byrRegs +[r1]
+ lsl r0, r9, 2
+ ldr r10, [r1+r0]
; gcrRegs +[r10]
- movs r3, 0
+ movs r2, 0
cmp r7, 0
ble SHORT G_M8298_IG17
;; size=18 bbWeight=0.72 PerfScore 4.34
G_M8298_IG05: ; bbWeight=0.36, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r0]
+ ; byrRegs -[r1]
cmp r6, 0
beq SHORT G_M8298_IG14
cmp r10, 0
beq SHORT G_M8298_IG14
- ldr r0, [r10]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- cmp r0, lr
+ ldr r1, [r10]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
bne SHORT G_M8298_IG14
- ldr r0, [r6+0x04]
- cmp r0, r7
+ ldr r1, [r6+0x04]
+ cmp r1, r7
blt SHORT G_M8298_IG14
;; size=32 bbWeight=0.36 PerfScore 4.34
G_M8298_IG06: ; bbWeight=4.76, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- add r0, r6, 8
- ; byrRegs +[r0]
- lsls r1, r3, 2
- ldr r12, [r0+r1]
- ; gcrRegs +[r12]
- cmp r12, 0
+ add r1, r6, 8
+ ; byrRegs +[r1]
+ lsls r3, r2, 2
+ ldr r3, [r1+r3]
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M8298_IG17
- ;; size=16 bbWeight=4.76 PerfScore 23.81
-G_M8298_IG07: ; bbWeight=4.27, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r0]
- ldr r0, [r12]
- cmp r0, lr
+ ;; size=12 bbWeight=4.76 PerfScore 23.81
+G_M8298_IG07: ; bbWeight=4.27, gcrefRegs=0478 {r3 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r1]
+ ldr r1, [r3]
+ cmp r1, r0
bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28]
- ldr r1, [r10+0x28]
- cmp r0, r1
- beq SHORT G_M8298_IG11
- ;; size=20 bbWeight=4.27 PerfScore 29.87
-G_M8298_IG08: ; bbWeight=4.95, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
- b SHORT G_M8298_IG12
- ;; size=2 bbWeight=4.95 PerfScore 4.95
+ ldr r1, [r3+0x28]
+ ldr lr, [r10+0x28]
+ cmp r1, lr
+ bne SHORT G_M8298_IG12
+ ;; size=16 bbWeight=4.27 PerfScore 29.87
+G_M8298_IG08: ; bbWeight=0.03, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r10]
+ b SHORT G_M8298_IG11
+ ;; size=2 bbWeight=0.03 PerfScore 0.03
G_M8298_IG09: ; bbWeight=0.28, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10]
- adds r0, r5, 4
+ ; gcrRegs -[r3 r6]
+ adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0]
;; size=14 bbWeight=0.28 PerfScore 1.38
G_M8298_IG10: ; bbWeight=0.28, epilog, nogc, extend
add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.28 PerfScore 0.55
-G_M8298_IG11: ; bbWeight=4.31, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4 r6 r12]
- mov r0, r4
+G_M8298_IG11: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r3 r5-r6]
+ mov r0, r5
; gcrRegs +[r0]
mov r1, r9
- mov r2, r12
+ mov r2, r3
; gcrRegs +[r2]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r0 r2]
; gcr arg pop 0
b SHORT G_M8298_IG22
- ;; size=18 bbWeight=4.31 PerfScore 30.17
+ ;; size=18 bbWeight=0.03 PerfScore 0.24
G_M8298_IG12: ; bbWeight=4.95, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
- adds r3, r3, 1
- cmp r3, r7
+ adds r2, r2, 1
+ cmp r2, r7
blt SHORT G_M8298_IG06
;; size=6 bbWeight=4.95 PerfScore 14.85
-G_M8298_IG13: ; bbWeight=0.36, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.19, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG17
- ;; size=2 bbWeight=0.36 PerfScore 0.36
+ ;; size=2 bbWeight=0.19 PerfScore 0.19
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04]
- cmp r3, r12
+ ldr r3, [r6+0x04]
+ cmp r2, r3
bhs G_M8298_IG36
- add lr, r6, 8
- ; byrRegs +[lr]
- lsls r0, r3, 2
- ldr r12, [lr+r0]
- ; gcrRegs +[r12]
- mov lr, r12
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- cmp lr, 0
+ add r0, r6, 8
+ ; byrRegs +[r0]
+ lsls r1, r2, 2
+ ldr r3, [r0+r1]
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M8298_IG17
- ;; size=28 bbWeight=0.05 PerfScore 0.43
-G_M8298_IG15: ; bbWeight=0.04, gcrefRegs=4470 {r4 r5 r6 r10 lr}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
- ldr r0, [r10]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- bne G_M8298_IG37
- ldr r0, [lr]
- cmp r0, r1
+ ;; size=20 bbWeight=0.05 PerfScore 0.38
+G_M8298_IG15: ; bbWeight=0.04, gcrefRegs=0478 {r3 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
...
-20 (-3.70%) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)
@@ -9,16 +9,16 @@
; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 4.95) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 8, 9.21) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T05] ( 8, 4.95) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T07] ( 8, 4.74) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.31) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 7.05) int -> r7
-; V04 loc2 [V04,T10] ( 9, 5.79) int -> r8
-; V05 loc3 [V05,T04] ( 6, 8.26) int -> r9
-; V06 loc4 [V06,T09] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon>
-;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T04] ( 5, 7.05) int -> r7
+; V04 loc2 [V04,T09] ( 9, 5.79) int -> r8
+; V05 loc3 [V05,T11] ( 6, 3.79) int -> r9
+; V06 loc4 [V06,T08] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon>
+;* V07 loc5 [V07,T13] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 22.10) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 23.84) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 19.37) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.32) int -> [sp+0x0C]
; V11 loc9 [V11 ] ( 3, 0.47) ref -> [sp+0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,19 +27,19 @@
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-; V19 tmp7 [V19,T19] ( 4, 0.44) int -> r2 "Inline return value spill temp"
-; V20 tmp8 [V20,T15] ( 3, 0.69) int -> r2 "Inlining Arg"
-; V21 tmp9 [V21,T21] ( 3, 0.32) int -> lr "Inline return value spill temp"
-; V22 tmp10 [V22,T16] ( 3, 0.69) int -> lr "Inlining Arg"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+; V19 tmp7 [V19,T19] ( 4, 0.44) int -> lr "Inline return value spill temp"
+; V20 tmp8 [V20,T15] ( 3, 0.69) int -> lr "Inlining Arg"
+; V21 tmp9 [V21,T21] ( 3, 0.32) int -> registers "Inline return value spill temp"
+; V22 tmp10 [V22,T16] ( 3, 0.69) int -> r12 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
; V25 tmp13 [V25,T18] ( 2, 0.63) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.41) int -> registers multi-def "CSE - moderate"
-; V27 cse1 [V27,T05] ( 3, 7.58) ref -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T10] ( 6, 5.41) int -> r1 multi-def "CSE - moderate"
+; V27 cse1 [V27,T03] ( 3, 7.58) ref -> r1 "CSE - aggressive"
; V28 rat0 [V28,T14] ( 3, 0.69) int -> r0 "Spilling to split statement for tree"
; V29 rat1 [V29,T17] ( 3, 0.63) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
+; V30 rat2 [V30,T12] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 28
@@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movs r2, 0
str r2, [sp+0x08] // [V11 loc9]
str r0, [r11-0x24]
- mov r5, r0
- ; gcrRegs +[r5]
- mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00
G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6]
cmp r6, 0
beq SHORT G_M8298_IG09
@@ -65,12 +65,12 @@ G_M8298_IG03: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r7, [r6+0x04]
mov r8, 0
mov r9, 0
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
cmp r0, 0
- ble G_M8298_IG21
- ;; size=18 bbWeight=0.74 PerfScore 4.42
+ ble SHORT G_M8298_IG21
+ ;; size=16 bbWeight=0.74 PerfScore 4.42
G_M8298_IG04: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8
+ add r0, r5, 8
; byrRegs +[r0]
lsl r1, r9, 2
ldr r10, [r0+r1]
@@ -86,9 +86,9 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
cmp r10, 0
beq SHORT G_M8298_IG14
ldr r0, [r10]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- cmp r0, lr
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r0, r1
bne SHORT G_M8298_IG14
ldr r0, [r6+0x04]
cmp r0, r7
@@ -97,82 +97,78 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
G_M8298_IG06: ; bbWeight=5.00, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
add r0, r6, 8
; byrRegs +[r0]
- lsls r1, r3, 2
- ldr r12, [r0+r1]
- ; gcrRegs +[r12]
- cmp r12, 0
+ lsls r2, r3, 2
+ ldr r2, [r0+r2]
+ ; gcrRegs +[r2]
+ cmp r2, 0
beq SHORT G_M8298_IG15
- ;; size=16 bbWeight=5.00 PerfScore 25.01
-G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.00 PerfScore 25.01
+G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [r2]
+ cmp r0, r1
+ bne SHORT G_M8298_IG12
+ ldr r0, [r2+0x28]
+ ldr lr, [r10+0x28]
cmp r0, lr
bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28]
- ldr r1, [r10+0x28]
- cmp r0, r1
- beq SHORT G_M8298_IG11
- ;; size=20 bbWeight=4.53 PerfScore 31.73
-G_M8298_IG08: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
- b SHORT G_M8298_IG12
- ;; size=2 bbWeight=5.16 PerfScore 5.16
+ ;; size=16 bbWeight=4.53 PerfScore 31.73
+G_M8298_IG08: ; bbWeight=0.11, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r10]
+ b SHORT G_M8298_IG11
+ ;; size=2 bbWeight=0.11 PerfScore 0.11
G_M8298_IG09: ; bbWeight=0.26, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10]
- adds r0, r5, 4
+ ; gcrRegs -[r2 r6]
+ adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0]
;; size=14 bbWeight=0.26 PerfScore 1.32
G_M8298_IG10: ; bbWeight=0.26, epilog, nogc, extend
add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.26 PerfScore 0.53
-G_M8298_IG11: ; bbWeight=4.58, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4 r6 r12]
- mov r0, r4
+G_M8298_IG11: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r2 r5-r6]
+ mov r0, r5
; gcrRegs +[r0]
mov r1, r9
- mov r2, r12
- ; gcrRegs +[r2]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r0 r2]
; gcr arg pop 0
b SHORT G_M8298_IG20
- ;; size=18 bbWeight=4.58 PerfScore 32.05
+ ;; size=16 bbWeight=0.11 PerfScore 0.63
G_M8298_IG12: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
adds r3, r3, 1
cmp r3, r7
blt SHORT G_M8298_IG06
;; size=6 bbWeight=5.16 PerfScore 15.48
-G_M8298_IG13: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG15
- ;; size=2 bbWeight=0.37 PerfScore 0.37
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04]
- cmp r3, r12
- bhs G_M8298_IG37
- add lr, r6, 8
- ; byrRegs +[lr]
+ ldr r2, [r6+0x04]
+ cmp r3, r2
+ bhs G_M8298_IG36
+ add r1, r6, 8
+ ; byrRegs +[r1]
lsls r0, r3, 2
- ldr r12, [lr+r0]
- ; gcrRegs +[r12]
- mov lr, r12
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- cmp lr, 0
- bne SHORT G_M8298_IG33
- ;; size=28 bbWeight=0.05 PerfScore 0.45
+ ldr r2, [r1+r0]
+ ; gcrRegs +[r2]
+ cmp r2, 0
+ bne SHORT G_M8298_IG28
+ ;; size=20 bbWeight=0.05 PerfScore 0.40
G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12 lr]
+ ; gcrRegs -[r2]
+ ; byrRegs -[r1]
cmp r8, 0
bne SHORT G_M8298_IG16
mov r8, r3
@@ -180,12 +176,12 @@ G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
G_M8298_IG16: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r0, r8
- ble SHORT G_M8298_IG25
+ ble SHORT G_M8298_IG23
;; size=6 bbWeight=0.63 PerfScore 1.89
G_M8298_IG17: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r8, r0
- bhs SHORT G_M8298_IG37
+ bhs SHORT G_M8298_IG36
add r0, r6, 8
; byrRegs +[r0]
lsl r1, r8, 2
@@ -209,7 +205,7 @@ G_M8298_IG18: ; bbWeight=2.53, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
; gcr arg pop 0
;; size=22 bbWeight=2.53 PerfScore 17.68
G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref
- ldr r2, [r5]
+ ldr r2, [r4]
ldr r2, [r2+0x24]
ldr r2, [r2]
ldr r2, [r2]
@@ -234,13 +230,13 @@ G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
;; size=40 bbWeight=0.63 PerfScore 9.47
G_M8298_IG20: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
...
-20 (-3.70%) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)
@@ -9,16 +9,16 @@
; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 4.95) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 8, 9.21) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T05] ( 8, 4.95) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T07] ( 8, 4.74) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.31) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 7.05) int -> r7
-; V04 loc2 [V04,T10] ( 9, 5.79) int -> r8
-; V05 loc3 [V05,T04] ( 6, 8.26) int -> r9
-; V06 loc4 [V06,T09] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon>
-;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T04] ( 5, 7.05) int -> r7
+; V04 loc2 [V04,T09] ( 9, 5.79) int -> r8
+; V05 loc3 [V05,T11] ( 6, 3.79) int -> r9
+; V06 loc4 [V06,T08] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon>
+;* V07 loc5 [V07,T13] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 22.10) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 23.84) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 19.37) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.32) int -> [sp+0x0C]
; V11 loc9 [V11 ] ( 3, 0.47) ref -> [sp+0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,19 +27,19 @@
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-; V19 tmp7 [V19,T19] ( 4, 0.44) int -> r2 "Inline return value spill temp"
-; V20 tmp8 [V20,T15] ( 3, 0.69) int -> r2 "Inlining Arg"
-; V21 tmp9 [V21,T21] ( 3, 0.32) int -> lr "Inline return value spill temp"
-; V22 tmp10 [V22,T16] ( 3, 0.69) int -> lr "Inlining Arg"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+; V19 tmp7 [V19,T19] ( 4, 0.44) int -> lr "Inline return value spill temp"
+; V20 tmp8 [V20,T15] ( 3, 0.69) int -> lr "Inlining Arg"
+; V21 tmp9 [V21,T21] ( 3, 0.32) int -> registers "Inline return value spill temp"
+; V22 tmp10 [V22,T16] ( 3, 0.69) int -> r12 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
; V25 tmp13 [V25,T18] ( 2, 0.63) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.41) int -> registers multi-def "CSE - moderate"
-; V27 cse1 [V27,T05] ( 3, 7.58) ref -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T10] ( 6, 5.41) int -> r1 multi-def "CSE - moderate"
+; V27 cse1 [V27,T03] ( 3, 7.58) ref -> r1 "CSE - aggressive"
; V28 rat0 [V28,T14] ( 3, 0.69) int -> r0 "Spilling to split statement for tree"
; V29 rat1 [V29,T17] ( 3, 0.63) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
+; V30 rat2 [V30,T12] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 28
@@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movs r2, 0
str r2, [sp+0x08] // [V11 loc9]
str r0, [r11-0x24]
- mov r5, r0
- ; gcrRegs +[r5]
- mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00
G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6]
cmp r6, 0
beq SHORT G_M8298_IG09
@@ -65,12 +65,12 @@ G_M8298_IG03: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r7, [r6+0x04]
mov r8, 0
mov r9, 0
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
cmp r0, 0
- ble G_M8298_IG21
- ;; size=18 bbWeight=0.74 PerfScore 4.42
+ ble SHORT G_M8298_IG21
+ ;; size=16 bbWeight=0.74 PerfScore 4.42
G_M8298_IG04: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8
+ add r0, r5, 8
; byrRegs +[r0]
lsl r1, r9, 2
ldr r10, [r0+r1]
@@ -86,9 +86,9 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
cmp r10, 0
beq SHORT G_M8298_IG14
ldr r0, [r10]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- cmp r0, lr
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r0, r1
bne SHORT G_M8298_IG14
ldr r0, [r6+0x04]
cmp r0, r7
@@ -97,82 +97,78 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
G_M8298_IG06: ; bbWeight=5.00, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
add r0, r6, 8
; byrRegs +[r0]
- lsls r1, r3, 2
- ldr r12, [r0+r1]
- ; gcrRegs +[r12]
- cmp r12, 0
+ lsls r2, r3, 2
+ ldr r2, [r0+r2]
+ ; gcrRegs +[r2]
+ cmp r2, 0
beq SHORT G_M8298_IG15
- ;; size=16 bbWeight=5.00 PerfScore 25.01
-G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.00 PerfScore 25.01
+G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [r2]
+ cmp r0, r1
+ bne SHORT G_M8298_IG12
+ ldr r0, [r2+0x28]
+ ldr lr, [r10+0x28]
cmp r0, lr
bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28]
- ldr r1, [r10+0x28]
- cmp r0, r1
- beq SHORT G_M8298_IG11
- ;; size=20 bbWeight=4.53 PerfScore 31.73
-G_M8298_IG08: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
- b SHORT G_M8298_IG12
- ;; size=2 bbWeight=5.16 PerfScore 5.16
+ ;; size=16 bbWeight=4.53 PerfScore 31.73
+G_M8298_IG08: ; bbWeight=0.11, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r10]
+ b SHORT G_M8298_IG11
+ ;; size=2 bbWeight=0.11 PerfScore 0.11
G_M8298_IG09: ; bbWeight=0.26, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10]
- adds r0, r5, 4
+ ; gcrRegs -[r2 r6]
+ adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0]
;; size=14 bbWeight=0.26 PerfScore 1.32
G_M8298_IG10: ; bbWeight=0.26, epilog, nogc, extend
add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.26 PerfScore 0.53
-G_M8298_IG11: ; bbWeight=4.58, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4 r6 r12]
- mov r0, r4
+G_M8298_IG11: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r2 r5-r6]
+ mov r0, r5
; gcrRegs +[r0]
mov r1, r9
- mov r2, r12
- ; gcrRegs +[r2]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r0 r2]
; gcr arg pop 0
b SHORT G_M8298_IG20
- ;; size=18 bbWeight=4.58 PerfScore 32.05
+ ;; size=16 bbWeight=0.11 PerfScore 0.63
G_M8298_IG12: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
adds r3, r3, 1
cmp r3, r7
blt SHORT G_M8298_IG06
;; size=6 bbWeight=5.16 PerfScore 15.48
-G_M8298_IG13: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG15
- ;; size=2 bbWeight=0.37 PerfScore 0.37
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04]
- cmp r3, r12
- bhs G_M8298_IG37
- add lr, r6, 8
- ; byrRegs +[lr]
+ ldr r2, [r6+0x04]
+ cmp r3, r2
+ bhs G_M8298_IG36
+ add r1, r6, 8
+ ; byrRegs +[r1]
lsls r0, r3, 2
- ldr r12, [lr+r0]
- ; gcrRegs +[r12]
- mov lr, r12
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- cmp lr, 0
- bne SHORT G_M8298_IG33
- ;; size=28 bbWeight=0.05 PerfScore 0.45
+ ldr r2, [r1+r0]
+ ; gcrRegs +[r2]
+ cmp r2, 0
+ bne SHORT G_M8298_IG28
+ ;; size=20 bbWeight=0.05 PerfScore 0.40
G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12 lr]
+ ; gcrRegs -[r2]
+ ; byrRegs -[r1]
cmp r8, 0
bne SHORT G_M8298_IG16
mov r8, r3
@@ -180,12 +176,12 @@ G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
G_M8298_IG16: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r0, r8
- ble SHORT G_M8298_IG25
+ ble SHORT G_M8298_IG23
;; size=6 bbWeight=0.63 PerfScore 1.89
G_M8298_IG17: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r8, r0
- bhs SHORT G_M8298_IG37
+ bhs SHORT G_M8298_IG36
add r0, r6, 8
; byrRegs +[r0]
lsl r1, r8, 2
@@ -209,7 +205,7 @@ G_M8298_IG18: ; bbWeight=2.53, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
; gcr arg pop 0
;; size=22 bbWeight=2.53 PerfScore 17.68
G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref
- ldr r2, [r5]
+ ldr r2, [r4]
ldr r2, [r2+0x24]
ldr r2, [r2]
ldr r2, [r2]
@@ -234,13 +230,13 @@ G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0
;; size=40 bbWeight=0.63 PerfScore 9.47
G_M8298_IG20: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
...
+4 (+3.51%) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 4.70) int -> r4 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> r5 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.76) int -> r4 single-def
+; V01 arg1 [V01,T02] ( 5, 4.07) ref -> r5 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.29) int -> r6
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -54,41 +54,44 @@ G_M49425_IG05: ; bbWeight=1, epilog, nogc, extend
G_M49425_IG06: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
cmp r6, 0
- beq SHORT G_M49425_IG08
+ beq SHORT G_M49425_IG07
ldr r6, [r6+0x14]
cmp r6, r4
- beq SHORT G_M49425_IG04
- ;; size=10 bbWeight=0.20 PerfScore 0.99
-G_M49425_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M49425_IG08
- ldr r6, [r6+0x14]
- cmp r6, r4
- beq SHORT G_M49425_IG04
- cmp r6, 0
- beq SHORT G_M49425_IG08
- ldr r6, [r6+0x14]
- cmp r6, r4
- beq SHORT G_M49425_IG04
- cmp r6, 0
- bne SHORT G_M49425_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49425_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bne SHORT G_M49425_IG09
+ b SHORT G_M49425_IG04
+ ;; size=12 bbWeight=0.20 PerfScore 1.18
+G_M49425_IG07: ; bbWeight=0.07, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r4
mov r1, r5
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M49425_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0.07 PerfScore 0.33
+G_M49425_IG08: ; bbWeight=0.07, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.07 PerfScore 0.20
+G_M49425_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r1]
+ cmp r6, 0
+ beq SHORT G_M49425_IG07
+ ldr r6, [r6+0x14]
+ cmp r6, r4
+ beq SHORT G_M49425_IG04
+ cmp r6, 0
+ beq SHORT G_M49425_IG07
+ ldr r6, [r6+0x14]
+ cmp r6, r4
+ beq SHORT G_M49425_IG04
+ cmp r6, 0
+ bne SHORT G_M49425_IG03
+ b SHORT G_M49425_IG07
+ ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 12, PerfScore 22.49, instruction count 45, allocated bytes for code 114 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 118, prolog size 12, PerfScore 23.21, instruction count 47, allocated bytes for code 118 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -100,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+3.51%) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 4.85) int -> r4 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> r5 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.88) int -> r4 single-def
+; V01 arg1 [V01,T02] ( 5, 4.03) ref -> r5 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.90) int -> r6
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -54,41 +54,44 @@ G_M49425_IG05: ; bbWeight=1, epilog, nogc, extend
G_M49425_IG06: ; bbWeight=0.35, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
cmp r6, 0
- beq SHORT G_M49425_IG08
+ beq SHORT G_M49425_IG07
ldr r6, [r6+0x14]
cmp r6, r4
- beq SHORT G_M49425_IG04
- ;; size=10 bbWeight=0.35 PerfScore 1.74
-G_M49425_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M49425_IG08
- ldr r6, [r6+0x14]
- cmp r6, r4
- beq SHORT G_M49425_IG04
- cmp r6, 0
- beq SHORT G_M49425_IG08
- ldr r6, [r6+0x14]
- cmp r6, r4
- beq SHORT G_M49425_IG04
- cmp r6, 0
- bne SHORT G_M49425_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49425_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bne SHORT G_M49425_IG09
+ b SHORT G_M49425_IG04
+ ;; size=12 bbWeight=0.35 PerfScore 2.09
+G_M49425_IG07: ; bbWeight=0.03, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r4
mov r1, r5
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M49425_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0.03 PerfScore 0.17
+G_M49425_IG08: ; bbWeight=0.03, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.03 PerfScore 0.10
+G_M49425_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r1]
+ cmp r6, 0
+ beq SHORT G_M49425_IG07
+ ldr r6, [r6+0x14]
+ cmp r6, r4
+ beq SHORT G_M49425_IG04
+ cmp r6, 0
+ beq SHORT G_M49425_IG07
+ ldr r6, [r6+0x14]
+ cmp r6, r4
+ beq SHORT G_M49425_IG04
+ cmp r6, 0
+ bne SHORT G_M49425_IG03
+ b SHORT G_M49425_IG07
+ ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 12, PerfScore 23.24, instruction count 45, allocated bytes for code 114 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 118, prolog size 12, PerfScore 23.87, instruction count 47, allocated bytes for code 118 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -100,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.30%) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)
@@ -11,44 +11,44 @@
;
; V00 this [V00,T00] ( 9, 5.27) ref -> r5 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.45) ref -> r6 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T17] ( 5, 1.09) byref -> [sp+0x04] spill-single-def
-; V03 loc1 [V03,T06] ( 3, 2 ) byref -> r0
+; V02 loc0 [V02,T17] ( 6, 1.09) byref -> r9
+; V03 loc1 [V03,T07] ( 3, 2 ) byref -> r0
; V04 loc2 [V04,T11] ( 4, 1.36) ref -> r7 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc7 [V09,T16] ( 3, 1.27) int -> r8
-; V10 loc8 [V10,T02] ( 6, 2.91) int -> r3
-; V11 loc9 [V11,T09] ( 3, 1.64) ref -> r9 class-hnd exact single-def <<unknown class>>
-; V12 loc10 [V12,T10] ( 4, 1.55) int -> r10
+; V10 loc8 [V10,T02] ( 7, 2.91) int -> r9
+; V11 loc9 [V11,T09] ( 3, 1.64) ref -> r10 class-hnd exact single-def <<unknown class>>
+; V12 loc10 [V12,T10] ( 7, 1.55) int -> [sp+0x10]
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V15 tmp2 [V15,T03] ( 4, 2.73) int -> r4 "VirtualCall with runtime lookup"
;* V16 tmp3 [V16 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V17 tmp4 [V17,T18] ( 4, 0 ) int -> [sp+0x18] "VirtualCall with runtime lookup"
+; V17 tmp4 [V17,T18] ( 4, 0 ) int -> [sp+0x0C] "VirtualCall with runtime lookup"
;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
; V22 tmp9 [V22,T12] ( 3, 1.36) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V23 tmp10 [V23,T04] ( 3, 2.73) int -> r0 "index expr"
-; V24 cse0 [V24,T07] ( 3, 2.00) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V24 cse0 [V24,T06] ( 4, 2.00) int -> [sp+0x08] spill-single-def "CSE - aggressive"
; V25 cse1 [V25,T13] ( 3, 1.36) int -> r9 "CSE - conservative"
; V26 rat0 [V26,T08] ( 3, 2 ) int -> r0 "Spilling to split statement for tree"
; V27 rat1 [V27,T05] ( 3, 2.55) int -> r4 "fgMakeTemp is creating a new local variable"
; V28 rat2 [V28,T19] ( 3, 0 ) int -> r0 "Spilling to split statement for tree"
; V29 rat3 [V29,T20] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; V30 rat4 [V30 ] ( 1, 0.91) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V30 rat4 [V30 ] ( 1, 0.91) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V31 rat5 [V31,T14] ( 2, 1.36) int -> r0 "field V30.lo (fldOffset=0x0)" P-INDEP
; V32 rat6 [V32,T15] ( 2, 1.36) int -> r1 "field V30.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 36
+; Lcl frame size = 28
G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 36
- add r11, sp, 64
+ sub sp, 28
+ add r11, sp, 56
str r0, [r11-0x24]
mov r5, r0
; gcrRegs +[r5]
@@ -57,24 +57,56 @@ G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=18 bbWeight=1 PerfScore 6.00
G_M63194_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq G_M63194_IG21
+ beq SHORT G_M63194_IG17
ldr r0, [r5+0x04]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M63194_IG12
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M63194_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r6]
- movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M63194_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, epilog, nogc
- ; byrRegs +[r0]
- add sp, 36
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M63194_IG05: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r6-r7]
- ; byrRegs -[r0]
+ beq SHORT G_M63194_IG12
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M63194_IG03: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ldr r0, [r5+0x08]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ bne SHORT G_M63194_IG04
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ ;; size=34 bbWeight=0.45 PerfScore 5.00
+G_M63194_IG04: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [r5+0x0C]
+ ; gcrRegs +[r7]
+ cmp r7, 0
+ bne SHORT G_M63194_IG05
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ ;; size=34 bbWeight=0.45 PerfScore 5.00
+G_M63194_IG05: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ ldr r1, [r0+0x24]
+ ldr r1, [r1]
+ ldr r4, [r1+0x1C]
+ cmp r4, 0
+ beq SHORT G_M63194_IG07
+ ;; size=12 bbWeight=0.45 PerfScore 2.73
+G_M63194_IG06: ; bbWeight=0.36, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M63194_IG08
+ ;; size=2 bbWeight=0.36 PerfScore 0.36
+G_M63194_IG07: ; bbWeight=0.09, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
@@ -83,7 +115,7 @@ G_M63194_IG05: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6
; gcr arg pop 0
mov r4, r0
;; size=20 bbWeight=0.09 PerfScore 0.55
-G_M63194_IG06: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7
; gcrRegs +[r0]
mov r1, r6
@@ -105,161 +137,75 @@ G_M63194_IG06: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx lr // CORINFO_HELP_ULMOD
; gcr arg pop 0
tst r0, r0
- bmi SHORT G_M63194_IG07
+ bmi SHORT G_M63194_IG09
tst r1, r1
- bne SHORT G_M63194_IG19
- b SHORT G_M63194_IG08
+ bne SHORT G_M63194_IG15
+ b SHORT G_M63194_IG10
;; size=44 bbWeight=0.45 PerfScore 8.64
-G_M63194_IG07: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG09: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r1, -1
- bne SHORT G_M63194_IG19
+ bne SHORT G_M63194_IG15
;; size=6 bbWeight=0.45 PerfScore 0.91
-G_M63194_IG08: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG10: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, r9
- bhs SHORT G_M63194_IG20
+ bhs SHORT G_M63194_IG16
add r3, r4, 8
; byrRegs +[r3]
lsls r0, r0, 2
- ldr r3, [r3+r0]
- ; byrRegs -[r3]
- ldr r9, [r5+0x08]
- ; gcrRegs +[r9]
- mov r10, 0
- subs r3, r3, 1
- ;; size=22 bbWeight=0.45 PerfScore 3.64
-G_M63194_IG09: ; bbWeight=0.82, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [r3+r0]
+ ldr r10, [r5+0x08]
+ ; gcrRegs +[r10]
+ movs r4, 0
; gcrRegs -[r4]
- ldr r4, [r9+0x04]
- str r4, [sp+0x14]
- cmp r4, r3
- bls SHORT G_M63194_IG03
+ add r9, r9, -1
+ ;; size=24 bbWeight=0.45 PerfScore 3.64
+G_M63194_IG11: ; bbWeight=0.82, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r3]
+ ldr r3, [r10+0x04]
+ str r3, [sp+0x08]
+ cmp r3, r9
+ bhi SHORT G_M63194_IG14
;; size=10 bbWeight=0.82 PerfScore 3.27
-G_M63194_IG10: ; bbWeight=0.36, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- lsls r3, r3, 4
- add r0, r3, 8
- add r3, r9, r0
- ; byrRegs +[r3]
- str r3, [sp+0x04]
- ; GC ptr vars +{V02}
- ldr r0, [r3+0x08]
- cmp r0, r8
- beq SHORT G_M63194_IG22
- ;; size=18 bbWeight=0.36 PerfScore 2.55
-G_M63194_IG11: ; bbWeight=0.36, gcVars=00020000 {V02}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0008 {r3}, gcvars, byref, isz
- ldr r3, [r3+0x0C]
- ; byrRegs -[r3]
- add r10, r10, 1
- cmp r4, r10
- blo SHORT G_M63194_IG18
- b SHORT G_M63194_IG09
- ;; size=12 bbWeight=0.36 PerfScore 1.82
-G_M63194_IG12: ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r7 r9]
- ; GC ptr vars -{V02}
- ldr r0, [r5+0x08]
- ; gcrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M63194_IG13
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- ;; size=34 bbWeight=0.45 PerfScore 5.00
-G_M63194_IG13: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r7, [r5+0x0C]
- ; gcrRegs +[r7]
- cmp r7, 0
- bne SHORT G_M63194_IG14
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- ;; size=34 bbWeight=0.45 PerfScore 5.00
-G_M63194_IG14: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5]
- ldr r1, [r0+0x24]
- ldr r1, [r1]
- ldr r4, [r1+0x1C]
- cmp r4, 0
- beq SHORT G_M63194_IG05
- ;; size=12 bbWeight=0.45 PerfScore 2.73
-G_M63194_IG15: ; bbWeight=0.36, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-14 (-12.73%) : 143677.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeulong:int (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 arg0 [V00,T10] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01 ] ( 6, 10.20) long -> [sp+0x00] ld-addr-op single-def
-; V02 arg2 [V02 ] ( 4, 8.20) long -> [sp+0x18] ld-addr-op single-def
+; V02 arg2 [V02 ] ( 3, 12 ) long -> [sp+0x18] ld-addr-op single-def
; V03 arg3 [V03,T16] ( 1, 1 ) int -> [sp+0x20] single-def
-; V04 loc0 [V04,T01] ( 7, 19.90) int -> r3
+; V04 loc0 [V04,T01] ( 7, 18.74) int -> r3
; V05 loc1 [V05,T11] ( 2, 8 ) byref -> r2
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T14] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -22,19 +22,19 @@
;* V11 cse0 [V11 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V12 rat0 [V12,T04] ( 4, 6.10) int -> [sp+0x00] do-not-enreg[] "field V01.lo (fldOffset=0x0)" P-DEP
; V13 rat1 [V13,T05] ( 4, 6.10) int -> [sp+0x04] do-not-enreg[] "field V01.hi (fldOffset=0x4)" P-DEP
-; V14 rat2 [V14,T12] ( 2, 4.10) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
-; V15 rat3 [V15,T13] ( 2, 4.10) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
+; V14 rat2 [V14,T12] ( 2, 8 ) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
+; V15 rat3 [V15,T13] ( 1, 4 ) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
; V16 rat4 [V16,T06] ( 3, 8.10) int -> lr "field V08.lo (fldOffset=0x0)" P-INDEP
; V17 rat5 [V17,T07] ( 3, 8.10) int -> r12 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat6 [V18,T08] ( 3, 8.10) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V19 rat7 [V19,T09] ( 3, 8.10) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat6 [V18,T08] ( 3, 12 ) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP
+; V19 rat7 [V19,T09] ( 2, 8 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
; V20 rat8 [V20,T02] ( 3, 12 ) int -> r1 "field V11.lo (fldOffset=0x0)" P-INDEP
; V21 rat9 [V21,T03] ( 3, 12 ) int -> r2 "field V11.hi (fldOffset=0x4)" P-INDEP
; V22 rat10 [V22,T00] ( 3, 24 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
-G_M18970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18970_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r2,r3,r4,r5,r11,lr}
add r11, sp, 16
str r2, [sp] // [V01 arg1]
@@ -45,7 +45,7 @@ G_M18970_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
ldr r3, [sp+0x20] // [V03 arg3]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M18970_IG09
+ blt SHORT G_M18970_IG06
;; size=8 bbWeight=1 PerfScore 4.00
G_M18970_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsls r2, r3, 3
@@ -67,48 +67,35 @@ G_M18970_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
ldr r5, [sp+0x04] // [V13 rat1]
cmp lr, r4
sbcs lr, r12, r5
- blo SHORT G_M18970_IG06
+ blo SHORT G_M18970_IG08
;; size=12 bbWeight=0.10 PerfScore 0.49
G_M18970_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldr lr, [sp+0x18] // [V14 rat2]
cmp lr, r1
ldr lr, [sp+0x1C] // [V15 rat3]
- sbcs lr, lr, r2
- bhs SHORT G_M18970_IG11
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M18970_IG06: ; bbWeight=1.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r0, r3
- ;; size=2 bbWeight=1.90 PerfScore 1.90
-G_M18970_IG07: ; bbWeight=1.90, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1.90 PerfScore 1.90
-G_M18970_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
+ sbcs r2, lr, r2
+ blo SHORT G_M18970_IG08
+ ldr r2, [sp+0x18] // [V14 rat2]
+ cmp r1, r2
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M18970_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M18970_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=4 PerfScore 40.00
+G_M18970_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18970_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M18970_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18970_IG11: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- ldr lr, [sp+0x18] // [V14 rat2]
- ldr r12, [sp+0x1C] // [V15 rat3]
- cmp r1, lr
- sbcs r2, r2, r12
- bhs SHORT G_M18970_IG08
- ;; size=16 bbWeight=0.10 PerfScore 0.49
-G_M18970_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M18970_IG08
- ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M18970_IG08: ; bbWeight=0.74, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.74 PerfScore 0.74
+G_M18970_IG09: ; bbWeight=0.74, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.74 PerfScore 0.74
-; Total bytes of code 110, prolog size 12, PerfScore 89.83, instruction count 42, allocated bytes for code 110 (MethodHash=9cb9b5e5) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 94.98, instruction count 38, allocated bytes for code 96 (MethodHash=9cb9b5e5) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
+ 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)
-6 (-9.68%) : 145301.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeuint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.44) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.44) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.56) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.73) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.88) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.88) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M63363_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M63363_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
@@ -31,7 +31,7 @@ G_M63363_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M63363_IG09
+ blt SHORT G_M63363_IG06
;; size=6 bbWeight=1 PerfScore 3.00
G_M63363_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,42 +45,30 @@ G_M63363_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M63363_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bhi SHORT G_M63363_IG06
+ bhi SHORT G_M63363_IG08
;; size=4 bbWeight=0.44 PerfScore 0.88
G_M63363_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- bhs SHORT G_M63363_IG11
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M63363_IG06: ; bbWeight=1.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r0, r3
- ;; size=2 bbWeight=1.56 PerfScore 1.56
-G_M63363_IG07: ; bbWeight=1.56, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1.56 PerfScore 1.56
-G_M63363_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
+ blo SHORT G_M63363_IG08
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M63363_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M63363_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00
+G_M63363_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M63363_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M63363_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M63363_IG11: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- cmp r2, lr
- bls SHORT G_M63363_IG08
- ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M63363_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M63363_IG08
- ;; size=2 bbWeight=0.32 PerfScore 0.32
+G_M63363_IG08: ; bbWeight=0.73, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.73 PerfScore 0.73
+G_M63363_IG09: ; bbWeight=0.73, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 62, prolog size 6, PerfScore 55.20, instruction count 25, allocated bytes for code 62 (MethodHash=fa4a087c) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.35, instruction count 22, allocated bytes for code 56 (MethodHash=fa4a087c) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -92,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-6 (-9.68%) : 142735.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.61) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_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
@@ -31,7 +31,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M34838_IG09
+ blt SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 3.00
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,42 +45,30 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M34838_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bgt SHORT G_M34838_IG06
+ bgt SHORT G_M34838_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- bge SHORT G_M34838_IG11
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M34838_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r0, r3
- ;; size=2 bbWeight=1.61 PerfScore 1.61
-G_M34838_IG07: ; bbWeight=1.61, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1.61 PerfScore 1.61
-G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
+ blt SHORT G_M34838_IG08
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M34838_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- cmp r2, lr
- ble SHORT G_M34838_IG08
- ;; size=4 bbWeight=0.39 PerfScore 0.77
-G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M34838_IG08
- ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.71 PerfScore 0.71
+G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 62, prolog size 6, PerfScore 54.81, instruction count 25, allocated bytes for code 62 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.19, instruction count 22, allocated bytes for code 56 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -92,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+6 (+10.71%) : 145297.dasm - System.SpanHelpers:LastIndexOfAnyInRangeuint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.44) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.44) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.88) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.88) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M13244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M13244_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
@@ -31,7 +31,7 @@ G_M13244_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M13244_IG08
+ blt SHORT G_M13244_IG09
;; size=6 bbWeight=1 PerfScore 3.00
G_M13244_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,32 +45,41 @@ G_M13244_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M13244_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bhi SHORT G_M13244_IG07
+ bhi SHORT G_M13244_IG08
;; size=4 bbWeight=0.44 PerfScore 0.88
G_M13244_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- blo SHORT G_M13244_IG07
- mov r0, r3
+ blo SHORT G_M13244_IG08
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M13244_IG06: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M13244_IG06: ; bbWeight=2, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M13244_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr
+ bls SHORT G_M13244_IG11
+ ;; size=4 bbWeight=0.44 PerfScore 0.88
+G_M13244_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M13244_IG11
+ ;; size=2 bbWeight=0.32 PerfScore 0.32
+G_M13244_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M13244_IG03
;; size=6 bbWeight=4 PerfScore 12.00
-G_M13244_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13244_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M13244_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M13244_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M13244_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M13244_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.88, instruction count 22, allocated bytes for code 56 (MethodHash=7756cc43) for method System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 49.08, instruction count 25, allocated bytes for code 62 (MethodHash=7756cc43) for method System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+6 (+10.71%) : 142731.dasm - System.SpanHelpers:LastIndexOfAnyInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.77) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive"
;
; Lcl frame size = 0
-G_M37321_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M37321_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
@@ -31,7 +31,7 @@ G_M37321_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M37321_IG08
+ blt SHORT G_M37321_IG09
;; size=6 bbWeight=1 PerfScore 3.00
G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsl lr, r3, 2
@@ -45,32 +45,41 @@ G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=4 PerfScore 24.00
G_M37321_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r1, r12
- bgt SHORT G_M37321_IG07
+ bgt SHORT G_M37321_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77
G_M37321_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
cmp r2, lr
- blt SHORT G_M37321_IG07
- mov r0, r3
+ blt SHORT G_M37321_IG08
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M37321_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M37321_IG06: ; bbWeight=2, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M37321_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr
+ ble SHORT G_M37321_IG11
+ ;; size=4 bbWeight=0.39 PerfScore 0.77
+G_M37321_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M37321_IG11
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M37321_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M37321_IG03
;; size=6 bbWeight=4 PerfScore 12.00
-G_M37321_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37321_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37321_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M37321_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M37321_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M37321_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.77, instruction count 22, allocated bytes for code 56 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 48.58, instruction count 25, allocated bytes for code 62 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+12.50%) : 143672.dasm - System.SpanHelpers:LastIndexOfAnyInRangeulong:int (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 arg0 [V00,T08] ( 3, 6 ) byref -> r0 single-def
; V01 arg1 [V01 ] ( 6, 10.20) long -> [sp+0x00] ld-addr-op single-def
-; V02 arg2 [V02 ] ( 3, 6 ) long -> [sp+0x18] ld-addr-op single-def
+; V02 arg2 [V02 ] ( 4, 4.20) long -> [sp+0x18] ld-addr-op single-def
; V03 arg3 [V03,T16] ( 1, 1 ) int -> [sp+0x20] single-def
-; V04 loc0 [V04,T01] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T01] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T09] ( 2, 8 ) byref -> r2
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -22,19 +22,19 @@
;* V11 cse0 [V11 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V12 rat0 [V12,T04] ( 4, 6.10) int -> [sp+0x00] do-not-enreg[] "field V01.lo (fldOffset=0x0)" P-DEP
; V13 rat1 [V13,T05] ( 4, 6.10) int -> [sp+0x04] do-not-enreg[] "field V01.hi (fldOffset=0x4)" P-DEP
-; V14 rat2 [V14,T14] ( 2, 4 ) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
-; V15 rat3 [V15,T15] ( 1, 2 ) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
+; V14 rat2 [V14,T14] ( 2, 2.10) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
+; V15 rat3 [V15,T15] ( 2, 2.10) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
; V16 rat4 [V16,T06] ( 3, 8.10) int -> lr "field V08.lo (fldOffset=0x0)" P-INDEP
; V17 rat5 [V17,T07] ( 3, 8.10) int -> r12 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat6 [V18,T10] ( 3, 6 ) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V19 rat7 [V19,T11] ( 2, 4 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat6 [V18,T10] ( 3, 4.10) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP
+; V19 rat7 [V19,T11] ( 3, 4.10) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
; V20 rat8 [V20,T02] ( 3, 10 ) int -> r1 "field V11.lo (fldOffset=0x0)" P-INDEP
; V21 rat9 [V21,T03] ( 3, 10 ) int -> r2 "field V11.hi (fldOffset=0x4)" P-INDEP
; V22 rat10 [V22,T00] ( 3, 24 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
-G_M42181_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M42181_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r2,r3,r4,r5,r11,lr}
add r11, sp, 16
str r2, [sp] // [V01 arg1]
@@ -45,7 +45,7 @@ G_M42181_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
ldr r3, [sp+0x20] // [V03 arg3]
subs r3, r3, 1
cmp r3, 0
- blt SHORT G_M42181_IG08
+ blt SHORT G_M42181_IG09
;; size=8 bbWeight=1 PerfScore 4.00
G_M42181_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
lsls r2, r3, 3
@@ -67,37 +67,47 @@ G_M42181_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
ldr r5, [sp+0x04] // [V13 rat1]
cmp lr, r4
sbcs lr, r12, r5
- blo SHORT G_M42181_IG07
+ blo SHORT G_M42181_IG08
;; size=12 bbWeight=0.10 PerfScore 0.49
G_M42181_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldr lr, [sp+0x18] // [V14 rat2]
cmp lr, r1
ldr lr, [sp+0x1C] // [V15 rat3]
- sbcs r2, lr, r2
- blo SHORT G_M42181_IG07
- ldr r0, [sp+0x18] // [V14 rat2]
+ sbcs lr, lr, r2
+ blo SHORT G_M42181_IG08
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M42181_IG06: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
+ ldr r0, [sp+0x18] // [V14 rat2]
+ ldr lr, [sp+0x1C] // [V15 rat3]
cmp r1, r0
- mov r0, r3
- ;; size=22 bbWeight=2 PerfScore 16.00
-G_M42181_IG06: ; bbWeight=2, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M42181_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ sbcs r0, r2, lr
+ bhs SHORT G_M42181_IG11
+ ;; size=14 bbWeight=0.10 PerfScore 0.49
+G_M42181_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M42181_IG11
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M42181_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M42181_IG03
;; size=6 bbWeight=4 PerfScore 12.00
-G_M42181_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42181_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M42181_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M42181_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M42181_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M42181_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 12, PerfScore 83.49, instruction count 38, allocated bytes for code 96 (MethodHash=69cf5b3a) for method System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 77.03, instruction count 42, allocated bytes for code 108 (MethodHash=69cf5b3a) for method System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -109,7 +119,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.linux.arm.checked.mch
-24 (-2.80%) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] 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,T38] ( 5, 5 ) int -> r7 single-def
-; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def
+; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* 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,T51] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10
-; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28]
-; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7
-; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def
+; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10
+; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20]
+; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7
+; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
@@ -27,53 +27,53 @@
;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg"
-; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg"
+; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg"
-; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
-; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg"
+; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
+; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg"
-; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg"
+; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg"
-; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
+; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg"
-; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg"
-; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg"
+; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg"
+; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg"
-; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg"
+; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -89,15 +89,15 @@
;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
-; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -107,15 +107,15 @@
;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg"
-; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg"
+; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
-; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
+; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -134,8 +134,8 @@
;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -144,8 +144,8 @@
;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP
;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
@@ -154,13 +154,13 @@
;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP
;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP
;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP
@@ -174,13 +174,13 @@
;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP
;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP
-; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP
;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP
@@ -194,27 +194,26 @@
;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP
;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate"
-; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate"
-; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative"
+; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M39392_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, 52
- add r11, sp, 80
+ sub sp, 44
+ add r11, sp, 72
mov r4, r0
; gcrRegs +[r4]
;; size=14 bbWeight=1 PerfScore 5.00
G_M39392_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34]
cmp r7, r6
- bhi G_M39392_IG38
+ bhi G_M39392_IG36
lsls r0, r7, 1
add r8, r5, r0
; byrRegs +[r8]
@@ -233,7 +232,7 @@ G_M39392_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8},
ldr r3, [r3]
blx r3 // <unknown method>
cmp r7, 0
- bne G_M39392_IG35
+ bne G_M39392_IG33
;; size=18 bbWeight=1 PerfScore 6.00
G_M39392_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
movs r1, 10
@@ -252,7 +251,7 @@ G_M39392_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r
;; size=26 bbWeight=0.50 PerfScore 5.50
G_M39392_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
cmp r7, r9
- bhi G_M39392_IG38
...
-24 (-2.80%) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] 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,T38] ( 5, 5 ) int -> r7 single-def
-; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def
+; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* 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,T51] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10
-; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28]
-; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7
-; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def
+; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10
+; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20]
+; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7
+; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
@@ -27,53 +27,53 @@
;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg"
-; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg"
+; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg"
-; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
-; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg"
+; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
+; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg"
-; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg"
+; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg"
-; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
+; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg"
-; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg"
-; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg"
+; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg"
+; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg"
-; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg"
+; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -89,15 +89,15 @@
;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
-; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -107,15 +107,15 @@
;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg"
-; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg"
+; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
-; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
+; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -134,8 +134,8 @@
;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -144,8 +144,8 @@
;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP
;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
@@ -154,13 +154,13 @@
;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP
;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP
;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP
@@ -174,13 +174,13 @@
;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP
;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP
-; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP
;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP
@@ -194,27 +194,26 @@
;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP
;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate"
-; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate"
-; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative"
+; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M55662_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, 52
- add r11, sp, 80
+ sub sp, 44
+ add r11, sp, 72
mov r4, r0
; gcrRegs +[r4]
;; size=14 bbWeight=1 PerfScore 5.00
G_M55662_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34]
cmp r7, r6
- bhi G_M55662_IG38
+ bhi G_M55662_IG36
lsls r0, r7, 1
add r8, r5, r0
; byrRegs +[r8]
@@ -233,7 +232,7 @@ G_M55662_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8},
ldr r3, [r3]
blx r3 // <unknown method>
cmp r7, 0
- bne G_M55662_IG35
+ bne G_M55662_IG33
;; size=18 bbWeight=1 PerfScore 6.00
G_M55662_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
movs r1, 10
@@ -252,7 +251,7 @@ G_M55662_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r
;; size=26 bbWeight=0.50 PerfScore 5.50
G_M55662_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
cmp r7, r9
- bhi G_M55662_IG38
...
-24 (-2.80%) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] 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,T38] ( 5, 5 ) int -> r7 single-def
-; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def
+; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* 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,T51] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10
-; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28]
-; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7
-; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def
+; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10
+; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20]
+; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7
+; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
@@ -27,53 +27,53 @@
;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg"
-; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg"
+; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg"
-; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
-; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg"
+; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
+; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg"
-; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg"
+; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg"
-; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
+; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg"
-; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg"
-; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg"
+; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg"
+; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg"
-; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg"
+; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -89,15 +89,15 @@
;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
-; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -107,15 +107,15 @@
;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg"
-; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg"
+; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
-; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
+; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -134,8 +134,8 @@
;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -144,8 +144,8 @@
;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP
;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
@@ -154,13 +154,13 @@
;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP
;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP
;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP
@@ -174,13 +174,13 @@
;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP
;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP
-; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP
;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP
@@ -194,27 +194,26 @@
;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP
;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate"
-; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate"
-; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative"
+; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M63279_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, 52
- add r11, sp, 80
+ sub sp, 44
+ add r11, sp, 72
mov r4, r0
; gcrRegs +[r4]
;; size=14 bbWeight=1 PerfScore 5.00
G_M63279_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34]
cmp r7, r6
- bhi G_M63279_IG38
+ bhi G_M63279_IG36
lsls r0, r7, 1
add r8, r5, r0
; byrRegs +[r8]
@@ -233,7 +232,7 @@ G_M63279_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8},
ldr r3, [r3]
blx r3 // <unknown method>
cmp r7, 0
- bne G_M63279_IG35
+ bne G_M63279_IG33
;; size=18 bbWeight=1 PerfScore 6.00
G_M63279_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
movs r1, 10
@@ -252,7 +251,7 @@ G_M63279_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r
;; size=26 bbWeight=0.50 PerfScore 5.50
G_M63279_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
cmp r7, r9
- bhi G_M63279_IG38
...
+20 (+2.82%) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple
2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T20] ( 3, 6 ) ref -> r4 class-hnd single-def <FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader>
-; V01 arg1 [V01 ] ( 4, 7 ) struct ( 4) [sp+0x34] single-def <FSharp.Compiler.IO.ReadOnlyByteMemory>
+; V01 arg1 [V01 ] ( 4, 7 ) struct ( 4) [sp+0x3C] single-def <FSharp.Compiler.IO.ReadOnlyByteMemory>
; V02 arg2 [V02,T26] ( 3, 3 ) ref -> r6 class-hnd single-def <FSharp.Compiler.AbstractIL.IL+ILType>
-; V03 arg3 [V03,T22] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
-; V04 arg4 [V04,T34] ( 1, 1 ) int -> [sp+0x38] single-def
-; V05 arg5 [V05,T35] ( 1, 1 ) int -> [sp+0x3C] single-def
-; V06 loc0 [V06 ] ( 3, 6 ) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn>
-; V07 loc1 [V07,T16] ( 3, 9 ) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V03 arg3 [V03,T23] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
+; V04 arg4 [V04,T32] ( 1, 1.98) int -> r7 single-def
+; V05 arg5 [V05,T33] ( 1, 1.98) int -> r8 single-def
+; V06 loc0 [V06 ] ( 3, 6 ) ref -> [sp+0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn>
+; V07 loc1 [V07,T15] ( 3, 9.98) ref -> r5 class-hnd exact single-def <<unknown class>>
; V08 loc2 [V08,T25] ( 6, 6.54) ref -> r6 class-hnd exact single-def <<unknown class>>
-; V09 loc3 [V09,T23] ( 5, 7 ) ref -> r5 class-hnd exact single-def <<unknown class>>
-; V10 loc4 [V10,T05] ( 15, 23.54) int -> r7
-; V11 loc5 [V11,T17] ( 4, 8 ) ref -> r9 class-hnd <FSharp.Compiler.AbstractIL.IL+ILType>
-; V12 loc6 [V12,T10] ( 6, 18 ) int -> r6
+; V09 loc3 [V09,T22] ( 5, 7.98) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V10 loc4 [V10,T05] ( 15, 25.50) int -> r9
+; V11 loc5 [V11,T17] ( 4, 8 ) ref -> [sp+0x10] class-hnd <FSharp.Compiler.AbstractIL.IL+ILType>
+; V12 loc6 [V12,T10] ( 6, 19.96) int -> r7
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
; V15 tmp2 [V15,T12] ( 6, 12 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILReturn>
@@ -28,7 +28,7 @@
; V17 tmp4 [V17,T28] ( 2, 4 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.AbstractIL.IL+ILReturn>
; V18 tmp5 [V18,T18] ( 4, 8 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]]>
;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> r7 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> r9 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V21 tmp8 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given>
@@ -42,13 +42,13 @@
;* V31 tmp18 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
; V32 tmp19 [V32,T01] ( 4, 34 ) ref -> r5 class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
;* V33 tmp20 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
-; V34 tmp21 [V34,T21] ( 2, 8 ) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
+; V34 tmp21 [V34,T21] ( 2, 8 ) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
;* V35 tmp22 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <FSharp.Compiler.AbstractIL.IL+ILType>
;* V36 tmp23 [V36,T31] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp24 [V37,T03] ( 4, 26 ) int -> r7 "Inlining Arg"
+; V37 tmp24 [V37,T03] ( 4, 26 ) int -> r9 "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
-; V39 tmp26 [V39,T00] ( 22, 88 ) ref -> [sp+0x08] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter>
-; V40 tmp27 [V40,T19] ( 4, 8 ) ref -> r10 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V39 tmp26 [V39,T00] ( 22, 88 ) ref -> [sp+0x0C] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter>
+; V40 tmp27 [V40,T19] ( 4, 8 ) ref -> [sp+0x08] class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V42 tmp29 [V42 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given>
@@ -56,43 +56,45 @@
; V45 tmp32 [V45,T14] ( 4, 10 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
; V46 tmp33 [V46,T06] ( 7, 22 ) int -> r7 "Inline stloc first use temp"
;* V47 tmp34 [V47,T36] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V48 tmp35 [V48,T11] ( 2, 16 ) ref -> r9 class-hnd exact "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
+; V48 tmp35 [V48,T11] ( 2, 16 ) ref -> r8 class-hnd exact "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
; V49 tmp36 [V49,T02] ( 4, 32 ) ref -> r2 class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
-; V50 tmp37 [V50,T15] ( 4, 7 ) ref -> [sp+0x34] do-not-enreg[] single-def "field V01.bytes (fldOffset=0x0)" P-DEP
+; V50 tmp37 [V50,T16] ( 4, 7 ) ref -> [sp+0x3C] do-not-enreg[] single-def "field V01.bytes (fldOffset=0x0)" P-DEP
;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref "field V14.array (fldOffset=0x0)" P-INDEP
-;* V52 tmp39 [V52,T32] ( 0, 0 ) ref -> zero-ref single-def "field V21.array (fldOffset=0x0)" P-INDEP
+;* V52 tmp39 [V52,T34] ( 0, 0 ) ref -> zero-ref single-def "field V21.array (fldOffset=0x0)" P-INDEP
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "field V22.array (fldOffset=0x0)" P-INDEP
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref "field V38.array (fldOffset=0x0)" P-INDEP
;* V55 tmp42 [V55,T29] ( 0, 0 ) ref -> zero-ref "field V41.array (fldOffset=0x0)" P-INDEP
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref "field V42.array (fldOffset=0x0)" P-INDEP
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V58 cse0 [V58,T33] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
+;* V58 cse0 [V58,T35] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
; V59 cse1 [V59,T08] ( 3, 20 ) ref -> r0 "CSE - aggressive"
-; V60 cse2 [V60,T09] ( 3, 20 ) ref -> r8 "CSE - aggressive"
-; V61 cse3 [V61,T13] ( 7, 11.50) int -> r8 "CSE - moderate"
-; V62 cse4 [V62,T27] ( 2, 4.50) int -> r9 hoist "CSE - moderate"
+; V60 cse2 [V60,T09] ( 3, 20 ) ref -> r10 "CSE - aggressive"
+; V61 cse3 [V61,T13] ( 7, 11.50) int -> r10 "CSE - moderate"
+; V62 cse4 [V62,T27] ( 2, 4.50) int -> r8 hoist "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M51799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 16
- add r11, sp, 44
+ sub sp, 24
+ add r11, sp, 52
movs r1, 0
- str r1, [sp+0x0C] // [V06 loc0]
+ str r1, [sp+0x14] // [V06 loc0]
mov r4, r0
; gcrRegs +[r4]
mov r6, r2
; gcrRegs +[r6]
mov r5, r3
; gcrRegs +[r5]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ldr r7, [sp+0x40] // [V04 arg4]
+ ldr r8, [sp+0x44] // [V05 arg5]
+ ;; size=28 bbWeight=1 PerfScore 11.00
G_M51799_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- ldr r7, [r0]
- ; gcrRegs +[r7]
+ ldr r9, [r0]
+ ; gcrRegs +[r9]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -116,21 +118,21 @@ G_M51799_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
add r0, r2, 12
; byrRegs +[r0]
- mov r1, r7
+ mov r1, r9
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r7]
+ ; gcrRegs -[r1 r9]
; byrRegs -[r0]
mov r1, -1
str r1, [r2+0x10]
- str r2, [sp+0x0C] // [V06 loc0]
+ str r2, [sp+0x14] // [V06 loc0]
ldrsb r1, [r5]
movs r1, 0
mov r0, r5
; gcrRegs +[r0]
- ;; size=82 bbWeight=1 PerfScore 27.00
+ ;; size=84 bbWeight=1 PerfScore 27.00
G_M51799_IG03: ; bbWeight=8, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r2]
ldr r0, [r0+0x08]
@@ -152,33 +154,33 @@ G_M51799_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r6, r0
; gcrRegs +[r6]
- movs r7, 0
- ;; size=22 bbWeight=1 PerfScore 7.00
+ mov r9, 0
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M51799_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ldr r8, [r5+0x08]
- ; gcrRegs +[r8]
- cmp r8, 0
+ ldr r10, [r5+0x08]
+ ; gcrRegs +[r10]
+ cmp r10, 0
beq SHORT G_M51799_IG08
;; size=10 bbWeight=8 PerfScore 24.00
-G_M51799_IG07: ; bbWeight=4, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+G_M51799_IG07: ; bbWeight=4, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r2, [r5+0x04]
; gcrRegs +[r2]
mov r0, r6
; gcrRegs +[r0]
- mov r1, r7
+ mov r1, r9
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ARRADDR_ST
; gcrRegs -[r0 r2 r5]
; gcr arg pop 0
- mov r5, r8
+ mov r5, r10
; gcrRegs +[r5]
- adds r7, r7, 1
+ add r9, r9, 1
b SHORT G_M51799_IG06
- ;; size=22 bbWeight=4 PerfScore 36.00
+ ;; size=24 bbWeight=4 PerfScore 36.00
G_M51799_IG08: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5 r8]
+ ; gcrRegs -[r5 r10]
ldr r1, [r6+0x04]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -189,81 +191,87 @@ G_M51799_IG08: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r5, r0
; gcrRegs +[r5]
- movs r7, 0
- ldr r8, [r5+0x04]
- cmp r8, 0
+ mov r9, 0
+ ldr r10, [r5+0x04]
+ cmp r10, 0
ble G_M51799_IG21
- ;; size=36 bbWeight=1 PerfScore 11.00
+ ;; size=38 bbWeight=1 PerfScore 11.00
G_M51799_IG09: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [r6+0x04]
- cmp r0, r8
+ cmp r0, r10
blt SHORT G_M51799_IG16
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M51799_IG10: ; bbWeight=3.96, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
add r0, r6, 8
; byrRegs +[r0]
- lsls r3, r7, 2
- ldr r9, [r0+r3]
- ; gcrRegs +[r9]
+ lsl r3, r9, 2
+ ldr r3, [r0+r3]
+ ; gcrRegs +[r3]
+ str r3, [sp+0x10] // [V11 loc5]
+ ; GC ptr vars +{V11}
movw r0, 0xd1ff
; byrRegs -[r0]
movt r0, 0xd1ff
- ldr r10, [r0]
- ; gcrRegs +[r10]
+ ldr r2, [r0]
+ ; gcrRegs +[r2]
+ str r2, [sp+0x08] // [V40 tmp27]
+ ; GC ptr vars +{V40}
movw r0, 0xd1ff
movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
- ; gcrRegs +[r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ blx r1 // CORINFO_HELP_NEWSFAST
+ ; gcrRegs -[r2-r3] +[r0]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
movs r0, 0
; gcrRegs -[r0]
str r0, [r1+0x04]
- str r1, [sp+0x08] // [V39 tmp26]
+ str r1, [sp+0x0C] // [V39 tmp26]
; GC ptr vars +{V39}
add r0, r1, 8
; byrRegs +[r0]
- mov r1, r9
+ ldr r1, [sp+0x10] // [V11 loc5]
...
+28 (+3.27%) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,88 +8,89 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) int -> [sp+0x20] single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r8 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> r5 single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r9 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r10
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [sp+0x64] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) int -> [sp+0x20] single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> r7 single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r8 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r10 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r9
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [sp+0x64] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [sp+0x18] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [sp+0x18] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [sp+0x10] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> r1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [sp+0x0C] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> r1
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> r3
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> r3
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> r3
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> r2
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> r2
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r1
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> r2
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> r2
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> r2
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r1
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r1
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> lr
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r1
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> lr
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> r3
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> r3
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> r0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> r0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [sp+0x0C] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [sp+0x08] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [sp+0x14] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0xa)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) int -> r0 "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [sp+0x10] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) int -> r0 "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 44
@@ -102,35 +103,35 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [r11-0x24]
mov r4, r0
; gcrRegs +[r4]
- mov r8, r2
- ; byrRegs +[r8]
- mov r5, r3
+ mov r7, r2
+ ; byrRegs +[r7]
+ mov r8, r3
mov r3, r1
ldr r6, [sp+0x54] // [V05 arg4]
; gcrRegs +[r6]
- ldr r7, [sp+0x58] // [V06 arg5]
- ; gcrRegs +[r7]
- ldr r9, [sp+0x5C] // [V07 arg6]
- ldr r10, [sp+0x60] // [V08 arg7]
+ ldr r5, [sp+0x58] // [V06 arg5]
+ ; gcrRegs +[r5]
+ ldr r10, [sp+0x5C] // [V07 arg6]
+ ldr r9, [sp+0x60] // [V08 arg7]
;; size=38 bbWeight=1 PerfScore 14.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldrb r2, [sp+0x64]
strb r2, [sp+0x14] // [V75 tmp62]
ldr lr, [sp+0x50] // [V04 arg3]
; gcrRegs +[lr]
- str lr, [sp+0x0C] // [V73 tmp60]
+ str lr, [sp+0x08] // [V73 tmp60]
; GC ptr vars +{V73}
ldr r0, [r3+0x20]
ldr r1, [r0+0x08]
cmp r1, 0
beq SHORT G_M39451_IG04
;; size=24 bbWeight=1 PerfScore 8.00
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, gcvars, byref, isz
; gcrRegs -[lr]
str r3, [sp+0x20] // [V01 TypeCtx]
b SHORT G_M39451_IG05
;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
str r3, [sp+0x20] // [V01 TypeCtx]
mov r0, r3
movw r1, 0xd1ff
@@ -140,7 +141,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100
blx r12 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r1, r0
;; size=24 bbWeight=0.20 PerfScore 1.60
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
ldr r0, [r4+0xA4]
; gcrRegs +[r0]
movw r12, 0xd1ff
@@ -150,13 +151,13 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r
blx r12 // Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this
str r0, [sp+0x1C] // [V11 loc1]
;; size=22 bbWeight=1 PerfScore 7.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r0]
- uxtb r0, r10
+ uxtb r0, r9
cmp r0, 0
bne SHORT G_M39451_IG16
;; size=8 bbWeight=8 PerfScore 24.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
@@ -180,239 +181,59 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r
mov r3, r1
; gcrRegs +[r3]
;; size=38 bbWeight=2 PerfScore 28.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r1]
ldrh r0, [r3+0x08]
- uxth r3, r5
+ uxth r3, r8
; gcrRegs -[r3]
+ str r3, [sp+0x10] // [V79 cse0]
cmp r0, r3
- beq G_M39451_IG39
- ;; size=10 bbWeight=2 PerfScore 8.00
-G_M39451_IG09: ; bbWeight=4, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ldr r3, [r4+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+ beq G_M39451_IG33
+ ;; size=14 bbWeight=2 PerfScore 10.00
+G_M39451_IG09: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
+ ldr r2, [r4+0x08]
+ ; gcrRegs +[r2]
+ cmp r2, 0
bne SHORT G_M39451_IG11
;; size=6 bbWeight=4 PerfScore 12.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
- ; gcrRegs -[r3]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
+ ; gcrRegs -[r2]
mov r0, r4
; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
...
+18 (+4.15%) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
@@ -11,14 +11,14 @@
; V01 arg1 [V01,T04] ( 7, 7.04) ref -> r5 class-hnd single-def <Microsoft.ML.Data.VBuffer`1[float][]>
; V02 arg2 [V02,T05] ( 7, 7.04) ref -> r6 class-hnd single-def <float[]>
; V03 arg3 [V03,T02] ( 7, 8 ) int -> r4 single-def
-; V04 arg4 [V04,T14] ( 1, 1 ) ubyte -> [sp+0x38] single-def
+; V04 arg4 [V04,T13] ( 1, 1.98) ubyte -> [sp+0x38] single-def
; V05 arg5 [V05,T07] ( 8, 8.02) byref -> r8 single-def
; V06 arg6 [V06,T10] ( 5, 5 ) byref -> [sp+0x40] single-def
; V07 arg7 [V07,T08] ( 9, 8 ) byref -> r9 single-def
; V08 arg8 [V08,T09] ( 6, 5.50) byref -> r10 single-def
; V09 loc0 [V09,T00] ( 17, 25.08) int -> [sp+0x04]
; V10 loc1 [V10,T01] ( 10, 14 ) float -> f17
-; V11 loc2 [V11,T13] ( 3, 1.50) float -> f0 single-def
+; V11 loc2 [V11,T14] ( 3, 1.50) float -> f0 single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 cse0 [V13,T11] ( 4, 4.54) float -> f16 hoist multi-def "CSE - aggressive"
; V14 cse1 [V14,T03] ( 3, 9.90) float -> f8 "CSE - aggressive"
@@ -57,10 +57,10 @@ G_M61013_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0788 {r3 r
str r1, [r3]
mov r1, -1
str r1, [r10]
- movs r2, 0
+ mov lr, 0
cmp r4, 0
ble G_M61013_IG13
- ;; size=38 bbWeight=1 PerfScore 12.00
+ ;; size=40 bbWeight=1 PerfScore 12.00
G_M61013_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; byrRegs -[r3]
cmp r5, 0
@@ -77,17 +77,17 @@ G_M61013_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
vmov.i2f s16, r1
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M61013_IG04: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
- str r2, [sp+0x04]
- lsls r1, r2, 4
+ str lr, [sp+0x04]
+ lsl r1, lr, 4
adds r1, 8
adds r1, r5, r1
; byrRegs +[r1]
mov r0, r7
; byrRegs +[r0]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // <unknown method>
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ ldr r12, [r12]
+ blx r12 // <unknown method>
; byrRegs -[r0-r1]
vmul s8, s0, s16
add r1, r6, 8
@@ -101,7 +101,7 @@ G_M61013_IG04: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
vcmp s17, s8
vmrs APSR, FPSCR
bhi SHORT G_M61013_IG06
- ;; size=60 bbWeight=3.96 PerfScore 79.20
+ ;; size=64 bbWeight=3.96 PerfScore 79.20
G_M61013_IG05: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; byrRegs -[r1]
vstr s8, [r9]
@@ -126,40 +126,40 @@ G_M61013_IG06: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
G_M61013_IG07: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
adds r3, r3, 1
cmp r3, r4
- mov r2, r3
+ mov lr, r3
blt SHORT G_M61013_IG04
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M61013_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
+G_M61013_IG08: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; gcrRegs -[r5-r6]
b SHORT G_M61013_IG13
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M61013_IG09: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; gcrRegs +[r5-r6]
ldr r1, [r5+0x04]
- cmp r2, r1
+ cmp lr, r1
bhs SHORT G_M61013_IG17
- str r2, [sp+0x04] // [V09 loc0]
- lsls r1, r2, 4
+ str lr, [sp+0x04] // [V09 loc0]
+ lsl r1, lr, 4
adds r1, 8
adds r1, r5, r1
; byrRegs +[r1]
mov r0, r7
; byrRegs +[r0]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // <unknown method>
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ ldr r12, [r12]
+ blx r12 // <unknown method>
; byrRegs -[r0-r1]
mov r0, -0x40000000
vmov.i2f s16, r0
vmul s8, s0, s16
ldr r0, [r6+0x04]
- ldr r2, [sp+0x04] // [V09 loc0]
- cmp r2, r0
+ ldr lr, [sp+0x04] // [V09 loc0]
+ cmp lr, r0
bhs SHORT G_M61013_IG17
add r0, r6, 8
; byrRegs +[r0]
- lsls r3, r2, 2
+ lsl r3, lr, 2
adds r0, r0, r3
vldr s9, [r0]
vadd s17, s8, s9
@@ -167,7 +167,7 @@ G_M61013_IG09: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
vcmp s17, s8
vmrs APSR, FPSCR
bhi SHORT G_M61013_IG11
- ;; size=80 bbWeight=0.04 PerfScore 1.12
+ ;; size=88 bbWeight=0.04 PerfScore 1.12
G_M61013_IG10: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; byrRegs -[r0]
vldr s8, [r8]
@@ -177,9 +177,9 @@ G_M61013_IG10: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
ldr r3, [r0]
str r3, [r10]
vstr s17, [r8]
- str r2, [r0]
+ str lr, [r0]
b SHORT G_M61013_IG12
- ;; size=24 bbWeight=0.02 PerfScore 0.16
+ ;; size=26 bbWeight=0.02 PerfScore 0.16
G_M61013_IG11: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; byrRegs -[r0]
vldr s8, [r9]
@@ -187,23 +187,23 @@ G_M61013_IG11: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r
vmrs APSR, FPSCR
bhs SHORT G_M61013_IG16
vstr s17, [r9]
- str r2, [r10]
+ str lr, [r10]
ldr r0, [sp+0x40] // [V06 arg6]
; byrRegs +[r0]
;; size=24 bbWeight=0.02 PerfScore 0.14
G_M61013_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0781 {r0 r7 r8 r9 r10}, byref, isz
- adds r2, r2, 1
- cmp r2, r4
+ add lr, lr, 1
+ cmp lr, r4
str r0, [sp+0x40] // [V06 arg6]
blt SHORT G_M61013_IG09
- ;; size=8 bbWeight=0.04 PerfScore 0.16
-G_M61013_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
+ ;; size=10 bbWeight=0.04 PerfScore 0.16
+G_M61013_IG13: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; gcrRegs -[r5-r6]
; byrRegs -[r0]
ldrb r0, [sp+0x38] // [V04 arg4]
cmp r0, 0
beq SHORT G_M61013_IG15
- ;; size=8 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
G_M61013_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
mov r0, r7
; byrRegs +[r0]
@@ -244,7 +244,7 @@ G_M61013_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 434, prolog size 14, PerfScore 168.36, instruction count 148, allocated bytes for code 434 (MethodHash=d18f11aa) for method Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
+; Total bytes of code 452, prolog size 14, PerfScore 172.28, instruction count 148, allocated bytes for code 452 (MethodHash=d18f11aa) for method Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
; ============================================================
Unwind Info:
@@ -256,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 217 (0x000d9) Actual length = 434 (0x0001b2)
+ Function Length : 226 (0x000e2) Actual length = 452 (0x0001c4)
---- 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 |
93 |
20 |
23 |
50 |
-252 |
+494 |
benchmarks.run_pgo.linux.arm.checked.mch |
33 |
5 |
11 |
17 |
-20 |
+90 |
benchmarks.run_tiered.linux.arm.checked.mch |
93 |
20 |
23 |
50 |
-232 |
+510 |
coreclr_tests.run.linux.arm.checked.mch |
4,040 |
292 |
313 |
3,435 |
-1,914 |
+2,004 |
libraries.crossgen2.linux.arm.checked.mch |
219 |
36 |
42 |
141 |
-528 |
+456 |
libraries.pmi.linux.arm.checked.mch |
401 |
85 |
102 |
214 |
-1,172 |
+1,594 |
libraries_tests.run.linux.arm.Release.mch |
746 |
284 |
146 |
316 |
-2,376 |
+502 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
536 |
134 |
198 |
204 |
-2,120 |
+3,486 |
realworld.run.linux.arm.checked.mch |
101 |
25 |
23 |
53 |
-708 |
+492 |
|
6,262 |
901 |
881 |
4,480 |
-9,322 |
+9,628 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
42,331 |
4,278 |
38,053 |
1,165 (2.68%) |
1,165 (2.68%) |
benchmarks.run_pgo.linux.arm.checked.mch |
47,709 |
18,036 |
29,673 |
753 (1.55%) |
753 (1.55%) |
benchmarks.run_tiered.linux.arm.checked.mch |
72,866 |
38,765 |
34,101 |
1,011 (1.37%) |
1,011 (1.37%) |
coreclr_tests.run.linux.arm.checked.mch |
471,634 |
259,195 |
212,439 |
7,529 (1.57%) |
7,529 (1.57%) |
libraries.crossgen2.linux.arm.checked.mch |
197,974 |
14 |
197,960 |
424 (0.21%) |
424 (0.21%) |
libraries.pmi.linux.arm.checked.mch |
272,819 |
6 |
272,813 |
7,891 (2.81%) |
7,891 (2.81%) |
libraries_tests.run.linux.arm.Release.mch |
33,537 |
3,662 |
29,875 |
1,186 (3.42%) |
1,186 (3.42%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,024 |
21,625 |
252,399 |
34,271 (11.12%) |
34,271 (11.12%) |
realworld.run.linux.arm.checked.mch |
36,436 |
153 |
36,283 |
1,426 (3.77%) |
1,426 (3.77%) |
|
1,449,330 |
345,734 |
1,103,596 |
55,656 (3.70%) |
55,656 (3.70%) |
jit-analyze output
benchmarks.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13690874 (overridden on cmd)
Total bytes of diff: 13691116 (overridden on cmd)
Total bytes of delta: 242 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
102 : 25610.dasm (2.24 % of base)
62 : 4669.dasm (7.18 % of base)
56 : 13381.dasm (19.72 % of base)
46 : 8474.dasm (2.85 % of base)
44 : 27868.dasm (1.34 % of base)
44 : 28013.dasm (1.36 % of base)
28 : 6426.dasm (1.79 % of base)
16 : 16909.dasm (4.57 % of base)
12 : 24266.dasm (1.83 % of base)
10 : 23747.dasm (0.12 % of base)
10 : 33760.dasm (0.10 % of base)
10 : 39066.dasm (1.39 % of base)
10 : 41892.dasm (0.69 % of base)
8 : 19605.dasm (1.67 % of base)
8 : 7246.dasm (1.90 % of base)
6 : 25302.dasm (0.24 % of base)
4 : 13338.dasm (0.75 % of base)
4 : 13684.dasm (0.24 % of base)
4 : 29465.dasm (0.63 % of base)
4 : 7037.dasm (0.87 % of base)
Top file improvements (bytes):
-78 : 24673.dasm (-7.91 % of base)
-32 : 24674.dasm (-0.84 % of base)
-28 : 12745.dasm (-1.61 % of base)
-22 : 29768.dasm (-2.27 % of base)
-14 : 20003.dasm (-0.44 % of base)
-12 : 24723.dasm (-0.65 % of base)
-10 : 5359.dasm (-0.43 % of base)
-8 : 31723.dasm (-0.50 % of base)
-6 : 17258.dasm (-0.36 % of base)
-6 : 20488.dasm (-0.18 % of base)
-6 : 13368.dasm (-0.27 % of base)
-6 : 7387.dasm (-1.59 % of base)
-4 : 6224.dasm (-0.28 % of base)
-4 : 4382.dasm (-0.96 % of base)
-4 : 4387.dasm (-0.97 % of base)
-4 : 733.dasm (-1.06 % of base)
-2 : 13371.dasm (-0.16 % of base)
-2 : 22356.dasm (-0.18 % of base)
-2 : 8377.dasm (-0.11 % of base)
-2 : 4663.dasm (-0.28 % of base)
42 total files with Code Size differences (20 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
102 (2.24 % of base) : 25610.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
62 (7.18 % of base) : 4669.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
56 (19.72 % of base) : 13381.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
46 (2.85 % of base) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
44 (1.34 % of base) : 27868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (1.36 % of base) : 28013.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (1.79 % of base) : 6426.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
16 (4.57 % of base) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
12 (1.83 % of base) : 24266.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
10 (0.12 % of base) : 23747.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
10 (0.10 % of base) : 33760.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
10 (0.69 % of base) : 41892.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
10 (1.39 % of base) : 39066.dasm - SciMark2.SOR:execute(double,double[][],int) (FullOpts)
8 (1.67 % of base) : 19605.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (FullOpts)
8 (1.90 % of base) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
6 (0.24 % of base) : 25302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
4 (0.63 % of base) : 29465.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (FullOpts)
4 (0.24 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.87 % of base) : 7037.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
4 (0.75 % of base) : 13338.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
Top method improvements (bytes):
-78 (-7.91 % of base) : 24673.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-32 (-0.84 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-28 (-1.61 % of base) : 12745.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-22 (-2.27 % of base) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-14 (-0.44 % of base) : 20003.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-12 (-0.65 % of base) : 24723.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
-10 (-0.43 % of base) : 5359.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
-8 (-0.50 % of base) : 31723.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-6 (-1.59 % of base) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-6 (-0.18 % of base) : 20488.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-6 (-0.27 % of base) : 13368.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
-6 (-0.36 % of base) : 17258.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-4 (-0.97 % of base) : 4387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-1.06 % of base) : 733.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-0.96 % of base) : 4382.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-0.28 % of base) : 6224.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
-2 (-0.18 % of base) : 22356.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-2 (-0.11 % of base) : 8377.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
-2 (-0.28 % of base) : 4663.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-2 (-0.16 % of base) : 13371.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)
Top method regressions (percentages):
56 (19.72 % of base) : 13381.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
62 (7.18 % of base) : 4669.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
16 (4.57 % of base) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
46 (2.85 % of base) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
102 (2.24 % of base) : 25610.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
8 (1.90 % of base) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
12 (1.83 % of base) : 24266.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
28 (1.79 % of base) : 6426.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
8 (1.67 % of base) : 19605.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (FullOpts)
10 (1.39 % of base) : 39066.dasm - SciMark2.SOR:execute(double,double[][],int) (FullOpts)
44 (1.36 % of base) : 28013.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (1.34 % of base) : 27868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.87 % of base) : 7037.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
4 (0.75 % of base) : 13338.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
10 (0.69 % of base) : 41892.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
4 (0.63 % of base) : 29465.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (FullOpts)
4 (0.24 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
6 (0.24 % of base) : 25302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
2 (0.15 % of base) : 9598.dasm - BilinearTest:BilinearInterpol(double[],double[],double,double,double[],double,double,double):double[] (FullOpts)
2 (0.14 % of base) : 2030.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-78 (-7.91 % of base) : 24673.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-22 (-2.27 % of base) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-28 (-1.61 % of base) : 12745.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-6 (-1.59 % of base) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-1.06 % of base) : 733.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-0.97 % of base) : 4387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-0.96 % of base) : 4382.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-32 (-0.84 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-12 (-0.65 % of base) : 24723.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
-8 (-0.50 % of base) : 31723.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-14 (-0.44 % of base) : 20003.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-10 (-0.43 % of base) : 5359.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
-6 (-0.36 % of base) : 17258.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-4 (-0.28 % of base) : 6224.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
-2 (-0.28 % of base) : 4663.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-6 (-0.27 % of base) : 13368.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
-6 (-0.18 % of base) : 20488.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-2 (-0.18 % of base) : 22356.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
-2 (-0.16 % of base) : 13371.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)
-2 (-0.11 % of base) : 8377.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
benchmarks.run_pgo.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24676696 (overridden on cmd)
Total bytes of diff: 24676766 (overridden on cmd)
Total bytes of delta: 70 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
62 : 24027.dasm (7.18 % of base)
4 : 17233.dasm (0.24 % of base)
4 : 24592.dasm (1.24 % of base)
4 : 13986.dasm (1.24 % of base)
4 : 9530.dasm (0.87 % of base)
2 : 16865.dasm (0.62 % of base)
2 : 23935.dasm (0.62 % of base)
2 : 14411.dasm (0.14 % of base)
2 : 40786.dasm (0.62 % of base)
2 : 14056.dasm (0.28 % of base)
2 : 17741.dasm (0.62 % of base)
Top file improvements (bytes):
-6 : 5440.dasm (-1.55 % of base)
-4 : 6586.dasm (-0.95 % of base)
-4 : 2268.dasm (-1.04 % of base)
-4 : 6588.dasm (-0.96 % of base)
-2 : 9314.dasm (-0.14 % of base)
16 total files with Code Size differences (5 improved, 11 regressed), 17 unchanged.
Top method regressions (bytes):
62 (7.18 % of base) : 24027.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
4 (0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
4 (0.87 % of base) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
4 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
4 (1.24 % of base) : 13986.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.14 % of base) : 14411.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
2 (0.62 % of base) : 16865.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 23935.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 40786.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 17741.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.28 % of base) : 14056.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
Top method improvements (bytes):
-6 (-1.55 % of base) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.96 % of base) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-1.04 % of base) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.95 % of base) : 6586.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-2 (-0.14 % of base) : 9314.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
Top method regressions (percentages):
62 (7.18 % of base) : 24027.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
4 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
4 (1.24 % of base) : 13986.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
4 (0.87 % of base) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
2 (0.62 % of base) : 16865.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 23935.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 40786.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.62 % of base) : 17741.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
2 (0.28 % of base) : 14056.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
4 (0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
2 (0.14 % of base) : 14411.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
Top method improvements (percentages):
-6 (-1.55 % of base) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-1.04 % of base) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.96 % of base) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.95 % of base) : 6586.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-2 (-0.14 % of base) : 9314.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
16 total methods with Code Size differences (5 improved, 11 regressed).
benchmarks.run_tiered.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 17982904 (overridden on cmd)
Total bytes of diff: 17983182 (overridden on cmd)
Total bytes of delta: 278 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
102 : 48074.dasm (2.24 % of base)
62 : 6984.dasm (7.18 % of base)
56 : 32704.dasm (19.72 % of base)
46 : 17948.dasm (2.85 % of base)
44 : 54644.dasm (1.34 % of base)
44 : 55791.dasm (1.36 % of base)
28 : 12613.dasm (1.79 % of base)
28 : 44994.dasm (3.27 % of base)
16 : 38232.dasm (4.57 % of base)
10 : 53075.dasm (0.12 % of base)
10 : 72998.dasm (0.69 % of base)
10 : 63651.dasm (0.10 % of base)
10 : 66371.dasm (1.39 % of base)
8 : 16392.dasm (1.90 % of base)
8 : 40868.dasm (1.67 % of base)
6 : 47370.dasm (0.24 % of base)
4 : 32649.dasm (0.75 % of base)
4 : 13574.dasm (0.87 % of base)
4 : 29579.dasm (0.24 % of base)
4 : 59745.dasm (0.63 % of base)
Top file improvements (bytes):
-78 : 45853.dasm (-7.89 % of base)
-32 : 45876.dasm (-0.84 % of base)
-22 : 59989.dasm (-2.27 % of base)
-14 : 42474.dasm (-0.44 % of base)
-12 : 46023.dasm (-0.65 % of base)
-10 : 8730.dasm (-0.43 % of base)
-8 : 31813.dasm (-0.45 % of base)
-8 : 60861.dasm (-0.50 % of base)
-6 : 42995.dasm (-0.18 % of base)
-6 : 19472.dasm (-1.59 % of base)
-6 : 43090.dasm (-0.27 % of base)
-6 : 38556.dasm (-0.36 % of base)
-4 : 4857.dasm (-0.96 % of base)
-4 : 19703.dasm (-0.28 % of base)
-4 : 4865.dasm (-0.97 % of base)
-4 : 1946.dasm (-1.06 % of base)
-2 : 17689.dasm (-0.11 % of base)
-2 : 32693.dasm (-0.16 % of base)
-2 : 3719.dasm (-0.28 % of base)
-2 : 44320.dasm (-0.18 % of base)
42 total files with Code Size differences (20 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
102 (2.24 % of base) : 48074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
62 (7.18 % of base) : 6984.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
56 (19.72 % of base) : 32704.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
46 (2.85 % of base) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
44 (1.34 % of base) : 54644.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (1.36 % of base) : 55791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (3.27 % of base) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
28 (1.79 % of base) : 12613.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
16 (4.57 % of base) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
10 (0.12 % of base) : 53075.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
10 (0.10 % of base) : 63651.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
10 (0.69 % of base) : 72998.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
10 (1.39 % of base) : 66371.dasm - SciMark2.SOR:execute(double,double[][],int) (Tier0-FullOpts)
8 (1.67 % of base) : 40868.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (Tier0-FullOpts)
8 (1.90 % of base) : 16392.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (Tier0-FullOpts)
6 (0.24 % of base) : 47370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
4 (0.63 % of base) : 59745.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (Tier0-FullOpts)
4 (0.24 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
4 (0.87 % of base) : 13574.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
4 (0.75 % of base) : 32649.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (Tier0-FullOpts)
Top method improvements (bytes):
-78 (-7.89 % of base) : 45853.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
-32 (-0.84 % of base) : 45876.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
-22 (-2.27 % of base) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
-14 (-0.44 % of base) : 42474.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-12 (-0.65 % of base) : 46023.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (Tier0-FullOpts)
-10 (-0.43 % of base) : 8730.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
-8 (-0.50 % of base) : 60861.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
-8 (-0.45 % of base) : 31813.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-6 (-1.59 % of base) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-6 (-0.18 % of base) : 42995.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-6 (-0.27 % of base) : 43090.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (Tier1)
-6 (-0.36 % of base) : 38556.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-4 (-0.97 % of base) : 4865.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-1.06 % of base) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.96 % of base) : 4857.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.28 % of base) : 19703.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
-2 (-0.18 % of base) : 44320.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
-2 (-0.11 % of base) : 17689.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier0-FullOpts)
-2 (-0.28 % of base) : 3719.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
-2 (-0.16 % of base) : 32693.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (Tier0-FullOpts)
Top method regressions (percentages):
56 (19.72 % of base) : 32704.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
62 (7.18 % of base) : 6984.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
16 (4.57 % of base) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
28 (3.27 % of base) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
46 (2.85 % of base) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
102 (2.24 % of base) : 48074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
8 (1.90 % of base) : 16392.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (Tier0-FullOpts)
28 (1.79 % of base) : 12613.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
8 (1.67 % of base) : 40868.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (Tier0-FullOpts)
10 (1.39 % of base) : 66371.dasm - SciMark2.SOR:execute(double,double[][],int) (Tier0-FullOpts)
44 (1.36 % of base) : 55791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (1.34 % of base) : 54644.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.87 % of base) : 13574.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
4 (0.75 % of base) : 32649.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (Tier0-FullOpts)
10 (0.69 % of base) : 72998.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
4 (0.63 % of base) : 59745.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (Tier0-FullOpts)
4 (0.24 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
6 (0.24 % of base) : 47370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
2 (0.15 % of base) : 19693.dasm - BilinearTest:BilinearInterpol(double[],double[],double,double,double[],double,double,double):double[] (Tier0-FullOpts)
2 (0.14 % of base) : 4338.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
Top method improvements (percentages):
-78 (-7.89 % of base) : 45853.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
-22 (-2.27 % of base) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
-6 (-1.59 % of base) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-1.06 % of base) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.97 % of base) : 4865.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-4 (-0.96 % of base) : 4857.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
-32 (-0.84 % of base) : 45876.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
-12 (-0.65 % of base) : 46023.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (Tier0-FullOpts)
-8 (-0.50 % of base) : 60861.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
-8 (-0.45 % of base) : 31813.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-14 (-0.44 % of base) : 42474.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-10 (-0.43 % of base) : 8730.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
-6 (-0.36 % of base) : 38556.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-4 (-0.28 % of base) : 19703.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
-2 (-0.28 % of base) : 3719.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
-6 (-0.27 % of base) : 43090.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (Tier1)
-6 (-0.18 % of base) : 42995.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-2 (-0.18 % of base) : 44320.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
-2 (-0.16 % of base) : 32693.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (Tier0-FullOpts)
-2 (-0.11 % of base) : 17689.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier0-FullOpts)
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: 321240776 (overridden on cmd)
Total bytes of diff: 321240866 (overridden on cmd)
Total bytes of delta: 90 (0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
40 : 83069.dasm (2.36 % of base)
40 : 344994.dasm (2.36 % of base)
34 : 83153.dasm (2.19 % of base)
34 : 83295.dasm (2.19 % of base)
34 : 150418.dasm (2.20 % of base)
34 : 345045.dasm (2.19 % of base)
34 : 345130.dasm (2.19 % of base)
34 : 381852.dasm (2.20 % of base)
32 : 178100.dasm (1.17 % of base)
26 : 192032.dasm (0.95 % of base)
26 : 305551.dasm (7.56 % of base)
24 : 345516.dasm (3.01 % of base)
24 : 83875.dasm (3.01 % of base)
24 : 83920.dasm (3.01 % of base)
24 : 185953.dasm (1.96 % of base)
24 : 200822.dasm (0.89 % of base)
24 : 409592.dasm (1.96 % of base)
24 : 312427.dasm (4.29 % of base)
24 : 139144.dasm (2.75 % of base)
24 : 345546.dasm (3.01 % of base)
Top file improvements (bytes):
-84 : 134638.dasm (-4.07 % of base)
-70 : 398740.dasm (-0.92 % of base)
-70 : 157964.dasm (-0.92 % of base)
-44 : 185942.dasm (-3.36 % of base)
-44 : 409584.dasm (-3.35 % of base)
-32 : 275136.dasm (-1.03 % of base)
-28 : 122724.dasm (-0.87 % of base)
-24 : 212325.dasm (-0.74 % of base)
-22 : 304388.dasm (-5.67 % of base)
-22 : 382451.dasm (-2.27 % of base)
-22 : 151681.dasm (-2.27 % of base)
-22 : 311135.dasm (-5.67 % of base)
-20 : 71277.dasm (-3.79 % of base)
-20 : 32438.dasm (-3.79 % of base)
-18 : 137238.dasm (-0.82 % of base)
-18 : 313633.dasm (-0.82 % of base)
-18 : 151129.dasm (-0.82 % of base)
-18 : 298917.dasm (-0.82 % of base)
-18 : 32893.dasm (-0.82 % of base)
-18 : 141330.dasm (-0.82 % of base)
75 total files with Code Size differences (35 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
40 (2.36 % of base) : 344994.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
40 (2.36 % of base) : 83069.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectDouble:ValidateResult(double[],double[],double[],double[],System.String):this (Tier0-FullOpts)
34 (2.19 % of base) : 345045.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
34 (2.19 % of base) : 83153.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (Tier0-FullOpts)
34 (2.19 % of base) : 345130.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
34 (2.19 % of base) : 83295.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
34 (2.20 % of base) : 381852.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
34 (2.20 % of base) : 150418.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
32 (1.17 % of base) : 178100.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
26 (0.95 % of base) : 192032.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
26 (7.56 % of base) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
24 (3.01 % of base) : 345516.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt16:ValidateResult(short[],short,short,System.String):this (FullOpts)
24 (3.01 % of base) : 83875.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt16:ValidateResult(short[],short,short,System.String):this (Tier0-FullOpts)
24 (3.01 % of base) : 345546.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorUInt16:ValidateResult(ushort[],ushort,ushort,System.String):this (FullOpts)
24 (3.01 % of base) : 83920.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorUInt16:ValidateResult(ushort[],ushort,ushort,System.String):this (Tier0-FullOpts)
24 (1.96 % of base) : 409592.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (FullOpts)
24 (1.96 % of base) : 185953.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (Tier0-FullOpts)
24 (2.75 % of base) : 139144.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
24 (0.89 % of base) : 200822.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
24 (4.29 % of base) : 312427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
Top method improvements (bytes):
-84 (-4.07 % of base) : 134638.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (Instrumented Tier1)
-70 (-0.92 % of base) : 398740.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-70 (-0.92 % of base) : 157964.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (Tier0-FullOpts)
-44 (-3.35 % of base) : 409584.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
-44 (-3.36 % of base) : 185942.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
-32 (-1.03 % of base) : 275136.dasm - Internal.TypeSystem.Ecma.EcmaModule:ResolveTypeReference(System.Reflection.Metadata.TypeReferenceHandle):System.Object:this (Tier1)
-28 (-0.87 % of base) : 122724.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
-24 (-0.74 % of base) : 212325.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
-22 (-2.27 % of base) : 382451.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
-22 (-2.27 % of base) : 151681.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
-22 (-5.67 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-22 (-5.67 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-20 (-3.79 % of base) : 71277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.79 % of base) : 32438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-0.82 % of base) : 137238.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-18 (-0.82 % of base) : 313633.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-18 (-0.82 % of base) : 151129.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-18 (-0.82 % of base) : 298917.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-18 (-0.82 % of base) : 32893.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-18 (-0.82 % of base) : 141330.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
Top method regressions (percentages):
16 (13.33 % of base) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
14 (11.48 % of base) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
26 (7.56 % of base) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
24 (4.29 % of base) : 312427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
22 (3.83 % of base) : 24441.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
4 (3.51 % of base) : 311104.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 71304.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 167508.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 225947.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 232011.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 237067.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 242295.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 24443.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 261035.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 271820.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 299332.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 300785.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 277897.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 304305.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 32547.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-22 (-5.67 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-22 (-5.67 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-5.10 % of base) : 116194.dasm - System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
-16 (-4.35 % of base) : 301841.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-4 (-4.35 % of base) : 116083.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-4 (-4.35 % of base) : 199842.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-84 (-4.07 % of base) : 134638.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (Instrumented Tier1)
-14 (-3.85 % of base) : 302423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-20 (-3.79 % of base) : 71277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.79 % of base) : 32438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-44 (-3.36 % of base) : 185942.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
-44 (-3.35 % of base) : 409584.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
-10 (-2.73 % of base) : 272938.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.73 % of base) : 301128.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-16 (-2.73 % of base) : 141359.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-8 (-2.68 % of base) : 44546.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
-8 (-2.68 % of base) : 83509.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
-8 (-2.68 % of base) : 35029.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
-6 (-2.54 % of base) : 30975.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Tier1)
-12 (-2.28 % of base) : 39592.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
libraries.crossgen2.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35803568 (overridden on cmd)
Total bytes of diff: 35803496 (overridden on cmd)
Total bytes of delta: -72 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
50 : 103492.dasm (3.32 % of base)
50 : 158017.dasm (0.23 % of base)
36 : 103490.dasm (1.47 % of base)
30 : 194501.dasm (2.91 % of base)
24 : 158938.dasm (0.86 % of base)
22 : 80834.dasm (3.67 % of base)
20 : 2594.dasm (1.21 % of base)
20 : 192173.dasm (1.04 % of base)
18 : 159087.dasm (2.45 % of base)
16 : 146715.dasm (0.23 % of base)
16 : 98991.dasm (2.86 % of base)
14 : 99433.dasm (1.83 % of base)
12 : 190015.dasm (5.22 % of base)
12 : 45961.dasm (0.95 % of base)
10 : 107286.dasm (0.87 % of base)
10 : 134431.dasm (0.14 % of base)
10 : 190016.dasm (3.82 % of base)
10 : 78650.dasm (0.35 % of base)
8 : 41470.dasm (0.71 % of base)
8 : 150648.dasm (0.44 % of base)
Top file improvements (bytes):
-44 : 79533.dasm (-2.46 % of base)
-40 : 107257.dasm (-2.86 % of base)
-38 : 103491.dasm (-2.18 % of base)
-30 : 164204.dasm (-1.52 % of base)
-28 : 46670.dasm (-3.45 % of base)
-26 : 98724.dasm (-1.85 % of base)
-24 : 79086.dasm (-0.71 % of base)
-24 : 151677.dasm (-1.33 % of base)
-22 : 132855.dasm (-1.25 % of base)
-20 : 171174.dasm (-0.86 % of base)
-20 : 65992.dasm (-0.88 % of base)
-18 : 161171.dasm (-1.07 % of base)
-16 : 161165.dasm (-1.01 % of base)
-16 : 99327.dasm (-0.89 % of base)
-14 : 190750.dasm (-1.21 % of base)
-12 : 161198.dasm (-2.17 % of base)
-12 : 80938.dasm (-1.03 % of base)
-12 : 124606.dasm (-4.14 % of base)
-12 : 122173.dasm (-0.24 % of base)
-12 : 49667.dasm (-0.25 % of base)
47 total files with Code Size differences (23 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
50 (3.32 % of base) : 103492.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
50 (0.23 % of base) : 158017.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
36 (1.47 % of base) : 103490.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
30 (2.91 % of base) : 194501.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsSafeArray(System.String[],System.Object[],System.Reflection.Emit.MarshallingData) (FullOpts)
24 (0.86 % of base) : 158938.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
22 (3.67 % of base) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
20 (1.21 % of base) : 2594.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
20 (1.04 % of base) : 192173.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
18 (2.45 % of base) : 159087.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
16 (2.86 % of base) : 98991.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
16 (0.23 % of base) : 146715.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)
14 (1.83 % of base) : 99433.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
12 (0.95 % of base) : 45961.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
12 (5.22 % of base) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
10 (0.35 % of base) : 78650.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
10 (0.14 % of base) : 134431.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
10 (0.87 % of base) : 107286.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
10 (3.82 % of base) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
8 (0.71 % of base) : 41470.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
8 (0.44 % of base) : 150648.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
Top method improvements (bytes):
-44 (-2.46 % of base) : 79533.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
-40 (-2.86 % of base) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
-38 (-2.18 % of base) : 103491.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-30 (-1.52 % of base) : 164204.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
-28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-26 (-1.85 % of base) : 98724.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundConvertedTupleElements):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-24 (-0.71 % of base) : 79086.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundWithLValueExpressionPlaceholder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression:this (FullOpts)
-24 (-1.33 % of base) : 151677.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-22 (-1.25 % of base) : 132855.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-20 (-0.88 % of base) : 65992.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ReducedExtensionMethodSymbol:InferExtensionMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol (FullOpts)
-20 (-0.86 % of base) : 171174.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)
-18 (-1.07 % of base) : 161171.dasm - System.Data.ForeignKeyConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
-16 (-0.89 % of base) : 99327.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-16 (-1.01 % of base) : 161165.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
-14 (-1.21 % of base) : 190750.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-12 (-0.24 % of base) : 122173.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-12 (-0.25 % of base) : 49667.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-12 (-1.03 % of base) : 80938.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
-12 (-4.14 % of base) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-12 (-2.17 % of base) : 161198.dasm - System.Data.RelatedView:Invoke(System.Data.DataRow,int):ubyte:this (FullOpts)
Top method regressions (percentages):
12 (5.22 % of base) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
10 (3.82 % of base) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
22 (3.67 % of base) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
50 (3.32 % of base) : 103492.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
30 (2.91 % of base) : 194501.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsSafeArray(System.String[],System.Object[],System.Reflection.Emit.MarshallingData) (FullOpts)
16 (2.86 % of base) : 98991.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
18 (2.45 % of base) : 159087.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
14 (1.83 % of base) : 99433.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
36 (1.47 % of base) : 103490.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
4 (1.29 % of base) : 171217.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteRectangleArray(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,int[],int[]):this (FullOpts)
20 (1.21 % of base) : 2594.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
20 (1.04 % of base) : 192173.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
12 (0.95 % of base) : 45961.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
4 (0.93 % of base) : 118051.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(int,int):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
4 (0.88 % of base) : 196210.dasm - System.Web.HttpUtility:ParseQueryString(System.String,System.Text.Encoding):System.Collections.Specialized.NameValueCollection (FullOpts)
10 (0.87 % of base) : 107286.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
24 (0.86 % of base) : 158938.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
8 (0.71 % of base) : 41470.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
2 (0.69 % of base) : 92584.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
8 (0.44 % of base) : 150648.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
Top method improvements (percentages):
-12 (-4.14 % of base) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-40 (-2.86 % of base) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
-44 (-2.46 % of base) : 79533.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
-38 (-2.18 % of base) : 103491.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-12 (-2.17 % of base) : 161198.dasm - System.Data.RelatedView:Invoke(System.Data.DataRow,int):ubyte:this (FullOpts)
-26 (-1.85 % of base) : 98724.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundConvertedTupleElements):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-10 (-1.57 % of base) : 171227.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
-30 (-1.52 % of base) : 164204.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
-24 (-1.33 % of base) : 151677.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-22 (-1.25 % of base) : 132855.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-14 (-1.21 % of base) : 190750.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-18 (-1.07 % of base) : 161171.dasm - System.Data.ForeignKeyConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
-12 (-1.03 % of base) : 80938.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
-16 (-1.01 % of base) : 161165.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
-6 (-0.97 % of base) : 142679.dasm - System.Diagnostics.Process:get_Threads():System.Diagnostics.ProcessThreadCollection:this (FullOpts)
-16 (-0.89 % of base) : 99327.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-20 (-0.88 % of base) : 65992.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ReducedExtensionMethodSymbol:InferExtensionMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol (FullOpts)
-20 (-0.86 % of base) : 171174.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)
-6 (-0.83 % of base) : 98280.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:AdjustCallForLiftedOperator_DoNotCallDirectly(Microsoft.CodeAnalysis.VisualBasic.BoundCall,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression: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: 49871588 (overridden on cmd)
Total bytes of diff: 49872010 (overridden on cmd)
Total bytes of delta: 422 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
160 : 118524.dasm (4.42 % of base)
108 : 119888.dasm (7.21 % of base)
68 : 214071.dasm (8.04 % of base)
68 : 211751.dasm (8.04 % of base)
64 : 62709.dasm (2.96 % of base)
58 : 189575.dasm (1.96 % of base)
56 : 148762.dasm (21.88 % of base)
56 : 148763.dasm (19.72 % of base)
50 : 55091.dasm (2.60 % of base)
44 : 189956.dasm (0.20 % of base)
40 : 117523.dasm (1.14 % of base)
38 : 114386.dasm (2.66 % of base)
34 : 147329.dasm (2.20 % of base)
28 : 141939.dasm (1.77 % of base)
28 : 237159.dasm (2.90 % of base)
26 : 113619.dasm (0.43 % of base)
26 : 119449.dasm (0.97 % of base)
22 : 90843.dasm (0.69 % of base)
22 : 244494.dasm (1.32 % of base)
22 : 139960.dasm (1.16 % of base)
Top file improvements (bytes):
-150 : 91201.dasm (-1.12 % of base)
-92 : 28212.dasm (-4.76 % of base)
-70 : 192244.dasm (-0.92 % of base)
-70 : 93797.dasm (-3.15 % of base)
-54 : 36715.dasm (-2.55 % of base)
-52 : 170334.dasm (-7.41 % of base)
-34 : 33588.dasm (-4.34 % of base)
-32 : 34986.dasm (-0.68 % of base)
-30 : 28266.dasm (-0.60 % of base)
-26 : 234639.dasm (-2.13 % of base)
-26 : 249077.dasm (-2.97 % of base)
-24 : 118522.dasm (-0.67 % of base)
-22 : 118523.dasm (-0.76 % of base)
-20 : 196586.dasm (-1.47 % of base)
-20 : 141905.dasm (-1.67 % of base)
-20 : 34762.dasm (-1.77 % of base)
-18 : 158795.dasm (-2.05 % of base)
-16 : 55991.dasm (-0.65 % of base)
-16 : 91045.dasm (-0.90 % of base)
-14 : 29040.dasm (-1.51 % of base)
57 total files with Code Size differences (28 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
160 (4.42 % of base) : 118524.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
108 (7.21 % of base) : 119888.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
68 (8.04 % of base) : 214071.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
68 (8.04 % of base) : 211751.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
64 (2.96 % of base) : 62709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
58 (1.96 % of base) : 189575.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
56 (21.88 % of base) : 148762.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
56 (19.72 % of base) : 148763.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
50 (2.60 % of base) : 55091.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
44 (0.20 % of base) : 189956.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
40 (1.14 % of base) : 117523.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
38 (2.66 % of base) : 114386.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
34 (2.20 % of base) : 147329.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
28 (2.90 % of base) : 237159.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
28 (1.77 % of base) : 141939.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
26 (0.97 % of base) : 119449.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
26 (0.43 % of base) : 113619.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateCallOrGet(Microsoft.CodeAnalysis.VisualBasic.BoundLateMemberAccess,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
22 (0.69 % of base) : 90843.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
22 (1.32 % of base) : 244494.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
22 (1.16 % of base) : 139960.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method improvements (bytes):
-150 (-1.12 % of base) : 91201.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
-92 (-4.76 % of base) : 28212.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-70 (-3.15 % of base) : 93797.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
-70 (-0.92 % of base) : 192244.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-54 (-2.55 % of base) : 36715.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-52 (-7.41 % of base) : 170334.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
-34 (-4.34 % of base) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-32 (-0.68 % of base) : 34986.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-30 (-0.60 % of base) : 28266.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-26 (-2.97 % of base) : 249077.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
-26 (-2.13 % of base) : 234639.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-24 (-0.67 % of base) : 118522.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-22 (-0.76 % of base) : 118523.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-20 (-1.77 % of base) : 34762.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
-20 (-1.47 % of base) : 196586.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)
-20 (-1.67 % of base) : 141905.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
-18 (-2.05 % of base) : 158795.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetDistance|11_2(System.String,System.String):int (FullOpts)
-16 (-0.65 % of base) : 55991.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
-16 (-0.90 % of base) : 91045.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-14 (-1.51 % of base) : 29040.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ApplyConvertedTypes(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method regressions (percentages):
56 (21.88 % of base) : 148762.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
56 (19.72 % of base) : 148763.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
6 (10.71 % of base) : 3166.dasm - System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
6 (9.68 % of base) : 3156.dasm - System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
68 (8.04 % of base) : 214071.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
68 (8.04 % of base) : 211751.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
108 (7.21 % of base) : 119888.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
20 (5.43 % of base) : 129495.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
160 (4.42 % of base) : 118524.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
14 (4.40 % of base) : 245736.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
16 (3.52 % of base) : 197955.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
64 (2.96 % of base) : 62709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
28 (2.90 % of base) : 237159.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
38 (2.66 % of base) : 114386.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
18 (2.64 % of base) : 189578.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
12 (2.62 % of base) : 113949.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
50 (2.60 % of base) : 55091.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
10 (2.29 % of base) : 190987.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (FullOpts)
34 (2.20 % of base) : 147329.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
12 (2.15 % of base) : 138363.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteEnumMethod(System.Xml.Serialization.EnumMapping,System.Object):System.String:this (FullOpts)
Top method improvements (percentages):
-6 (-9.68 % of base) : 3170.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.82 % of base) : 3160.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-52 (-7.41 % of base) : 170334.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
-92 (-4.76 % of base) : 28212.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-34 (-4.34 % of base) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-70 (-3.15 % of base) : 93797.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
-26 (-2.97 % of base) : 249077.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
-54 (-2.55 % of base) : 36715.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-26 (-2.13 % of base) : 234639.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-18 (-2.05 % of base) : 158795.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetDistance|11_2(System.String,System.String):int (FullOpts)
-20 (-1.77 % of base) : 34762.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
-4 (-1.69 % of base) : 234957.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-20 (-1.67 % of base) : 141905.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
-14 (-1.51 % of base) : 29040.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ApplyConvertedTypes(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-10 (-1.48 % of base) : 212706.dasm - System.Reflection.TypeLoading.Ecma.EcmaMethodBody:get_ExceptionHandlingClauses():System.Collections.Generic.IList`1[System.Reflection.ExceptionHandlingClause]:this (FullOpts)
-20 (-1.47 % of base) : 196586.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)
-12 (-1.46 % of base) : 234640.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-12 (-1.45 % of base) : 153735.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-150 (-1.12 % of base) : 91201.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
-4 (-1.05 % of base) : 244319.dasm - System.Data.XMLDiffLoader:LoadDiffGram(System.Data.DataSet,System.Xml.XmlReader):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: 17138182 (overridden on cmd)
Total bytes of diff: 17136308 (overridden on cmd)
Total bytes of delta: -1874 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 1279.dasm (4.30 % of base)
12 : 29169.dasm (0.54 % of base)
4 : 14032.dasm (3.51 % of base)
4 : 17012.dasm (3.51 % of base)
4 : 12252.dasm (3.51 % of base)
4 : 25692.dasm (3.51 % of base)
4 : 27424.dasm (3.51 % of base)
4 : 27964.dasm (3.51 % of base)
4 : 28244.dasm (3.51 % of base)
4 : 28340.dasm (3.51 % of base)
4 : 29036.dasm (3.51 % of base)
4 : 30127.dasm (3.51 % of base)
4 : 31671.dasm (3.51 % of base)
4 : 33363.dasm (3.51 % of base)
4 : 4144.dasm (3.51 % of base)
4 : 4700.dasm (3.51 % of base)
4 : 5356.dasm (3.51 % of base)
4 : 5504.dasm (3.51 % of base)
4 : 5812.dasm (3.51 % of base)
4 : 9564.dasm (3.51 % of base)
Top file improvements (bytes):
-70 : 2562.dasm (-0.93 % of base)
-24 : 9578.dasm (-4.46 % of base)
-20 : 11190.dasm (-3.70 % of base)
-20 : 12772.dasm (-3.70 % of base)
-20 : 10437.dasm (-3.70 % of base)
-20 : 17576.dasm (-3.70 % of base)
-20 : 11875.dasm (-3.70 % of base)
-20 : 13795.dasm (-3.70 % of base)
-20 : 21945.dasm (-3.70 % of base)
-20 : 24370.dasm (-3.70 % of base)
-20 : 27487.dasm (-3.70 % of base)
-20 : 29108.dasm (-3.70 % of base)
-20 : 29279.dasm (-3.70 % of base)
-20 : 4948.dasm (-3.70 % of base)
-20 : 5163.dasm (-3.70 % of base)
-20 : 5357.dasm (-3.70 % of base)
-20 : 6667.dasm (-3.70 % of base)
-18 : 5545.dasm (-3.41 % of base)
-18 : 6581.dasm (-3.41 % of base)
-18 : 7133.dasm (-3.41 % of base)
43 total files with Code Size differences (22 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
16 (4.30 % of base) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
12 (0.54 % of base) : 29169.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
4 (3.51 % of base) : 14032.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 17012.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 12252.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 25692.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 27424.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 27964.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 28244.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 30127.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 31671.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 33363.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 4144.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 4700.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5356.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5504.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5812.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 9564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
Top method improvements (bytes):
-70 (-0.93 % of base) : 2562.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (Tier0-FullOpts)
-24 (-4.46 % of base) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 11190.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 12772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 17576.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 11875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 13795.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 21945.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 24370.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 27487.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 29108.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 29279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 4948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 5163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 6667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 5545.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 6581.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 7133.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
Top method regressions (percentages):
16 (4.30 % of base) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (3.51 % of base) : 14032.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 17012.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 12252.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 25692.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 27424.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 27964.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 28244.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 30127.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 31671.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 33363.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 4144.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 4700.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5356.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5504.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 5812.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 9564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (3.51 % of base) : 11660.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-24 (-4.46 % of base) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 11190.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 12772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 17576.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 11875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 13795.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 21945.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 24370.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 27487.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 29108.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 29279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 4948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 5163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-3.70 % of base) : 6667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 5545.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 6581.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 7133.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-18 (-3.41 % of base) : 9277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):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: 93850820 (overridden on cmd)
Total bytes of diff: 93852186 (overridden on cmd)
Total bytes of delta: 1366 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
104 : 278622.dasm (3.61 % of base)
102 : 282989.dasm (5.88 % of base)
68 : 184934.dasm (8.04 % of base)
68 : 275460.dasm (4.66 % of base)
66 : 292599.dasm (5.23 % of base)
62 : 278814.dasm (4.53 % of base)
60 : 275554.dasm (3.99 % of base)
60 : 292265.dasm (4.46 % of base)
60 : 292695.dasm (5.31 % of base)
58 : 292683.dasm (3.39 % of base)
58 : 58518.dasm (1.99 % of base)
56 : 275451.dasm (3.84 % of base)
56 : 275452.dasm (3.84 % of base)
56 : 275555.dasm (2.86 % of base)
56 : 101742.dasm (19.72 % of base)
56 : 197519.dasm (21.88 % of base)
56 : 292255.dasm (2.40 % of base)
56 : 275440.dasm (3.84 % of base)
56 : 275442.dasm (3.84 % of base)
56 : 275446.dasm (3.84 % of base)
Top file improvements (bytes):
-90 : 56578.dasm (-4.70 % of base)
-86 : 120801.dasm (-1.61 % of base)
-80 : 282908.dasm (-1.73 % of base)
-78 : 5265.dasm (-7.88 % of base)
-76 : 273004.dasm (-4.74 % of base)
-70 : 24689.dasm (-0.92 % of base)
-62 : 275579.dasm (-4.34 % of base)
-62 : 282716.dasm (-5.51 % of base)
-58 : 270244.dasm (-2.73 % of base)
-56 : 273003.dasm (-3.50 % of base)
-52 : 194615.dasm (-7.41 % of base)
-52 : 59754.dasm (-0.23 % of base)
-50 : 275583.dasm (-1.81 % of base)
-48 : 275419.dasm (-1.86 % of base)
-42 : 54544.dasm (-0.83 % of base)
-38 : 275392.dasm (-2.91 % of base)
-38 : 276924.dasm (-1.93 % of base)
-34 : 23961.dasm (-4.34 % of base)
-34 : 50473.dasm (-0.66 % of base)
-32 : 5268.dasm (-0.84 % of base)
62 total files with Code Size differences (30 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
104 (3.61 % of base) : 278622.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1548_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
102 (5.88 % of base) : 282989.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29170_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
68 (8.04 % of base) : 184934.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
68 (4.66 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
66 (5.23 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (4.53 % of base) : 278814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (4.46 % of base) : 292265.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (5.31 % of base) : 292695.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33036_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (3.99 % of base) : 275554.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex947_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
58 (1.99 % of base) : 58518.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
58 (3.39 % of base) : 292683.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33019_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (21.88 % of base) : 197519.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
56 (19.72 % of base) : 101742.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
56 (2.40 % of base) : 292255.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31439_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275440.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex861_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275442.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex862_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275446.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex864_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275448.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex865_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275451.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex866_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.84 % of base) : 275452.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex867_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-90 (-4.70 % of base) : 56578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-86 (-1.61 % of base) : 120801.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-80 (-1.73 % of base) : 282908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29113_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-78 (-7.88 % of base) : 5265.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-76 (-4.74 % of base) : 273004.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex433_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-70 (-0.92 % of base) : 24689.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-62 (-4.34 % of base) : 275579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1107_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-62 (-5.51 % of base) : 282716.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28820_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-2.73 % of base) : 270244.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-56 (-3.50 % of base) : 273003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex432_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-0.23 % of base) : 59754.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-52 (-7.41 % of base) : 194615.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
-50 (-1.81 % of base) : 275583.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1120_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-48 (-1.86 % of base) : 275419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex836_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-42 (-0.83 % of base) : 54544.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-38 (-1.93 % of base) : 276924.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1334_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-38 (-2.91 % of base) : 275392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-34 (-4.34 % of base) : 23961.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-34 (-0.66 % of base) : 50473.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-32 (-0.84 % of base) : 5268.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
Top method regressions (percentages):
56 (21.88 % of base) : 197519.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
56 (19.72 % of base) : 101742.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
12 (12.50 % of base) : 143672.dasm - System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
6 (10.71 % of base) : 142731.dasm - System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
6 (10.71 % of base) : 145297.dasm - System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
10 (9.80 % of base) : 143670.dasm - System.SpanHelpers:IndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
6 (9.68 % of base) : 142728.dasm - System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
6 (9.68 % of base) : 145292.dasm - System.SpanHelpers:IndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
68 (8.04 % of base) : 184934.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
102 (5.88 % of base) : 282989.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29170_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (5.43 % of base) : 91195.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
60 (5.31 % of base) : 292695.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33036_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
66 (5.23 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (4.89 % of base) : 305724.dasm - System.Transactions.Tests.LTMEnlistmentTests:SinglePhaseDurable(int,int,int,int,ubyte,int,int):this (FullOpts)
68 (4.66 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (4.53 % of base) : 278814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (4.46 % of base) : 292265.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
14 (4.40 % of base) : 90534.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
46 (4.22 % of base) : 292574.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32649_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (4.14 % of base) : 60426.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:UnpackArguments(System.Dynamic.DynamicMetaObject[],System.Dynamic.CallInfo,byref,byref,byref) (FullOpts)
Top method improvements (percentages):
-14 (-12.73 % of base) : 143677.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
-6 (-9.68 % of base) : 142735.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-9.68 % of base) : 145301.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
-10 (-8.93 % of base) : 143675.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
-6 (-8.82 % of base) : 142733.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.82 % of base) : 145299.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
-78 (-7.88 % of base) : 5265.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-52 (-7.41 % of base) : 194615.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
-62 (-5.51 % of base) : 282716.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28820_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-76 (-4.74 % of base) : 273004.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex433_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-90 (-4.70 % of base) : 56578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-34 (-4.34 % of base) : 23961.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-62 (-4.34 % of base) : 275579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1107_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-3.50 % of base) : 273003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex432_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-3.34 % of base) : 76015.dasm - System.Linq.OrderedEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray(int,int):System.ValueTuple`2[System.__Canon,System.__Canon][]:this (FullOpts)
-26 (-2.97 % of base) : 96213.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
-38 (-2.91 % of base) : 275392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-2.73 % of base) : 270244.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-16 (-2.05 % of base) : 145972.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerMany_Byte() (FullOpts)
-16 (-2.03 % of base) : 145514.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerIndexOfAny_ManyInteger() (FullOpts)
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13596898 (overridden on cmd)
Total bytes of diff: 13596682 (overridden on cmd)
Total bytes of delta: -216 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
102 : 25398.dasm (2.24 % of base)
62 : 23405.dasm (7.18 % of base)
54 : 13198.dasm (8.46 % of base)
50 : 33564.dasm (2.63 % of base)
44 : 3929.dasm (0.51 % of base)
28 : 21321.dasm (3.27 % of base)
20 : 6037.dasm (2.64 % of base)
20 : 32802.dasm (0.66 % of base)
20 : 7002.dasm (2.82 % of base)
18 : 18649.dasm (4.15 % of base)
12 : 24674.dasm (0.51 % of base)
8 : 26327.dasm (1.50 % of base)
8 : 18573.dasm (0.57 % of base)
6 : 19034.dasm (0.70 % of base)
6 : 18169.dasm (0.23 % of base)
6 : 24846.dasm (0.24 % of base)
6 : 31629.dasm (0.32 % of base)
6 : 31842.dasm (0.89 % of base)
4 : 16840.dasm (0.37 % of base)
4 : 37582.dasm (0.87 % of base)
Top file improvements (bytes):
-174 : 6831.dasm (-0.20 % of base)
-96 : 11910.dasm (-2.15 % of base)
-90 : 30055.dasm (-4.70 % of base)
-78 : 23053.dasm (-7.88 % of base)
-32 : 24275.dasm (-0.69 % of base)
-32 : 23054.dasm (-0.84 % of base)
-26 : 30294.dasm (-0.58 % of base)
-24 : 34381.dasm (-2.80 % of base)
-24 : 34384.dasm (-2.80 % of base)
-24 : 34385.dasm (-2.80 % of base)
-18 : 27144.dasm (-1.25 % of base)
-14 : 34331.dasm (-0.37 % of base)
-12 : 37591.dasm (-1.46 % of base)
-12 : 23099.dasm (-0.66 % of base)
-10 : 16521.dasm (-0.80 % of base)
-8 : 27165.dasm (-0.19 % of base)
-6 : 2706.dasm (-1.59 % of base)
-6 : 29087.dasm (-0.21 % of base)
-6 : 24256.dasm (-0.39 % of base)
-4 : 731.dasm (-1.06 % of base)
45 total files with Code Size differences (24 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
102 (2.24 % of base) : 25398.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
62 (7.18 % of base) : 23405.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
54 (8.46 % of base) : 13198.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
50 (2.63 % of base) : 33564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
44 (0.51 % of base) : 3929.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
28 (3.27 % of base) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
20 (2.64 % of base) : 6037.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
20 (2.82 % of base) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
20 (0.66 % of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
18 (4.15 % of base) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
12 (0.51 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
8 (1.50 % of base) : 26327.dasm - Microsoft.CodeAnalysis.CSharp.Binder:RemoveInvalidConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax],ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause (FullOpts)
8 (0.57 % of base) : 18573.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
6 (0.32 % of base) : 31629.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
6 (0.89 % of base) : 31842.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
6 (0.24 % of base) : 24846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
6 (0.23 % of base) : 18169.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
6 (0.70 % of base) : 19034.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
4 (0.50 % of base) : 18629.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
4 (0.37 % of base) : 16840.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
Top method improvements (bytes):
-174 (-0.20 % of base) : 6831.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-96 (-2.15 % of base) : 11910.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
-90 (-4.70 % of base) : 30055.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-78 (-7.88 % of base) : 23053.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-32 (-0.84 % of base) : 23054.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-32 (-0.69 % of base) : 24275.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-26 (-0.58 % of base) : 30294.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-24 (-2.80 % of base) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-2.80 % of base) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-2.80 % of base) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-18 (-1.25 % of base) : 27144.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInExpandedForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (FullOpts)
-14 (-0.37 % of base) : 34331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.66 % of base) : 23099.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
-12 (-1.46 % of base) : 37591.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-10 (-0.80 % of base) : 16521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-8 (-0.19 % of base) : 27165.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-6 (-0.21 % of base) : 29087.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-6 (-0.39 % of base) : 24256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
-6 (-1.59 % of base) : 2706.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-4 (-0.14 % of base) : 32025.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
Top method regressions (percentages):
54 (8.46 % of base) : 13198.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
62 (7.18 % of base) : 23405.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
18 (4.15 % of base) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
28 (3.27 % of base) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
20 (2.82 % of base) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
20 (2.64 % of base) : 6037.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
50 (2.63 % of base) : 33564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
102 (2.24 % of base) : 25398.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
8 (1.50 % of base) : 26327.dasm - Microsoft.CodeAnalysis.CSharp.Binder:RemoveInvalidConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax],ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause (FullOpts)
6 (0.89 % of base) : 31842.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
4 (0.87 % of base) : 37582.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
6 (0.70 % of base) : 19034.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
20 (0.66 % of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
8 (0.57 % of base) : 18573.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
12 (0.51 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
44 (0.51 % of base) : 3929.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
4 (0.50 % of base) : 18629.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
4 (0.37 % of base) : 16840.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
6 (0.32 % of base) : 31629.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
6 (0.24 % of base) : 24846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
Top method improvements (percentages):
-78 (-7.88 % of base) : 23053.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-90 (-4.70 % of base) : 30055.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-24 (-2.80 % of base) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-2.80 % of base) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-2.80 % of base) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-96 (-2.15 % of base) : 11910.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
-6 (-1.59 % of base) : 2706.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-12 (-1.46 % of base) : 37591.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-18 (-1.25 % of base) : 27144.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInExpandedForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (FullOpts)
-4 (-1.06 % of base) : 731.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
-32 (-0.84 % of base) : 23054.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-10 (-0.80 % of base) : 16521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-32 (-0.69 % of base) : 24275.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-12 (-0.66 % of base) : 23099.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
-26 (-0.58 % of base) : 30294.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-6 (-0.39 % of base) : 24256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
-14 (-0.37 % of base) : 34331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.28 % of base) : 8693.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
-2 (-0.28 % of base) : 3223.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-2 (-0.27 % of base) : 8668.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
windows x86
Diffs are based on 1,618,548 contexts (327,626 MinOpts, 1,290,922 FullOpts).
MISSED contexts: base: 11,019 (0.68%), diff: 11,173 (0.69%)
Overall (+13,886 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
11,103,861 |
+238 |
benchmarks.run_pgo.windows.x86.checked.mch |
31,808,217 |
+711 |
benchmarks.run_tiered.windows.x86.checked.mch |
13,978,666 |
+134 |
coreclr_tests.run.windows.x86.checked.mch |
215,097,885 |
+9,143 |
libraries.crossgen2.windows.x86.checked.mch |
35,715,688 |
+716 |
libraries.pmi.windows.x86.checked.mch |
50,205,777 |
+942 |
libraries_tests.run.windows.x86.Release.mch |
14,786,707 |
+442 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
107,805,173 |
+1,341 |
realworld.run.windows.x86.checked.mch |
11,475,105 |
+219 |
FullOpts (+13,886 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
11,103,383 |
+238 |
benchmarks.run_pgo.windows.x86.checked.mch |
25,686,269 |
+711 |
benchmarks.run_tiered.windows.x86.checked.mch |
7,124,029 |
+134 |
coreclr_tests.run.windows.x86.checked.mch |
92,836,861 |
+9,143 |
libraries.crossgen2.windows.x86.checked.mch |
35,714,628 |
+716 |
libraries.pmi.windows.x86.checked.mch |
50,110,544 |
+942 |
libraries_tests.run.windows.x86.Release.mch |
9,296,512 |
+442 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
98,852,400 |
+1,341 |
realworld.run.windows.x86.checked.mch |
11,179,391 |
+219 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-17 (-4.75%) : 24521.dasm - ProtoBuf.Internal.DynamicStub:g_ResolveProxies|91(System.Type):System.Type (FullOpts)
@@ -8,38 +8,38 @@
; 0 inlinees with PGO data; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 8, 5.50) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T04] ( 8, 7.25) ref -> esi class-hnd single-def <System.Type>
; V01 loc0 [V01,T12] ( 3, 1.50) ref -> eax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 loc2 [V03,T08] ( 3, 5 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 loc2 [V03,T09] ( 3, 5 ) ref -> [ebp-0x1C] class-hnd single-def <<unknown class>>
; V04 loc3 [V04,T03] ( 5, 16.50) int -> [ebp-0x10]
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
-; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x1C] class-hnd exact <System.String>
+; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x20] class-hnd exact <System.String>
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp1 [V08,T04] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V08 tmp1 [V08,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V14 tmp7 [V14,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V14 tmp7 [V14,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V20 tmp13 [V20,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V20 tmp13 [V20,T07] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp18 [V25,T11] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V25 tmp18 [V25,T08] ( 2, 5.50) ref -> eax single-def "Single return block return value"
; V26 tmp19 [V26,T01] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V27 cse0 [V27,T02] ( 9, 18 ) int -> edi multi-def "CSE - aggressive"
-; V28 cse1 [V28,T09] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate"
-; V29 cse2 [V29,T10] ( 5, 2.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V27 cse0 [V27,T02] ( 9, 18 ) int -> registers multi-def "CSE - aggressive"
+; V28 cse1 [V28,T10] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate"
+; V29 cse2 [V29,T11] ( 5, 4.25) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -47,7 +47,7 @@ G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -82,14 +82,14 @@ G_M1535_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000
test eax, eax
je SHORT G_M1535_IG05
;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M1535_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M1535_IG04: ; bbWeight=2.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [edi+0x58]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx esi] +[eax]
- jmp G_M1535_IG19
- ;; size=13 bbWeight=0.50 PerfScore 3.62
+ jmp G_M1535_IG17
+ ;; size=13 bbWeight=2.25 PerfScore 16.31
G_M1535_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
@@ -117,22 +117,25 @@ G_M1535_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
mov edi, eax
; gcrRegs +[edi]
cmp edi, 0xD1FFAB1E
- je G_M1535_IG18
+ je G_M1535_IG16
;; size=29 bbWeight=4 PerfScore 46.00
G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov gword ptr [ebp-0x1C], ebx
+ ; GC ptr vars +{V03}
mov ecx, edi
; gcrRegs +[ecx]
mov edi, dword ptr [ebp-0x18]
; gcrRegs -[edi]
test ecx, ecx
je SHORT G_M1535_IG08
- mov edi, dword ptr [ecx+0x04]
- cmp edi, 33
- jne G_M1535_IG17
- add edi, edi
- push edi
- mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ebx]
+ cmp ebx, 33
+ jne SHORT G_M1535_IG08
+ add ebx, ebx
+ push ebx
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06}
add ecx, 8
; gcrRegs -[ecx]
@@ -142,25 +145,24 @@ G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne SHORT G_M1535_IG04
- ;; size=51 bbWeight=2 PerfScore 29.50
-G_M1535_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=2 PerfScore 29.50
+G_M1535_IG08: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
cmp ecx, 0xD1FFAB1E
je SHORT G_M1535_IG04
;; size=8 bbWeight=4 PerfScore 5.00
-G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG09: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
je SHORT G_M1535_IG10
- mov edi, dword ptr [ecx+0x04]
- cmp edi, 36
- jne SHORT G_M1535_IG16
- add edi, edi
- push edi
- mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04]
+ cmp ebx, 36
+ jne SHORT G_M1535_IG10
+ add ebx, ebx
+ push ebx
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06}
add ecx, 8
; gcrRegs -[ecx]
@@ -170,17 +172,18 @@ G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=46 bbWeight=2 PerfScore 27.00
-G_M1535_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=43 bbWeight=2 PerfScore 25.00
+G_M1535_IG10: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V06}
cmp ecx, 0xD1FFAB1E
je G_M1535_IG04
;; size=12 bbWeight=4 PerfScore 5.00
-G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG11: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
test ecx, ecx
je SHORT G_M1535_IG12
mov edi, dword ptr [ecx+0x04]
@@ -193,12 +196,13 @@ G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0
; byrRegs +[ecx]
mov edx, 0xD1FFAB1E
; byrRegs +[edx]
+ ; GC ptr vars -{V03}
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=43 bbWeight=2 PerfScore 25.00
G_M1535_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x10]
inc eax
@@ -225,21 +229,12 @@ G_M1535_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000048 {ebx e
mov edi, dword ptr [ebp-0x18]
jmp SHORT G_M1535_IG12
;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG16: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
- jmp SHORT G_M1535_IG10
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG17: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
- mov edi, dword ptr [ebp-0x18]
- jmp G_M1535_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M1535_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx ebx]
+G_M1535_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
mov edi, dword ptr [ebp-0x18]
jmp G_M1535_IG04
;; size=8 bbWeight=2 PerfScore 6.00
-G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M1535_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] +[eax]
lea esp, [ebp-0x0C]
pop ebx
@@ -249,6 +244,6 @@ G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 358, prolog size 9, PerfScore 197.62, instruction count 124, allocated bytes for code 358 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
+; Total bytes of code 341, prolog size 9, PerfScore 204.31, instruction count 120, allocated bytes for code 341 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
; ============================================================
-7 (-2.37%) : 8561.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
@@ -7,22 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
-; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10]
-; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
+; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10]
+; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def
-; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
-; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect"
-; TEMP_02 int -> [ebp-0x1C]
-; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def
+; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>>
+; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr"
+; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect"
+; TEMP_02 int -> [ebp-0x18]
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov gword ptr [ebp-0x14], ecx
- ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [ebp+0x0C]
mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75
-G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75
+G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx]
test ebx, ebx
jne SHORT G_M57627_IG05
;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A3D75]
cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx
shl eax, 7
- mov dword ptr [ebp-0x20], eax
- movzx eax, dword ptr [ebp-0x1C]
- xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax
+ movzx eax, dword ptr [ebp-0x18]
+ xor eax, dword ptr [ebp-0x1C]
add edx, eax
mov dword ptr [ebp+0x08], ebx
lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01]
- cmp ecx, eax
- jge SHORT G_M57627_IG10
- ;; size=56 bbWeight=0.50 PerfScore 8.38
-G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, ecx
- or ebx, eax
- jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01]
+ cmp ebx, eax
+ jge SHORT G_M57627_IG11
+ ;; size=59 bbWeight=0.50 PerfScore 8.88
+G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, ebx
+ or edi, eax
+ jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax
jl SHORT G_M57627_IG09
;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov eax, edx
+ shl eax, 7
+ xor eax, edi
+ add edx, eax
+ inc ebx
+ mov eax, dword ptr [ebp-0x14]
+ cmp ebx, eax
+ jl SHORT G_M57627_IG07
+ ;; size=22 bbWeight=3.96 PerfScore 22.77
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57627_IG11
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x14]
+ ;; size=3 bbWeight=0.12 PerfScore 0.12
+G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04]
+ jae G_M57627_IG19
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov dword ptr [ebp-0x1C], edi
mov edi, edx
shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi
+ movzx edi, dword ptr [ebp-0x1C]
+ xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG07
- ;; size=19 bbWeight=3.96 PerfScore 18.81
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M57627_IG18
- movzx ebx, word ptr [esi+2*ecx+0x08]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, edx
- shl ebx, 7
- mov dword ptr [ebp-0x1C], ebx
- movzx ebx, dword ptr [ebp-0x20]
- xor ebx, dword ptr [ebp-0x1C]
- add edx, ebx
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG09
+ inc ebx
+ cmp ebx, eax
+ jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- sar ecx, 17
- sub edx, ecx
- mov ecx, edx
- sar ecx, 11
- sub edx, ecx
- mov ecx, edx
- sar ecx, 5
- sub edx, ecx
- mov ecx, gword ptr [ebp-0x14]
- ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, edx
+ sar eax, 17
+ sub edx, eax
+ mov eax, edx
+ sar eax, 11
+ sub edx, eax
+ mov eax, edx
+ sar eax, 5
+ sub edx, eax
mov eax, edx
and eax, dword ptr [ecx+0x0C]
mov ecx, gword ptr [ecx+0x04]
cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18
- mov eax, gword ptr [ecx+4*eax+0x08]
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M57627_IG14
- ;; size=45 bbWeight=0.50 PerfScore 8.25
-G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19
+ mov ebx, gword ptr [ecx+4*eax+0x08]
+ ; gcrRegs +[ebx]
+ test ebx, ebx
+ je SHORT G_M57627_IG15
+ ;; size=42 bbWeight=1.98 PerfScore 30.69
+G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx
- jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx
+ jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V09}
- mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
mov edi, dword ptr [ebp+0x0C]
push edi
- mov ebx, dword ptr [ebp+0x08]
- push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi
; gcrRegs +[edx]
call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jne SHORT G_M57627_IG16
- ;; size=35 bbWeight=2 PerfScore 29.00
-G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V09}
- mov eax, gword ptr [eax+0x08]
- test eax, eax
+ jne SHORT G_M57627_IG17
+ ;; size=25 bbWeight=2 PerfScore 21.00
+G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebx+0x08]
+ test ebx, ebx
...
-7 (-2.37%) : 17971.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
@@ -7,22 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
-; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10]
-; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
+; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10]
+; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def
-; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
-; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect"
-; TEMP_02 int -> [ebp-0x1C]
-; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def
+; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>>
+; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr"
+; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect"
+; TEMP_02 int -> [ebp-0x18]
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov gword ptr [ebp-0x14], ecx
- ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [ebp+0x0C]
mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75
-G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75
+G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx]
test ebx, ebx
jne SHORT G_M57627_IG05
;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000AAD27]
cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx
shl eax, 7
- mov dword ptr [ebp-0x20], eax
- movzx eax, dword ptr [ebp-0x1C]
- xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax
+ movzx eax, dword ptr [ebp-0x18]
+ xor eax, dword ptr [ebp-0x1C]
add edx, eax
mov dword ptr [ebp+0x08], ebx
lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01]
- cmp ecx, eax
- jge SHORT G_M57627_IG10
- ;; size=56 bbWeight=0.50 PerfScore 8.38
-G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, ecx
- or ebx, eax
- jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01]
+ cmp ebx, eax
+ jge SHORT G_M57627_IG11
+ ;; size=59 bbWeight=0.50 PerfScore 8.88
+G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, ebx
+ or edi, eax
+ jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax
jl SHORT G_M57627_IG09
;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov eax, edx
+ shl eax, 7
+ xor eax, edi
+ add edx, eax
+ inc ebx
+ mov eax, dword ptr [ebp-0x14]
+ cmp ebx, eax
+ jl SHORT G_M57627_IG07
+ ;; size=22 bbWeight=3.96 PerfScore 22.77
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57627_IG11
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x14]
+ ;; size=3 bbWeight=0.12 PerfScore 0.12
+G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04]
+ jae G_M57627_IG19
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov dword ptr [ebp-0x1C], edi
mov edi, edx
shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi
+ movzx edi, dword ptr [ebp-0x1C]
+ xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG07
- ;; size=19 bbWeight=3.96 PerfScore 18.81
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M57627_IG18
- movzx ebx, word ptr [esi+2*ecx+0x08]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, edx
- shl ebx, 7
- mov dword ptr [ebp-0x1C], ebx
- movzx ebx, dword ptr [ebp-0x20]
- xor ebx, dword ptr [ebp-0x1C]
- add edx, ebx
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG09
+ inc ebx
+ cmp ebx, eax
+ jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- sar ecx, 17
- sub edx, ecx
- mov ecx, edx
- sar ecx, 11
- sub edx, ecx
- mov ecx, edx
- sar ecx, 5
- sub edx, ecx
- mov ecx, gword ptr [ebp-0x14]
- ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, edx
+ sar eax, 17
+ sub edx, eax
+ mov eax, edx
+ sar eax, 11
+ sub edx, eax
+ mov eax, edx
+ sar eax, 5
+ sub edx, eax
mov eax, edx
and eax, dword ptr [ecx+0x0C]
mov ecx, gword ptr [ecx+0x04]
cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18
- mov eax, gword ptr [ecx+4*eax+0x08]
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M57627_IG14
- ;; size=45 bbWeight=0.50 PerfScore 8.25
-G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19
+ mov ebx, gword ptr [ecx+4*eax+0x08]
+ ; gcrRegs +[ebx]
+ test ebx, ebx
+ je SHORT G_M57627_IG15
+ ;; size=42 bbWeight=1.98 PerfScore 30.69
+G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx
- jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx
+ jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V09}
- mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
mov edi, dword ptr [ebp+0x0C]
push edi
- mov ebx, dword ptr [ebp+0x08]
- push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi
; gcrRegs +[edx]
call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jne SHORT G_M57627_IG16
- ;; size=35 bbWeight=2 PerfScore 29.00
-G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V09}
- mov eax, gword ptr [eax+0x08]
- test eax, eax
+ jne SHORT G_M57627_IG17
+ ;; size=25 bbWeight=2 PerfScore 21.00
+G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebx+0x08]
+ test ebx, ebx
...
+15 (+6.94%) : 21792.dasm - Sigil.Impl.LinqAlternative:_Orderint,int:System.Collections.Generic.IEnumerable`1int
@@ -9,16 +9,16 @@
;
; V00 arg0 [V00,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
; V01 arg1 [V01,T04] ( 6, 10 ) ref -> esi class-hnd single-def <Sigil.Impl.SigilFunc`2[int,int]>
-; V02 arg2 [V02,T09] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]>
-; V03 loc0 [V03,T05] ( 6, 7.50) ref -> edi class-hnd single-def <int[]>
-; V04 loc1 [V04,T03] ( 11, 14 ) int -> ebx single-def
-; V05 loc2 [V05,T06] ( 6, 6.54) ref -> [ebp-0x14] class-hnd exact spill-single-def <int[]>
-; V06 loc3 [V06,T07] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]>
-; V07 loc4 [V07,T00] ( 12, 21.04) int -> edx
-; V08 loc5 [V08,T01] ( 12, 21.04) int -> [ebp-0x10]
+; V02 arg2 [V02,T09] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]>
+; V03 loc0 [V03,T06] ( 6, 8.48) ref -> ebx class-hnd single-def <int[]>
+; V04 loc1 [V04,T03] ( 11, 15.96) int -> [ebp-0x10] spill-single-def
+; V05 loc2 [V05,T07] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]>
+; V06 loc3 [V06,T05] ( 6, 8.50) ref -> [ebp-0x1C] class-hnd exact spill-single-def <int[]>
+; V07 loc4 [V07,T01] ( 12, 21.04) int -> edx
+; V08 loc5 [V08,T00] ( 12, 22.02) int -> [ebp-0x14]
; V09 tmp0 [V09,T02] ( 4, 16 ) int -> eax "Strict ordering of exceptions for Array store"
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -26,7 +26,7 @@ G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -34,149 +34,155 @@ G_M31788_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
; gcrRegs +[ecx]
call [Sigil.Impl.LinqAlternative:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]]
; gcrRegs -[ecx] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- mov ebx, dword ptr [edi+0x04]
- mov edx, ebx
- mov ecx, 0xD1FFAB1E ; int[]
- call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V05}
- xor edx, edx
- test ebx, ebx
- jle SHORT G_M31788_IG06
- ;; size=32 bbWeight=1 PerfScore 9.25
-G_M31788_IG03: ; bbWeight=0.50, gcVars=00000040 {V05}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M31788_IG07
- ;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [eax+4*edx+0x08], edx
- inc edx
- cmp edx, ebx
- jl SHORT G_M31788_IG04
- ;; size=9 bbWeight=3.96 PerfScore 9.90
-G_M31788_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M31788_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M31788_IG08
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, dword ptr [eax+0x04]
- jae G_M31788_IG18
- mov dword ptr [eax+4*edx+0x08], edx
- inc edx
- cmp edx, ebx
- jl SHORT G_M31788_IG12
- ;; size=18 bbWeight=0.04 PerfScore 0.26
-G_M31788_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ mov eax, dword ptr [ebx+0x04]
; gcrRegs -[eax]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ mov edx, eax
mov ecx, 0xD1FFAB1E ; int[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V05}
+ xor edx, edx
+ mov ecx, dword ptr [ebp-0x10]
+ test ecx, ecx
+ jle SHORT G_M31788_IG06
+ ;; size=38 bbWeight=1 PerfScore 11.25
+G_M31788_IG03: ; bbWeight=0.50, gcVars=00000080 {V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp dword ptr [eax+0x04], ecx
+ jl SHORT G_M31788_IG07
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [eax+4*edx+0x08], edx
+ inc edx
+ cmp edx, ecx
+ jl SHORT G_M31788_IG04
+ ;; size=9 bbWeight=3.96 PerfScore 9.90
+G_M31788_IG05: ; bbWeight=1.98, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M31788_IG08
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M31788_IG08
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, dword ptr [eax+0x04]
+ jae G_M31788_IG18
+ mov dword ptr [eax+4*edx+0x08], edx
+ inc edx
+ cmp edx, ecx
+ jl SHORT G_M31788_IG12
+ ;; size=18 bbWeight=0.04 PerfScore 0.26
+G_M31788_IG08: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ecx
+ mov ecx, 0xD1FFAB1E ; int[]
+ call CORINFO_HELP_NEWARR_1_VC
+ ; gcrRegs +[eax]
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V06}
xor ecx, ecx
- test ebx, ebx
+ mov edx, dword ptr [ebp-0x10]
+ test edx, edx
jle SHORT G_M31788_IG15
- ;; size=21 bbWeight=1 PerfScore 4.00
-G_M31788_IG09: ; bbWeight=0.50, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov edx, dword ptr [edi+0x04]
- cmp dword ptr [eax+0x04], ebx
+ ;; size=24 bbWeight=1.98 PerfScore 9.90
+G_M31788_IG09: ; bbWeight=0.50, gcVars=000000A0 {V05 V06}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, dword ptr [ebx+0x04]
+ cmp dword ptr [eax+0x04], edx
jl SHORT G_M31788_IG13
;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], ecx
- mov edx, dword ptr [edi+4*ecx+0x08]
+ mov dword ptr [ebp-0x14], ecx
+ mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
call [esi+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x10]
- mov dword ptr [ecx+4*edx+0x08], eax
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ mov edx, dword ptr [ebp-0x14]
+ mov dword ptr [edi+4*edx+0x08], eax
inc edx
- cmp edx, ebx
+ cmp edx, dword ptr [ebp-0x10]
mov ecx, edx
- ; gcrRegs -[ecx]
jl SHORT G_M31788_IG10
- ;; size=30 bbWeight=3.96 PerfScore 50.49
-G_M31788_IG11: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x18]
+ ;; size=31 bbWeight=3.96 PerfScore 57.42
+G_M31788_IG11: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi edi]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax]
jmp SHORT G_M31788_IG15
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M31788_IG12: ; bbWeight=0.02, gcVars=00000040 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M31788_IG12: ; bbWeight=0.02, gcVars=00000080 {V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
- ; GC ptr vars -{V06}
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V05 V06}
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
jmp SHORT G_M31788_IG07
;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M31788_IG13: ; bbWeight=0.04, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M31788_IG13: ; bbWeight=0.04, gcVars=000000A0 {V05 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars +{V06 V07}
- mov dword ptr [ebp-0x10], ecx
- mov edx, dword ptr [edi+4*ecx+0x08]
+ ; GC ptr vars +{V05 V06}
+ mov dword ptr [ebp-0x14], ecx
+ mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
call [esi+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
+ mov edi, dword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
+ cmp edi, dword ptr [edx+0x04]
jae SHORT G_M31788_IG18
- mov dword ptr [edx+4*ecx+0x08], eax
- inc ecx
- cmp ecx, ebx
+ mov dword ptr [edx+4*edi+0x08], eax
+ inc edi
+ mov eax, dword ptr [ebp-0x10]
+ cmp edi, eax
+ mov ecx, edi
jl SHORT G_M31788_IG17
- ;; size=33 bbWeight=0.04 PerfScore 0.66
-G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref
+ ;; size=38 bbWeight=0.04 PerfScore 0.71
+G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M31788_IG15: ; bbWeight=1, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M31788_IG15: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
push eax
; gcr arg push 0
push gword ptr [ebp+0x08]
; gcr arg push 1
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- ; GC ptr vars -{V05 V06 V07}
+ ; GC ptr vars -{V05 V06}
call [Sigil.Impl.LinqAlternative:_QuickSort[int,int](int[],int[],int[],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int]]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 2
- ;; size=15 bbWeight=1 PerfScore 6.25
-G_M31788_IG16: ; bbWeight=1, epilog, nogc, extend
+ ;; size=15 bbWeight=1.98 PerfScore 12.38
+G_M31788_IG16: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
...
+27 (+8.79%) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75
G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG10
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG11
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG22
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG16
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG28
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG27
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG24
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG23
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG23
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG22
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
...
+27 (+8.79%) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75
G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG10
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG11
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG22
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG16
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG28
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG27
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG24
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG23
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG23
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG22
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
...
benchmarks.run_pgo.windows.x86.checked.mch
-28 (-4.43%) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
@@ -205,7 +205,7 @@ G_M8635_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {es
mov edi, eax
; gcrRegs +[edi]
test edi, edi
- je G_M8635_IG24
+ je G_M8635_IG26
xor ebx, ebx
; gcrRegs +[ebx]
mov ecx, dword ptr [esi+0x10]
@@ -216,21 +216,21 @@ G_M8635_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000
; gcrRegs -[eax]
inc dword ptr [esi+0x10]
;; size=3 bbWeight=4 PerfScore 12.00
-G_M8635_IG04: ; bbWeight=8, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG04: ; bbWeight=8, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, dword ptr [esi+0x10]
cmp ecx, dword ptr [esi+0x24]
- jge G_M8635_IG18
- ;; size=12 bbWeight=8 PerfScore 48.00
+ jge SHORT G_M8635_IG07
+ ;; size=8 bbWeight=8 PerfScore 48.00
G_M8635_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, dword ptr [esi+0x10]
lea eax, bword ptr [esi+0x20]
; byrRegs +[eax]
cmp ecx, dword ptr [eax+0x04]
- jae G_M8635_IG28
+ jae G_M8635_IG24
mov eax, bword ptr [eax]
movzx ecx, word ptr [eax+2*ecx]
cmp ecx, 256
- jb G_M8635_IG17
+ jb SHORT G_M8635_IG06
mov eax, ecx
; byrRegs -[eax]
shr eax, 9
@@ -245,29 +245,68 @@ G_M8635_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000
movzx ecx, byte ptr [eax+ecx+D1FFAB1EH]
cmp byte ptr [ecx+D1FFAB1EH], 0
jl SHORT G_M8635_IG03
- jmp G_M8635_IG18
- ;; size=92 bbWeight=1 PerfScore 26.75
-G_M8635_IG06: ; bbWeight=3.76, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ jmp SHORT G_M8635_IG07
+ ;; size=85 bbWeight=1 PerfScore 26.75
+G_M8635_IG06: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ jne SHORT G_M8635_IG03
+ ;; size=9 bbWeight=1 PerfScore 4.00
+G_M8635_IG07: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ mov ecx, dword ptr [esi+0x10]
+ cmp ecx, dword ptr [esi+0x24]
+ jge SHORT G_M8635_IG12
+ ;; size=8 bbWeight=1 PerfScore 6.00
+G_M8635_IG08: ; bbWeight=0.65, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ mov ecx, dword ptr [esi+0x10]
+ lea eax, bword ptr [esi+0x20]
+ ; byrRegs +[eax]
+ cmp ecx, dword ptr [eax+0x04]
+ jae G_M8635_IG24
+ mov eax, bword ptr [eax]
+ movzx ecx, word ptr [eax+2*ecx]
+ ;; size=21 bbWeight=0.65 PerfScore 6.86
+G_M8635_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ ; byrRegs -[eax]
+ movzx ecx, cx
+ call [System.Reflection.TypeNameParser:CharToToken(ushort):int]
+ mov dword ptr [ebp-0x10], eax
+ test eax, eax
+ je G_M8635_IG21
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M8635_IG10: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[ebx]
+ cmp eax, 7
+ jne SHORT G_M8635_IG14
+ ;; size=5 bbWeight=0.94 PerfScore 1.18
+G_M8635_IG11: ; bbWeight=0.06, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ jmp G_M8635_IG20
+ ;; size=5 bbWeight=0.06 PerfScore 0.12
+G_M8635_IG12: ; bbWeight=0.35, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs +[ebx]
+ xor ecx, ecx
+ jmp SHORT G_M8635_IG09
+ ;; size=4 bbWeight=0.35 PerfScore 0.78
+G_M8635_IG13: ; bbWeight=3.76, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[ebx]
inc dword ptr [esi+0x10]
;; size=3 bbWeight=3.76 PerfScore 11.29
-G_M8635_IG07: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG14: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, dword ptr [esi+0x10]
cmp ecx, dword ptr [esi+0x24]
- jge G_M8635_IG12
+ jge G_M8635_IG19
;; size=12 bbWeight=7.53 PerfScore 45.18
-G_M8635_IG08: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG15: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, dword ptr [esi+0x10]
lea edx, bword ptr [esi+0x20]
; byrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]
- jae G_M8635_IG28
+ jae G_M8635_IG24
mov edx, bword ptr [edx]
movzx ebx, word ptr [edx+2*ecx]
cmp ebx, 256
- jb G_M8635_IG11
+ jb G_M8635_IG18
;; size=33 bbWeight=0.94 PerfScore 11.06
-G_M8635_IG09: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG16: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; byrRegs -[edx]
push 4
mov ecx, 11
@@ -325,32 +364,32 @@ G_M8635_IG09: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov ecx, bword ptr [ebp-0x34]
; byrRegs +[ecx]
cmp byte ptr [ecx+ebx], 0
- jl G_M8635_IG06
+ jl G_M8635_IG13
;; size=180 bbWeight=7.53 PerfScore 380.24
-G_M8635_IG10: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG17: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs -[ecx]
- jmp SHORT G_M8635_IG12
+ jmp SHORT G_M8635_IG19
;; size=2 bbWeight=0.94 PerfScore 1.88
-G_M8635_IG11: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG18: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
test byte ptr [ebx+D1FFAB1EH], 128
- jne G_M8635_IG06
+ jne G_M8635_IG13
;; size=13 bbWeight=0.94 PerfScore 3.76
-G_M8635_IG12: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG19: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, dword ptr [esi+0x10]
cmp ecx, dword ptr [esi+0x24]
- jge SHORT G_M8635_IG13
+ jge SHORT G_M8635_IG20
inc ecx
mov dword ptr [esi+0x10], ecx
;; size=12 bbWeight=0.94 PerfScore 6.82
-G_M8635_IG13: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG20: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ebp-0x10], 3
- jne G_M8635_IG29
+ jne SHORT G_M8635_IG25
mov ecx, esi
; byrRegs +[ecx]
call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
; byrRegs -[ecx]
test eax, eax
- je G_M8635_IG24
+ je SHORT G_M8635_IG26
mov ecx, esi
; byrRegs +[ecx]
call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
@@ -359,20 +398,20 @@ G_M8635_IG13: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov ebx, eax
; gcrRegs +[ebx]
test ebx, ebx
- je SHORT G_M8635_IG24
+ je SHORT G_M8635_IG26
mov ecx, esi
; byrRegs +[ecx]
call [System.Reflection.TypeNameParser:get_Peek():int:this]
; gcrRegs -[eax]
; byrRegs -[ecx]
test eax, eax
- jne SHORT G_M8635_IG26
- ;; size=52 bbWeight=0.94 PerfScore 15.76
-G_M8635_IG14: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M8635_IG28
+ ;; size=44 bbWeight=0.94 PerfScore 15.76
+G_M8635_IG21: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M8635_IG27
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M8635_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M8635_IG29
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M8635_IG22: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
push ebx
; gcr arg push 0
mov ecx, edi
@@ -384,7 +423,7 @@ G_M8635_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000
; byrRegs -[edx esi]
; gcr arg pop 1
;; size=11 bbWeight=1 PerfScore 4.50
-G_M8635_IG16: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M8635_IG23: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -392,54 +431,22 @@ G_M8635_IG16: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M8635_IG17: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax] +[ebx edi]
+G_M8635_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M8635_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; byrRegs +[esi]
- test byte ptr [ecx+D1FFAB1EH], 128
- jne G_M8635_IG03
- ;; size=13 bbWeight=1 PerfScore 4.00
-G_M8635_IG18: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, dword ptr [esi+0x10]
- cmp ecx, dword ptr [esi+0x24]
- jge SHORT G_M8635_IG23
- ;; size=8 bbWeight=1 PerfScore 6.00
-G_M8635_IG19: ; bbWeight=0.65, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, dword ptr [esi+0x10]
- lea eax, bword ptr [esi+0x20]
- ; byrRegs +[eax]
- cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M8635_IG28
- mov eax, bword ptr [eax]
- movzx ecx, word ptr [eax+2*ecx]
- ;; size=17 bbWeight=0.65 PerfScore 6.86
-G_M8635_IG20: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- ; byrRegs -[eax]
- movzx ecx, cx
- call [System.Reflection.TypeNameParser:CharToToken(ushort):int]
- mov dword ptr [ebp-0x10], eax
- test eax, eax
- je SHORT G_M8635_IG14
- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M8635_IG21: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[ebx]
- cmp eax, 7
- jne G_M8635_IG07
- ;; size=9 bbWeight=0.94 PerfScore 1.18
-G_M8635_IG22: ; bbWeight=0.06, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- jmp G_M8635_IG13
- ;; size=5 bbWeight=0.06 PerfScore 0.12
-G_M8635_IG23: ; bbWeight=0.35, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs +[ebx]
- xor ecx, ecx
- jmp SHORT G_M8635_IG20
- ;; size=4 bbWeight=0.35 PerfScore 0.78
-G_M8635_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx edi]
- ; byrRegs -[esi]
+ mov ecx, esi
+ ; byrRegs +[ecx]
+ call [System.Reflection.TypeNameParser:ParseError():this]
...
-14 (-4.36%) : 29005.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 5 ) byref -> esi this single-def
+; V00 this [V00,T02] ( 7, 6.48) byref -> esi this single-def
; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T14] ( 4, 1.60) int -> ecx single-def
-; V04 loc0 [V04,T08] ( 4, 3 ) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V04 loc0 [V04,T09] ( 4, 3 ) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T15] ( 3, 1 ) int -> eax
; V06 loc2 [V06,T10] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T09] ( 4, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T06] ( 4, 4.48) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V10 tmp4 [V10,T04] ( 4, 5 ) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T07] ( 6, 3.02) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T08] ( 6, 3.02) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 18.52) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 10 ) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon>
-; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp7 [V13,T01] ( 6, 10 ) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
+; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
; V15 cse0 [V15,T03] ( 5, 5.25) int -> edi "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2 ) int -> edx "runtime lookup"
; V17 rat1 [V17,T11] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
@@ -58,7 +58,7 @@ G_M35195_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
lea eax, [2*eax+0x02]
mov edx, gword ptr [edx+0x04]
cmp dword ptr [edx+0x04], eax
- jle G_M35195_IG22
+ jle G_M35195_IG20
;; size=25 bbWeight=0.50 PerfScore 4.75
G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
@@ -106,9 +106,9 @@ G_M35195_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M35195_IG20
mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V01}
+ je SHORT G_M35195_IG12
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
mov gword ptr [ebp-0x20], eax
@@ -122,59 +122,65 @@ G_M35195_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
mov edi, dword ptr [eax+0x04]
; gcrRegs -[edi]
test edi, edi
- jle SHORT G_M35195_IG13
- ;; size=59 bbWeight=0.50 PerfScore 9.88
-G_M35195_IG08: ; bbWeight=0.25, gcVars=000002B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ jle SHORT G_M35195_IG12
+ ;; size=55 bbWeight=0.50 PerfScore 9.88
+G_M35195_IG08: ; bbWeight=0.25, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[ebx]
test edx, edx
- je SHORT G_M35195_IG16
+ je SHORT G_M35195_IG13
cmp dword ptr [edx+0x04], edi
jl SHORT G_M35195_IG16
;; size=9 bbWeight=0.25 PerfScore 1.31
-G_M35195_IG09: ; bbWeight=3.96, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
+G_M35195_IG09: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[edx]
+ mov edx, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ test edx, edx
je SHORT G_M35195_IG11
;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M35195_IG10: ; bbWeight=1.98, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref
+G_M35195_IG10: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ebx]
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, ebx
call [<unknown method>]
; gcrRegs -[ecx edx ebx]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=24 bbWeight=1.98 PerfScore 18.31
-G_M35195_IG11: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=22 bbWeight=1.98 PerfScore 17.82
+G_M35195_IG11: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ecx
cmp edi, ecx
mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
jg SHORT G_M35195_IG09
;; size=8 bbWeight=3.96 PerfScore 9.90
-G_M35195_IG12: ; bbWeight=0.23, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V10 V11}
+G_M35195_IG12: ; bbWeight=1.98, gcVars=00000060 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V08 V10 V11}
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
+ mov edx, esi
+ ; byrRegs +[edx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
+ ; gcrRegs -[ebx]
+ ; byrRegs -[edx]
mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
- jmp SHORT G_M35195_IG20
- ;; size=5 bbWeight=0.23 PerfScore 0.69
-G_M35195_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG20
- ;; size=5 bbWeight=0.25 PerfScore 0.75
+ jmp G_M35195_IG04
+ ;; size=18 bbWeight=1.98 PerfScore 10.39
+G_M35195_IG13: ; bbWeight=0.12, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax edx]
+ ; GC ptr vars +{V04 V06 V08 V10 V11}
+ jmp SHORT G_M35195_IG16
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
G_M35195_IG14: ; bbWeight=0.50, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars -{V08}
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V04 V06 V08 V10 V11}
mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
mov edx, dword ptr [ecx+0x24]
@@ -187,62 +193,46 @@ G_M35195_IG15: ; bbWeight=0.40, gcVars=00000000 {}, gcrefRegs=00000080 {e
; GC ptr vars -{V01}
jmp G_M35195_IG07
;; size=5 bbWeight=0.40 PerfScore 0.80
-G_M35195_IG16: ; bbWeight=0.04, gcVars=000002B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; GC ptr vars +{V01 V04 V05 V08 V09 V10 V11}
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
+G_M35195_IG16: ; bbWeight=0.04, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax]
+ ; GC ptr vars +{V01 V04 V05 V06 V08 V10 V11}
+ mov edx, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ test edx, edx
je SHORT G_M35195_IG18
;; size=8 bbWeight=0.04 PerfScore 0.13
-G_M35195_IG17: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG17: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M35195_IG21
+ mov ebx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ebx]
+ cmp ecx, dword ptr [ebx+0x04]
+ jae SHORT G_M35195_IG19
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, ebx
call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
+ ; gcrRegs -[ecx edx]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=29 bbWeight=0.02 PerfScore 0.27
-G_M35195_IG18: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=27 bbWeight=0.02 PerfScore 0.26
+G_M35195_IG18: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[ebx]
inc ecx
cmp edi, ecx
mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
jg SHORT G_M35195_IG16
- ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M35195_IG19: ; bbWeight=0.02, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V04 V05 V09 V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M35195_IG20: ; bbWeight=0.50, gcVars=00000200 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V01}
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov edx, esi
- ; byrRegs +[edx]
- ; GC ptr vars -{V08}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
- ; gcrRegs -[ebx]
- ; byrRegs -[edx]
- jmp G_M35195_IG04
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M35195_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
+ jmp SHORT G_M35195_IG12
+ ;; size=10 bbWeight=0.04 PerfScore 0.18
+G_M35195_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
; byrRegs -[esi]
+ ; GC ptr vars -{V01 V04 V05 V06 V08 V10 V11}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M35195_IG22: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M35195_IG20: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs +[edi]
; byrRegs +[esi]
push ecx
@@ -254,6 +244,6 @@ G_M35195_IG22: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040
jmp G_M35195_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 321, prolog size 23, PerfScore 92.93, instruction count 109, allocated bytes for code 321 (MethodHash=f0c57684) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
+; Total bytes of code 307, prolog size 23, PerfScore 99.57, instruction count 105, allocated bytes for code 307 (MethodHash=f0c57684) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
; ============================================================
-11 (-3.53%) : 38457.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,26 +5,26 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 7, 6 ) byref -> [ebp-0x18] this single-def
-; V01 arg1 [V01,T09] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 8.96) byref -> esi this single-def
+; V01 arg1 [V01,T09] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T13] ( 4, 2.20) int -> ecx single-def
; V04 loc0 [V04,T14] ( 4, 2 ) ref -> ebx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T16] ( 3, 0 ) int -> edx
; V06 loc2 [V06,T07] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T06] ( 4, 6 ) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 8.96) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T03] ( 4, 10.00) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T05] ( 6, 6.04) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 10.00) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T06] ( 6, 6.04) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 37.04) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 20.00) ref -> esi class-hnd "Inline stloc first use temp" <System.__Canon>
+; V13 tmp7 [V13,T01] ( 6, 20.00) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
; V14 tmp8 [V14,T12] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T02] ( 5, 10.50) int -> edi "CSE - aggressive"
+; V15 cse0 [V15,T03] ( 5, 10.50) int -> edi "CSE - aggressive"
; V16 rat0 [V16,T11] ( 3, 4 ) int -> edx "runtime lookup"
; V17 rat1 [V17,T08] ( 3, 5.60) int -> edx "fgMakeTemp is creating a new local variable"
;
@@ -39,7 +39,7 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sub esp, 24
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x1C], edx
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V01}
mov esi, ecx
; byrRegs +[esi]
@@ -49,26 +49,18 @@ G_M35195_IG02: ; bbWeight=1, gcVars=00000200 {V01}, gcrefRegs=00000000 {}
mov ebx, gword ptr [esi]
; gcrRegs +[ebx]
test ebx, ebx
- jne G_M35195_IG21
- mov edi, gword ptr [ebp-0x1C]
+ jne G_M35195_IG20
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x0C]
test edx, edx
- je SHORT G_M35195_IG04
+ je SHORT G_M35195_IG11
;; size=25 bbWeight=1 PerfScore 11.50
-G_M35195_IG03: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M35195_IG03: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[ebx]
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M35195_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.20 PerfScore 0.30
-G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, edx
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -79,14 +71,13 @@ G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edx, 7
call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this]
; gcrRegs -[eax ecx]
- mov bword ptr [ebp-0x18], esi
- ; GC ptr vars +{V00}
+ mov gword ptr [ebp-0x1C], ebx
+ ; GC ptr vars +{V08}
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
test ecx, ecx
- mov esi, bword ptr [ebp-0x18]
- je G_M35195_IG17
- mov gword ptr [ebp-0x1C], edi
+ je G_M35195_IG16
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V01}
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
@@ -101,119 +92,119 @@ G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edi, dword ptr [eax+0x04]
; gcrRegs -[edi]
test edi, edi
- jle SHORT G_M35195_IG12
- ;; size=62 bbWeight=1 PerfScore 20.75
-G_M35195_IG06: ; bbWeight=0.50, gcVars=00000228 {V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ jle SHORT G_M35195_IG10
+ ;; size=59 bbWeight=1 PerfScore 19.75
+G_M35195_IG04: ; bbWeight=0.50, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[ebx]
test edx, edx
- je SHORT G_M35195_IG11
- cmp dword ptr [edx+0x04], edi
- mov bword ptr [ebp-0x18], esi
- ; GC ptr vars +{V00}
- jl SHORT G_M35195_IG13
- ;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M35195_IG07: ; bbWeight=7.92, gcVars=00000238 {V00 V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[esi]
- mov esi, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[esi]
- test esi, esi
je SHORT G_M35195_IG09
+ cmp dword ptr [edx+0x04], edi
+ jl SHORT G_M35195_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 2.62
+G_M35195_IG05: ; bbWeight=7.92, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[edx]
+ mov edx, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M35195_IG07
;; size=8 bbWeight=7.92 PerfScore 25.74
-G_M35195_IG08: ; bbWeight=3.96, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref
+G_M35195_IG06: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ebx]
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, esi
call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=23 bbWeight=3.96 PerfScore 33.66
-G_M35195_IG09: ; bbWeight=7.92, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=22 bbWeight=3.96 PerfScore 35.64
+G_M35195_IG07: ; bbWeight=7.92, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ecx
cmp edi, ecx
mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
- jg SHORT G_M35195_IG07
+ jg SHORT G_M35195_IG05
;; size=8 bbWeight=7.92 PerfScore 19.80
-G_M35195_IG10: ; bbWeight=0.46, gcVars=00000210 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V10 V11}
- mov esi, bword ptr [ebp-0x18]
- ; byrRegs +[esi]
- mov edi, gword ptr [ebp-0x1C]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=8 bbWeight=0.46 PerfScore 1.84
-G_M35195_IG11: ; bbWeight=0.25, gcVars=00000228 {V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; GC ptr vars -{V00} +{V03 V05 V10 V11}
- mov bword ptr [ebp-0x18], esi
- ; GC ptr vars +{V00}
- jmp SHORT G_M35195_IG13
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M35195_IG12: ; bbWeight=0.50, gcVars=00000200 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V00 V03 V05 V10 V11}
- mov edi, gword ptr [ebp-0x1C]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M35195_IG13: ; bbWeight=0.08, gcVars=00000238 {V00 V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; byrRegs -[esi]
- ; GC ptr vars +{V00 V03 V04 V05 V10 V11}
- mov esi, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[esi]
- test esi, esi
- je SHORT G_M35195_IG15
- ;; size=8 bbWeight=0.08 PerfScore 0.26
-G_M35195_IG14: ; bbWeight=0.04, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M35195_IG08: ; bbWeight=3.96, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M35195_IG20
+ ; GC ptr vars -{V10 V11}
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M35195_IG16
+ ;; size=5 bbWeight=3.96 PerfScore 11.88
+G_M35195_IG09: ; bbWeight=0.25, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax edx]
+ ; GC ptr vars +{V04 V06 V10 V11}
+ jmp SHORT G_M35195_IG12
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M35195_IG10: ; bbWeight=0.50, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V04 V06 V10 V11}
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M35195_IG16
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M35195_IG11: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars -{V01 V08}
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ jmp G_M35195_IG03
+ ;; size=17 bbWeight=0.20 PerfScore 0.70
+G_M35195_IG12: ; bbWeight=0.08, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax]
+ ; GC ptr vars +{V01 V04 V05 V06 V08 V09 V10 V11}
+ mov edx, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M35195_IG14
+ ;; size=8 bbWeight=0.08 PerfScore 0.26
+G_M35195_IG13: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ebx]
+ cmp ecx, dword ptr [ebx+0x04]
+ jae SHORT G_M35195_IG19
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, esi
call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
...
+30 (+9.90%) : 11682.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,30 +5,30 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 5.38) byref -> esi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.22) byref -> esi this single-def
+; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T14] ( 4, 1.88) int -> ecx single-def
; V04 loc0 [V04,T11] ( 4, 2.75) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T16] ( 3, 0.88) int -> eax
; V06 loc2 [V06,T09] ( 3, 3.75) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.75) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.60) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.50) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 6.25) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T07] ( 6, 3.77) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 6.25) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T08] ( 6, 3.77) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 23.15) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 12.50) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon>
-; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T03] ( 5, 6.56) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 12.50) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
+; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V15 cse0 [V15,T03] ( 5, 6.56) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.50) int -> edx "runtime lookup"
; V17 rat1 [V17,T10] ( 3, 3.50) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01}
mov esi, ecx
; byrRegs +[esi]
mov ecx, dword ptr [ebp+0x08]
;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi]
; gcrRegs +[edx]
test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.62, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.38, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ mov eax, dword ptr [edx+0x0C]
+ lea eax, [2*eax+0x02]
+ mov edx, gword ptr [edx+0x04]
+ cmp dword ptr [edx+0x04], eax
+ jle G_M35195_IG15
+ ;; size=25 bbWeight=0.38 PerfScore 3.56
+G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x0C]
- test edx, edx
- je SHORT G_M35195_IG05
- ;; size=15 bbWeight=0.62 PerfScore 5.16
-G_M35195_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.12 PerfScore 0.19
-G_M35195_IG06: ; bbWeight=0.62, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, edx
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- mov edx, 7
- call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this]
- ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x1C], ebx
- ; GC ptr vars +{V08}
- mov ecx, gword ptr [esi]
- ; gcrRegs +[ecx]
- test ecx, ecx
- je G_M35195_IG17
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- mov eax, gword ptr [ecx+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V10}
- mov edx, gword ptr [ecx+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x24], edx
- ; GC ptr vars +{V11}
- xor ecx, ecx
- ; gcrRegs -[ecx]
- mov edi, dword ptr [eax+0x04]
- ; gcrRegs -[edi]
- test edi, edi
- jle SHORT G_M35195_IG12
- ;; size=59 bbWeight=0.62 PerfScore 12.34
-G_M35195_IG07: ; bbWeight=0.31, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[ebx]
- test edx, edx
- je SHORT G_M35195_IG13
- cmp dword ptr [edx+0x04], edi
- jl SHORT G_M35195_IG13
- ;; size=9 bbWeight=0.31 PerfScore 1.64
-G_M35195_IG08: ; bbWeight=4.95, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG10
- ;; size=8 bbWeight=4.95 PerfScore 16.09
-G_M35195_IG09: ; bbWeight=2.48, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=24 bbWeight=2.48 PerfScore 22.89
-G_M35195_IG10: ; bbWeight=4.95, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG08
- ;; size=8 bbWeight=4.95 PerfScore 12.38
-G_M35195_IG11: ; bbWeight=0.29, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.29 PerfScore 0.86
-G_M35195_IG12: ; bbWeight=0.31, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.31 PerfScore 0.94
-G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; GC ptr vars +{V04 V10 V11}
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG15
- ;; size=8 bbWeight=0.05 PerfScore 0.16
-G_M35195_IG14: ; bbWeight=0.03, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M35195_IG22
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=29 bbWeight=0.03 PerfScore 0.33
-G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG13
- ;; size=8 bbWeight=0.05 PerfScore 0.13
-G_M35195_IG16: ; bbWeight=0.03, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V04 V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=0.03 PerfScore 0.03
-G_M35195_IG17: ; bbWeight=0.62, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V01}
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov edx, esi
- ; byrRegs +[edx]
- ; GC ptr vars -{V08}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
- ; gcrRegs -[ebx]
- ; byrRegs -[edx]
- ;; size=10 bbWeight=0.62 PerfScore 1.41
-G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
push gword ptr [ebp+0x0C]
@@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040
; byrRegs -[esi]
; gcr arg pop 1
;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.38, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[edx]
- ; byrRegs +[esi]
- ; GC ptr vars +{V01 V05}
- mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C]
- lea eax, [2*eax+0x02]
...
+30 (+9.90%) : 23144.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,30 +5,30 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 5.36) byref -> esi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.26) byref -> esi this single-def
+; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T14] ( 4, 1.84) int -> ecx single-def
; V04 loc0 [V04,T11] ( 4, 2.71) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T16] ( 3, 0.79) int -> eax
; V06 loc2 [V06,T09] ( 3, 3.86) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.86) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.76) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.57) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 6.43) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T07] ( 6, 3.88) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 6.43) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T08] ( 6, 3.88) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 23.81) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 12.86) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon>
-; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T03] ( 5, 6.75) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 12.86) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
+; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V15 cse0 [V15,T03] ( 5, 6.75) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.57) int -> edx "runtime lookup"
; V17 rat1 [V17,T10] ( 3, 3.60) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01}
mov esi, ecx
; byrRegs +[esi]
mov ecx, dword ptr [ebp+0x08]
;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi]
; gcrRegs +[edx]
test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.36, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ mov eax, dword ptr [edx+0x0C]
+ lea eax, [2*eax+0x02]
+ mov edx, gword ptr [edx+0x04]
+ cmp dword ptr [edx+0x04], eax
+ jle G_M35195_IG15
+ ;; size=25 bbWeight=0.36 PerfScore 3.39
+G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x0C]
- test edx, edx
- je SHORT G_M35195_IG05
- ;; size=15 bbWeight=0.64 PerfScore 5.30
-G_M35195_IG04: ; bbWeight=0.51, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06
- ;; size=2 bbWeight=0.51 PerfScore 1.03
-G_M35195_IG05: ; bbWeight=0.13, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.13 PerfScore 0.19
-G_M35195_IG06: ; bbWeight=0.64, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, edx
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- mov edx, 7
- call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this]
- ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x1C], ebx
- ; GC ptr vars +{V08}
- mov ecx, gword ptr [esi]
- ; gcrRegs +[ecx]
- test ecx, ecx
- je G_M35195_IG17
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- mov eax, gword ptr [ecx+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V10}
- mov edx, gword ptr [ecx+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x24], edx
- ; GC ptr vars +{V11}
- xor ecx, ecx
- ; gcrRegs -[ecx]
- mov edi, dword ptr [eax+0x04]
- ; gcrRegs -[edi]
- test edi, edi
- jle SHORT G_M35195_IG12
- ;; size=59 bbWeight=0.64 PerfScore 12.70
-G_M35195_IG07: ; bbWeight=0.32, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[ebx]
- test edx, edx
- je SHORT G_M35195_IG13
- cmp dword ptr [edx+0x04], edi
- jl SHORT G_M35195_IG13
- ;; size=9 bbWeight=0.32 PerfScore 1.69
-G_M35195_IG08: ; bbWeight=5.09, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG10
- ;; size=8 bbWeight=5.09 PerfScore 16.55
-G_M35195_IG09: ; bbWeight=2.55, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=24 bbWeight=2.55 PerfScore 23.55
-G_M35195_IG10: ; bbWeight=5.09, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG08
- ;; size=8 bbWeight=5.09 PerfScore 12.73
-G_M35195_IG11: ; bbWeight=0.30, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.30 PerfScore 0.89
-G_M35195_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.32 PerfScore 0.96
-G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; GC ptr vars +{V04 V10 V11}
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG15
- ;; size=8 bbWeight=0.05 PerfScore 0.17
-G_M35195_IG14: ; bbWeight=0.03, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M35195_IG22
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=29 bbWeight=0.03 PerfScore 0.34
-G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG13
- ;; size=8 bbWeight=0.05 PerfScore 0.13
-G_M35195_IG16: ; bbWeight=0.03, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V04 V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=0.03 PerfScore 0.03
-G_M35195_IG17: ; bbWeight=0.64, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V01}
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov edx, esi
- ; byrRegs +[edx]
- ; GC ptr vars -{V08}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
- ; gcrRegs -[ebx]
- ; byrRegs -[edx]
- ;; size=10 bbWeight=0.64 PerfScore 1.45
-G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
push gword ptr [ebp+0x0C]
@@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040
; byrRegs -[esi]
; gcr arg pop 1
;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.36, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[edx]
- ; byrRegs +[esi]
- ; GC ptr vars +{V01 V05}
- mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C]
- lea eax, [2*eax+0x02]
...
+30 (+9.90%) : 63032.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)
@@ -5,30 +5,30 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 42
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 42
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 5.26) byref -> esi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.02) byref -> esi this single-def
+; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T14] ( 4, 1.79) int -> ecx single-def
; V04 loc0 [V04,T11] ( 4, 2.81) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T16] ( 3, 0.88) int -> eax
; V06 loc2 [V06,T09] ( 3, 3.57) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.57) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.33) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.38) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 5.95) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T07] ( 6, 3.60) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 5.95) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T08] ( 6, 3.60) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 22.05) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 11.90) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon>
-; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T03] ( 5, 6.25) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 11.90) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
+; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V15 cse0 [V15,T03] ( 5, 6.25) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.38) int -> edx "runtime lookup"
; V17 rat1 [V17,T10] ( 3, 3.33) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01}
mov esi, ecx
; byrRegs +[esi]
mov ecx, dword ptr [ebp+0x08]
;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi]
; gcrRegs +[edx]
test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.60, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.40, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ mov eax, dword ptr [edx+0x0C]
+ lea eax, [2*eax+0x02]
+ mov edx, gword ptr [edx+0x04]
+ cmp dword ptr [edx+0x04], eax
+ jle G_M35195_IG15
+ ;; size=25 bbWeight=0.40 PerfScore 3.85
+G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x0C]
- test edx, edx
- je SHORT G_M35195_IG05
- ;; size=15 bbWeight=0.60 PerfScore 4.91
-G_M35195_IG04: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06
- ;; size=2 bbWeight=0.48 PerfScore 0.95
-G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.12 PerfScore 0.18
-G_M35195_IG06: ; bbWeight=0.60, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, edx
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- mov edx, 7
- call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this]
- ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x1C], ebx
- ; GC ptr vars +{V08}
- mov ecx, gword ptr [esi]
- ; gcrRegs +[ecx]
- test ecx, ecx
- je G_M35195_IG17
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- mov eax, gword ptr [ecx+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V10}
- mov edx, gword ptr [ecx+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x24], edx
- ; GC ptr vars +{V11}
- xor ecx, ecx
- ; gcrRegs -[ecx]
- mov edi, dword ptr [eax+0x04]
- ; gcrRegs -[edi]
- test edi, edi
- jle SHORT G_M35195_IG12
- ;; size=59 bbWeight=0.60 PerfScore 11.76
-G_M35195_IG07: ; bbWeight=0.30, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[ebx]
- test edx, edx
- je SHORT G_M35195_IG13
- cmp dword ptr [edx+0x04], edi
- jl SHORT G_M35195_IG13
- ;; size=9 bbWeight=0.30 PerfScore 1.56
-G_M35195_IG08: ; bbWeight=4.71, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG10
- ;; size=8 bbWeight=4.71 PerfScore 15.32
-G_M35195_IG09: ; bbWeight=2.36, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=24 bbWeight=2.36 PerfScore 21.80
-G_M35195_IG10: ; bbWeight=4.71, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG08
- ;; size=8 bbWeight=4.71 PerfScore 11.79
-G_M35195_IG11: ; bbWeight=0.27, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.27 PerfScore 0.82
-G_M35195_IG12: ; bbWeight=0.30, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG17
- ;; size=5 bbWeight=0.30 PerfScore 0.89
-G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[eax edx]
- ; GC ptr vars +{V04 V10 V11}
- mov ebx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M35195_IG15
- ;; size=8 bbWeight=0.05 PerfScore 0.15
-G_M35195_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M35195_IG22
- mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
- ; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- ; gcr arg pop 1
- mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24]
- ; gcrRegs +[edx]
- ;; size=29 bbWeight=0.02 PerfScore 0.32
-G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp edi, ecx
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- jg SHORT G_M35195_IG13
- ;; size=8 bbWeight=0.05 PerfScore 0.12
-G_M35195_IG16: ; bbWeight=0.02, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V04 V10 V11}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M35195_IG17: ; bbWeight=0.60, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V01}
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov edx, esi
- ; byrRegs +[edx]
- ; GC ptr vars -{V08}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
- ; gcrRegs -[ebx]
- ; byrRegs -[edx]
- ;; size=10 bbWeight=0.60 PerfScore 1.34
-G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
push gword ptr [ebp+0x0C]
@@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040
; byrRegs -[esi]
; gcr arg pop 1
;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.40, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[edx]
- ; byrRegs +[esi]
- ; GC ptr vars +{V01 V05}
- mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C]
- lea eax, [2*eax+0x02]
...
benchmarks.run_tiered.windows.x86.checked.mch
-17 (-4.75%) : 36066.dasm - ProtoBuf.Internal.DynamicStub:g_ResolveProxies|91(System.Type):System.Type (Tier0-FullOpts)
@@ -8,38 +8,38 @@
; 0 inlinees with PGO data; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 8, 5.50) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T04] ( 8, 7.25) ref -> esi class-hnd single-def <System.Type>
; V01 loc0 [V01,T12] ( 3, 1.50) ref -> eax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 loc2 [V03,T08] ( 3, 5 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 loc2 [V03,T09] ( 3, 5 ) ref -> [ebp-0x1C] class-hnd single-def <<unknown class>>
; V04 loc3 [V04,T03] ( 5, 16.50) int -> [ebp-0x10]
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
-; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x1C] class-hnd exact <System.String>
+; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x20] class-hnd exact <System.String>
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp1 [V08,T04] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V08 tmp1 [V08,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V14 tmp7 [V14,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V14 tmp7 [V14,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V20 tmp13 [V20,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V20 tmp13 [V20,T07] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp18 [V25,T11] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V25 tmp18 [V25,T08] ( 2, 5.50) ref -> eax single-def "Single return block return value"
; V26 tmp19 [V26,T01] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V27 cse0 [V27,T02] ( 9, 18 ) int -> edi multi-def "CSE - aggressive"
-; V28 cse1 [V28,T09] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate"
-; V29 cse2 [V29,T10] ( 5, 2.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V27 cse0 [V27,T02] ( 9, 18 ) int -> registers multi-def "CSE - aggressive"
+; V28 cse1 [V28,T10] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate"
+; V29 cse2 [V29,T11] ( 5, 4.25) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -47,7 +47,7 @@ G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -82,14 +82,14 @@ G_M1535_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000
test eax, eax
je SHORT G_M1535_IG05
;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M1535_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M1535_IG04: ; bbWeight=2.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [edi+0x58]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx esi] +[eax]
- jmp G_M1535_IG19
- ;; size=13 bbWeight=0.50 PerfScore 3.62
+ jmp G_M1535_IG17
+ ;; size=13 bbWeight=2.25 PerfScore 16.31
G_M1535_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
@@ -117,22 +117,25 @@ G_M1535_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
mov edi, eax
; gcrRegs +[edi]
cmp edi, 0xD1FFAB1E
- je G_M1535_IG18
+ je G_M1535_IG16
;; size=29 bbWeight=4 PerfScore 46.00
G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov gword ptr [ebp-0x1C], ebx
+ ; GC ptr vars +{V03}
mov ecx, edi
; gcrRegs +[ecx]
mov edi, dword ptr [ebp-0x18]
; gcrRegs -[edi]
test ecx, ecx
je SHORT G_M1535_IG08
- mov edi, dword ptr [ecx+0x04]
- cmp edi, 33
- jne G_M1535_IG17
- add edi, edi
- push edi
- mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ebx]
+ cmp ebx, 33
+ jne SHORT G_M1535_IG08
+ add ebx, ebx
+ push ebx
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06}
add ecx, 8
; gcrRegs -[ecx]
@@ -142,25 +145,24 @@ G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne SHORT G_M1535_IG04
- ;; size=51 bbWeight=2 PerfScore 29.50
-G_M1535_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=2 PerfScore 29.50
+G_M1535_IG08: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
cmp ecx, 0xD1FFAB1E
je SHORT G_M1535_IG04
;; size=8 bbWeight=4 PerfScore 5.00
-G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG09: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
je SHORT G_M1535_IG10
- mov edi, dword ptr [ecx+0x04]
- cmp edi, 36
- jne SHORT G_M1535_IG16
- add edi, edi
- push edi
- mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04]
+ cmp ebx, 36
+ jne SHORT G_M1535_IG10
+ add ebx, ebx
+ push ebx
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06}
add ecx, 8
; gcrRegs -[ecx]
@@ -170,17 +172,18 @@ G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=46 bbWeight=2 PerfScore 27.00
-G_M1535_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=43 bbWeight=2 PerfScore 25.00
+G_M1535_IG10: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V06}
cmp ecx, 0xD1FFAB1E
je G_M1535_IG04
;; size=12 bbWeight=4 PerfScore 5.00
-G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG11: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
test ecx, ecx
je SHORT G_M1535_IG12
mov edi, dword ptr [ecx+0x04]
@@ -193,12 +196,13 @@ G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0
; byrRegs +[ecx]
mov edx, 0xD1FFAB1E
; byrRegs +[edx]
+ ; GC ptr vars -{V03}
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=43 bbWeight=2 PerfScore 25.00
G_M1535_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x10]
inc eax
@@ -225,21 +229,12 @@ G_M1535_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000048 {ebx e
mov edi, dword ptr [ebp-0x18]
jmp SHORT G_M1535_IG12
;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG16: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
- jmp SHORT G_M1535_IG10
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG17: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
- mov edi, dword ptr [ebp-0x18]
- jmp G_M1535_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M1535_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx ebx]
+G_M1535_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
mov edi, dword ptr [ebp-0x18]
jmp G_M1535_IG04
;; size=8 bbWeight=2 PerfScore 6.00
-G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M1535_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] +[eax]
lea esp, [ebp-0x0C]
pop ebx
@@ -249,6 +244,6 @@ G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 358, prolog size 9, PerfScore 197.62, instruction count 124, allocated bytes for code 358 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
+; Total bytes of code 341, prolog size 9, PerfScore 204.31, instruction count 120, allocated bytes for code 341 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
; ============================================================
-7 (-2.37%) : 24359.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
@@ -7,22 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
-; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10]
-; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
+; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10]
+; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def
-; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
-; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect"
-; TEMP_02 int -> [ebp-0x1C]
-; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def
+; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>>
+; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr"
+; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect"
+; TEMP_02 int -> [ebp-0x18]
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov gword ptr [ebp-0x14], ecx
- ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [ebp+0x0C]
mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75
-G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75
+G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx]
test ebx, ebx
jne SHORT G_M57627_IG05
;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A2FBA]
cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx
shl eax, 7
- mov dword ptr [ebp-0x20], eax
- movzx eax, dword ptr [ebp-0x1C]
- xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax
+ movzx eax, dword ptr [ebp-0x18]
+ xor eax, dword ptr [ebp-0x1C]
add edx, eax
mov dword ptr [ebp+0x08], ebx
lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01]
- cmp ecx, eax
- jge SHORT G_M57627_IG10
- ;; size=56 bbWeight=0.50 PerfScore 8.38
-G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, ecx
- or ebx, eax
- jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01]
+ cmp ebx, eax
+ jge SHORT G_M57627_IG11
+ ;; size=59 bbWeight=0.50 PerfScore 8.88
+G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, ebx
+ or edi, eax
+ jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax
jl SHORT G_M57627_IG09
;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov eax, edx
+ shl eax, 7
+ xor eax, edi
+ add edx, eax
+ inc ebx
+ mov eax, dword ptr [ebp-0x14]
+ cmp ebx, eax
+ jl SHORT G_M57627_IG07
+ ;; size=22 bbWeight=3.96 PerfScore 22.77
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57627_IG11
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x14]
+ ;; size=3 bbWeight=0.12 PerfScore 0.12
+G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04]
+ jae G_M57627_IG19
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov dword ptr [ebp-0x1C], edi
mov edi, edx
shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi
+ movzx edi, dword ptr [ebp-0x1C]
+ xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG07
- ;; size=19 bbWeight=3.96 PerfScore 18.81
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M57627_IG18
- movzx ebx, word ptr [esi+2*ecx+0x08]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, edx
- shl ebx, 7
- mov dword ptr [ebp-0x1C], ebx
- movzx ebx, dword ptr [ebp-0x20]
- xor ebx, dword ptr [ebp-0x1C]
- add edx, ebx
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG09
+ inc ebx
+ cmp ebx, eax
+ jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- sar ecx, 17
- sub edx, ecx
- mov ecx, edx
- sar ecx, 11
- sub edx, ecx
- mov ecx, edx
- sar ecx, 5
- sub edx, ecx
- mov ecx, gword ptr [ebp-0x14]
- ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, edx
+ sar eax, 17
+ sub edx, eax
+ mov eax, edx
+ sar eax, 11
+ sub edx, eax
+ mov eax, edx
+ sar eax, 5
+ sub edx, eax
mov eax, edx
and eax, dword ptr [ecx+0x0C]
mov ecx, gword ptr [ecx+0x04]
cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18
- mov eax, gword ptr [ecx+4*eax+0x08]
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M57627_IG14
- ;; size=45 bbWeight=0.50 PerfScore 8.25
-G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19
+ mov ebx, gword ptr [ecx+4*eax+0x08]
+ ; gcrRegs +[ebx]
+ test ebx, ebx
+ je SHORT G_M57627_IG15
+ ;; size=42 bbWeight=1.98 PerfScore 30.69
+G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx
- jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx
+ jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V09}
- mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
mov edi, dword ptr [ebp+0x0C]
push edi
- mov ebx, dword ptr [ebp+0x08]
- push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi
; gcrRegs +[edx]
call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jne SHORT G_M57627_IG16
- ;; size=35 bbWeight=2 PerfScore 29.00
-G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V09}
- mov eax, gword ptr [eax+0x08]
- test eax, eax
+ jne SHORT G_M57627_IG17
+ ;; size=25 bbWeight=2 PerfScore 21.00
+G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebx+0x08]
+ test ebx, ebx
...
-7 (-2.37%) : 49392.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
@@ -7,22 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
-; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10]
-; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable>
+; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10]
+; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def
-; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
-; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect"
-; TEMP_02 int -> [ebp-0x1C]
-; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def
+; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>>
+; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr"
+; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect"
+; TEMP_02 int -> [ebp-0x18]
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov gword ptr [ebp-0x14], ecx
- ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [ebp+0x0C]
mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75
-G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75
+G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx]
test ebx, ebx
jne SHORT G_M57627_IG05
;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A954A]
cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx
shl eax, 7
- mov dword ptr [ebp-0x20], eax
- movzx eax, dword ptr [ebp-0x1C]
- xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax
+ movzx eax, dword ptr [ebp-0x18]
+ xor eax, dword ptr [ebp-0x1C]
add edx, eax
mov dword ptr [ebp+0x08], ebx
lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01]
- cmp ecx, eax
- jge SHORT G_M57627_IG10
- ;; size=56 bbWeight=0.50 PerfScore 8.38
-G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, ecx
- or ebx, eax
- jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01]
+ cmp ebx, eax
+ jge SHORT G_M57627_IG11
+ ;; size=59 bbWeight=0.50 PerfScore 8.88
+G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, ebx
+ or edi, eax
+ jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax
jl SHORT G_M57627_IG09
;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov eax, edx
+ shl eax, 7
+ xor eax, edi
+ add edx, eax
+ inc ebx
+ mov eax, dword ptr [ebp-0x14]
+ cmp ebx, eax
+ jl SHORT G_M57627_IG07
+ ;; size=22 bbWeight=3.96 PerfScore 22.77
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57627_IG11
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x14]
+ ;; size=3 bbWeight=0.12 PerfScore 0.12
+G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, dword ptr [esi+0x04]
+ jae G_M57627_IG19
+ movzx edi, word ptr [esi+2*ebx+0x08]
+ mov dword ptr [ebp-0x1C], edi
mov edi, edx
shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi
+ movzx edi, dword ptr [ebp-0x1C]
+ xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG07
- ;; size=19 bbWeight=3.96 PerfScore 18.81
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M57627_IG18
- movzx ebx, word ptr [esi+2*ecx+0x08]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, edx
- shl ebx, 7
- mov dword ptr [ebp-0x1C], ebx
- movzx ebx, dword ptr [ebp-0x20]
- xor ebx, dword ptr [ebp-0x1C]
- add edx, ebx
- inc ecx
- cmp ecx, eax
- jl SHORT G_M57627_IG09
+ inc ebx
+ cmp ebx, eax
+ jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- sar ecx, 17
- sub edx, ecx
- mov ecx, edx
- sar ecx, 11
- sub edx, ecx
- mov ecx, edx
- sar ecx, 5
- sub edx, ecx
- mov ecx, gword ptr [ebp-0x14]
- ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, edx
+ sar eax, 17
+ sub edx, eax
+ mov eax, edx
+ sar eax, 11
+ sub edx, eax
+ mov eax, edx
+ sar eax, 5
+ sub edx, eax
mov eax, edx
and eax, dword ptr [ecx+0x0C]
mov ecx, gword ptr [ecx+0x04]
cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18
- mov eax, gword ptr [ecx+4*eax+0x08]
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M57627_IG14
- ;; size=45 bbWeight=0.50 PerfScore 8.25
-G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19
+ mov ebx, gword ptr [ecx+4*eax+0x08]
+ ; gcrRegs +[ebx]
+ test ebx, ebx
+ je SHORT G_M57627_IG15
+ ;; size=42 bbWeight=1.98 PerfScore 30.69
+G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx
- jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx
+ jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V09}
- mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
mov edi, dword ptr [ebp+0x0C]
push edi
- mov ebx, dword ptr [ebp+0x08]
- push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi
; gcrRegs +[edx]
call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jne SHORT G_M57627_IG16
- ;; size=35 bbWeight=2 PerfScore 29.00
-G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V09}
- mov eax, gword ptr [eax+0x08]
- test eax, eax
+ jne SHORT G_M57627_IG17
+ ;; size=25 bbWeight=2 PerfScore 21.00
+G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebx+0x08]
+ test ebx, ebx
...
+15 (+6.94%) : 25227.dasm - Sigil.Impl.LinqAlternative:_Orderint,int:System.Collections.Generic.IEnumerable`1int
@@ -9,16 +9,16 @@
;
; V00 arg0 [V00,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
; V01 arg1 [V01,T04] ( 6, 10 ) ref -> esi class-hnd single-def <Sigil.Impl.SigilFunc`2[int,int]>
-; V02 arg2 [V02,T09] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]>
-; V03 loc0 [V03,T05] ( 6, 7.50) ref -> edi class-hnd single-def <int[]>
-; V04 loc1 [V04,T03] ( 11, 14 ) int -> ebx single-def
-; V05 loc2 [V05,T06] ( 6, 6.54) ref -> [ebp-0x14] class-hnd exact spill-single-def <int[]>
-; V06 loc3 [V06,T07] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]>
-; V07 loc4 [V07,T00] ( 12, 21.04) int -> edx
-; V08 loc5 [V08,T01] ( 12, 21.04) int -> [ebp-0x10]
+; V02 arg2 [V02,T09] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]>
+; V03 loc0 [V03,T06] ( 6, 8.48) ref -> ebx class-hnd single-def <int[]>
+; V04 loc1 [V04,T03] ( 11, 15.96) int -> [ebp-0x10] spill-single-def
+; V05 loc2 [V05,T07] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]>
+; V06 loc3 [V06,T05] ( 6, 8.50) ref -> [ebp-0x1C] class-hnd exact spill-single-def <int[]>
+; V07 loc4 [V07,T01] ( 12, 21.04) int -> edx
+; V08 loc5 [V08,T00] ( 12, 22.02) int -> [ebp-0x14]
; V09 tmp0 [V09,T02] ( 4, 16 ) int -> eax "Strict ordering of exceptions for Array store"
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -26,7 +26,7 @@ G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 16
mov esi, edx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -34,149 +34,155 @@ G_M31788_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
; gcrRegs +[ecx]
call [Sigil.Impl.LinqAlternative:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]]
; gcrRegs -[ecx] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- mov ebx, dword ptr [edi+0x04]
- mov edx, ebx
- mov ecx, 0xD1FFAB1E ; int[]
- call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V05}
- xor edx, edx
- test ebx, ebx
- jle SHORT G_M31788_IG06
- ;; size=32 bbWeight=1 PerfScore 9.25
-G_M31788_IG03: ; bbWeight=0.50, gcVars=00000040 {V05}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M31788_IG07
- ;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [eax+4*edx+0x08], edx
- inc edx
- cmp edx, ebx
- jl SHORT G_M31788_IG04
- ;; size=9 bbWeight=3.96 PerfScore 9.90
-G_M31788_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M31788_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M31788_IG08
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, dword ptr [eax+0x04]
- jae G_M31788_IG18
- mov dword ptr [eax+4*edx+0x08], edx
- inc edx
- cmp edx, ebx
- jl SHORT G_M31788_IG12
- ;; size=18 bbWeight=0.04 PerfScore 0.26
-G_M31788_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ mov eax, dword ptr [ebx+0x04]
; gcrRegs -[eax]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ mov edx, eax
mov ecx, 0xD1FFAB1E ; int[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V05}
+ xor edx, edx
+ mov ecx, dword ptr [ebp-0x10]
+ test ecx, ecx
+ jle SHORT G_M31788_IG06
+ ;; size=38 bbWeight=1 PerfScore 11.25
+G_M31788_IG03: ; bbWeight=0.50, gcVars=00000080 {V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp dword ptr [eax+0x04], ecx
+ jl SHORT G_M31788_IG07
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [eax+4*edx+0x08], edx
+ inc edx
+ cmp edx, ecx
+ jl SHORT G_M31788_IG04
+ ;; size=9 bbWeight=3.96 PerfScore 9.90
+G_M31788_IG05: ; bbWeight=1.98, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M31788_IG08
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M31788_IG08
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, dword ptr [eax+0x04]
+ jae G_M31788_IG18
+ mov dword ptr [eax+4*edx+0x08], edx
+ inc edx
+ cmp edx, ecx
+ jl SHORT G_M31788_IG12
+ ;; size=18 bbWeight=0.04 PerfScore 0.26
+G_M31788_IG08: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ecx
+ mov ecx, 0xD1FFAB1E ; int[]
+ call CORINFO_HELP_NEWARR_1_VC
+ ; gcrRegs +[eax]
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V06}
xor ecx, ecx
- test ebx, ebx
+ mov edx, dword ptr [ebp-0x10]
+ test edx, edx
jle SHORT G_M31788_IG15
- ;; size=21 bbWeight=1 PerfScore 4.00
-G_M31788_IG09: ; bbWeight=0.50, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov edx, dword ptr [edi+0x04]
- cmp dword ptr [eax+0x04], ebx
+ ;; size=24 bbWeight=1.98 PerfScore 9.90
+G_M31788_IG09: ; bbWeight=0.50, gcVars=000000A0 {V05 V06}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, dword ptr [ebx+0x04]
+ cmp dword ptr [eax+0x04], edx
jl SHORT G_M31788_IG13
;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], ecx
- mov edx, dword ptr [edi+4*ecx+0x08]
+ mov dword ptr [ebp-0x14], ecx
+ mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
call [esi+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x10]
- mov dword ptr [ecx+4*edx+0x08], eax
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ mov edx, dword ptr [ebp-0x14]
+ mov dword ptr [edi+4*edx+0x08], eax
inc edx
- cmp edx, ebx
+ cmp edx, dword ptr [ebp-0x10]
mov ecx, edx
- ; gcrRegs -[ecx]
jl SHORT G_M31788_IG10
- ;; size=30 bbWeight=3.96 PerfScore 50.49
-G_M31788_IG11: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x18]
+ ;; size=31 bbWeight=3.96 PerfScore 57.42
+G_M31788_IG11: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi edi]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax]
jmp SHORT G_M31788_IG15
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M31788_IG12: ; bbWeight=0.02, gcVars=00000040 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M31788_IG12: ; bbWeight=0.02, gcVars=00000080 {V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
- ; GC ptr vars -{V06}
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V05 V06}
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
jmp SHORT G_M31788_IG07
;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M31788_IG13: ; bbWeight=0.04, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M31788_IG13: ; bbWeight=0.04, gcVars=000000A0 {V05 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars +{V06 V07}
- mov dword ptr [ebp-0x10], ecx
- mov edx, dword ptr [edi+4*ecx+0x08]
+ ; GC ptr vars +{V05 V06}
+ mov dword ptr [ebp-0x14], ecx
+ mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
call [esi+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
+ mov edi, dword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
+ cmp edi, dword ptr [edx+0x04]
jae SHORT G_M31788_IG18
- mov dword ptr [edx+4*ecx+0x08], eax
- inc ecx
- cmp ecx, ebx
+ mov dword ptr [edx+4*edi+0x08], eax
+ inc edi
+ mov eax, dword ptr [ebp-0x10]
+ cmp edi, eax
+ mov ecx, edi
jl SHORT G_M31788_IG17
- ;; size=33 bbWeight=0.04 PerfScore 0.66
-G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref
+ ;; size=38 bbWeight=0.04 PerfScore 0.71
+G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M31788_IG15: ; bbWeight=1, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M31788_IG15: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
push eax
; gcr arg push 0
push gword ptr [ebp+0x08]
; gcr arg push 1
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- ; GC ptr vars -{V05 V06 V07}
+ ; GC ptr vars -{V05 V06}
call [Sigil.Impl.LinqAlternative:_QuickSort[int,int](int[],int[],int[],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int]]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 2
- ;; size=15 bbWeight=1 PerfScore 6.25
-G_M31788_IG16: ; bbWeight=1, epilog, nogc, extend
+ ;; size=15 bbWeight=1.98 PerfScore 12.38
+G_M31788_IG16: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
...
+27 (+8.79%) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75
G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG10
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG11
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG22
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG16
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG28
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG27
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG24
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG23
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG23
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG22
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
...
+27 (+8.79%) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75
G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG10
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG11
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG22
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG16
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG28
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG27
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG24
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG23
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG23
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG22
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
...
coreclr_tests.run.windows.x86.checked.mch
-38 (-6.86%) : 229877.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
@@ -8,44 +8,44 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]>
-; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]>
-; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def
-; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx
-; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def
-; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def
+; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def
+; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill"
-; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp"
-; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp"
-; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp"
-; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
-; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
-; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp"
-; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp"
-; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp"
-; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp"
-; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp"
-; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp"
-; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp"
-; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate"
-; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate"
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 40
- mov esi, edx
- ; gcrRegs +[esi]
+ sub esp, 16
+ mov gword ptr [ebp-0x18], edx
+ ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50
+G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
xor edx, edx
test eax, eax
je SHORT G_M29033_IG06
;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edi, 8
jl SHORT G_M29033_IG06
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG04
;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG06
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08]
cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C]
sub edx, dword ptr [ecx+0x10]
cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C]
sub ebx, dword ptr [ecx+0x14]
cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx
mov edx, gword ptr [ecx+4*edx+0x18]
; gcrRegs +[edx]
cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10]
mov dword ptr [ebp-0x10], ebx
cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14]
mov dword ptr [ebp-0x14], ebx
mov ebx, dword ptr [ebp-0x10]
sub ebx, dword ptr [edx+0x10]
cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x18]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ mov esi, dword ptr [ebp-0x1C]
+ add esi, ebx
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x18]
- mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, dword ptr [ebp-0x1C]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- ;; size=189 bbWeight=0.50 PerfScore 43.38
-G_M29033_IG08: ; bbWeight=0.50, isz, extend
- mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x24]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ add esi, ebx
+ ;; size=187 bbWeight=1.98 PerfScore 172.75
+G_M29033_IG08: ; bbWeight=1.98, isz, extend
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x20]
- mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx
- mov ebx, dword ptr [ebp-0x28]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x30]
- mov ebx, dword ptr [edx+4*ebx+0x18]
...
-38 (-6.86%) : 236395.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
@@ -8,44 +8,44 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]>
-; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]>
-; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def
-; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx
-; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def
-; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def
+; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def
+; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill"
-; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp"
-; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp"
-; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp"
-; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
-; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
-; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp"
-; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp"
-; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp"
-; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp"
-; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp"
-; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp"
-; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp"
-; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate"
-; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate"
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 40
- mov esi, edx
- ; gcrRegs +[esi]
+ sub esp, 16
+ mov gword ptr [ebp-0x18], edx
+ ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50
+G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
xor edx, edx
test eax, eax
je SHORT G_M29033_IG06
;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edi, 8
jl SHORT G_M29033_IG06
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG04
;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG06
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08]
cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C]
sub edx, dword ptr [ecx+0x10]
cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C]
sub ebx, dword ptr [ecx+0x14]
cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx
mov edx, gword ptr [ecx+4*edx+0x18]
; gcrRegs +[edx]
cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10]
mov dword ptr [ebp-0x10], ebx
cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14]
mov dword ptr [ebp-0x14], ebx
mov ebx, dword ptr [ebp-0x10]
sub ebx, dword ptr [edx+0x10]
cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x18]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ mov esi, dword ptr [ebp-0x1C]
+ add esi, ebx
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x18]
- mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, dword ptr [ebp-0x1C]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- ;; size=189 bbWeight=0.50 PerfScore 43.38
-G_M29033_IG08: ; bbWeight=0.50, isz, extend
- mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x24]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ add esi, ebx
+ ;; size=187 bbWeight=1.98 PerfScore 172.75
+G_M29033_IG08: ; bbWeight=1.98, isz, extend
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x20]
- mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx
- mov ebx, dword ptr [ebp-0x28]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x30]
- mov ebx, dword ptr [edx+4*ebx+0x18]
...
-38 (-6.86%) : 365160.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (Tier0-FullOpts)
@@ -8,44 +8,44 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]>
-; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]>
-; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]>
-; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def
-; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx
-; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def
-; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def
+; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def
+; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill"
-; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill"
-; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp"
-; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp"
-; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp"
-; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
-; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
-; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp"
-; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp"
-; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp"
-; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp"
-; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp"
-; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp"
-; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp"
-; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp"
-; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp"
-; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate"
-; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate"
+; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 40
- mov esi, edx
- ; gcrRegs +[esi]
+ sub esp, 16
+ mov gword ptr [ebp-0x18], edx
+ ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50
+G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
xor edx, edx
test eax, eax
je SHORT G_M29033_IG06
;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edi, 8
jl SHORT G_M29033_IG06
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG04
;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04]
cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx
cmp edx, 8
jl SHORT G_M29033_IG06
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08]
cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C]
sub edx, dword ptr [ecx+0x10]
cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C]
sub ebx, dword ptr [ecx+0x14]
cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx
mov edx, gword ptr [ecx+4*edx+0x18]
; gcrRegs +[edx]
cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10]
mov dword ptr [ebp-0x10], ebx
cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14]
mov dword ptr [ebp-0x14], ebx
mov ebx, dword ptr [ebp-0x10]
sub ebx, dword ptr [edx+0x10]
cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x18]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ mov esi, dword ptr [ebp-0x1C]
+ add esi, ebx
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x18]
- mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx
- mov ebx, dword ptr [ebp-0x1C]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- ;; size=189 bbWeight=0.50 PerfScore 43.38
-G_M29033_IG08: ; bbWeight=0.50, isz, extend
- mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x24]
- mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19
+ add esi, ebx
+ ;; size=187 bbWeight=1.98 PerfScore 172.75
+G_M29033_IG08: ; bbWeight=1.98, isz, extend
+ mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18
- mov ebx, dword ptr [eax+0x20]
- mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19
+ mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx
- mov ebx, dword ptr [ebp-0x28]
- sub ebx, dword ptr [edx+0x10]
- cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
- imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
- mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10]
+ cmp esi, dword ptr [edx+0x08]
+ jae G_M29033_IG19
+ imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18
- mov ebx, dword ptr [ebp-0x34]
- add ebx, dword ptr [ebp-0x30]
- mov ebx, dword ptr [edx+4*ebx+0x18]
...
+44 (+6.40%) : 71364.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorCreate_CreateVectorInt64:ValidateResult(long[],long,long,System.String):this (FullOpts)
@@ -8,26 +8,26 @@
; 14 inlinees with PGO data; 27 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 2.50) ref -> edi this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt64>
+; V00 this [V00,T08] ( 3, 2.50) ref -> edi this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt64>
; V01 arg1 [V01,T04] ( 12, 13.08) ref -> esi class-hnd single-def <long[]>
;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def
;* V03 arg3 [V03 ] ( 0, 0 ) long -> zero-ref single-def
-; V04 arg4 [V04,T29] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.String>
-; V05 loc0 [V05,T16] ( 3, 2 ) ubyte -> edx
-; V06 loc1 [V06,T02] ( 10, 17.04) int -> ecx
-; V07 loc2 [V07,T03] ( 10, 17.04) int -> ecx
-; V08 loc3 [V08 ] ( 30, 14.00) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 arg4 [V04,T29] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.String>
+; V05 loc0 [V05,T05] ( 3, 4.96) ubyte -> ecx
+; V06 loc1 [V06,T02] ( 10, 17.04) int -> eax
+; V07 loc2 [V07,T03] ( 10, 17.04) int -> eax
+; V08 loc3 [V08 ] ( 30, 16.96) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V12 tmp3 [V12,T05] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
+; V12 tmp3 [V12,T06] ( 5, 13.88) ref -> eax class-hnd single-def "dup spill" <ushort[]>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp8 [V17,T12] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V17 tmp8 [V17,T13] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp10 [V19,T14] ( 3, 3 ) int -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V19 tmp10 [V19,T15] ( 3, 3 ) int -> [ebp-0x28] spill-single-def "Inlining Arg"
; V20 tmp11 [V20,T18] ( 2, 2.00) byref -> ebx single-def "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -38,14 +38,14 @@
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V30 tmp21 [V30,T06] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
+; V30 tmp21 [V30,T07] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V33 tmp24 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V34 tmp25 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V35 tmp26 [V35,T13] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V35 tmp26 [V35,T14] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V36 tmp27 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V37 tmp28 [V37,T15] ( 3, 3 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"
+; V37 tmp28 [V37,T16] ( 3, 3 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"
; V38 tmp29 [V38,T19] ( 2, 2.00) byref -> ebx single-def "Inlining Arg"
;* V39 tmp30 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp31 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -82,16 +82,18 @@
; V71 tmp62 [V71,T26] ( 2, 1 ) byref -> ecx single-def "field V48._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp63 [V72,T30] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP
; V73 tmp64 [V73,T17] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V74 rat0 [V74,T08] ( 3, 4.50) int -> [ebp+0x14] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP
-; V75 rat1 [V75,T09] ( 3, 4.50) int -> [ebp+0x18] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP
-; V76 rat2 [V76,T10] ( 3, 4.50) int -> [ebp+0x0C] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-INDEP
-; V77 rat3 [V77,T11] ( 3, 4.50) int -> [ebp+0x10] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-INDEP
-; V78 rat4 [V78,T00] ( 3, 23.76) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V79 rat5 [V79,T31] ( 3, 0.24) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V80 rat6 [V80,T01] ( 3, 23.76) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V81 rat7 [V81,T32] ( 3, 0.24) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V74 rat0 [V74,T09] ( 3, 4.50) int -> [ebp+0x14] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP
+; V75 rat1 [V75,T10] ( 3, 4.50) int -> [ebp+0x18] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP
+; V76 rat2 [V76,T11] ( 3, 4.50) int -> [ebp+0x0C] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-INDEP
+; V77 rat3 [V77,T12] ( 3, 4.50) int -> [ebp+0x10] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-INDEP
+; V78 rat4 [V78,T00] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V79 rat5 [V79,T31] ( 3, 0.24) byref -> [ebp-0x30] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T01] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V81 rat7 [V81,T32] ( 3, 0.24) byref -> [ebp-0x34] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 int -> [ebp-0x38]
+; TEMP_01 int -> [ebp-0x3C]
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -99,7 +101,7 @@ G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 32
+ sub esp, 48
vxorps xmm4, xmm4, xmm4
vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
@@ -111,8 +113,8 @@ G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs +[esi]
;; size=30 bbWeight=1 PerfScore 9.58
G_M7635_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, 1
- xor ecx, ecx
+ mov ecx, 1
+ xor eax, eax
test esi, esi
je SHORT G_M7635_IG06
;; size=11 bbWeight=1 PerfScore 1.75
@@ -121,85 +123,107 @@ G_M7635_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
jle SHORT G_M7635_IG06
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M7635_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- lea eax, bword ptr [esi+8*ecx+0x08]
- ; byrRegs +[eax]
- mov ebx, dword ptr [eax]
- mov eax, dword ptr [eax+0x04]
- ; byrRegs -[eax]
- xor ebx, dword ptr [ebp+0x14]
- xor eax, dword ptr [ebp+0x18]
- or eax, ebx
+ lea ebx, bword ptr [esi+8*eax+0x08]
+ ; byrRegs +[ebx]
+ mov edx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x04]
+ ; byrRegs -[ebx]
+ xor edx, dword ptr [ebp+0x14]
+ xor ebx, dword ptr [ebp+0x18]
+ or edx, ebx
jne SHORT G_M7635_IG07
- inc ecx
- test ecx, ecx
+ inc eax
+ test eax, eax
jle SHORT G_M7635_IG04
;; size=24 bbWeight=3.96 PerfScore 46.53
G_M7635_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M7635_IG08
;; size=2 bbWeight=1 PerfScore 2.00
G_M7635_IG06: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M7635_IG25
- lea eax, bword ptr [esi+8*ecx+0x08]
- ; byrRegs +[eax]
- mov ebx, dword ptr [eax]
- mov eax, dword ptr [eax+0x04]
- ; byrRegs -[eax]
+ cmp eax, dword ptr [esi+0x04]
+ jae G_M7635_IG26
+ lea ebx, bword ptr [esi+8*eax+0x08]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebp-0x30], ebx
+ ; GC ptr vars +{V79}
+ mov ebx, dword ptr [ebx]
+ ; byrRegs -[ebx]
+ mov dword ptr [ebp-0x38], ebx
+ mov ebx, bword ptr [ebp-0x30]
+ ; byrRegs +[ebx]
+ mov ebx, dword ptr [ebx+0x04]
+ ; byrRegs -[ebx]
+ mov dword ptr [ebp-0x3C], ebx
+ mov ebx, dword ptr [ebp-0x38]
xor ebx, dword ptr [ebp+0x14]
- xor eax, dword ptr [ebp+0x18]
- or eax, ebx
+ mov dword ptr [ebp-0x38], ebx
+ mov ebx, dword ptr [ebp-0x3C]
+ xor ebx, dword ptr [ebp+0x18]
+ or ebx, dword ptr [ebp-0x38]
jne SHORT G_M7635_IG07
- inc ecx
- test ecx, ecx
+ inc eax
+ test eax, eax
jle SHORT G_M7635_IG06
jmp SHORT G_M7635_IG08
- ;; size=35 bbWeight=0.04 PerfScore 0.71
-G_M7635_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- xor edx, edx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ ;; size=57 bbWeight=0.04 PerfScore 1.06
+G_M7635_IG07: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; GC ptr vars -{V79}
+ xor ecx, ecx
+ ;; size=2 bbWeight=1.98 PerfScore 0.49
G_M7635_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, 1
+ mov eax, 1
cmp dword ptr [esi+0x04], 2
jl SHORT G_M7635_IG11
;; size=11 bbWeight=1 PerfScore 4.25
G_M7635_IG09: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- lea eax, bword ptr [esi+8*ecx+0x08]
- ; byrRegs +[eax]
- mov ebx, dword ptr [eax]
- mov eax, dword ptr [eax+0x04]
- ; byrRegs -[eax]
- xor ebx, dword ptr [ebp+0x0C]
- xor eax, dword ptr [ebp+0x10]
- or eax, ebx
+ lea ebx, bword ptr [esi+8*eax+0x08]
+ ; byrRegs +[ebx]
+ mov edx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x04]
+ ; byrRegs -[ebx]
+ xor edx, dword ptr [ebp+0x0C]
+ xor ebx, dword ptr [ebp+0x10]
+ or edx, ebx
jne SHORT G_M7635_IG13
- inc ecx
- cmp ecx, 2
+ inc eax
+ cmp eax, 2
jl SHORT G_M7635_IG09
;; size=25 bbWeight=3.96 PerfScore 46.53
-G_M7635_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M7635_IG10: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M7635_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M7635_IG11: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04]
- jae G_M7635_IG25
- lea eax, bword ptr [esi+8*ecx+0x08]
- ; byrRegs +[eax]
- mov ebx, dword ptr [eax]
- mov eax, dword ptr [eax+0x04]
- ; byrRegs -[eax]
+ cmp eax, dword ptr [esi+0x04]
+ jae G_M7635_IG26
+ lea ebx, bword ptr [esi+8*eax+0x08]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebp-0x34], ebx
+ ; GC ptr vars +{V81}
+ mov ebx, dword ptr [ebx]
+ ; byrRegs -[ebx]
+ mov dword ptr [ebp-0x38], ebx
+ mov ebx, bword ptr [ebp-0x34]
+ ; byrRegs +[ebx]
+ mov ebx, dword ptr [ebx+0x04]
+ ; byrRegs -[ebx]
+ mov dword ptr [ebp-0x3C], ebx
+ mov ebx, dword ptr [ebp-0x38]
xor ebx, dword ptr [ebp+0x0C]
- xor eax, dword ptr [ebp+0x10]
- or eax, ebx
+ mov dword ptr [ebp-0x38], ebx
+ mov ebx, dword ptr [ebp-0x3C]
+ xor ebx, dword ptr [ebp+0x10]
+ or ebx, dword ptr [ebp-0x38]
jne SHORT G_M7635_IG13
- inc ecx
- cmp ecx, 2
+ inc eax
+ cmp eax, 2
jl SHORT G_M7635_IG11
- ;; size=34 bbWeight=0.04 PerfScore 0.63
...
+45 (+6.70%) : 238020.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T01] ( 13, 9.50) ref -> ebx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
; V02 arg2 [V02,T19] ( 3, 1.50) byref -> [ebp+0x18] single-def
; V03 arg3 [V03,T23] ( 1, 0.50) struct (16) [ebp+0x08] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V04 loc0 [V04,T05] ( 6, 4 ) ref -> [ebp-0x7C] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
+; V04 loc0 [V04,T06] ( 6, 4 ) ref -> [ebp-0x7C] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
; V05 loc1 [V05 ] ( 8, 5 ) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
; V06 loc2 [V06 ] ( 8, 5 ) struct (36) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs>
;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CodeAnalysis.BitVector>
@@ -27,14 +27,14 @@
;* V16 tmp8 [V16 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
; V18 tmp10 [V18,T02] ( 5, 5.25) int -> [ebp-0x5C] spill-single-def "Inline stloc first use temp"
-; V19 tmp11 [V19,T09] ( 4, 3 ) ubyte -> [ebp-0x60] "Inline stloc first use temp"
+; V19 tmp11 [V19,T05] ( 4, 4.48) ubyte -> [ebp-0x60] "Inline stloc first use temp"
; V20 tmp12 [V20,T00] ( 14, 20.52) int -> [ebp-0x64] "Inline stloc first use temp"
; V21 tmp13 [V21 ] ( 3, 9 ) struct (16) [ebp-0x74] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.BitVector>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol>
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (12) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V25 tmp17 [V25,T16] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-; V26 tmp18 [V26,T06] ( 4, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
+; V26 tmp18 [V26,T07] ( 4, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
; V27 tmp19 [V27,T11] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo[]>
;* V29 tmp21 [V29 ] ( 0, 0 ) long -> zero-ref single-def "field V07._bits0 (fldOffset=0x0)" P-INDEP
@@ -45,11 +45,11 @@
;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._bits (fldOffset=0x8)" P-INDEP
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref single-def "field V15._capacity (fldOffset=0xc)" P-INDEP
; V36 tmp28 [V36,T22] ( 2, 1 ) ref -> eax "field V16.array (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T07] ( 5, 3.25) ref -> edi single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V37 tmp29 [V37,T08] ( 5, 3.25) ref -> [ebp-0x84] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP
; V38 tmp30 [V38 ] ( 3, 9 ) long -> [ebp-0x74] do-not-enreg[X] addr-exposed "field V21._bits0 (fldOffset=0x0)" P-DEP
; V39 tmp31 [V39 ] ( 3, 9 ) ref -> [ebp-0x6C] do-not-enreg[X] addr-exposed "field V21._bits (fldOffset=0x8)" P-DEP
; V40 tmp32 [V40 ] ( 3, 9 ) int -> [ebp-0x68] do-not-enreg[X] addr-exposed "field V21._capacity (fldOffset=0xc)" P-DEP
-; V41 tmp33 [V41,T08] ( 6, 3.02) ref -> [ebp-0x84] spill-single-def "field V22.array (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T09] ( 6, 3.02) ref -> [ebp-0x88] spill-single-def "field V22.array (fldOffset=0x0)" P-INDEP
;* V42 tmp34 [V42 ] ( 0, 0 ) ref -> zero-ref "field V24.DefaultType (fldOffset=0x0)" P-INDEP
;* V43 tmp35 [V43 ] ( 0, 0 ) ref -> zero-ref "field V24._extensions (fldOffset=0x4)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V24.DefaultNullableAnnotation (fldOffset=0x8)" P-INDEP
@@ -63,7 +63,7 @@
; V52 cse0 [V52,T10] ( 4, 3 ) int -> [ebp-0x78] spill-single-def "CSE - moderate"
; V53 cse1 [V53,T20] ( 3, 1.50) ref -> ecx "CSE - conservative"
;
-; Lcl frame size = 120
+; Lcl frame size = 124
G_M47889_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -71,7 +71,7 @@ G_M47889_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 120
+ sub esp, 124
vzeroupper
vxorps xmm4, xmm4, xmm4
vmovdqu32 zmmword ptr [ebp-0x74], zmm4
@@ -201,109 +201,125 @@ G_M47889_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000048 {e
mov eax, dword ptr [eax+0x7C]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x84], eax
+ mov gword ptr [ebp-0x84], edi
+ ; GC ptr vars +{V37}
+ mov gword ptr [ebp-0x88], eax
; GC ptr vars +{V41}
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [ebp-0x74], xmm0
mov edx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x5C], edx
mov dword ptr [ebp-0x60], 1
- xor ecx, ecx
- mov dword ptr [ebp-0x64], ecx
+ xor eax, eax
+ ; gcrRegs -[eax]
test edx, edx
- ;; size=190 bbWeight=0.50 PerfScore 57.92
-G_M47889_IG07: ; bbWeight=0.50, isz, extend
- jle SHORT G_M47889_IG14
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M47889_IG08: ; bbWeight=0.25, gcVars=00000120 {V04 V41}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- test eax, eax
- je SHORT G_M47889_IG13
- mov eax, dword ptr [edi+0x04]
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x84]
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], edx
- jl SHORT G_M47889_IG15
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=193 bbWeight=0.50 PerfScore 57.92
+G_M47889_IG07: ; bbWeight=0.50, extend
+ jle G_M47889_IG16
+ ;; size=6 bbWeight=0.50 PerfScore 0.50
+G_M47889_IG08: ; bbWeight=0.25, gcVars=00000340 {V04 V37 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp gword ptr [ebp-0x88], 0
+ je G_M47889_IG15
+ mov edi, dword ptr [edi+0x04]
+ ; gcrRegs -[edi]
+ mov edi, gword ptr [ebp-0x88]
+ ; gcrRegs +[edi]
+ cmp dword ptr [edi+0x04], edx
+ jl SHORT G_M47889_IG14
+ ;; size=27 bbWeight=0.25 PerfScore 2.50
G_M47889_IG09: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
lea ecx, [ebp-0x74]
- mov edx, dword ptr [ebp-0x64]
+ mov dword ptr [ebp-0x64], eax
+ mov edx, eax
call [<unknown method>]
test eax, eax
jne SHORT G_M47889_IG11
- ;; size=16 bbWeight=3.96 PerfScore 22.77
+ ;; size=18 bbWeight=3.96 PerfScore 23.76
G_M47889_IG10: ; bbWeight=1.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push esi
- mov eax, dword ptr [ebp-0x64]
- push gword ptr [edi+4*eax+0x08]
- mov dword ptr [ebp-0x64], eax
- lea edx, [eax+2*eax]
+ mov eax, gword ptr [ebp-0x84]
+ ; gcrRegs +[eax]
+ mov ecx, dword ptr [ebp-0x64]
+ push gword ptr [eax+4*ecx+0x08]
+ mov dword ptr [ebp-0x64], ecx
+ lea edx, [ecx+2*ecx]
shl edx, 2
add edx, 8
- add edx, bword ptr [ebp-0x84]
+ add edx, edi
; byrRegs +[edx]
push dword ptr [edx+0x08]
push gword ptr [edx+0x04]
push gword ptr [edx]
push gword ptr [ebp-0x7C]
push 0
- lea ecx, [ebp-0x10]
- push ecx
+ lea edi, [ebp-0x10]
+ ; gcrRegs -[edi]
+ push edi
push 0
lea edx, [ebp-0x34]
; byrRegs -[edx]
mov ecx, ebx
; gcrRegs +[ecx]
call [<unknown method>]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M47889_IG11
+ jne SHORT G_M47889_IG13
xor ecx, ecx
- xor eax, eax
- mov dword ptr [ebp-0x60], eax
- ;; size=67 bbWeight=1.98 PerfScore 49.99
+ mov dword ptr [ebp-0x60], ecx
+ mov edi, gword ptr [ebp-0x88]
+ ; gcrRegs +[edi]
+ ;; size=73 bbWeight=1.98 PerfScore 49.99
G_M47889_IG11: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x64]
inc ecx
- mov dword ptr [ebp-0x64], ecx
cmp ecx, dword ptr [ebp-0x5C]
+ mov eax, ecx
jl SHORT G_M47889_IG09
- ;; size=12 bbWeight=3.96 PerfScore 20.79
-G_M47889_IG12: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=3.96 PerfScore 17.82
+G_M47889_IG12: ; bbWeight=1.98, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V41}
- jmp SHORT G_M47889_IG18
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M47889_IG13: ; bbWeight=0.12, gcVars=00000120 {V04 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ebx esi edi]
- ; GC ptr vars +{V08 V41}
- jmp SHORT G_M47889_IG15
+ ; GC ptr vars -{V37 V41}
+ jmp G_M47889_IG20
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
+G_M47889_IG13: ; bbWeight=0.99, gcVars=00000340 {V04 V37 V41}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ebx esi]
+ ; GC ptr vars +{V08 V09 V37 V41}
+ mov edi, gword ptr [ebp-0x88]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M47889_IG11
+ ;; size=8 bbWeight=0.99 PerfScore 2.97
+G_M47889_IG14: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, gword ptr [ebp-0x84]
+ jmp SHORT G_M47889_IG17
+ ;; size=8 bbWeight=0.12 PerfScore 0.38
+G_M47889_IG15: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M47889_IG17
;; size=2 bbWeight=0.12 PerfScore 0.25
-G_M47889_IG14: ; bbWeight=0.25, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47889_IG16: ; bbWeight=0.25, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V08 V41}
+ ; GC ptr vars -{V08 V09 V37 V41}
mov ebx, gword ptr [ebp-0x7C]
; gcrRegs +[ebx]
- jmp G_M47889_IG22
+ jmp G_M47889_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M47889_IG15: ; bbWeight=0.04, gcVars=00000120 {V04 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47889_IG17: ; bbWeight=0.04, gcVars=00000340 {V04 V37 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- ; GC ptr vars +{V08 V41}
+ ; GC ptr vars +{V08 V09 V37 V41}
lea ecx, [ebp-0x74]
- mov edx, dword ptr [ebp-0x64]
+ mov dword ptr [ebp-0x64], eax
+ mov edx, eax
call [<unknown method>]
test eax, eax
- jne SHORT G_M47889_IG17
- ;; size=16 bbWeight=0.04 PerfScore 0.23
-G_M47889_IG16: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M47889_IG19
+ ;; size=18 bbWeight=0.04 PerfScore 0.24
+G_M47889_IG18: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push esi
mov eax, dword ptr [ebp-0x64]
push gword ptr [edi+4*eax+0x08]
- mov ecx, gword ptr [ebp-0x84]
+ mov ecx, gword ptr [ebp-0x88]
; gcrRegs +[ecx]
cmp eax, dword ptr [ecx+0x04]
- jae G_M47889_IG25
+ jae G_M47889_IG28
mov dword ptr [ebp-0x64], eax
lea edx, [eax+2*eax]
shl edx, 2
@@ -326,25 +342,28 @@ G_M47889_IG16: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M47889_IG17
+ jne SHORT G_M47889_IG19
+ xor ecx, ecx
xor eax, eax
mov dword ptr [ebp-0x60], eax
- ;; size=76 bbWeight=0.02 PerfScore 0.57
-G_M47889_IG17: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=78 bbWeight=0.02 PerfScore 0.57
+G_M47889_IG19: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
...
+30 (+10.95%) : 240294.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
@@ -10,13 +10,13 @@
; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 18,194.33) int -> esi
+; V00 arg0 [V00,T00] ( 18,194.96) int -> esi
; V01 arg1 [V01,T05] ( 10, 8.84) int -> edi
-; V02 arg2 [V02,T12] ( 2, 1.00) byref -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T13] ( 2, 1.00) byref -> [ebp+0x08] single-def
-; V04 loc0 [V04,T08] ( 5, 4.52) int -> ebx
+; V02 arg2 [V02,T11] ( 2, 1.63) byref -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T12] ( 2, 1.63) byref -> [ebp+0x08] single-def
+; V04 loc0 [V04,T08] ( 5, 4.52) int -> [ebp-0x10] spill-single-def
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref
-; V06 loc2 [V06,T06] ( 4, 10.06) int -> [ebp-0x10]
+; V06 loc2 [V06,T06] ( 4, 10.69) int -> [ebp-0x14]
; V07 loc3 [V07,T02] ( 4, 49.73) int -> edi
;* V08 loc4 [V08 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V09 loc5 [V09 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
@@ -50,7 +50,7 @@
;* V37 loc33 [V37 ] ( 0, 0 ) ushort -> zero-ref
;* V38 loc34 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref
-; V40 loc36 [V40,T01] ( 4, 97.32) int -> eax
+; V40 loc36 [V40,T01] ( 4, 97.32) int -> ebx
; V41 tmp0 [V41,T09] ( 2, 1.04) int -> ecx
; V42 tmp1 [V42,T10] ( 2, 1.04) int -> ecx
;* V43 tmp2 [V43 ] ( 0, 0 ) int -> zero-ref
@@ -61,12 +61,12 @@
;* V48 tmp7 [V48 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V49 tmp8 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp9 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 rat0 [V51,T03] ( 8, 40.58) int -> edx "field V05.lo (fldOffset=0x0)" P-INDEP
-; V52 rat1 [V52,T04] ( 8, 40.58) int -> ecx "field V05.hi (fldOffset=0x4)" P-INDEP
-; V53 rat2 [V53,T11] ( 3, 1.20) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V54 rat3 [V54,T07] ( 3, 4.80) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V51 rat0 [V51,T03] ( 8, 41.21) int -> edx "field V05.lo (fldOffset=0x0)" P-INDEP
+; V52 rat1 [V52,T04] ( 8, 41.21) int -> ecx "field V05.hi (fldOffset=0x4)" P-INDEP
+; V53 rat2 [V53,T13] ( 3, 1.20) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V54 rat3 [V54,T07] ( 3, 8.58) byref -> edi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M64904_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -74,15 +74,17 @@ G_M64904_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
+ sub esp, 8
mov esi, ecx
mov edi, edx
- ;; size=11 bbWeight=1 PerfScore 5.75
-G_M64904_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, bword ptr [ebp+0x0C]
+ ; byrRegs +[ebx]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M64904_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test edi, edi
jge SHORT G_M64904_IG04
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -90,34 +92,37 @@ G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.80 PerfScore 2.80
-G_M64904_IG04: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG04: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test esi, esi
jne SHORT G_M64904_IG06
;; size=4 bbWeight=1.00 PerfScore 1.25
-G_M64904_IG05: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG05: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor ecx, ecx
test edi, edi
sete cl
test cl, cl
- je SHORT G_M64904_IG08
+ je SHORT G_M64904_IG09
;; size=11 bbWeight=0.52 PerfScore 1.43
-G_M64904_IG06: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG06: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, esi
mov edx, edi
call [<unknown method>]
- mov ebx, eax
- test ebx, ebx
- jl SHORT G_M64904_IG10
- ;; size=16 bbWeight=1.00 PerfScore 5.00
-G_M64904_IG07: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], eax
+ test eax, eax
+ jl SHORT G_M64904_IG08
+ ;; size=17 bbWeight=1.00 PerfScore 5.75
+G_M64904_IG07: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor ecx, ecx
- cmp edi, ebx
+ cmp edi, eax
setge cl
test cl, cl
- jne SHORT G_M64904_IG11
- jmp SHORT G_M64904_IG10
+ jne SHORT G_M64904_IG12
+ jmp SHORT G_M64904_IG11
;; size=13 bbWeight=0.52 PerfScore 2.47
-G_M64904_IG08: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+ jmp SHORT G_M64904_IG11
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M64904_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -126,16 +131,17 @@ G_M64904_IG08: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000
; gcrRegs -[ecx edx]
jmp SHORT G_M64904_IG06
;; size=18 bbWeight=0.80 PerfScore 4.40
-G_M64904_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG10: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor edx, edx
xor ecx, ecx
- xor ebx, ebx
+ xor eax, eax
lea edi, [esi+2*edi]
cmp esi, edi
- jae SHORT G_M64904_IG18
- jmp SHORT G_M64904_IG16
- ;; size=15 bbWeight=0.80 PerfScore 3.60
-G_M64904_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jae SHORT G_M64904_IG20
+ mov bword ptr [ebp+0x0C], ebx
+ jmp SHORT G_M64904_IG17
+ ;; size=18 bbWeight=0.80 PerfScore 4.40
+G_M64904_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -143,104 +149,114 @@ G_M64904_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=1 PerfScore 3.50
-G_M64904_IG11: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea esi, [esi+2*ebx]
- sub edi, ebx
- jne SHORT G_M64904_IG09
- ;; size=7 bbWeight=1.00 PerfScore 1.75
-G_M64904_IG12: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edi, bword ptr [ebp+0x0C]
- ; byrRegs +[edi]
+G_M64904_IG12: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ lea esi, [esi+2*eax]
+ sub edi, eax
+ jne SHORT G_M64904_IG10
+ ;; size=10 bbWeight=1.00 PerfScore 2.75
+G_M64904_IG13: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
xor eax, eax
- mov dword ptr [edi], eax
- ;; size=7 bbWeight=0.20 PerfScore 0.45
-G_M64904_IG13: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
- mov dword ptr [edi+0x04], eax
+ mov dword ptr [ebx], eax
+ ;; size=4 bbWeight=0.20 PerfScore 0.25
+G_M64904_IG14: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
+ mov dword ptr [ebx+0x04], eax
;; size=3 bbWeight=0.20 PerfScore 0.20
-G_M64904_IG14: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[edi]
- mov edi, bword ptr [ebp+0x08]
- ; byrRegs +[edi]
- mov dword ptr [edi], eax
+G_M64904_IG15: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[ebx]
+ mov ebx, bword ptr [ebp+0x08]
+ ; byrRegs +[ebx]
+ mov dword ptr [ebx], eax
mov eax, esi
;; size=7 bbWeight=0.20 PerfScore 0.45
-G_M64904_IG15: ; bbWeight=0.20, epilog, nogc, extend
- pop ecx
+G_M64904_IG16: ; bbWeight=0.20, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=0.20 PerfScore 0.90
-G_M64904_IG16: ; bbWeight=38.62, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[edi]
- movzx eax, word ptr [esi]
- cmp eax, 127
- ja SHORT G_M64904_IG20
+ ;; size=10 bbWeight=0.20 PerfScore 0.90
+G_M64904_IG17: ; bbWeight=38.62, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[ebx]
+ movzx ebx, word ptr [esi]
+ cmp ebx, 127
+ ja SHORT G_M64904_IG22
;; size=8 bbWeight=38.62 PerfScore 125.52
-G_M64904_IG17: ; bbWeight=42.91, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG18: ; bbWeight=42.91, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
add esi, 2
cmp esi, edi
- jb SHORT G_M64904_IG16
+ jb SHORT G_M64904_IG17
;; size=7 bbWeight=42.91 PerfScore 64.37
-G_M64904_IG18: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edi, bword ptr [ebp+0x0C]
+G_M64904_IG19: ; bbWeight=21.46, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, bword ptr [ebp+0x0C]
+ ; byrRegs +[ebx]
+ ;; size=3 bbWeight=21.46 PerfScore 21.46
+G_M64904_IG20: ; bbWeight=1.43, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
+ mov edi, ebx
; byrRegs +[edi]
- mov eax, edi
- ; byrRegs +[eax]
- mov dword ptr [eax], edx
- mov dword ptr [eax+0x04], ecx
- mov edi, bword ptr [ebp+0x08]
- mov dword ptr [edi], ebx
+ mov dword ptr [edi], edx
+ mov dword ptr [edi+0x04], ecx
+ mov ebx, bword ptr [ebp+0x08]
+ mov dword ptr [ebx], eax
mov eax, esi
- ; byrRegs -[eax]
- ;; size=17 bbWeight=0.80 PerfScore 4.40
-G_M64904_IG19: ; bbWeight=0.80, epilog, nogc, extend
- pop ecx
+ ;; size=14 bbWeight=1.43 PerfScore 6.43
+G_M64904_IG21: ; bbWeight=1.43, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=0.80 PerfScore 3.60
-G_M64904_IG20: ; bbWeight=10.04, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[edi]
- mov dword ptr [ebp-0x10], ebx
- lea ebx, [eax+0x0001F800]
...
libraries.crossgen2.windows.x86.checked.mch
-22 (-8.91%) : 153759.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
@@ -13,17 +13,17 @@
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
-; V04 loc2 [V04,T05] ( 4, 5 ) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>>
-; V05 loc3 [V05,T04] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
+; V04 loc2 [V04,T04] ( 4, 6.48) ref -> ebx class-hnd exact single-def <<unknown class>>
+; V05 loc3 [V05,T05] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
; V06 loc4 [V06,T00] ( 11, 20.50) int -> [ebp-0x14]
; V07 loc5 [V07 ] ( 4, 8 ) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers>
-; V08 tmp0 [V08,T06] ( 3, 2 ) ref -> eax single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp0 [V08,T06] ( 3, 3.48) ref -> eax single-def "field V02.array (fldOffset=0x0)" P-INDEP
; V09 tmp1 [V09,T03] ( 7, 7.25) ref -> edi "field V03.array (fldOffset=0x0)" P-INDEP
; V10 tmp2 [V10 ] ( 4, 8 ) ref -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V07.Type (fldOffset=0x0)" P-DEP
; V11 tmp3 [V11 ] ( 2, 4 ) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07.CustomModifiers (fldOffset=0x4)" P-DEP
; V12 tmp4 [V12,T01] ( 4, 16 ) ref -> ecx "argument with side effect"
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M55964_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -31,7 +31,7 @@ G_M55964_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 16
xor eax, eax
mov dword ptr [ebp-0x1C], eax
mov dword ptr [ebp-0x18], eax
@@ -60,33 +60,33 @@ G_M55964_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
mov eax, gword ptr [eax]
; gcrRegs +[eax]
; byrRegs -[eax]
- jmp G_M55964_IG12
+ jmp G_M55964_IG10
;; size=13 bbWeight=0.50 PerfScore 3.50
G_M55964_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] +[esi edi]
mov ecx, dword ptr [edi+0x04]
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V04}
+ mov ebx, eax
+ ; gcrRegs +[ebx]
mov eax, dword ptr [edi+0x04]
; gcrRegs -[eax]
dec eax
mov dword ptr [ebp-0x10], eax
xor edx, edx
test eax, eax
- jl SHORT G_M55964_IG08
- ;; size=25 bbWeight=0.50 PerfScore 5.38
-G_M55964_IG05: ; bbWeight=0.25, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jl SHORT G_M55964_IG09
+ ;; size=24 bbWeight=0.50 PerfScore 5.00
+G_M55964_IG05: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], eax
- jle SHORT G_M55964_IG09
+ jle SHORT G_M55964_IG08
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] ; const ptr
- push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] ; const ptr
+ push gword ptr [esi+eax]
lea edx, [ebp-0x1C]
cmp dword ptr [ecx], ecx
call [<unknown method>]
@@ -97,35 +97,26 @@ G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx] +[eax]
push eax
mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14]
- inc ebx
- cmp ebx, dword ptr [ebp-0x10]
- mov edx, ebx
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ cmp edx, dword ptr [ebp-0x10]
jle SHORT G_M55964_IG06
- ;; size=60 bbWeight=3.96 PerfScore 110.88
-G_M55964_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=56 bbWeight=3.96 PerfScore 106.92
+G_M55964_IG07: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp SHORT G_M55964_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M55964_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp SHORT G_M55964_IG11
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M55964_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[esi edi]
+ jmp SHORT G_M55964_IG09
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M55964_IG08: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi edi]
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)]
- push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)]
+ push gword ptr [esi+eax]
lea edx, [ebp-0x1C]
cmp dword ptr [ecx], ecx
call [<unknown method>]
@@ -136,30 +127,25 @@ G_M55964_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx] +[eax]
push eax
mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14]
- inc ebx
- mov edx, dword ptr [ebp-0x10]
- cmp ebx, edx
- jle SHORT G_M55964_IG13
- ;; size=60 bbWeight=0.04 PerfScore 1.08
-G_M55964_IG10: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ mov ecx, dword ptr [ebp-0x10]
+ cmp edx, ecx
+ jle SHORT G_M55964_IG08
+ ;; size=58 bbWeight=0.04 PerfScore 1.05
+G_M55964_IG09: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M55964_IG11: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [(reloc)] ; <unknown method>
mov ecx, ebx
; gcrRegs +[ecx]
- ; GC ptr vars -{V04}
call [<unknown method>]
; gcrRegs -[ecx ebx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.62
-G_M55964_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=14 bbWeight=1.98 PerfScore 10.39
+G_M55964_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -167,13 +153,7 @@ G_M55964_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M55964_IG13: ; bbWeight=0.02, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi edi]
- ; GC ptr vars +{V04 V05}
- mov edx, ebx
- jmp SHORT G_M55964_IG09
- ;; size=4 bbWeight=0.02 PerfScore 0.05
-; Total bytes of code 247, prolog size 17, PerfScore 151.02, instruction count 84, allocated bytes for code 247 (MethodHash=fa9c2563) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 225, prolog size 17, PerfScore 156.07, instruction count 77, allocated bytes for code 225 (MethodHash=fa9c2563) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================
-22 (-8.63%) : 153757.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
@@ -14,18 +14,18 @@
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
-; V05 loc2 [V05,T05] ( 4, 5 ) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>>
-; V06 loc3 [V06,T04] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
+; V05 loc2 [V05,T04] ( 4, 6.48) ref -> ebx class-hnd exact single-def <<unknown class>>
+; V06 loc3 [V06,T05] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
; V07 loc4 [V07,T00] ( 11, 20.50) int -> [ebp-0x14]
; V08 loc5 [V08 ] ( 4, 8 ) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers>
-; V09 tmp0 [V09,T07] ( 3, 2 ) ref -> eax single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp0 [V09,T07] ( 3, 3.48) ref -> eax single-def "field V03.array (fldOffset=0x0)" P-INDEP
; V10 tmp1 [V10,T03] ( 7, 7.25) ref -> edi "field V04.array (fldOffset=0x0)" P-INDEP
; V11 tmp2 [V11 ] ( 4, 8 ) ref -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP
; V12 tmp3 [V12 ] ( 2, 4 ) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V08.CustomModifiers (fldOffset=0x4)" P-DEP
; V13 tmp4 [V13,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
; V14 tmp5 [V14,T01] ( 4, 16 ) ref -> ecx "argument with side effect"
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M24968_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M24968_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 16
xor eax, eax
mov dword ptr [ebp-0x1C], eax
mov dword ptr [ebp-0x18], eax
@@ -64,33 +64,33 @@ G_M24968_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
mov eax, gword ptr [eax]
; gcrRegs +[eax]
; byrRegs -[eax]
- jmp G_M24968_IG12
+ jmp G_M24968_IG10
;; size=13 bbWeight=0.50 PerfScore 3.50
G_M24968_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] +[esi edi]
mov ecx, dword ptr [edi+0x04]
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V05}
+ mov ebx, eax
+ ; gcrRegs +[ebx]
mov eax, dword ptr [edi+0x04]
; gcrRegs -[eax]
dec eax
mov dword ptr [ebp-0x10], eax
xor edx, edx
test eax, eax
- jl SHORT G_M24968_IG08
- ;; size=25 bbWeight=0.50 PerfScore 5.38
-G_M24968_IG05: ; bbWeight=0.25, gcVars=00000020 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jl SHORT G_M24968_IG09
+ ;; size=24 bbWeight=0.50 PerfScore 5.00
+G_M24968_IG05: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], eax
- jle SHORT G_M24968_IG09
+ jle SHORT G_M24968_IG08
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] ; const ptr
- push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] ; const ptr
+ push gword ptr [esi+eax]
lea edx, [ebp-0x1C]
cmp dword ptr [ecx], ecx
call [<unknown method>]
@@ -101,35 +101,26 @@ G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx] +[eax]
push eax
mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14]
- inc ebx
- cmp ebx, dword ptr [ebp-0x10]
- mov edx, ebx
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ cmp edx, dword ptr [ebp-0x10]
jle SHORT G_M24968_IG06
- ;; size=60 bbWeight=3.96 PerfScore 110.88
-G_M24968_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=56 bbWeight=3.96 PerfScore 106.92
+G_M24968_IG07: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp SHORT G_M24968_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M24968_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp SHORT G_M24968_IG11
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M24968_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[esi edi]
+ jmp SHORT G_M24968_IG09
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M24968_IG08: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi edi]
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)]
- push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)]
+ push gword ptr [esi+eax]
lea edx, [ebp-0x1C]
cmp dword ptr [ecx], ecx
call [<unknown method>]
@@ -140,30 +131,25 @@ G_M24968_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx] +[eax]
push eax
mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14]
- inc ebx
- mov edx, dword ptr [ebp-0x10]
- cmp ebx, edx
- jle SHORT G_M24968_IG13
- ;; size=60 bbWeight=0.04 PerfScore 1.08
-G_M24968_IG10: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ mov ecx, dword ptr [ebp-0x10]
+ cmp edx, ecx
+ jle SHORT G_M24968_IG08
+ ;; size=58 bbWeight=0.04 PerfScore 1.05
+G_M24968_IG09: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M24968_IG11: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [(reloc)] ; <unknown method>
mov ecx, ebx
; gcrRegs +[ecx]
- ; GC ptr vars -{V05}
call [<unknown method>]
; gcrRegs -[ecx ebx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.62
-G_M24968_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=14 bbWeight=1.98 PerfScore 10.39
+G_M24968_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -171,13 +157,7 @@ G_M24968_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M24968_IG13: ; bbWeight=0.02, gcVars=00000020 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi edi]
- ; GC ptr vars +{V05}
- mov edx, ebx
- jmp SHORT G_M24968_IG09
- ;; size=4 bbWeight=0.02 PerfScore 0.05
-; Total bytes of code 255, prolog size 17, PerfScore 154.02, instruction count 86, allocated bytes for code 255 (MethodHash=80a39e77) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 233, prolog size 17, PerfScore 159.07, instruction count 79, allocated bytes for code 233 (MethodHash=80a39e77) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================
-42 (-7.46%) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
@@ -8,22 +8,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 18, 17.58) ref -> [ebp-0x1C] class-hnd single-def <int[]>
+; V00 arg0 [V00,T07] ( 18, 23.44) ref -> esi class-hnd single-def <int[]>
; V01 arg1 [V01,T11] ( 3, 17 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V02 arg2 [V02,T06] ( 5, 19 ) ref -> [ebp-0x20] class-hnd single-def <System.String[]>
-; V03 loc0 [V03,T07] ( 13, 20.85) ref -> [ebp-0x24] class-hnd exact spill-single-def <<unknown class>>
-; V04 loc1 [V04,T01] ( 24, 73.81) int -> edx
+; V02 arg2 [V02,T08] ( 5, 19.98) ref -> [ebp-0x1C] class-hnd single-def <System.String[]>
+; V03 loc0 [V03,T09] ( 13, 20.85) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>>
+; V04 loc1 [V04,T00] ( 24, 92.87) int -> edx
; V05 loc2 [V05,T10] ( 10, 17.04) int -> ecx
-; V06 loc3 [V06,T05] ( 14, 33.02) int -> [ebp-0x10]
-; V07 loc4 [V07,T00] ( 16, 76 ) int -> [ebp-0x14]
-; V08 loc5 [V08,T09] ( 12, 18.54) int -> ecx
+; V06 loc3 [V06,T05] ( 14, 34 ) int -> [ebp-0x10]
+; V07 loc4 [V07,T01] ( 16, 76 ) int -> [ebp-0x14]
+; V08 loc5 [V08,T06] ( 12, 25.88) int -> ecx
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.String>
-; V10 tmp1 [V10,T04] ( 22, 55.24) int -> ebx "V01.[004..008)"
+; V10 tmp1 [V10,T04] ( 22, 56.72) int -> ebx "V01.[004..008)"
; V11 tmp2 [V11,T02] ( 4, 64 ) ref -> eax "argument with side effect"
; V12 tmp3 [V12,T03] ( 4, 64 ) ref -> edi "argument with side effect"
-; V13 cse0 [V13,T12] ( 5, 6.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 cse0 [V13,T12] ( 5, 8.46) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M50985_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -31,88 +31,77 @@ G_M50985_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
- mov edi, ecx
- ; gcrRegs +[edi]
- mov esi, edx
+ sub esp, 20
+ mov esi, ecx
; gcrRegs +[esi]
+ mov edi, edx
+ ; gcrRegs +[edi]
;; size=13 bbWeight=1 PerfScore 5.00
G_M50985_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [ebp+0x0C]
mov ecx, ebx
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x24], eax
+ mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V03}
xor ecx, ecx
test ebx, ebx
jle SHORT G_M50985_IG07
;; size=20 bbWeight=1 PerfScore 6.75
-G_M50985_IG03: ; bbWeight=0.50, gcVars=00000080 {V03}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- test edi, edi
+G_M50985_IG03: ; bbWeight=0.50, gcVars=00000200 {V03}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ test esi, esi
je SHORT G_M50985_IG06
- cmp dword ptr [edi+0x04], ebx
+ cmp dword ptr [esi+0x04], ebx
jl SHORT G_M50985_IG06
;; size=9 bbWeight=0.50 PerfScore 2.62
G_M50985_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [edi+4*ecx+0x08], -1
+ mov dword ptr [esi+4*ecx+0x08], -1
inc ecx
cmp ecx, ebx
jl SHORT G_M50985_IG04
;; size=13 bbWeight=3.96 PerfScore 9.90
-G_M50985_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M50985_IG05: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50985_IG07
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M50985_IG06: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [edi+0x04]
- jae G_M50985_IG46
- mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V00}
- mov dword ptr [edi+4*ecx+0x08], -1
+ cmp ecx, dword ptr [esi+0x04]
+ jae G_M50985_IG44
+ mov dword ptr [esi+4*ecx+0x08], -1
inc ecx
cmp ecx, ebx
- mov edi, gword ptr [ebp-0x1C]
jl SHORT G_M50985_IG06
- ;; size=28 bbWeight=0.04 PerfScore 0.34
-G_M50985_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
- ; GC ptr vars -{V00}
+ ;; size=22 bbWeight=0.04 PerfScore 0.26
+G_M50985_IG07: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
xor edx, edx
- mov ecx, dword ptr [esi+0x04]
+ mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x18], ecx
test ecx, ecx
- jle G_M50985_IG23
- ;; size=16 bbWeight=1 PerfScore 4.50
-G_M50985_IG08: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ jle G_M50985_IG21
+ ;; size=16 bbWeight=1.98 PerfScore 8.91
+G_M50985_IG08: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+0x04], ecx
- jl G_M50985_IG16
- ;; size=9 bbWeight=0.50 PerfScore 2.00
+ jl SHORT G_M50985_IG15
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
G_M50985_IG09: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
xor ecx, ecx
test ebx, ebx
- jle SHORT G_M50985_IG14
+ jle SHORT G_M50985_IG13
;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M50985_IG10: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M50985_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V00}
- ;; size=3 bbWeight=1.98 PerfScore 1.98
-G_M50985_IG11: ; bbWeight=15.84, gcVars=00000180 {V00 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
- mov gword ptr [ebp-0x20], esi
; GC ptr vars +{V02}
mov dword ptr [ebp-0x10], edx
- mov edi, gword ptr [esi+4*edx+0x08]
- ; gcrRegs +[edi]
- mov esi, bword ptr [ebp+0x08]
- ; gcrRegs -[esi]
- ; byrRegs +[esi]
+ mov edi, gword ptr [edi+4*edx+0x08]
+ mov eax, bword ptr [ebp+0x08]
+ ; byrRegs +[eax]
mov dword ptr [ebp-0x14], ecx
- mov ecx, gword ptr [esi+4*ecx]
+ mov ecx, gword ptr [eax+4*ecx]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
- ; byrRegs -[esi]
+ ; byrRegs -[eax]
mov edx, eax
; gcrRegs +[edx]
mov ecx, edi
@@ -121,84 +110,71 @@ G_M50985_IG11: ; bbWeight=15.84, gcVars=00000180 {V00 V03}, gcrefRegs=000
call [System.String:Equals(System.String):ubyte:this]
; gcrRegs -[eax ecx edx edi]
test eax, eax
- jne SHORT G_M50985_IG13
- mov esi, dword ptr [ebp-0x14]
- inc esi
- cmp esi, ebx
- mov ecx, esi
+ jne SHORT G_M50985_IG12
+ mov edi, dword ptr [ebp-0x14]
+ inc edi
+ cmp edi, ebx
+ mov ecx, edi
mov edx, dword ptr [ebp-0x10]
- mov esi, gword ptr [ebp-0x20]
- ; gcrRegs +[esi]
- jl SHORT G_M50985_IG11
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ jl SHORT G_M50985_IG10
;; size=59 bbWeight=15.84 PerfScore 419.76
-G_M50985_IG12: ; bbWeight=3.96, gcVars=00000180 {V00 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M50985_IG11: ; bbWeight=3.96, gcVars=00000200 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x1C]
- ; gcrRegs +[edi]
- jmp SHORT G_M50985_IG14
- ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50985_IG13: ; bbWeight=1.98, gcVars=000001C0 {V00 V02 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi edi]
- ; GC ptr vars +{V02 V06}
- mov esi, dword ptr [ebp-0x14]
- mov edi, gword ptr [ebp-0x1C]
- ; gcrRegs +[edi]
- cmp esi, dword ptr [edi+0x04]
- jae G_M50985_IG46
- mov gword ptr [ebp-0x1C], edi
+ jmp SHORT G_M50985_IG13
+ ;; size=2 bbWeight=3.96 PerfScore 7.92
+G_M50985_IG12: ; bbWeight=1.98, gcVars=00000300 {V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars +{V02 V08}
+ mov edi, dword ptr [ebp-0x14]
+ cmp edi, dword ptr [esi+0x04]
+ jae G_M50985_IG44
mov ecx, dword ptr [ebp-0x10]
- mov dword ptr [edi+4*esi+0x08], ecx
- mov eax, gword ptr [ebp-0x24]
+ mov dword ptr [esi+4*edi+0x08], ecx
+ mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
mov byte ptr [eax+ecx+0x08], 1
mov edx, ecx
- mov ecx, esi
- mov esi, gword ptr [ebp-0x20]
- ; gcrRegs +[esi]
+ mov ecx, edi
mov edi, gword ptr [ebp-0x1C]
- ;; size=43 bbWeight=1.98 PerfScore 26.73
-G_M50985_IG14: ; bbWeight=3.96, gcVars=00000080 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi]
+ ;; size=34 bbWeight=1.98 PerfScore 20.79
+G_M50985_IG13: ; bbWeight=3.96, gcVars=00000200 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars -{V00 V02 V06}
+ ; GC ptr vars -{V02 V08}
cmp ecx, ebx
- je G_M50985_IG44
+ je G_M50985_IG42
inc edx
cmp dword ptr [ebp-0x18], edx
- jg G_M50985_IG09
- ;; size=18 bbWeight=3.96 PerfScore 17.82
-G_M50985_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x24]
+ jg SHORT G_M50985_IG09
+ ;; size=14 bbWeight=3.96 PerfScore 17.82
+G_M50985_IG14: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edi]
+ mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
- jmp G_M50985_IG23
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M50985_IG16: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[esi]
+ jmp G_M50985_IG21
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
+G_M50985_IG15: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[edi]
xor ecx, ecx
test ebx, ebx
- jle SHORT G_M50985_IG21
+ jle SHORT G_M50985_IG19
;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M50985_IG17: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M50985_IG16: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x1C], edi
...
+20 (+9.01%) : 268671.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
@@ -8,15 +8,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 3, 2.50) ref -> [ebp-0x18] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
-; V01 arg1 [V01,T02] ( 5, 6.50) ref -> esi class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
-; V02 arg2 [V02,T05] ( 3, 5 ) ref -> ebx class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V03 arg3 [V03,T04] ( 5, 5.04) ref -> edi class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V04 arg4 [V04,T07] ( 2, 1.50) int -> [ebp+0x0C] single-def
-; V05 arg5 [V05,T08] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V00 this [V00,T04] ( 3, 3.98) ref -> [ebp-0x18] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T02] ( 5, 7.98) ref -> esi class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
+; V02 arg2 [V02,T06] ( 3, 5 ) ref -> [ebp+0x14] class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V03 arg3 [V03,T05] ( 5, 5.04) ref -> ebx class-hnd single-def <System.Xml.XmlDictionaryString[]>
+; V04 arg4 [V04,T07] ( 2, 2.98) int -> [ebp+0x0C] single-def
+; V05 arg5 [V05,T08] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
; V06 loc0 [V06,T00] ( 16, 23.08) int -> [ebp-0x10]
-; V07 tmp0 [V07,T01] ( 4, 16 ) ref -> eax "argument with side effect"
-; V08 cse0 [V08,T03] ( 7, 7.04) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V07 tmp0 [V07,T01] ( 4, 16 ) ref -> edi "argument with side effect"
+; V08 cse0 [V08,T03] ( 7, 8.52) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 12
@@ -31,146 +31,156 @@ G_M60484_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
- mov ebx, gword ptr [ebp+0x14]
+ mov eax, gword ptr [ebp+0x14]
+ ; gcrRegs +[eax]
+ mov ebx, gword ptr [ebp+0x10]
; gcrRegs +[ebx]
- mov edi, gword ptr [ebp+0x10]
- ; gcrRegs +[edi]
mov ecx, dword ptr [ebp+0x0C]
;; size=23 bbWeight=1 PerfScore 8.75
-G_M60484_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M60484_IG02: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp+0x0C], ecx
lea edx, [ecx+0x01]
- mov ecx, dword ptr [ebx+0x04]
+ mov ecx, dword ptr [eax+0x04]
mov dword ptr [ebp-0x14], ecx
cmp ecx, edx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jle SHORT G_M60484_IG09
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
+ jle SHORT G_M60484_IG10
;; size=19 bbWeight=1 PerfScore 6.75
G_M60484_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- test edi, edi
- je SHORT G_M60484_IG08
+ test ebx, ebx
+ je SHORT G_M60484_IG09
test edx, edx
+ jl SHORT G_M60484_IG08
+ cmp dword ptr [ebx+0x04], ecx
+ mov gword ptr [ebp-0x18], edi
+ ; GC ptr vars +{V00}
jl SHORT G_M60484_IG07
- cmp dword ptr [edi+0x04], ecx
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V00}
- jl SHORT G_M60484_IG06
;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M60484_IG04: ; bbWeight=3.96, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebx+4*edx+0x08]
- ; gcrRegs +[eax]
+G_M60484_IG04: ; bbWeight=3.96, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi]
+ mov gword ptr [ebp+0x14], eax
+ mov edi, gword ptr [eax+4*edx+0x08]
+ ; gcrRegs +[edi]
mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [ebx+4*edx+0x08]
+ mov edx, edi
; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
- jne SHORT G_M60484_IG15
- mov edx, dword ptr [ebp-0x10]
- inc edx
+ jne G_M60484_IG16
+ mov edi, dword ptr [ebp-0x10]
+ inc edi
mov eax, dword ptr [ebp-0x14]
- cmp eax, edx
- jg SHORT G_M60484_IG04
- ;; size=38 bbWeight=3.96 PerfScore 64.35
-G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
- mov eax, gword ptr [ebp-0x18]
+ cmp eax, edi
+ mov edx, edi
+ jg SHORT G_M60484_IG06
+ ;; size=47 bbWeight=3.96 PerfScore 69.30
+G_M60484_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M60484_IG13
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M60484_IG06: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi] +[ebx]
+ mov eax, gword ptr [ebp+0x14]
; gcrRegs +[eax]
- jmp SHORT G_M60484_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ebx edi]
+ jmp SHORT G_M60484_IG04
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M60484_IG07: ; bbWeight=0.25, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
+G_M60484_IG08: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[edi]
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG08: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M60484_IG09: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG09: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
+G_M60484_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ebx]
; GC ptr vars -{V00}
- jmp SHORT G_M60484_IG12
+ jmp SHORT G_M60484_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG10: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[ebx edi]
- ; GC ptr vars +{V00 V06}
+G_M60484_IG11: ; bbWeight=0.04, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax ebx]
+ ; GC ptr vars +{V00 V04}
cmp edx, ecx
- jae SHORT G_M60484_IG17
- mov eax, gword ptr [ebx+4*edx+0x08]
- ; gcrRegs +[eax]
- cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M60484_IG17
+ jae SHORT G_M60484_IG18
+ mov gword ptr [ebp+0x14], eax
+ mov edi, gword ptr [eax+4*edx+0x08]
+ ; gcrRegs +[edi]
+ cmp edx, dword ptr [ebx+0x04]
+ jae SHORT G_M60484_IG18
mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [ebx+4*edx+0x08]
+ mov edx, edi
; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
- jne SHORT G_M60484_IG15
- mov eax, dword ptr [ebp-0x10]
- inc eax
- cmp dword ptr [ebp-0x14], eax
- mov edx, eax
- jg SHORT G_M60484_IG14
- ;; size=47 bbWeight=0.04 PerfScore 0.90
-G_M60484_IG11: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx edi]
- mov eax, gword ptr [ebp-0x18]
+ jne SHORT G_M60484_IG16
+ mov edi, dword ptr [ebp-0x10]
+ inc edi
+ cmp dword ptr [ebp-0x14], edi
+ mov edx, edi
+ mov eax, gword ptr [ebp+0x14]
; gcrRegs +[eax]
+ jg SHORT G_M60484_IG15
+ ;; size=53 bbWeight=0.04 PerfScore 0.98
+G_M60484_IG12: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ebx]
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M60484_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V00 V06}
+G_M60484_IG13: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V04}
push gword ptr [ebp+0x08]
push dword ptr [ebp+0x0C]
- mov ecx, eax
+ mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
call [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
- ; gcrRegs -[eax ecx edx esi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, dword ptr [ebp-0x14]
- ;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M60484_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=19 bbWeight=1.98 PerfScore 12.87
+G_M60484_IG14: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 16
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M60484_IG14: ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ebx esi edi]
- ; GC ptr vars +{V00 V06}
+ ;; size=10 bbWeight=1.98 PerfScore 8.91
+G_M60484_IG15: ; bbWeight=0.02, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[eax ebx esi]
+ ; GC ptr vars +{V00 V04}
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M60484_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
...
+13 (+11.50%) : 70150.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
@@ -8,19 +8,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [ebp-0x14] this class-hnd single-def <System.Data.DataColumnCollection>
+; V00 this [V00,T07] ( 4, 4.98) ref -> [ebp-0x18] this class-hnd single-def <System.Data.DataColumnCollection>
; V01 arg1 [V01,T03] ( 3, 5.96) ref -> esi class-hnd single-def <System.Data.DataColumn>
-; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>>
-; V03 loc1 [V03,T06] ( 4, 5.96) ref -> eax class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x1C] class-hnd spill-single-def <<unknown class>>
+; V03 loc1 [V03,T06] ( 4, 6.94) ref -> eax class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T00] ( 5, 16.84) int -> ecx
-; V05 loc3 [V05,T09] ( 3, 4.96) int -> registers
-; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edx "impSpillLclRefs"
-; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> edi class-hnd "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
+; V05 loc3 [V05,T09] ( 3, 4.96) int -> [ebp-0x10]
+; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edi "impSpillLclRefs"
+; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> [ebp-0x20] class-hnd spill-single-def "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
;* V08 cse0 [V08,T10] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edi "CSE - aggressive"
-; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edx "CSE - aggressive"
+; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -28,59 +28,67 @@ G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
;; size=13 bbWeight=1 PerfScore 5.00
G_M65349_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
mov ebx, gword ptr [edi+0x14]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x1C], ebx
; GC ptr vars +{V02}
mov eax, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
lea ecx, [eax-0x01]
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs -[edi] +[eax]
xor ecx, ecx
xor edx, edx
- cmp dword ptr [ebp-0x10], 0
+ mov dword ptr [ebp-0x10], edx
+ cmp dword ptr [ebp-0x14], 0
jle SHORT G_M65349_IG06
- ;; size=34 bbWeight=1 PerfScore 14.00
+ ;; size=37 bbWeight=1 PerfScore 15.00
G_M65349_IG03: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebx+4*ecx+0x08]
- ; gcrRegs +[edi]
- cmp edi, esi
+ mov edx, gword ptr [ebx+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ cmp edx, esi
je SHORT G_M65349_IG05
;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
- lea ebx, [edx+0x01]
- cmp edx, dword ptr [eax+0x04]
+ mov edi, dword ptr [ebp-0x10]
+ lea ebx, [edi+0x01]
+ mov gword ptr [ebp-0x20], edx
+ ; GC ptr vars +{V07}
+ cmp edi, dword ptr [eax+0x04]
jae SHORT G_M65349_IG08
- lea edx, bword ptr [eax+4*edx+0x08]
+ lea edx, bword ptr [eax+4*edi+0x08]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
+ mov edi, gword ptr [ebp-0x20]
+ ; gcrRegs +[edi]
+ ; GC ptr vars -{V07}
call [CORINFO_HELP_ASSIGN_REF_EDI]
; gcrRegs -[edi]
; byrRegs -[edx]
- mov edx, ebx
- ;; size=20 bbWeight=1.98 PerfScore 17.32
+ mov dword ptr [ebp-0x10], ebx
+ ;; size=30 bbWeight=1.98 PerfScore 24.75
G_M65349_IG05: ; bbWeight=3.96, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
- mov edi, dword ptr [ebp-0x10]
- cmp edi, ecx
- mov ebx, gword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
+ cmp edx, ecx
+ mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx]
jg SHORT G_M65349_IG03
;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+G_M65349_IG06: ; bbWeight=1.98, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi]
; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
lea edx, bword ptr [edi+0x14]
; byrRegs +[edx]
@@ -88,20 +96,20 @@ G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {e
call [CORINFO_HELP_ASSIGN_REF_EAX]
; gcrRegs -[eax edi]
; byrRegs -[edx]
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M65349_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1.98 PerfScore 8.91
+G_M65349_IG07: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1.98 PerfScore 6.93
G_M65349_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 113, prolog size 13, PerfScore 71.05, instruction count 44, allocated bytes for code 113 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
+; Total bytes of code 126, prolog size 13, PerfScore 87.32, instruction count 48, allocated bytes for code 126 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
; ============================================================
+39 (+11.96%) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
@@ -8,18 +8,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 6, 14.50) ref -> [ebp-0x20] this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T05] ( 6, 20.42) ref -> [ebp-0x24] this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T04] ( 8, 21.50) ref -> edi class-hnd single-def <System.String>
; V02 arg2 [V02,T03] ( 6, 25.16) ref -> esi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
-; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
+; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 18,102 ) int -> [ebp-0x14]
; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
-; V07 loc3 [V07,T05] ( 3, 20 ) ushort -> edx
-; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax
-; V09 cse0 [V09,T07] ( 5, 16 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V07 loc3 [V07,T06] ( 3, 20 ) ushort -> [ebp-0x1C] spill-single-def
+; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax
+; V09 cse0 [V09,T07] ( 5, 16 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 24
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,7 +27,7 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -37,16 +37,15 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x1C], edx
- mov ecx, edx
- mov dword ptr [ebp-0x10], ecx
- xor eax, eax
- test ecx, ecx
+ mov dword ptr [ebp-0x20], edx
+ mov dword ptr [ebp-0x10], edx
+ xor ecx, ecx
+ cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], eax
- push eax
+ mov dword ptr [ebp-0x14], ecx
+ push ecx
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
@@ -59,22 +58,28 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=22 bbWeight=4 PerfScore 31.00
G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
- mov eax, dword ptr [ebp-0x10]
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M58768_IG15
- ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x24], ebx
+ ; GC ptr vars +{V00}
+ mov eax, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov eax, dword ptr [ebp-0x10]
- jmp G_M58768_IG15
- ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x24], ebx
+ ; GC ptr vars +{V00}
+ mov eax, ecx
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ ; GC ptr vars -{V00}
+ cmp ecx, dword ptr [ebp-0x20]
+ jae G_M58768_IG23
mov dword ptr [ebp-0x14], ecx
movzx edx, word ptr [edi+2*ecx+0x08]
- mov gword ptr [ebp-0x20], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
mov ecx, ebx
; gcrRegs +[ecx]
@@ -85,7 +90,7 @@ G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
inc ecx
mov dword ptr [ebp-0x14], ecx
mov eax, dword ptr [ebp-0x18]
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
;; size=43 bbWeight=8 PerfScore 140.00
G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
@@ -95,85 +100,98 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx
jl SHORT G_M58768_IG06
;; size=7 bbWeight=32 PerfScore 72.00
G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ cmp ecx, dword ptr [ebp-0x20]
+ jae G_M58768_IG23
mov dword ptr [ebp-0x14], ecx
movzx edx, word ptr [edi+2*ecx+0x08]
+ mov dword ptr [ebp-0x1C], edx
mov eax, dword ptr [esi+0x04]
dec eax
- js SHORT G_M58768_IG14
- ;; size=23 bbWeight=4 PerfScore 37.00
+ js SHORT G_M58768_IG12
+ ;; size=26 bbWeight=4 PerfScore 41.00
G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x04], eax
- mov gword ptr [ebp-0x20], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
- jle SHORT G_M58768_IG12
+ jle SHORT G_M58768_IG13
;; size=8 bbWeight=1 PerfScore 5.00
-G_M58768_IG10: ; bbWeight=15.84, gcVars=00000040 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- movzx ebx, word ptr [esi+2*eax+0x08]
- cmp ebx, edx
- je SHORT G_M58768_IG13
+ movzx edx, word ptr [esi+2*eax+0x08]
+ mov ebx, dword ptr [ebp-0x1C]
+ cmp edx, ebx
+ je SHORT G_M58768_IG14
dec eax
jns SHORT G_M58768_IG10
- ;; size=12 bbWeight=15.84 PerfScore 71.28
+ ;; size=15 bbWeight=15.84 PerfScore 87.12
G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x24], ebx
+ mov ebx, gword ptr [ebp+0x08]
+ jmp SHORT G_M58768_IG15
+ ;; size=11 bbWeight=4 PerfScore 20.00
+G_M58768_IG12: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x24], ebx
+ ; GC ptr vars +{V00}
+ mov ebx, gword ptr [ebp+0x08]
+ jmp SHORT G_M58768_IG15
+ ;; size=8 bbWeight=2 PerfScore 8.00
+G_M58768_IG13: ; bbWeight=0.16, gcVars=00000020 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
cmp eax, dword ptr [esi+0x04]
- jae G_M58768_IG22
- movzx ebx, word ptr [esi+2*eax+0x08]
- cmp ebx, edx
- je SHORT G_M58768_IG13
+ jae G_M58768_IG23
+ movzx edx, word ptr [esi+2*eax+0x08]
+ mov ebx, dword ptr [ebp-0x1C]
+ cmp edx, ebx
+ je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12
- mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
- ;; size=26 bbWeight=0.16 PerfScore 1.84
-G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x24], ebx
+ mov ebx, gword ptr [ebp+0x08]
+ jmp SHORT G_M58768_IG15
+ ;; size=35 bbWeight=0.16 PerfScore 2.32
+G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae SHORT G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [<unknown method>]
; gcrRegs -[ecx edx]
+ ;; size=23 bbWeight=7.92 PerfScore 110.88
+G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x14]
+ inc eax
+ mov edx, dword ptr [ebp-0x10]
+ cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20]
- ;; size=29 bbWeight=2 PerfScore 32.00
-G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov ecx, dword ptr [ebp-0x14]
- inc ecx
- mov eax, dword ptr [ebp-0x10]
- cmp ecx, eax
- jl SHORT G_M58768_IG18
- ;; size=11 bbWeight=4 PerfScore 14.00
-G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
- test ecx, ecx
- jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19
+ ;; size=14 bbWeight=4 PerfScore 18.00
+G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx esi]
+ test eax, eax
+ jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- mov ecx, ebx
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
mov edx, edi
; gcrRegs +[edx]
cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V00}
call [<unknown method>]
- ; gcrRegs -[ecx edx ebx edi]
- ;; size=12 bbWeight=0.50 PerfScore 3.25
-G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx edi]
+ ;; size=13 bbWeight=0.50 PerfScore 3.62
+G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
libraries.pmi.windows.x86.checked.mch
-15 (-9.93%) : 23249.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:Filterubyte:ubyte
@@ -12,14 +12,14 @@
; V01 arg1 [V01,T02] ( 8, 6.02) ref -> esi class-hnd single-def <ubyte[]>
; V02 loc0 [V02,T08] ( 3, 3 ) ref -> eax class-hnd single-def <System.Tuple`2[int,ubyte[]]>
; V03 loc1 [V03,T09] ( 2, 2 ) int -> edx single-def
-; V04 loc2 [V04,T06] ( 4, 6 ) ref -> [ebp-0x10] class-hnd spill-single-def <ubyte[]>
-; V05 loc3 [V05,T05] ( 6, 6 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <ubyte[]>
+; V04 loc2 [V04,T06] ( 4, 6 ) ref -> edi class-hnd single-def <ubyte[]>
+; V05 loc3 [V05,T04] ( 6, 6.98) ref -> eax class-hnd exact single-def <ubyte[]>
; V06 loc4 [V06,T01] ( 9, 9 ) int -> edx
; V07 loc5 [V07,T00] ( 12, 19.02) int -> ecx
-; V08 tmp0 [V08,T03] ( 4, 8 ) int -> eax "Strict ordering of exceptions for Array store"
-; V09 cse0 [V09,T04] ( 5, 6.50) int -> ebx "CSE - moderate"
+; V08 tmp0 [V08,T03] ( 4, 8 ) int -> ebx "Strict ordering of exceptions for Array store"
+; V09 cse0 [V09,T05] ( 5, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M2827_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,10 +27,10 @@ G_M2827_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov esi, edx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=9 bbWeight=1 PerfScore 5.50
G_M2827_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov edx, esi
@@ -40,99 +40,79 @@ G_M2827_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000
mov edx, dword ptr [eax+0x08]
mov edi, gword ptr [eax+0x04]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x10], edi
- ; GC ptr vars +{V04}
mov ecx, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V05}
xor edx, edx
xor ecx, ecx
mov ebx, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x10], ebx
test ebx, ebx
- jle SHORT G_M2827_IG11
- ;; size=41 bbWeight=1 PerfScore 14.25
-G_M2827_IG03: ; bbWeight=0.50, gcVars=00000060 {V04 V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
+ jle SHORT G_M2827_IG12
+ ;; size=38 bbWeight=1 PerfScore 13.25
+G_M2827_IG03: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je SHORT G_M2827_IG08
+ je SHORT G_M2827_IG09
cmp dword ptr [esi+0x04], ebx
jl SHORT G_M2827_IG08
;; size=9 bbWeight=0.50 PerfScore 2.62
-G_M2827_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M2827_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [edi+ecx+0x08], 0
je SHORT G_M2827_IG06
;; size=7 bbWeight=3.96 PerfScore 15.84
-G_M2827_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- movzx eax, byte ptr [esi+ecx+0x08]
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- cmp edx, dword ptr [edi+0x04]
+G_M2827_IG05: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx ebx, byte ptr [esi+ecx+0x08]
+ cmp edx, dword ptr [eax+0x04]
jae SHORT G_M2827_IG13
- mov byte ptr [edi+edx+0x08], al
+ mov byte ptr [eax+edx+0x08], bl
inc edx
- ;; size=18 bbWeight=1.98 PerfScore 16.34
-G_M2827_IG06: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
+ ;; size=15 bbWeight=1.98 PerfScore 14.35
+G_M2827_IG06: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
- cmp ebx, ecx
- mov edi, gword ptr [ebp-0x10]
- ; gcrRegs +[edi]
+ cmp dword ptr [ebp-0x10], ecx
jg SHORT G_M2827_IG04
- ;; size=8 bbWeight=3.96 PerfScore 9.90
-G_M2827_IG07: ; bbWeight=1, gcVars=00000020 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=6 bbWeight=3.96 PerfScore 12.87
+G_M2827_IG07: ; bbWeight=1.98, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- ; GC ptr vars -{V04}
- jmp SHORT G_M2827_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M2827_IG08: ; bbWeight=0.04, gcVars=00000060 {V04 V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M2827_IG12
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M2827_IG08: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi]
- ; GC ptr vars +{V04 V06}
+ mov ebx, dword ptr [ebp-0x10]
+ ;; size=3 bbWeight=0.25 PerfScore 0.25
+G_M2827_IG09: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [edi+ecx+0x08], 0
- je SHORT G_M2827_IG10
+ je SHORT G_M2827_IG11
;; size=7 bbWeight=0.04 PerfScore 0.16
-G_M2827_IG09: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
+G_M2827_IG10: ; bbWeight=0.02, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, dword ptr [esi+0x04]
jae SHORT G_M2827_IG13
- movzx eax, byte ptr [esi+ecx+0x08]
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- cmp edx, dword ptr [edi+0x04]
+ movzx ebx, byte ptr [esi+ecx+0x08]
+ cmp edx, dword ptr [eax+0x04]
jae SHORT G_M2827_IG13
- mov byte ptr [edi+edx+0x08], al
+ mov byte ptr [eax+edx+0x08], bl
inc edx
+ mov ebx, dword ptr [ebp-0x10]
;; size=23 bbWeight=0.02 PerfScore 0.25
-G_M2827_IG10: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
+G_M2827_IG11: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ebx, ecx
- mov edi, gword ptr [ebp-0x10]
- ; gcrRegs +[edi]
- jg SHORT G_M2827_IG08
- ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M2827_IG11: ; bbWeight=1, gcVars=00000020 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg SHORT G_M2827_IG09
+ ;; size=5 bbWeight=0.04 PerfScore 0.06
+G_M2827_IG12: ; bbWeight=1.98, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi edi]
- ; GC ptr vars -{V04 V06}
- mov eax, gword ptr [ebp-0x14]
- ; gcrRegs +[eax]
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M2827_IG12: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1.98 PerfScore 6.93
G_M2827_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
- ; GC ptr vars -{V05}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 151, prolog size 11, PerfScore 70.71, instruction count 60, allocated bytes for code 151 (MethodHash=5413f4f4) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
+; Total bytes of code 136, prolog size 9, PerfScore 76.04, instruction count 56, allocated bytes for code 136 (MethodHash=5413f4f4) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
; ============================================================
-6 (-9.38%) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,19 +10,19 @@
;
; V00 arg0 [V00,T05] ( 3, 6 ) byref -> ecx single-def
; V01 arg1 [V01,T04] ( 4, 6.34) int -> edx ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 2, 4.34) int -> eax ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 1, 4 ) int -> eax ld-addr-op single-def
; V03 arg3 [V03,T10] ( 1, 1 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 7, 19.66) int -> esi
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> esi
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> edi
;* V06 tmp0 [V06,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V07 tmp1 [V07,T01] ( 3, 16.68) int -> ebx "Inlining Arg"
;* V08 tmp2 [V08,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 3, 16.68) int -> edi "Inlining Arg"
+; V09 tmp3 [V09,T02] ( 2, 16 ) int -> edi "Inlining Arg"
; V10 cse0 [V10,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -34,7 +34,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
; byrRegs +[ecx]
mov esi, dword ptr [ebp+0x08]
dec esi
- js SHORT G_M34838_IG09
+ js SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 2.25
G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
lea edi, bword ptr [ecx+4*esi]
@@ -47,48 +47,36 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
;; size=11 bbWeight=4 PerfScore 16.00
G_M34838_IG04: ; bbWeight=0.34, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
cmp edx, ebx
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=4 bbWeight=0.34 PerfScore 0.42
G_M34838_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
cmp eax, edi
- jge SHORT G_M34838_IG11
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.66, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov eax, esi
- ;; size=2 bbWeight=1.66 PerfScore 0.42
-G_M34838_IG07: ; bbWeight=1.66, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=7 bbWeight=1.66 PerfScore 6.64
-G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; byrRegs +[ecx]
+ jl SHORT G_M34838_IG08
dec esi
jns SHORT G_M34838_IG03
- ;; size=3 bbWeight=4 PerfScore 5.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ecx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M34838_IG11: ; bbWeight=0.34, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; byrRegs +[ecx]
- cmp eax, edi
- jle SHORT G_M34838_IG08
- ;; size=4 bbWeight=0.34 PerfScore 0.42
-G_M34838_IG12: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
- jmp SHORT G_M34838_IG08
- ;; size=2 bbWeight=0.03 PerfScore 0.07
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov eax, esi
+ ;; size=2 bbWeight=0.71 PerfScore 0.18
+G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=7 bbWeight=0.71 PerfScore 2.85
-; Total bytes of code 64, prolog size 9, PerfScore 43.60, instruction count 35, allocated bytes for code 64 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 58, prolog size 9, PerfScore 39.07, instruction count 32, allocated bytes for code 58 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
-6 (-9.38%) : 310876.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,19 +10,19 @@
;
; V00 arg0 [V00,T05] ( 3, 6 ) byref -> ecx single-def
; V01 arg1 [V01,T04] ( 4, 6.34) int -> edx ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 2, 4.34) int -> eax ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 1, 4 ) int -> eax ld-addr-op single-def
; V03 arg3 [V03,T10] ( 1, 1 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 7, 19.66) int -> esi
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> esi
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> edi
;* V06 tmp0 [V06,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V07 tmp1 [V07,T01] ( 3, 16.68) int -> ebx "Inlining Arg"
;* V08 tmp2 [V08,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 3, 16.68) int -> edi "Inlining Arg"
+; V09 tmp3 [V09,T02] ( 2, 16 ) int -> edi "Inlining Arg"
; V10 cse0 [V10,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -34,7 +34,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
; byrRegs +[ecx]
mov esi, dword ptr [ebp+0x08]
dec esi
- js SHORT G_M34838_IG09
+ js SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 2.25
G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
lea edi, bword ptr [ecx+4*esi]
@@ -47,48 +47,36 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
;; size=11 bbWeight=4 PerfScore 16.00
G_M34838_IG04: ; bbWeight=0.34, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
cmp edx, ebx
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=4 bbWeight=0.34 PerfScore 0.42
G_M34838_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
cmp eax, edi
- jge SHORT G_M34838_IG11
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.66, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov eax, esi
- ;; size=2 bbWeight=1.66 PerfScore 0.42
-G_M34838_IG07: ; bbWeight=1.66, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=7 bbWeight=1.66 PerfScore 6.64
-G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; byrRegs +[ecx]
+ jl SHORT G_M34838_IG08
dec esi
jns SHORT G_M34838_IG03
- ;; size=3 bbWeight=4 PerfScore 5.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ecx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M34838_IG11: ; bbWeight=0.34, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; byrRegs +[ecx]
- cmp eax, edi
- jle SHORT G_M34838_IG08
- ;; size=4 bbWeight=0.34 PerfScore 0.42
-G_M34838_IG12: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
- jmp SHORT G_M34838_IG08
- ;; size=2 bbWeight=0.03 PerfScore 0.07
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov eax, esi
+ ;; size=2 bbWeight=0.71 PerfScore 0.18
+G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=7 bbWeight=0.71 PerfScore 2.85
-; Total bytes of code 64, prolog size 9, PerfScore 43.60, instruction count 35, allocated bytes for code 64 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 58, prolog size 9, PerfScore 39.07, instruction count 32, allocated bytes for code 58 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
+10 (+7.35%) : 38550.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray
1[int],byref):ubyte (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 2.50) int -> ecx single-def
-; V01 arg1 [V01,T03] ( 4, 3 ) int -> edx single-def
+; V00 arg0 [V00,T07] ( 3, 2.50) int -> ecx single-def
+; V01 arg1 [V01,T01] ( 4, 6.46) int -> edx single-def
; V02 arg2 [V02,T08] ( 1, 1 ) ubyte -> [ebp+0x18] single-def
; V03 arg3 [V03,T10] ( 1, 0.50) int -> [ebp+0x14] single-def
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]>
-; V06 arg6 [V06,T07] ( 2, 1.50) byref -> [ebp+0x08] single-def
-; V07 loc0 [V07,T00] ( 14, 17.77) int -> ecx
-; V08 tmp0 [V08,T01] ( 5, 8 ) int -> esi
+; V06 arg6 [V06,T05] ( 2, 4.96) byref -> eax single-def
+; V07 loc0 [V07,T00] ( 14, 21.23) int -> ecx
+; V08 tmp0 [V08,T02] ( 5, 8 ) int -> esi
; V09 tmp1 [V09,T09] ( 1, 0.50) ref -> [ebp+0x10] single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T05] ( 6, 4.54) ref -> eax single-def "field V05.array (fldOffset=0x0)" P-INDEP
-; V11 cse0 [V11,T02] ( 5, 5.25) int -> ebx "CSE - aggressive"
+; V10 tmp2 [V10,T06] ( 6, 4.54) ref -> [ebp+0x0C] single-def "field V05.array (fldOffset=0x0)" P-INDEP
+; V11 cse0 [V11,T03] ( 5, 5.25) int -> ebx "CSE - aggressive"
; V12 cse1 [V12,T04] ( 4, 5 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -30,105 +30,108 @@ G_M47144_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov eax, gword ptr [ebp+0x0C]
- ; gcrRegs +[eax]
+ mov eax, bword ptr [ebp+0x08]
+ ; byrRegs +[eax]
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
;; size=12 bbWeight=1 PerfScore 6.25
-G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
xor edi, edi
- mov bword ptr [ebp+0x08], esi
- mov dword ptr [esi], edi
+ mov dword ptr [eax], edi
cmp byte ptr [ebp+0x18], 0
- je SHORT G_M47144_IG13
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[esi]
+ je SHORT G_M47144_IG12
+ ;; size=10 bbWeight=1 PerfScore 4.25
+G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
mov edi, dword ptr [ebp+0x14]
dec edi
cmp ecx, edi
- jne SHORT G_M47144_IG13
+ jne SHORT G_M47144_IG12
lea ecx, [edx+0x01]
mov ebx, gword ptr [ebp+0x10]
; gcrRegs +[ebx]
mov ebx, dword ptr [ebx+0x04]
; gcrRegs -[ebx]
cmp ebx, ecx
- jle SHORT G_M47144_IG11
+ jle SHORT G_M47144_IG10
;; size=21 bbWeight=0.50 PerfScore 3.62
-G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- je SHORT G_M47144_IG07
+G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ test esi, esi
+ je SHORT G_M47144_IG06
test ecx, ecx
- jl SHORT G_M47144_IG07
- cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M47144_IG07
+ jl SHORT G_M47144_IG06
+ cmp dword ptr [esi+0x04], ebx
+ jl SHORT G_M47144_IG06
;; size=13 bbWeight=0.25 PerfScore 1.62
-G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov esi, dword ptr [eax+4*ecx+0x08]
+G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ mov gword ptr [ebp+0x0C], esi
+ mov esi, dword ptr [esi+4*ecx+0x08]
+ ; gcrRegs -[esi]
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx
cmp ebx, ecx
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
jg SHORT G_M47144_IG05
- ;; size=13 bbWeight=3.96 PerfScore 18.81
-G_M47144_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- jmp SHORT G_M47144_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M47144_IG07: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[eax]
- test eax, eax
- jne SHORT G_M47144_IG09
- ;; size=4 bbWeight=0.04 PerfScore 0.05
-G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov esi, ecx
jmp SHORT G_M47144_IG10
+ ;; size=21 bbWeight=3.96 PerfScore 34.65
+G_M47144_IG06: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ mov gword ptr [ebp+0x0C], esi
+ test esi, esi
+ jne SHORT G_M47144_IG08
+ ;; size=7 bbWeight=0.04 PerfScore 0.09
+G_M47144_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, ecx
+ jmp SHORT G_M47144_IG09
;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M47144_IG09: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M47144_IG15
- mov esi, dword ptr [eax+4*ecx+0x08]
- ;; size=9 bbWeight=0.02 PerfScore 0.12
-G_M47144_IG10: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
+ cmp ecx, dword ptr [esi+0x04]
+ jae SHORT G_M47144_IG14
+ mov gword ptr [ebp+0x0C], esi
+ mov esi, dword ptr [esi+4*ecx+0x08]
+ ; gcrRegs -[esi]
+ ;; size=15 bbWeight=0.02 PerfScore 0.16
+G_M47144_IG09: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx
cmp ebx, ecx
- jg SHORT G_M47144_IG07
- ;; size=9 bbWeight=0.04 PerfScore 0.11
-G_M47144_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- sub eax, edx
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], eax
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
+ jg SHORT G_M47144_IG06
+ ;; size=12 bbWeight=0.04 PerfScore 0.15
+G_M47144_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
+ ; gcrRegs -[esi]
+ sub ecx, edx
+ mov dword ptr [eax], ecx
mov eax, 1
- ;; size=14 bbWeight=0.50 PerfScore 1.38
-G_M47144_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ; byrRegs -[eax]
+ ;; size=9 bbWeight=3.96 PerfScore 5.94
+G_M47144_IG11: ; bbWeight=3.96, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 20
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi]
+ ;; size=7 bbWeight=3.96 PerfScore 15.84
+G_M47144_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47144_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47144_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 20
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47144_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 42.38, instruction count 64, allocated bytes for code 136 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
+; Total bytes of code 146, prolog size 12, PerfScore 74.75, instruction count 67, allocated bytes for code 146 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
; ============================================================
+33 (+9.76%) : 173460.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
@@ -8,18 +8,20 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 27 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T02] ( 10, 38.84) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T05] ( 8, 21.50) ref -> [ebp-0x20] class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 6, 25.16) ref -> edi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
-; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
+; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 19,106 ) int -> [ebp-0x14]
-; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
+; V06 loc2 [V06,T03] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
; V07 loc3 [V07,T07] ( 3, 20 ) ushort -> edx
-; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax
+; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax
; V09 cse0 [V09,T06] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x24]
+; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,29 +29,30 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 28
+ xor eax, eax
+ mov dword ptr [ebp-0x24], eax
mov esi, ecx
; gcrRegs +[esi]
mov ebx, edx
; gcrRegs +[ebx]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=21 bbWeight=1 PerfScore 7.25
G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x04]
mov dword ptr [ebp-0x1C], edx
- mov ecx, edx
- mov dword ptr [ebp-0x10], ecx
- xor eax, eax
- test ecx, ecx
+ mov dword ptr [ebp-0x10], edx
+ xor ecx, ecx
+ cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- push eax
- mov dword ptr [ebp-0x14], eax
- mov ecx, edx
- sub ecx, eax
push ecx
+ mov dword ptr [ebp-0x14], ecx
+ mov eax, edx
+ sub eax, ecx
+ push eax
mov ecx, ebx
; gcrRegs +[ecx]
mov edx, edi
@@ -62,19 +65,25 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=27 bbWeight=4 PerfScore 37.00
G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
- mov eax, dword ptr [ebp-0x10]
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M58768_IG15
- ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x20], ebx
+ ; GC ptr vars +{V01}
+ mov eax, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov eax, dword ptr [ebp-0x10]
- jmp G_M58768_IG15
- ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V01}
+ mov gword ptr [ebp-0x20], ebx
+ ; GC ptr vars +{V01}
+ mov eax, ecx
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
+ ; GC ptr vars -{V01}
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x14], ecx
@@ -101,55 +110,57 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx
;; size=7 bbWeight=32 PerfScore 72.00
G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x14], ecx
movzx edx, word ptr [ebx+2*ecx+0x08]
mov eax, dword ptr [edi+0x04]
dec eax
- mov ebx, gword ptr [ebp-0x20]
- js SHORT G_M58768_IG14
- ;; size=29 bbWeight=4 PerfScore 45.00
-G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V01}
- cmp dword ptr [edi+0x04], eax
- mov gword ptr [ebp-0x20], ebx
- ; GC ptr vars +{V01}
- jle SHORT G_M58768_IG12
- ;; size=8 bbWeight=1 PerfScore 5.00
-G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ js SHORT G_M58768_IG12
+ ;; size=26 bbWeight=4 PerfScore 41.00
+G_M58768_IG09: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
+ cmp dword ptr [edi+0x04], eax
+ jle SHORT G_M58768_IG13
+ ;; size=5 bbWeight=1 PerfScore 4.00
+G_M58768_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx ebx, word ptr [edi+2*eax+0x08]
cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
jns SHORT G_M58768_IG10
;; size=12 bbWeight=15.84 PerfScore 71.28
G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=5 bbWeight=4 PerfScore 12.00
-G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M58768_IG15
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M58768_IG13: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
cmp eax, dword ptr [edi+0x04]
- jae G_M58768_IG22
+ jae G_M58768_IG23
movzx ebx, word ptr [edi+2*eax+0x08]
cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12
- mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=26 bbWeight=0.16 PerfScore 1.84
-G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08]
; gcrRegs +[edx]
mov ecx, esi
@@ -158,33 +169,32 @@ G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov eax, dword ptr [eax+0x2C]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx edx]
+ ;; size=26 bbWeight=7.92 PerfScore 112.86
+G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x14]
+ inc eax
+ mov edx, dword ptr [ebp-0x10]
+ cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20]
- ;; size=28 bbWeight=2 PerfScore 32.50
-G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V01}
- mov ecx, dword ptr [ebp-0x14]
- inc ecx
- mov eax, dword ptr [ebp-0x10]
- cmp ecx, eax
- jl SHORT G_M58768_IG18
- ;; size=11 bbWeight=4 PerfScore 14.00
-G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- test ecx, ecx
- jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19
+ ;; size=14 bbWeight=4 PerfScore 18.00
+G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx edi]
+ test eax, eax
+ jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x2C]
+ ; GC ptr vars -{V01}
call [eax+0x1C]<unknown method>
- ; gcrRegs -[ecx edx ebx esi]
- ;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx esi]
+ ;; size=13 bbWeight=0.50 PerfScore 4.12
+G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -192,35 +202,51 @@ G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M58768_IG18: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[ebx esi edi]
- mov eax, ecx
+G_M58768_IG19: ; bbWeight=2, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi edi]
+ ; GC ptr vars +{V01 V05}
+ mov ecx, eax
mov edx, dword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x20]
...
+13 (+11.40%) : 71233.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
@@ -7,19 +7,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [ebp-0x14] this class-hnd single-def <System.Data.DataColumnCollection>
+; V00 this [V00,T07] ( 4, 4.98) ref -> [ebp-0x18] this class-hnd single-def <System.Data.DataColumnCollection>
; V01 arg1 [V01,T03] ( 3, 5.96) ref -> esi class-hnd single-def <System.Data.DataColumn>
-; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>>
-; V03 loc1 [V03,T06] ( 4, 5.96) ref -> eax class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x1C] class-hnd spill-single-def <<unknown class>>
+; V03 loc1 [V03,T06] ( 4, 6.94) ref -> eax class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T00] ( 5, 16.84) int -> ecx
-; V05 loc3 [V05,T09] ( 3, 4.96) int -> registers
-; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edx "impSpillLclRefs"
-; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> edi class-hnd "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
+; V05 loc3 [V05,T09] ( 3, 4.96) int -> [ebp-0x10]
+; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edi "impSpillLclRefs"
+; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> [ebp-0x20] class-hnd spill-single-def "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
;* V08 cse0 [V08,T10] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edi "CSE - aggressive"
-; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edx "CSE - aggressive"
+; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,60 +27,68 @@ G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
;; size=13 bbWeight=1 PerfScore 5.00
G_M65349_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
mov ebx, gword ptr [edi+0x14]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x1C], ebx
; GC ptr vars +{V02}
mov eax, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
lea edx, [eax-0x01]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs -[edi] +[eax]
xor ecx, ecx
xor edx, edx
- cmp dword ptr [ebp-0x10], 0
+ mov dword ptr [ebp-0x10], edx
+ cmp dword ptr [ebp-0x14], 0
jle SHORT G_M65349_IG06
- ;; size=38 bbWeight=1 PerfScore 12.25
+ ;; size=41 bbWeight=1 PerfScore 13.25
G_M65349_IG03: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebx+4*ecx+0x08]
- ; gcrRegs +[edi]
- cmp edi, esi
+ mov edx, gword ptr [ebx+4*ecx+0x08]
+ ; gcrRegs +[edx]
+ cmp edx, esi
je SHORT G_M65349_IG05
;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
- lea ebx, [edx+0x01]
- cmp edx, dword ptr [eax+0x04]
+ mov edi, dword ptr [ebp-0x10]
+ lea ebx, [edi+0x01]
+ mov gword ptr [ebp-0x20], edx
+ ; GC ptr vars +{V07}
+ cmp edi, dword ptr [eax+0x04]
jae SHORT G_M65349_IG08
- lea edx, bword ptr [eax+4*edx+0x08]
+ lea edx, bword ptr [eax+4*edi+0x08]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
+ mov edi, gword ptr [ebp-0x20]
+ ; gcrRegs +[edi]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ASSIGN_REF_EDI
; gcrRegs -[edi]
; byrRegs -[edx]
- mov edx, ebx
- ;; size=19 bbWeight=1.98 PerfScore 13.37
+ mov dword ptr [ebp-0x10], ebx
+ ;; size=29 bbWeight=1.98 PerfScore 20.79
G_M65349_IG05: ; bbWeight=3.96, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
- mov edi, dword ptr [ebp-0x10]
- cmp edi, ecx
- mov ebx, gword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
+ cmp edx, ecx
+ mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx]
jg SHORT G_M65349_IG03
;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+G_M65349_IG06: ; bbWeight=1.98, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi]
; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
lea edx, bword ptr [edi+0x14]
; byrRegs +[edx]
@@ -88,20 +96,20 @@ G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {e
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax edi]
; byrRegs -[edx]
- ;; size=11 bbWeight=1 PerfScore 2.50
-G_M65349_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1.98 PerfScore 4.95
+G_M65349_IG07: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1.98 PerfScore 6.93
G_M65349_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 13, PerfScore 63.34, instruction count 45, allocated bytes for code 114 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
+; Total bytes of code 127, prolog size 13, PerfScore 77.65, instruction count 49, allocated bytes for code 127 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-26 (-5.37%) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
@@ -8,16 +8,16 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 13, 11.83) ref -> ecx class-hnd single-def <ubyte[]>
-; V01 arg1 [V01,T00] ( 32, 40.58) int -> edx
-; V02 arg2 [V02,T07] ( 6, 4 ) int -> [ebp+0x0C]
-; V03 arg3 [V03,T06] ( 7, 4 ) byref -> [ebp+0x08] single-def
-; V04 loc0 [V04,T04] ( 12, 12 ) int -> edi
+; V01 arg1 [V01,T00] ( 32, 45.02) int -> edx
+; V02 arg2 [V02,T06] ( 6, 6.96) int -> [ebp+0x0C]
+; V03 arg3 [V03,T07] ( 7, 4 ) byref -> [ebp+0x08] single-def
+; V04 loc0 [V04,T04] ( 12, 13.48) int -> edi
; V05 loc1 [V05,T08] ( 4, 2.50) ubyte -> [ebp-0x10]
; V06 loc2 [V06,T02] ( 13, 18.50) int -> ebx
; V07 loc3 [V07,T01] ( 14, 28 ) int -> eax
-; V08 loc4 [V08,T05] ( 7, 9.50) int -> [ebp-0x14]
+; V08 loc4 [V08,T05] ( 7, 10.98) int -> esi
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M51022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,39 +25,40 @@ G_M51022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ push eax
vzeroupper
- mov esi, dword ptr [ebp+0x0C]
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- ;; size=18 bbWeight=1 PerfScore 7.50
-G_M51022_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000001 {eax}, byref, isz
+ mov eax, dword ptr [ebp+0x0C]
+ mov esi, bword ptr [ebp+0x08]
+ ; byrRegs +[esi]
+ ;; size=16 bbWeight=1 PerfScore 8.25
+G_M51022_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs +[ecx]
xor edi, edi
- mov bword ptr [ebp+0x08], eax
- mov dword ptr [eax], edi
- lea edi, [edx+esi]
+ mov bword ptr [ebp+0x08], esi
+ mov dword ptr [esi], edi
+ lea edi, [edx+eax]
xor ebx, ebx
cmp edx, edi
jge SHORT G_M51022_IG09
;; size=16 bbWeight=1 PerfScore 4.25
G_M51022_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
+ ; byrRegs -[esi]
cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
cmp byte ptr [ecx+edx+0x08], 45
mov dword ptr [ebp-0x10], ebx
jne SHORT G_M51022_IG04
mov dword ptr [ebp-0x10], 1
inc edx
- dec esi
+ dec eax
;; size=28 bbWeight=0.50 PerfScore 5.25
G_M51022_IG04: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- mov ebx, esi
+ mov dword ptr [ebp+0x0C], eax
+ mov ebx, eax
sub ebx, 1
cmp ebx, 9
- ja G_M51022_IG21
- ;; size=14 bbWeight=1 PerfScore 1.75
+ ja G_M51022_IG22
+ ;; size=17 bbWeight=1 PerfScore 2.75
G_M51022_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
cmp edx, edi
@@ -66,8 +67,8 @@ G_M51022_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000
G_M51022_IG06: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
je SHORT G_M51022_IG10
- mov eax, edx
- or eax, edi
+ mov esi, edx
+ or esi, edi
jl SHORT G_M51022_IG10
cmp dword ptr [ecx+0x04], edi
jl SHORT G_M51022_IG10
@@ -76,19 +77,19 @@ G_M51022_IG07: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000
movzx eax, byte ptr [ecx+edx+0x08]
add eax, -48
cmp eax, -2
- je SHORT G_M51022_IG12
+ je SHORT G_M51022_IG13
cmp eax, 10
- jae G_M51022_IG21
+ jae G_M51022_IG22
lea ebx, [ebx+4*ebx]
lea ebx, [eax+2*ebx]
inc edx
cmp edx, edi
jl SHORT G_M51022_IG07
;; size=33 bbWeight=3.96 PerfScore 28.71
-G_M51022_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51022_IG08: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
jmp SHORT G_M51022_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M51022_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov dword ptr [ebp-0x10], ebx
@@ -96,165 +97,160 @@ G_M51022_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000
;; size=5 bbWeight=0.50 PerfScore 1.50
G_M51022_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
movzx eax, byte ptr [ecx+edx+0x08]
add eax, -48
cmp eax, -2
- je SHORT G_M51022_IG12
+ je SHORT G_M51022_IG13
cmp eax, 10
- jae G_M51022_IG21
+ jae G_M51022_IG22
lea ebx, [ebx+4*ebx]
lea ebx, [eax+2*ebx]
inc edx
cmp edx, edi
jl SHORT G_M51022_IG10
;; size=42 bbWeight=0.04 PerfScore 0.45
-G_M51022_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51022_IG11: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- cmp esi, 10
- je G_M51022_IG21
+ cmp dword ptr [ebp+0x0C], 10
+ je G_M51022_IG22
+ ;; size=10 bbWeight=1.98 PerfScore 5.94
+G_M51022_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebp-0x10], 0
- je G_M51022_IG24
- jmp G_M51022_IG23
- ;; size=24 bbWeight=0.50 PerfScore 3.12
-G_M51022_IG12: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ je G_M51022_IG25
+ jmp G_M51022_IG24
+ ;; size=15 bbWeight=0.50 PerfScore 2.50
+G_M51022_IG13: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
inc edx
- mov dword ptr [ebp-0x14], 1
+ mov esi, 1
cmp edx, edi
jge SHORT G_M51022_IG18
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M51022_IG13: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp+0x0C], esi
- mov esi, edx
- or esi, edi
- jl SHORT G_M51022_IG16
+ ;; size=10 bbWeight=1.98 PerfScore 3.46
+G_M51022_IG14: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ mov eax, edx
+ or eax, edi
+ jl SHORT G_M51022_IG17
cmp dword ptr [ecx+0x04], edi
- jl SHORT G_M51022_IG16
- ;; size=14 bbWeight=0.25 PerfScore 1.62
-G_M51022_IG14: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M51022_IG17
+ ;; size=11 bbWeight=0.25 PerfScore 1.38
+G_M51022_IG15: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [ecx+edx+0x08]
add eax, -48
cmp eax, 10
- jae G_M51022_IG21
- mov esi, dword ptr [ebp-0x14]
+ jae G_M51022_IG22
lea esi, [esi+4*esi]
add esi, esi
- mov dword ptr [ebp-0x14], esi
lea ebx, [ebx+4*ebx]
lea ebx, [eax+2*ebx]
inc edx
cmp edx, edi
- jl SHORT G_M51022_IG14
- ;; size=39 bbWeight=3.96 PerfScore 34.65
-G_M51022_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M51022_IG15
+ ;; size=33 bbWeight=3.96 PerfScore 26.73
+G_M51022_IG16: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- mov esi, dword ptr [ebp+0x0C]
jmp SHORT G_M51022_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51022_IG16: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M51022_IG17: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
movzx eax, byte ptr [ecx+edx+0x08]
add eax, -48
cmp eax, 10
- jae SHORT G_M51022_IG21
- mov esi, dword ptr [ebp-0x14]
+ jae SHORT G_M51022_IG22
lea esi, [esi+4*esi]
add esi, esi
lea ebx, [ebx+4*ebx]
lea ebx, [eax+2*ebx]
inc edx
cmp edx, edi
- mov dword ptr [ebp-0x14], esi
- jl SHORT G_M51022_IG16
- ;; size=44 bbWeight=0.04 PerfScore 0.51
-G_M51022_IG17: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl SHORT G_M51022_IG17
+ ;; size=38 bbWeight=0.04 PerfScore 0.43
+G_M51022_IG18: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- mov esi, dword ptr [ebp+0x0C]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M51022_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp esi, 8
- jle SHORT G_M51022_IG19
+ cmp dword ptr [ebp+0x0C], 8
+ jle SHORT G_M51022_IG20
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M51022_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, ebx
vxorps xmm1, xmm1, xmm1
- vcvtsi2sd xmm1, xmm1, dword ptr [ebp-0x14]
+ vcvtsi2sd xmm1, xmm1, esi
vdivsd xmm0, xmm0, xmm1
vcvtsd2ss xmm0, xmm0, xmm0
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- vmovss dword ptr [eax], xmm0
- jmp SHORT G_M51022_IG20
- ;; size=39 bbWeight=0.50 PerfScore 18.46
-G_M51022_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[eax]
+ mov esi, bword ptr [ebp+0x08]
...
-21 (-5.16%) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
@@ -78,11 +78,11 @@ G_M51273_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M51273_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor ecx, ecx
cmp ebx, 16
- jb SHORT G_M51273_IG05
+ jb SHORT G_M51273_IG08
mov edx, edi
cmp ebx, 32
- jb G_M51273_IG17
- ;; size=18 bbWeight=1 PerfScore 3.00
+ jb SHORT G_M51273_IG06
+ ;; size=14 bbWeight=1 PerfScore 3.00
G_M51273_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [ebx-0x20]
mov dword ptr [ebp-0x1C], eax
@@ -91,7 +91,7 @@ G_M51273_IG04: ; bbWeight=1.60, gcrefRegs=00000000 {}, byrefRegs=00000000
vmovups ymm0, ymmword ptr [esi+ecx]
vpmovmskb eax, ymm0
test eax, eax
- jne SHORT G_M51273_IG05
+ jne SHORT G_M51273_IG08
vmovaps ymm1, ymm0
vpmovzxbw ymm1, ymm1
vextracti128 xmm0, ymm0, 1
@@ -104,35 +104,55 @@ G_M51273_IG04: ; bbWeight=1.60, gcrefRegs=00000000 {}, byrefRegs=00000000
cmp ecx, eax
jbe SHORT G_M51273_IG04
;; size=55 bbWeight=1.60 PerfScore 35.60
-G_M51273_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, ebx
- jbe SHORT G_M51273_IG06
+G_M51273_IG05: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M51273_IG08
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M51273_IG06: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ lea eax, [ebx-0x10]
+ ;; size=3 bbWeight=0.20 PerfScore 0.10
+G_M51273_IG07: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ vmovups xmm0, xmmword ptr [esi+ecx]
+ vptest xmm0, xmmword ptr [@RWD00]
+ jne SHORT G_M51273_IG08
+ vpmovzxbw xmm1, xmm0
+ vpsrldq xmm0, xmm0, 8
+ vpmovzxbw xmm0, xmm0
+ vmovups xmmword ptr [edx], xmm1
+ vmovups xmmword ptr [edx+0x10], xmm0
+ add ecx, 16
+ add edx, 32
+ cmp ecx, eax
+ jbe SHORT G_M51273_IG07
+ ;; size=50 bbWeight=0.20 PerfScore 3.75
+G_M51273_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], ecx
+ cmp ecx, ebx
+ jbe SHORT G_M51273_IG09
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
+ ;; size=23 bbWeight=1 PerfScore 5.75
+G_M51273_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x10]
- ;; size=26 bbWeight=1 PerfScore 6.75
-G_M51273_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
sub ebx, ecx
mov dword ptr [ebp-0x14], ebx
cmp ebx, 4
- jb SHORT G_M51273_IG14
- ;; size=10 bbWeight=1 PerfScore 2.50
-G_M51273_IG07: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jb SHORT G_M51273_IG17
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M51273_IG10: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [ecx+ebx-0x04]
mov dword ptr [ebp-0x20], eax
;; size=7 bbWeight=0.80 PerfScore 1.60
-G_M51273_IG08: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG11: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, ecx
mov eax, dword ptr [esi+edx]
test eax, 0xD1FFAB1E
- jne G_M51273_IG19
- ;; size=16 bbWeight=2.80 PerfScore 9.80
-G_M51273_IG09: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M51273_IG20
+ ;; size=12 bbWeight=2.80 PerfScore 9.80
+G_M51273_IG12: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vmovd xmm0, eax
vpmovzxbw xmm0, xmm0
vmovd eax, xmm0
@@ -143,21 +163,21 @@ G_M51273_IG09: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000
add ecx, 4
mov eax, dword ptr [ebp-0x20]
cmp ecx, eax
- jbe SHORT G_M51273_IG08
+ jbe SHORT G_M51273_IG11
;; size=37 bbWeight=2.80 PerfScore 36.40
-G_M51273_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [ebp-0x14]
test bl, 2
- jne SHORT G_M51273_IG16
+ jne SHORT G_M51273_IG19
;; size=8 bbWeight=1 PerfScore 2.25
-G_M51273_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test bl, 1
- jne SHORT G_M51273_IG15
+ jne SHORT G_M51273_IG18
;; size=5 bbWeight=1 PerfScore 1.25
-G_M51273_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, ecx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M51273_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M51273_IG16: ; bbWeight=1, epilog, nogc, extend
vzeroupper
lea esp, [ebp-0x0C]
pop ebx
@@ -166,54 +186,34 @@ G_M51273_IG13: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 4
;; size=13 bbWeight=1 PerfScore 5.50
-G_M51273_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- jmp SHORT G_M51273_IG10
+G_M51273_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M51273_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51273_IG15: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG18: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+ecx]
mov ebx, eax
test bl, 128
- jne SHORT G_M51273_IG12
+ jne SHORT G_M51273_IG15
mov word ptr [edi+2*ecx], bx
inc ecx
- jmp SHORT G_M51273_IG12
+ jmp SHORT G_M51273_IG15
;; size=18 bbWeight=0.40 PerfScore 2.70
-G_M51273_IG16: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG19: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
movzx eax, word ptr [esi+ecx]
test eax, 0xD1FFAB1E
- jne SHORT G_M51273_IG19
+ jne SHORT G_M51273_IG20
movzx edx, al
mov word ptr [edi+2*ecx], dx
shr eax, 8
lea edx, [ecx+0x01]
mov word ptr [edi+2*edx], ax
add ecx, 2
- jmp SHORT G_M51273_IG11
+ jmp SHORT G_M51273_IG14
;; size=33 bbWeight=0.40 PerfScore 3.50
-G_M51273_IG17: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- lea eax, [ebx-0x10]
- ;; size=3 bbWeight=0.20 PerfScore 0.10
-G_M51273_IG18: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- vmovups xmm0, xmmword ptr [esi+ecx]
- vptest xmm0, xmmword ptr [@RWD00]
- jne G_M51273_IG05
- vpmovzxbw xmm1, xmm0
- vpsrldq xmm0, xmm0, 8
- vpmovzxbw xmm0, xmm0
- vmovups xmmword ptr [edx], xmm1
- vmovups xmmword ptr [edx+0x10], xmm0
- add ecx, 16
- add edx, 32
- mov dword ptr [ebp-0x10], ecx
- cmp ecx, eax
- mov ecx, dword ptr [ebp-0x10]
- jbe SHORT G_M51273_IG18
- jmp G_M51273_IG05
- ;; size=65 bbWeight=0.20 PerfScore 4.55
-G_M51273_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], eax
test eax, 0xD1FFAB1E
- jne SHORT G_M51273_IG21
+ jne SHORT G_M51273_IG22
mov dword ptr [ebp-0x10], ecx
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -222,25 +222,25 @@ G_M51273_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M51273_IG21
+ jmp SHORT G_M51273_IG22
;; size=34 bbWeight=0 PerfScore 0.00
-G_M51273_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
movzx edx, al
mov word ptr [edi+2*ecx], dx
inc ecx
shr eax, 8
mov dword ptr [ebp-0x18], eax
;; size=14 bbWeight=0 PerfScore 0.00
-G_M51273_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x18]
movzx edx, al
test dl, 128
- je SHORT G_M51273_IG20
- jmp G_M51273_IG12
+ je SHORT G_M51273_IG21
+ jmp G_M51273_IG15
;; size=16 bbWeight=0 PerfScore 0.00
RWD00 dq 8080808080808080h, 8080808080808080h
-; Total bytes of code 407, prolog size 19, PerfScore 124.95, instruction count 127, allocated bytes for code 407 (MethodHash=b01e37b6) for method System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
+; Total bytes of code 386, prolog size 19, PerfScore 125.75, instruction count 125, allocated bytes for code 386 (MethodHash=b01e37b6) for method System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
; ============================================================
-6 (-3.51%) : 22150.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
@@ -39,15 +39,26 @@ G_M29319_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=14 bbWeight=1 PerfScore 6.75
G_M29319_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je G_M29319_IG08
- test ebx, ebx
je SHORT G_M29319_IG07
+ test ebx, ebx
+ je SHORT G_M29319_IG06
xor eax, eax
mov dword ptr [ebp-0x10], eax
cmp dword ptr [ebx+0x04], 0
- jg SHORT G_M29319_IG05
- ;; size=23 bbWeight=1 PerfScore 7.75
-G_M29319_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M29319_IG04
+ ;; size=19 bbWeight=1 PerfScore 7.75
+G_M29319_IG03: ; bbWeight=0.52, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, 0xD1FFAB1E
+ call CORINFO_HELP_COUNTPROFILE32
+ mov ecx, dword ptr [ebp-0x10]
+ cmp gword ptr [ebx+4*ecx+0x08], 0
+ je SHORT G_M29319_IG06
+ inc ecx
+ cmp dword ptr [ebx+0x04], ecx
+ mov dword ptr [ebp-0x10], ecx
+ jg SHORT G_M29319_IG03
+ ;; size=29 bbWeight=0.52 PerfScore 5.95
+G_M29319_IG04: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
mov ecx, esi
@@ -73,7 +84,7 @@ G_M29319_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs -[ecx edx ebx esi edi] +[eax]
; gcr arg pop 3
;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M29319_IG04: ; bbWeight=1.00, epilog, nogc, extend
+G_M29319_IG05: ; bbWeight=1.00, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -81,23 +92,8 @@ G_M29319_IG04: ; bbWeight=1.00, epilog, nogc, extend
pop ebp
ret 20
;; size=8 bbWeight=1.00 PerfScore 4.50
-G_M29319_IG05: ; bbWeight=0.52, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[ebx esi edi]
- mov ecx, 0xD1FFAB1E
- call CORINFO_HELP_COUNTPROFILE32
- mov ecx, dword ptr [ebp-0x10]
- cmp gword ptr [ebx+4*ecx+0x08], 0
- je SHORT G_M29319_IG07
- inc ecx
- cmp dword ptr [ebx+0x04], ecx
- mov dword ptr [ebp-0x10], ecx
- jg SHORT G_M29319_IG05
- ;; size=29 bbWeight=0.52 PerfScore 5.95
-G_M29319_IG06: ; bbWeight=0.34, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M29319_IG03
- ;; size=2 bbWeight=0.34 PerfScore 0.68
-G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi edi]
+G_M29319_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
mov ecx, 0x2C9B
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -108,7 +104,7 @@ G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax ecx]
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M29319_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD50
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -120,6 +116,6 @@ G_M29319_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 171, prolog size 14, PerfScore 40.88, instruction count 60, allocated bytes for code 171 (MethodHash=63cd8d78) for method System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
+; Total bytes of code 165, prolog size 14, PerfScore 40.20, instruction count 59, allocated bytes for code 165 (MethodHash=63cd8d78) for method System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
; ============================================================
+16 (+4.89%) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
@@ -8,25 +8,25 @@
; 0 inlinees with PGO data; 15 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 15, 15 ) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase>
-; V02 arg2 [V02,T12] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String>
-; V03 arg3 [V03,T13] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String>
-; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]>
-; V05 arg5 [V05,T15] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
+; V00 this [V00,T02] ( 15, 15.98) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner>
+; V01 arg1 [V01,T09] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase>
+; V02 arg2 [V02,T13] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String>
+; V03 arg3 [V03,T14] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String>
+; V04 arg4 [V04,T15] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]>
+; V05 arg5 [V05,T12] ( 1, 1.98) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
; V06 arg6 [V06,T16] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <Xunit.Sdk.IMessageBus>
; V07 arg7 [V07,T17] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <Xunit.Sdk.ExceptionAggregator>
; V08 arg8 [V08,T18] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Threading.CancellationTokenSource>
-; V09 loc0 [V09,T06] ( 4, 6 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
-; V10 loc1 [V10,T05] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
+; V09 loc0 [V09,T07] ( 4, 6 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V10 loc1 [V10,T05] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
; V11 loc2 [V11,T01] ( 12, 21.04) int -> [ebp-0x10]
; V12 tmp0 [V12,T03] ( 4, 16 ) ref -> eax class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V13 tmp1 [V13,T09] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type>
-; V14 tmp2 [V14,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
-; V15 tmp3 [V15,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]>
-; V16 tmp4 [V16,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> ecx "argument with side effect"
-; V18 cse0 [V18,T04] ( 6, 7.50) int -> ebx "CSE - moderate"
+; V13 tmp1 [V13,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type>
+; V14 tmp2 [V14,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V15 tmp3 [V15,T04] ( 2, 7.92) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]>
+; V16 tmp4 [V16,T08] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> edi "argument with side effect"
+; V18 cse0 [V18,T06] ( 6, 7.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
; Lcl frame size = 12
@@ -130,30 +130,37 @@ G_M37566_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov eax, dword ptr [eax+0x34]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V09}
- mov ebx, dword ptr [edi+0x04]
- mov edx, ebx
+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ mov eax, dword ptr [ebx+0x04]
+ ; gcrRegs -[eax]
+ mov dword ptr [ebp-0x14], eax
+ mov edx, eax
mov ecx, 0xD1FFAB1E ; System.Type[]
call CORINFO_HELP_NEWARR_1_OBJ
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V10}
xor edx, edx
- test ebx, ebx
+ mov ecx, dword ptr [ebp-0x14]
+ test ecx, ecx
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
jle SHORT G_M37566_IG08
- ;; size=180 bbWeight=1 PerfScore 58.75
-G_M37566_IG03: ; bbWeight=0.50, gcVars=00000060 {V09 V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- cmp dword ptr [eax+0x04], ebx
+ ;; size=186 bbWeight=1 PerfScore 60.75
+G_M37566_IG03: ; bbWeight=0.50, gcVars=00000020 {V10}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp dword ptr [eax+0x04], ecx
+ mov gword ptr [ebp+0x14], edi
jl SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ ;; size=8 bbWeight=0.50 PerfScore 2.50
+G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08]
+ ; gcrRegs +[edi]
+ mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi]
mov edi, dword ptr [edi+0x2C]
call [edi+0x1C]<unknown method>
@@ -167,26 +174,26 @@ G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax edi]
; byrRegs -[edx]
inc ecx
- cmp ebx, ecx
+ cmp dword ptr [ebp-0x14], ecx
mov edx, ecx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
jg SHORT G_M37566_IG04
- ;; size=40 bbWeight=3.96 PerfScore 66.33
-G_M37566_IG05: ; bbWeight=1, gcVars=00000020 {V10}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
- ; GC ptr vars -{V09}
+ ;; size=40 bbWeight=3.96 PerfScore 70.29
+G_M37566_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
jmp SHORT G_M37566_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[edi]
- ; GC ptr vars +{V06 V09}
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M37566_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi] +[ebx]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08]
+ ; gcrRegs +[edi]
+ mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi]
mov edi, dword ptr [edi+0x2C]
call [edi+0x1C]<unknown method>
@@ -202,52 +209,53 @@ G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
inc edi
- cmp ebx, edi
- mov edx, edi
+ mov edx, dword ptr [ebp-0x14]
+ cmp edx, edi
jg SHORT G_M37566_IG10
- ;; size=42 bbWeight=0.04 PerfScore 0.79
-G_M37566_IG07: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V06 V09}
+ ;; size=45 bbWeight=0.04 PerfScore 0.83
+G_M37566_IG07: ; bbWeight=0.02, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
mov eax, ecx
; gcrRegs +[eax]
- ;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M37566_IG08: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
+ ;; size=5 bbWeight=0.02 PerfScore 0.03
+G_M37566_IG08: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp+0x14]
+ mov ecx, edi
; gcrRegs +[ecx]
mov edx, eax
; gcrRegs +[edx]
; GC ptr vars -{V10}
call [Xunit.Sdk.Reflector:ConvertArguments(System.Object[],System.Type[]):System.Object[]]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[ecx edx edi]
lea edx, bword ptr [esi+0x2C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax esi]
; byrRegs -[edx]
- ;; size=19 bbWeight=1 PerfScore 5.75
-G_M37566_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=18 bbWeight=1.98 PerfScore 9.90
+G_M37566_IG09: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 28
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M37566_IG10: ; bbWeight=0.02, gcVars=00000060 {V09 V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ecx esi]
- ; GC ptr vars +{V05 V06 V09 V10}
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
+ ;; size=10 bbWeight=1.98 PerfScore 8.91
+G_M37566_IG10: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx ebx esi]
+ ; GC ptr vars +{V05 V10}
+ mov edx, edi
jmp SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.02 PerfScore 0.06
+ ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M37566_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx esi edi]
- ; GC ptr vars -{V05 V06 V09 V10}
+ ; gcrRegs -[ecx ebx esi]
+ ; GC ptr vars -{V05 V10}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 327, prolog size 9, PerfScore 146.18, instruction count 107, allocated bytes for code 327 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
+; Total bytes of code 343, prolog size 9, PerfScore 166.17, instruction count 113, allocated bytes for code 343 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
; ============================================================
+16 (+4.89%) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
@@ -8,25 +8,25 @@
; 0 inlinees with PGO data; 15 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 15, 15 ) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase>
-; V02 arg2 [V02,T12] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String>
-; V03 arg3 [V03,T13] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String>
-; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]>
-; V05 arg5 [V05,T15] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
+; V00 this [V00,T02] ( 15, 15.98) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner>
+; V01 arg1 [V01,T09] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase>
+; V02 arg2 [V02,T13] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String>
+; V03 arg3 [V03,T14] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String>
+; V04 arg4 [V04,T15] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]>
+; V05 arg5 [V05,T12] ( 1, 1.98) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
; V06 arg6 [V06,T16] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <Xunit.Sdk.IMessageBus>
; V07 arg7 [V07,T17] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <Xunit.Sdk.ExceptionAggregator>
; V08 arg8 [V08,T18] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Threading.CancellationTokenSource>
-; V09 loc0 [V09,T06] ( 4, 6 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
-; V10 loc1 [V10,T05] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
+; V09 loc0 [V09,T07] ( 4, 6 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V10 loc1 [V10,T05] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
; V11 loc2 [V11,T01] ( 12, 21.04) int -> [ebp-0x10]
; V12 tmp0 [V12,T03] ( 4, 16 ) ref -> eax class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V13 tmp1 [V13,T09] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type>
-; V14 tmp2 [V14,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
-; V15 tmp3 [V15,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]>
-; V16 tmp4 [V16,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> ecx "argument with side effect"
-; V18 cse0 [V18,T04] ( 6, 7.50) int -> ebx "CSE - moderate"
+; V13 tmp1 [V13,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type>
+; V14 tmp2 [V14,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V15 tmp3 [V15,T04] ( 2, 7.92) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]>
+; V16 tmp4 [V16,T08] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> edi "argument with side effect"
+; V18 cse0 [V18,T06] ( 6, 7.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
; Lcl frame size = 12
@@ -130,30 +130,37 @@ G_M37566_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov eax, dword ptr [eax+0x34]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V09}
- mov ebx, dword ptr [edi+0x04]
- mov edx, ebx
+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ mov eax, dword ptr [ebx+0x04]
+ ; gcrRegs -[eax]
+ mov dword ptr [ebp-0x14], eax
+ mov edx, eax
mov ecx, 0xD1FFAB1E ; System.Type[]
call CORINFO_HELP_NEWARR_1_OBJ
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V10}
xor edx, edx
- test ebx, ebx
+ mov ecx, dword ptr [ebp-0x14]
+ test ecx, ecx
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
jle SHORT G_M37566_IG08
- ;; size=180 bbWeight=1 PerfScore 58.75
-G_M37566_IG03: ; bbWeight=0.50, gcVars=00000060 {V09 V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- cmp dword ptr [eax+0x04], ebx
+ ;; size=186 bbWeight=1 PerfScore 60.75
+G_M37566_IG03: ; bbWeight=0.50, gcVars=00000020 {V10}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp dword ptr [eax+0x04], ecx
+ mov gword ptr [ebp+0x14], edi
jl SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ ;; size=8 bbWeight=0.50 PerfScore 2.50
+G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08]
+ ; gcrRegs +[edi]
+ mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi]
mov edi, dword ptr [edi+0x2C]
call [edi+0x1C]<unknown method>
@@ -167,26 +174,26 @@ G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax edi]
; byrRegs -[edx]
inc ecx
- cmp ebx, ecx
+ cmp dword ptr [ebp-0x14], ecx
mov edx, ecx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
jg SHORT G_M37566_IG04
- ;; size=40 bbWeight=3.96 PerfScore 66.33
-G_M37566_IG05: ; bbWeight=1, gcVars=00000020 {V10}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
- ; GC ptr vars -{V09}
+ ;; size=40 bbWeight=3.96 PerfScore 70.29
+G_M37566_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
jmp SHORT G_M37566_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[edi]
- ; GC ptr vars +{V06 V09}
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M37566_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi] +[ebx]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08]
+ ; gcrRegs +[edi]
+ mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi]
mov edi, dword ptr [edi+0x2C]
call [edi+0x1C]<unknown method>
@@ -202,52 +209,53 @@ G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
inc edi
- cmp ebx, edi
- mov edx, edi
+ mov edx, dword ptr [ebp-0x14]
+ cmp edx, edi
jg SHORT G_M37566_IG10
- ;; size=42 bbWeight=0.04 PerfScore 0.79
-G_M37566_IG07: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V06 V09}
+ ;; size=45 bbWeight=0.04 PerfScore 0.83
+G_M37566_IG07: ; bbWeight=0.02, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
mov eax, ecx
; gcrRegs +[eax]
- ;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M37566_IG08: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp+0x14]
+ ; gcrRegs +[edi]
+ ;; size=5 bbWeight=0.02 PerfScore 0.03
+G_M37566_IG08: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp+0x14]
+ mov ecx, edi
; gcrRegs +[ecx]
mov edx, eax
; gcrRegs +[edx]
; GC ptr vars -{V10}
call [Xunit.Sdk.Reflector:ConvertArguments(System.Object[],System.Type[]):System.Object[]]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[ecx edx edi]
lea edx, bword ptr [esi+0x2C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax esi]
; byrRegs -[edx]
- ;; size=19 bbWeight=1 PerfScore 5.75
-G_M37566_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=18 bbWeight=1.98 PerfScore 9.90
+G_M37566_IG09: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 28
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M37566_IG10: ; bbWeight=0.02, gcVars=00000060 {V09 V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ecx esi]
- ; GC ptr vars +{V05 V06 V09 V10}
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
+ ;; size=10 bbWeight=1.98 PerfScore 8.91
+G_M37566_IG10: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx ebx esi]
+ ; GC ptr vars +{V05 V10}
+ mov edx, edi
jmp SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.02 PerfScore 0.06
+ ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M37566_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx esi edi]
- ; GC ptr vars -{V05 V06 V09 V10}
+ ; gcrRegs -[ecx ebx esi]
+ ; GC ptr vars -{V05 V10}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 327, prolog size 9, PerfScore 146.18, instruction count 107, allocated bytes for code 327 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
+; Total bytes of code 343, prolog size 9, PerfScore 166.17, instruction count 113, allocated bytes for code 343 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
; ============================================================
+17 (+6.20%) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
@@ -11,8 +11,8 @@
; V00 this [V00,T07] ( 7, 10 ) byref -> esi this single-def
; V01 arg1 [V01,T08] ( 4, 6.50) ref -> [ebp-0x14] class-hnd single-def <System.Xml.Linq.XNamespace>
; V02 arg2 [V02,T10] ( 2, 2.50) ubyte -> [ebp+0x08] single-def
-; V03 loc0 [V03,T03] ( 12, 52.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
-; V04 loc1 [V04,T04] ( 5, 50 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
+; V03 loc0 [V03,T03] ( 13, 54.50) ref -> [ebp-0x18] class-hnd <<unknown class>>
+; V04 loc1 [V04,T04] ( 6, 52 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Linq.XNamespace>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Linq.XNamespace>
; V07 tmp2 [V07,T00] ( 5,148.71) ref -> edx class-hnd exact "Inlining Arg" <System.String>
@@ -162,26 +162,28 @@ G_M50968_IG13: ; bbWeight=16, gcrefRegs=0000000E {ecx edx ebx}, byrefRegs
; gcrRegs +[ecx]
je SHORT G_M50968_IG10
;; size=34 bbWeight=16 PerfScore 180.00
-G_M50968_IG14: ; bbWeight=4, gcVars=00000108 {V01 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[ecx]
+G_M50968_IG14: ; bbWeight=8, gcVars=00000108 {V01 V03}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref
; GC ptr vars -{V04}
- jmp SHORT G_M50968_IG16
- ;; size=2 bbWeight=4 PerfScore 8.00
-G_M50968_IG15: ; bbWeight=2, gcVars=00000100 {V01}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
+ movzx ebx, byte ptr [ebp+0x08]
+ ;; size=7 bbWeight=8 PerfScore 16.00
+G_M50968_IG15: ; bbWeight=2, gcVars=00000100 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V03}
- test bl, bl
+ cmp ecx, eax
jne SHORT G_M50968_IG19
+ test bl, bl
+ jne SHORT G_M50968_IG20
mov edx, gword ptr [eax+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], 0
mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V03}
mov dword ptr [ebp+0x08], ebx
- jg SHORT G_M50968_IG21
- ;; size=19 bbWeight=2 PerfScore 18.50
+ jg SHORT G_M50968_IG22
+ ;; size=23 bbWeight=2 PerfScore 21.00
G_M50968_IG16: ; bbWeight=4, gcVars=00000108 {V01 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
+ ; gcrRegs -[eax ecx edx]
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
cmp eax, gword ptr [esi]
@@ -205,15 +207,23 @@ G_M50968_IG18: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M50968_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M50968_IG19: ; bbWeight=1, gcVars=00000100 {V01}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
+ ; GC ptr vars +{V01 V08}
+ mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V03}
+ mov dword ptr [ebp+0x08], ebx
+ jmp SHORT G_M50968_IG16
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M50968_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars -{V01 V03 V08}
lea edx, bword ptr [esi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
; byrRegs -[edx esi]
mov eax, gword ptr [eax+0x04]
;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M50968_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M50968_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -221,14 +231,14 @@ G_M50968_IG20: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M50968_IG21: ; bbWeight=0.50, gcVars=00000008 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M50968_IG22: ; bbWeight=0.50, gcVars=00000008 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; GC ptr vars +{V03}
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
mov eax, gword ptr [eax+0x04]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M50968_IG22: ; bbWeight=0.50, epilog, nogc, extend
+G_M50968_IG23: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -237,6 +247,6 @@ G_M50968_IG22: ; bbWeight=0.50, epilog, nogc, extend
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 274, prolog size 16, PerfScore 622.55, instruction count 111, allocated bytes for code 274 (MethodHash=853538e7) for method System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
+; Total bytes of code 291, prolog size 16, PerfScore 637.05, instruction count 117, allocated bytes for code 291 (MethodHash=853538e7) for method System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-43 (-12.91%) : 215942.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T18] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T11] ( 6, 43 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
-; V03 loc1 [V03,T14] ( 3, 22 ) ubyte -> [ebp-0x24]
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> ebx
+; V01 arg1 [V01,T11] ( 6, 19 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
+; V03 loc1 [V03,T14] ( 3, 10 ) ubyte -> [ebp-0x24]
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> ebx
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MemberInfo>
-; V07 tmp0 [V07,T00] ( 6,164.33) ref -> [ebp-0x34] class-hnd exact "non-inline candidate call" <System.String>
+; V07 tmp0 [V07,T00] ( 6,164.33) ref -> esi class-hnd exact "non-inline candidate call" <System.String>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]>
; V09 tmp2 [V09,T12] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp3 [V10,T01] ( 5,142.88) ref -> [ebp-0x38] class-hnd exact "Inlining Arg" <System.String>
-; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> eax "impAppendStmt"
+; V10 tmp3 [V10,T01] ( 5,142.88) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> ecx "impAppendStmt"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -28,22 +28,22 @@
;* V17 tmp10 [V17,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V20 tmp13 [V20,T13] ( 2, 64 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V20 tmp13 [V20,T13] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
;* V21 tmp14 [V21,T19] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> [ebp-0x3C] spill-single-def "field V05._current (fldOffset=0x4)" P-INDEP
+; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> eax "field V05._current (fldOffset=0x4)" P-INDEP
; V23 tmp16 [V23,T02] ( 6, 73.29) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP
-; V24 tmp17 [V24,T07] ( 2, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V24 tmp17 [V24,T07] ( 3, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> ecx "field V08._list (fldOffset=0x0)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x4)" P-INDEP
;* V27 tmp20 [V27,T20] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T16] ( 2, 8 ) int -> edx "field V08._version (fldOffset=0xc)" P-INDEP
;* V29 tmp22 [V29,T21] ( 0, 0 ) ubyte -> zero-ref "field V19.hasValue (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T17] ( 2, 32 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
+; V30 tmp23 [V30,T17] ( 2, 8 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
; V31 tmp24 [V31,T03] ( 3, 79.90) ref -> eax "arr expr"
; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
; V33 cse0 [V33,T05] ( 2, 32.05) int -> eax "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 36
G_M52580_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -51,7 +51,7 @@ G_M52580_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 48
+ sub esp, 36
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -67,10 +67,10 @@ G_M52580_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov edi, eax
; gcrRegs +[edi]
test edi, edi
- je G_M52580_IG19
+ je G_M52580_IG16
xor ebx, ebx
cmp dword ptr [esi+0x04], 0
- jle G_M52580_IG15
+ jle G_M52580_IG14
;; size=28 bbWeight=1 PerfScore 8.75
G_M52580_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
@@ -82,125 +82,87 @@ G_M52580_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor ecx, ecx
; gcrRegs -[ecx]
mov dword ptr [ebp-0x2C], edx
- jmp SHORT G_M52580_IG08
+ jmp SHORT G_M52580_IG09
;; size=17 bbWeight=4 PerfScore 27.00
-G_M52580_IG04: ; bbWeight=8, gcVars=00000040 {V22}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V22}
+G_M52580_IG04: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x30], esi
; GC ptr vars +{V01}
- mov eax, gword ptr [esi+4*ebx+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
- ; GC ptr vars +{V07}
- mov ecx, gword ptr [ebp-0x3C]
+ mov esi, gword ptr [esi+4*ebx+0x08]
+ mov ecx, eax
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- mov edx, dword ptr [edx+0x2C]
- ; GC ptr vars -{V22}
- call [edx+0x18]<unknown method>
- ; gcrRegs -[ecx esi]
+ mov eax, dword ptr [eax]
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [eax+0x2C]
+ call [eax+0x18]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x34]
+ mov ecx, esi
; gcrRegs +[ecx]
cmp byte ptr [ecx], cl
- cmp ecx, edx
- je G_M52580_IG16
- ;; size=36 bbWeight=8 PerfScore 140.00
-G_M52580_IG05: ; bbWeight=5.27, gcVars=00000800 {V01}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V07}
+ cmp esi, edx
+ je SHORT G_M52580_IG12
+ ;; size=27 bbWeight=8 PerfScore 120.00
+G_M52580_IG05: ; bbWeight=5.27, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ecx]
test edx, edx
- mov gword ptr [ebp-0x34], ecx
- ; GC ptr vars +{V07}
- mov gword ptr [ebp-0x38], edx
- ; GC ptr vars +{V10}
- mov ecx, dword ptr [ebp-0x28]
- ; gcrRegs -[ecx]
- je SHORT G_M52580_IG13
- ;; size=13 bbWeight=5.27 PerfScore 22.40
-G_M52580_IG06: ; bbWeight=42.17, gcVars=00000803 {V01 V07 V10}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov edx, gword ptr [ebp-0x34]
- ; gcrRegs +[edx]
- mov eax, dword ptr [edx+0x04]
- mov esi, gword ptr [ebp-0x38]
- ; gcrRegs +[esi]
- cmp eax, dword ptr [esi+0x04]
- mov gword ptr [ebp-0x34], edx
- mov gword ptr [ebp-0x38], esi
- mov esi, gword ptr [ebp-0x30]
- jne SHORT G_M52580_IG12
- ;; size=23 bbWeight=42.17 PerfScore 463.84
-G_M52580_IG07: ; bbWeight=8, gcVars=00000003 {V07 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- ; GC ptr vars -{V01}
- mov dword ptr [ebp-0x28], ecx
- mov edx, gword ptr [ebp-0x34]
- ; gcrRegs +[edx]
- lea eax, bword ptr [edx+0x08]
- ; byrRegs +[eax]
- mov edx, dword ptr [edx+0x04]
- ; gcrRegs -[edx]
- add edx, edx
- push edx
- mov edx, gword ptr [ebp-0x38]
- ; gcrRegs +[edx]
+ je G_M52580_IG17
+ ;; size=8 bbWeight=5.27 PerfScore 6.59
+G_M52580_IG06: ; bbWeight=42.17, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [esi+0x04]
+ cmp ecx, dword ptr [edx+0x04]
+ jne G_M52580_IG17
+ ;; size=12 bbWeight=42.17 PerfScore 253.00
+G_M52580_IG07: ; bbWeight=8, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [esi+0x08]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [esi+0x04]
+ add eax, eax
+ push eax
add edx, 8
; gcrRegs -[edx]
; byrRegs +[edx]
- mov ecx, eax
- ; byrRegs +[ecx]
- ; GC ptr vars -{V07 V10}
call [<unknown method>]
- ; byrRegs -[eax ecx edx]
+ ; gcrRegs -[esi]
+ ; byrRegs -[ecx edx]
test eax, eax
mov ecx, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x2C]
- jne SHORT G_M52580_IG11
- ;; size=39 bbWeight=8 PerfScore 108.00
-G_M52580_IG08: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M52580_IG12
+ ;; size=28 bbWeight=8 PerfScore 82.00
+G_M52580_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov esi, gword ptr [ebp-0x30]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=4 PerfScore 4.00
+G_M52580_IG09: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V01}
cmp edx, dword ptr [edi+0x0C]
- jne SHORT G_M52580_IG17
- ;; size=5 bbWeight=32 PerfScore 128.00
-G_M52580_IG09: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M52580_IG18
+ ;; size=9 bbWeight=32 PerfScore 128.00
+G_M52580_IG10: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [edi+0x08]
cmp ecx, eax
- jae SHORT G_M52580_IG14
+ jae SHORT G_M52580_IG13
;; size=7 bbWeight=16.02 PerfScore 52.08
-G_M52580_IG10: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M52580_IG11: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M52580_IG18
+ jae SHORT G_M52580_IG15
mov eax, gword ptr [eax+4*ecx+0x08]
- mov gword ptr [ebp-0x3C], eax
- ; GC ptr vars +{V22}
inc ecx
mov dword ptr [ebp-0x28], ecx
- jmp G_M52580_IG04
- ;; size=24 bbWeight=13.32 PerfScore 163.12
-G_M52580_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V22}
- mov gword ptr [ebp-0x30], esi
- ; GC ptr vars +{V01}
- jmp SHORT G_M52580_IG16
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M52580_IG12: ; bbWeight=21.08, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V01}
- mov edx, dword ptr [ebp-0x2C]
- jmp SHORT G_M52580_IG08
- ;; size=5 bbWeight=21.08 PerfScore 63.25
-G_M52580_IG13: ; bbWeight=2.64, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
+ jmp SHORT G_M52580_IG04
+ ;; size=18 bbWeight=13.32 PerfScore 149.81
+G_M52580_IG12: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax esi]
; GC ptr vars +{V01 V11}
- mov edx, dword ptr [ebp-0x2C]
+ mov dword ptr [ebp-0x24], 1
mov esi, gword ptr [ebp-0x30]
; gcrRegs +[esi]
- jmp SHORT G_M52580_IG08
- ;; size=8 bbWeight=2.64 PerfScore 10.54
-G_M52580_IG14: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=2 PerfScore 4.00
+G_M52580_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
...
-43 (-12.91%) : 216028.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T18] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T11] ( 6, 43 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
-; V03 loc1 [V03,T14] ( 3, 22 ) ubyte -> [ebp-0x24]
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> ebx
+; V01 arg1 [V01,T11] ( 6, 19 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
+; V03 loc1 [V03,T14] ( 3, 10 ) ubyte -> [ebp-0x24]
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> ebx
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-; V07 tmp0 [V07,T00] ( 6,164.33) ref -> [ebp-0x34] class-hnd exact "non-inline candidate call" <System.String>
+; V07 tmp0 [V07,T00] ( 6,164.33) ref -> esi class-hnd exact "non-inline candidate call" <System.String>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]>
; V09 tmp2 [V09,T12] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp3 [V10,T01] ( 5,142.88) ref -> [ebp-0x38] class-hnd exact "Inlining Arg" <System.String>
-; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> eax "impAppendStmt"
+; V10 tmp3 [V10,T01] ( 5,142.88) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> ecx "impAppendStmt"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -28,22 +28,22 @@
;* V17 tmp10 [V17,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V20 tmp13 [V20,T13] ( 2, 64 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V20 tmp13 [V20,T13] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
;* V21 tmp14 [V21,T19] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> [ebp-0x3C] spill-single-def "field V05._current (fldOffset=0x4)" P-INDEP
+; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> eax "field V05._current (fldOffset=0x4)" P-INDEP
; V23 tmp16 [V23,T02] ( 6, 73.29) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP
-; V24 tmp17 [V24,T07] ( 2, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V24 tmp17 [V24,T07] ( 3, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> ecx "field V08._list (fldOffset=0x0)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x4)" P-INDEP
;* V27 tmp20 [V27,T20] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T16] ( 2, 8 ) int -> edx "field V08._version (fldOffset=0xc)" P-INDEP
;* V29 tmp22 [V29,T21] ( 0, 0 ) ubyte -> zero-ref "field V19.hasValue (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T17] ( 2, 32 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
+; V30 tmp23 [V30,T17] ( 2, 8 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
; V31 tmp24 [V31,T03] ( 3, 79.90) ref -> eax "arr expr"
; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
; V33 cse0 [V33,T05] ( 2, 32.05) int -> eax "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 36
G_M38308_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -51,7 +51,7 @@ G_M38308_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 48
+ sub esp, 36
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -67,10 +67,10 @@ G_M38308_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov edi, eax
; gcrRegs +[edi]
test edi, edi
- je G_M38308_IG19
+ je G_M38308_IG16
xor ebx, ebx
cmp dword ptr [esi+0x04], 0
- jle G_M38308_IG15
+ jle G_M38308_IG14
;; size=28 bbWeight=1 PerfScore 8.75
G_M38308_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
@@ -82,125 +82,87 @@ G_M38308_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor ecx, ecx
; gcrRegs -[ecx]
mov dword ptr [ebp-0x2C], edx
- jmp SHORT G_M38308_IG08
+ jmp SHORT G_M38308_IG09
;; size=17 bbWeight=4 PerfScore 27.00
-G_M38308_IG04: ; bbWeight=8, gcVars=00000040 {V22}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V22}
+G_M38308_IG04: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x30], esi
; GC ptr vars +{V01}
- mov eax, gword ptr [esi+4*ebx+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
- ; GC ptr vars +{V07}
- mov ecx, gword ptr [ebp-0x3C]
+ mov esi, gword ptr [esi+4*ebx+0x08]
+ mov ecx, eax
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- mov edx, dword ptr [edx+0x2C]
- ; GC ptr vars -{V22}
- call [edx+0x18]<unknown method>
- ; gcrRegs -[ecx esi]
+ mov eax, dword ptr [eax]
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [eax+0x2C]
+ call [eax+0x18]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x34]
+ mov ecx, esi
; gcrRegs +[ecx]
cmp byte ptr [ecx], cl
- cmp ecx, edx
- je G_M38308_IG16
- ;; size=36 bbWeight=8 PerfScore 140.00
-G_M38308_IG05: ; bbWeight=5.27, gcVars=00000800 {V01}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V07}
+ cmp esi, edx
+ je SHORT G_M38308_IG12
+ ;; size=27 bbWeight=8 PerfScore 120.00
+G_M38308_IG05: ; bbWeight=5.27, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ecx]
test edx, edx
- mov gword ptr [ebp-0x34], ecx
- ; GC ptr vars +{V07}
- mov gword ptr [ebp-0x38], edx
- ; GC ptr vars +{V10}
- mov ecx, dword ptr [ebp-0x28]
- ; gcrRegs -[ecx]
- je SHORT G_M38308_IG13
- ;; size=13 bbWeight=5.27 PerfScore 22.40
-G_M38308_IG06: ; bbWeight=42.17, gcVars=00000803 {V01 V07 V10}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov edx, gword ptr [ebp-0x34]
- ; gcrRegs +[edx]
- mov eax, dword ptr [edx+0x04]
- mov esi, gword ptr [ebp-0x38]
- ; gcrRegs +[esi]
- cmp eax, dword ptr [esi+0x04]
- mov gword ptr [ebp-0x34], edx
- mov gword ptr [ebp-0x38], esi
- mov esi, gword ptr [ebp-0x30]
- jne SHORT G_M38308_IG12
- ;; size=23 bbWeight=42.17 PerfScore 463.84
-G_M38308_IG07: ; bbWeight=8, gcVars=00000003 {V07 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- ; GC ptr vars -{V01}
- mov dword ptr [ebp-0x28], ecx
- mov edx, gword ptr [ebp-0x34]
- ; gcrRegs +[edx]
- lea eax, bword ptr [edx+0x08]
- ; byrRegs +[eax]
- mov edx, dword ptr [edx+0x04]
- ; gcrRegs -[edx]
- add edx, edx
- push edx
- mov edx, gword ptr [ebp-0x38]
- ; gcrRegs +[edx]
+ je G_M38308_IG17
+ ;; size=8 bbWeight=5.27 PerfScore 6.59
+G_M38308_IG06: ; bbWeight=42.17, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [esi+0x04]
+ cmp ecx, dword ptr [edx+0x04]
+ jne G_M38308_IG17
+ ;; size=12 bbWeight=42.17 PerfScore 253.00
+G_M38308_IG07: ; bbWeight=8, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [esi+0x08]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [esi+0x04]
+ add eax, eax
+ push eax
add edx, 8
; gcrRegs -[edx]
; byrRegs +[edx]
- mov ecx, eax
- ; byrRegs +[ecx]
- ; GC ptr vars -{V07 V10}
call [<unknown method>]
- ; byrRegs -[eax ecx edx]
+ ; gcrRegs -[esi]
+ ; byrRegs -[ecx edx]
test eax, eax
mov ecx, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x2C]
- jne SHORT G_M38308_IG11
- ;; size=39 bbWeight=8 PerfScore 108.00
-G_M38308_IG08: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M38308_IG12
+ ;; size=28 bbWeight=8 PerfScore 82.00
+G_M38308_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov esi, gword ptr [ebp-0x30]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=4 PerfScore 4.00
+G_M38308_IG09: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V01}
cmp edx, dword ptr [edi+0x0C]
- jne SHORT G_M38308_IG17
- ;; size=5 bbWeight=32 PerfScore 128.00
-G_M38308_IG09: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M38308_IG18
+ ;; size=9 bbWeight=32 PerfScore 128.00
+G_M38308_IG10: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [edi+0x08]
cmp ecx, eax
- jae SHORT G_M38308_IG14
+ jae SHORT G_M38308_IG13
;; size=7 bbWeight=16.02 PerfScore 52.08
-G_M38308_IG10: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M38308_IG11: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M38308_IG18
+ jae SHORT G_M38308_IG15
mov eax, gword ptr [eax+4*ecx+0x08]
- mov gword ptr [ebp-0x3C], eax
- ; GC ptr vars +{V22}
inc ecx
mov dword ptr [ebp-0x28], ecx
- jmp G_M38308_IG04
- ;; size=24 bbWeight=13.32 PerfScore 163.12
-G_M38308_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V22}
- mov gword ptr [ebp-0x30], esi
- ; GC ptr vars +{V01}
- jmp SHORT G_M38308_IG16
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M38308_IG12: ; bbWeight=21.08, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V01}
- mov edx, dword ptr [ebp-0x2C]
- jmp SHORT G_M38308_IG08
- ;; size=5 bbWeight=21.08 PerfScore 63.25
-G_M38308_IG13: ; bbWeight=2.64, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
+ jmp SHORT G_M38308_IG04
+ ;; size=18 bbWeight=13.32 PerfScore 149.81
+G_M38308_IG12: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax esi]
; GC ptr vars +{V01 V11}
- mov edx, dword ptr [ebp-0x2C]
+ mov dword ptr [ebp-0x24], 1
mov esi, gword ptr [ebp-0x30]
; gcrRegs +[esi]
- jmp SHORT G_M38308_IG08
- ;; size=8 bbWeight=2.64 PerfScore 10.54
-G_M38308_IG14: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=2 PerfScore 4.00
+G_M38308_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
...
-14 (-8.09%) : 200557.dasm - System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
@@ -9,15 +9,15 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Xml.XmlDiff.XmlDiffDocument>
; V01 arg1 [V01,T04] ( 5, 7 ) ref -> edx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 3, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T03] ( 9, 10 ) int -> esi
; V04 loc1 [V04,T00] ( 13, 21.08) int -> ebx
-; V05 loc2 [V05,T01] ( 6, 12 ) ushort -> ecx
-; V06 loc3 [V06,T02] ( 6, 12 ) ushort -> edi
-; V07 cse0 [V07,T06] ( 7, 4.54) int -> [ebp-0x10] spill-single-def "CSE - moderate"
-; V08 cse1 [V08,T07] ( 6, 3.54) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V05 loc2 [V05,T01] ( 6, 12 ) ushort -> eax
+; V06 loc3 [V06,T02] ( 6, 12 ) ushort -> ecx
+; V07 cse0 [V07,T05] ( 7, 6.02) int -> edi "CSE - moderate"
+; V08 cse1 [V08,T06] ( 6, 5.02) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M40607_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,115 +25,116 @@ G_M40607_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.50
+ ;; size=10 bbWeight=1 PerfScore 6.25
G_M40607_IG02: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
mov ecx, dword ptr [edx+0x04]
- mov dword ptr [ebp-0x14], ecx
+ mov dword ptr [ebp-0x10], ecx
mov esi, ecx
+ mov gword ptr [ebp+0x08], eax
mov edi, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x10], edi
cmp edi, esi
cmovl esi, edi
xor ebx, ebx
test esi, esi
- jle SHORT G_M40607_IG09
+ jle SHORT G_M40607_IG08
;; size=25 bbWeight=1 PerfScore 8.25
-G_M40607_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+G_M40607_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
cmp ecx, esi
- jl SHORT G_M40607_IG07
+ jl SHORT G_M40607_IG06
cmp edi, esi
jl SHORT G_M40607_IG06
;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M40607_IG04: ; bbWeight=3.96, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- movzx ecx, word ptr [edx+2*ebx+0x08]
- movzx edi, word ptr [eax+2*ebx+0x08]
- cmp ecx, edi
- jl SHORT G_M40607_IG10
- jg SHORT G_M40607_IG13
+G_M40607_IG04: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ movzx eax, word ptr [edx+2*ebx+0x08]
+ mov ecx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ecx]
+ movzx ecx, word ptr [ecx+2*ebx+0x08]
+ ; gcrRegs -[ecx]
+ cmp eax, ecx
+ jl SHORT G_M40607_IG09
+ jg SHORT G_M40607_IG12
inc ebx
cmp ebx, esi
jl SHORT G_M40607_IG04
- ;; size=21 bbWeight=3.96 PerfScore 30.69
-G_M40607_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx]
- mov ecx, dword ptr [ebp-0x14]
- mov edi, dword ptr [ebp-0x10]
- jmp SHORT G_M40607_IG09
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M40607_IG06: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[eax edx]
- mov edi, dword ptr [ebp-0x10]
- ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M40607_IG07: ; bbWeight=0.04, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, dword ptr [ebp-0x14]
- jae SHORT G_M40607_IG17
- movzx ecx, word ptr [edx+2*ebx+0x08]
+ ;; size=24 bbWeight=3.96 PerfScore 34.65
+G_M40607_IG05: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x10]
+ jmp SHORT G_M40607_IG08
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M40607_IG06: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[edx]
+ cmp ebx, dword ptr [ebp-0x10]
+ jae SHORT G_M40607_IG16
+ movzx eax, word ptr [edx+2*ebx+0x08]
cmp ebx, edi
- jae SHORT G_M40607_IG17
- movzx edi, word ptr [eax+2*ebx+0x08]
- cmp ecx, edi
- jl SHORT G_M40607_IG10
- jg SHORT G_M40607_IG13
+ jae SHORT G_M40607_IG16
+ mov ecx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ecx]
+ movzx ecx, word ptr [ecx+2*ebx+0x08]
+ ; gcrRegs -[ecx]
+ cmp eax, ecx
+ jl SHORT G_M40607_IG09
+ jg SHORT G_M40607_IG12
inc ebx
cmp ebx, esi
- mov edi, dword ptr [ebp-0x10]
- jl SHORT G_M40607_IG07
+ jl SHORT G_M40607_IG06
;; size=33 bbWeight=0.04 PerfScore 0.52
-G_M40607_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax edx]
- mov ecx, dword ptr [ebp-0x14]
+G_M40607_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x10]
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M40607_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M40607_IG08: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi
- jge SHORT G_M40607_IG12
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M40607_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jge SHORT G_M40607_IG11
+ ;; size=4 bbWeight=1.98 PerfScore 2.48
+G_M40607_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG11: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+G_M40607_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40607_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov edi, dword ptr [ebp-0x10]
- cmp dword ptr [ebp-0x14], edi
- jle SHORT G_M40607_IG15
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M40607_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M40607_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp dword ptr [ebp-0x10], edi
+ jle SHORT G_M40607_IG14
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M40607_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+G_M40607_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40607_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M40607_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG16: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+G_M40607_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40607_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M40607_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 12, PerfScore 58.23, instruction count 75, allocated bytes for code 173 (MethodHash=18dd6160) for method System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
+; Total bytes of code 159, prolog size 10, PerfScore 67.98, instruction count 73, allocated bytes for code 159 (MethodHash=18dd6160) for method System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
; ============================================================
+33 (+9.76%) : 200462.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
@@ -8,18 +8,20 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 27 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T02] ( 10, 38.84) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T05] ( 8, 21.50) ref -> [ebp-0x20] class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 6, 25.16) ref -> edi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
-; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]>
+; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 19,106 ) int -> [ebp-0x14]
-; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
+; V06 loc2 [V06,T03] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
; V07 loc3 [V07,T07] ( 3, 20 ) ushort -> edx
-; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax
+; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax
; V09 cse0 [V09,T06] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x24]
+; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,29 +29,30 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 28
+ xor eax, eax
+ mov dword ptr [ebp-0x24], eax
mov esi, ecx
; gcrRegs +[esi]
mov ebx, edx
; gcrRegs +[ebx]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=21 bbWeight=1 PerfScore 7.25
G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x04]
mov dword ptr [ebp-0x1C], edx
- mov ecx, edx
- mov dword ptr [ebp-0x10], ecx
- xor eax, eax
- test ecx, ecx
+ mov dword ptr [ebp-0x10], edx
+ xor ecx, ecx
+ cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- push eax
- mov dword ptr [ebp-0x14], eax
- mov ecx, edx
- sub ecx, eax
push ecx
+ mov dword ptr [ebp-0x14], ecx
+ mov eax, edx
+ sub eax, ecx
+ push eax
mov ecx, ebx
; gcrRegs +[ecx]
mov edx, edi
@@ -62,19 +65,25 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=27 bbWeight=4 PerfScore 37.00
G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
- mov eax, dword ptr [ebp-0x10]
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M58768_IG15
- ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x20], ebx
+ ; GC ptr vars +{V01}
+ mov eax, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov eax, dword ptr [ebp-0x10]
- jmp G_M58768_IG15
- ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V01}
+ mov gword ptr [ebp-0x20], ebx
+ ; GC ptr vars +{V01}
+ mov eax, ecx
+ mov edx, dword ptr [ebp-0x10]
+ jmp G_M58768_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
+ ; GC ptr vars -{V01}
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x14], ecx
@@ -101,55 +110,57 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx
;; size=7 bbWeight=32 PerfScore 72.00
G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x14], ecx
movzx edx, word ptr [ebx+2*ecx+0x08]
mov eax, dword ptr [edi+0x04]
dec eax
- mov ebx, gword ptr [ebp-0x20]
- js SHORT G_M58768_IG14
- ;; size=29 bbWeight=4 PerfScore 45.00
-G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V01}
- cmp dword ptr [edi+0x04], eax
- mov gword ptr [ebp-0x20], ebx
- ; GC ptr vars +{V01}
- jle SHORT G_M58768_IG12
- ;; size=8 bbWeight=1 PerfScore 5.00
-G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ js SHORT G_M58768_IG12
+ ;; size=26 bbWeight=4 PerfScore 41.00
+G_M58768_IG09: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
+ cmp dword ptr [edi+0x04], eax
+ jle SHORT G_M58768_IG13
+ ;; size=5 bbWeight=1 PerfScore 4.00
+G_M58768_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx ebx, word ptr [edi+2*eax+0x08]
cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
jns SHORT G_M58768_IG10
;; size=12 bbWeight=15.84 PerfScore 71.28
G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=5 bbWeight=4 PerfScore 12.00
-G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M58768_IG15
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M58768_IG13: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
cmp eax, dword ptr [edi+0x04]
- jae G_M58768_IG22
+ jae G_M58768_IG23
movzx ebx, word ptr [edi+2*eax+0x08]
cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12
- mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=26 bbWeight=0.16 PerfScore 1.84
-G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08]
; gcrRegs +[edx]
mov ecx, esi
@@ -158,33 +169,32 @@ G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov eax, dword ptr [eax+0x2C]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx edx]
+ ;; size=26 bbWeight=7.92 PerfScore 112.86
+G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x14]
+ inc eax
+ mov edx, dword ptr [ebp-0x10]
+ cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20]
- ;; size=28 bbWeight=2 PerfScore 32.50
-G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V01}
- mov ecx, dword ptr [ebp-0x14]
- inc ecx
- mov eax, dword ptr [ebp-0x10]
- cmp ecx, eax
- jl SHORT G_M58768_IG18
- ;; size=11 bbWeight=4 PerfScore 14.00
-G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- test ecx, ecx
- jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19
+ ;; size=14 bbWeight=4 PerfScore 18.00
+G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx edi]
+ test eax, eax
+ jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x2C]
+ ; GC ptr vars -{V01}
call [eax+0x1C]<unknown method>
- ; gcrRegs -[ecx edx ebx esi]
- ;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx esi]
+ ;; size=13 bbWeight=0.50 PerfScore 4.12
+G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -192,35 +202,51 @@ G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M58768_IG18: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[ebx esi edi]
- mov eax, ecx
+G_M58768_IG19: ; bbWeight=2, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi edi]
+ ; GC ptr vars +{V01 V05}
+ mov ecx, eax
mov edx, dword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x20]
...
+24 (+10.13%) : 174193.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesEightByteSize(int) (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 10, 10.04) int -> esi single-def
-; V01 loc0 [V01,T08] ( 8, 8.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.ValueTuple`2[int,int][]>
-; V02 loc1 [V02,T07] ( 6, 10 ) ref -> ebx class-hnd exact single-def <System.ValueTuple`2[int,int][]>
+; V00 arg0 [V00,T05] ( 10, 10.04) int -> [ebp-0x10] single-def
+; V01 loc0 [V01,T07] ( 8, 10.50) ref -> edi class-hnd exact single-def <System.ValueTuple`2[int,int][]>
+; V02 loc1 [V02,T08] ( 6, 10 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.ValueTuple`2[int,int][]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[System.ValueTuple`2[int,int]]>
; V04 loc3 [V04,T03] ( 11, 21 ) int -> ecx
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ValueTuple`2[int,int]>
@@ -27,8 +27,8 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.ValueTuple`2[int,int]>
;* V17 tmp11 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp13 [V19,T11] ( 2, 1.50) byref -> esi "field V03._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp14 [V20,T10] ( 4, 3 ) int -> [ebp-0x10] spill-single-def "field V03._length (fldOffset=0x4)" P-INDEP
+; V19 tmp13 [V19,T11] ( 2, 2.48) byref -> esi "field V03._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp14 [V20,T09] ( 4, 4.96) int -> [ebp-0x14] spill-single-def "field V03._length (fldOffset=0x4)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "field V05.Item1 (fldOffset=0x0)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "field V05.Item2 (fldOffset=0x4)" P-INDEP
; V23 tmp17 [V23,T06] ( 6, 12 ) int -> eax "field V06.Item1 (fldOffset=0x0)" P-INDEP
@@ -39,12 +39,12 @@
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V16.Item1 (fldOffset=0x0)" P-INDEP
;* V30 tmp24 [V30 ] ( 0, 0 ) int -> zero-ref "field V16.Item2 (fldOffset=0x4)" P-INDEP
-; V31 tmp25 [V31,T02] ( 6, 24 ) int -> edi "index expr"
-; V32 tmp26 [V32,T00] ( 6, 24 ) byref -> edi "BlockOp address local"
-; V33 tmp27 [V33,T01] ( 6, 24 ) byref -> edi "BlockOp address local"
-; V34 cse0 [V34,T09] ( 4, 4.54) int -> [ebp-0x14] hoist multi-def "CSE - moderate"
+; V31 tmp25 [V31,T02] ( 6, 24 ) int -> ebx "index expr"
+; V32 tmp26 [V32,T00] ( 6, 24 ) byref -> ebx "BlockOp address local"
+; V33 tmp27 [V33,T01] ( 6, 24 ) byref -> ebx "BlockOp address local"
+; V34 cse0 [V34,T10] ( 4, 4.54) int -> [ebp-0x18] hoist multi-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M1960_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -52,7 +52,7 @@ G_M1960_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 16
mov esi, ecx
;; size=11 bbWeight=1 PerfScore 4.75
G_M1960_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
@@ -62,123 +62,127 @@ G_M1960_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs +[eax]
mov edi, eax
; gcrRegs +[edi]
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
mov edx, esi
mov ecx, 0xD1FFAB1E ; System.ValueTuple`2[int,int][]
call CORINFO_HELP_NEWARR_1_VC
- mov ebx, eax
- ; gcrRegs +[ebx]
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V02}
xor ecx, ecx
test esi, esi
- jle SHORT G_M1960_IG08
- ;; size=37 bbWeight=1 PerfScore 6.00
-G_M1960_IG03: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M1960_IG06
+ ;; size=35 bbWeight=1 PerfScore 5.75
+G_M1960_IG03: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
cmp dword ptr [edi+0x04], esi
- jl SHORT G_M1960_IG06
+ jl SHORT G_M1960_IG07
+ mov dword ptr [ebp-0x10], esi
lea edx, [esi-0x01]
- mov dword ptr [ebp-0x14], edx
- ;; size=11 bbWeight=0.50 PerfScore 2.75
-G_M1960_IG04: ; bbWeight=3.96, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
+ mov dword ptr [ebp-0x18], edx
+ ;; size=14 bbWeight=0.50 PerfScore 3.25
+G_M1960_IG04: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
neg eax
mov edx, ecx
- mov edi, dword ptr [ebp-0x14]
- sub edi, edx
- cmp edi, dword ptr [ebx+0x04]
- jae G_M1960_IG14
- lea edi, bword ptr [ebx+8*edi+0x08]
- ; byrRegs +[edi]
- mov dword ptr [edi], eax
- mov dword ptr [edi+0x04], edx
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ; byrRegs -[edi]
- lea edi, bword ptr [edi+8*edx+0x08]
- ; gcrRegs -[edi]
- ; byrRegs +[edi]
- mov dword ptr [edi], eax
- mov dword ptr [edi+0x04], edx
+ mov ebx, dword ptr [ebp-0x18]
+ sub ebx, edx
+ mov esi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[esi]
+ cmp ebx, dword ptr [esi+0x04]
+ jae G_M1960_IG16
+ lea ebx, bword ptr [esi+8*ebx+0x08]
+ ; byrRegs +[ebx]
+ mov dword ptr [ebx], eax
+ mov dword ptr [ebx+0x04], edx
+ lea ebx, bword ptr [edi+8*edx+0x08]
+ mov dword ptr [ebx], eax
+ mov dword ptr [ebx+0x04], edx
inc ecx
- cmp ecx, esi
+ mov ebx, dword ptr [ebp-0x10]
+ ; byrRegs -[ebx]
+ cmp ecx, ebx
+ mov dword ptr [ebp-0x10], ebx
jl SHORT G_M1960_IG04
- ;; size=46 bbWeight=3.96 PerfScore 57.42
-G_M1960_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M1960_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M1960_IG06: ; bbWeight=0.04, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
+ ;; size=52 bbWeight=3.96 PerfScore 65.34
+G_M1960_IG05: ; bbWeight=1.98, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M1960_IG09
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M1960_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M1960_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M1960_IG07: ; bbWeight=0.04, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
mov eax, ecx
neg eax
mov edx, ecx
- lea edi, [esi-0x01]
- sub edi, edx
- cmp edi, dword ptr [ebx+0x04]
- jae SHORT G_M1960_IG14
- lea edi, bword ptr [ebx+8*edi+0x08]
- ; byrRegs +[edi]
- mov dword ptr [edi], eax
- mov dword ptr [edi+0x04], edx
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ; byrRegs -[edi]
+ mov dword ptr [ebp-0x10], esi
+ lea ebx, [esi-0x01]
+ sub ebx, edx
+ mov esi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[esi]
+ cmp ebx, dword ptr [esi+0x04]
+ jae SHORT G_M1960_IG16
+ lea ebx, bword ptr [esi+8*ebx+0x08]
+ ; byrRegs +[ebx]
+ mov dword ptr [ebx], eax
+ mov dword ptr [ebx+0x04], edx
cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M1960_IG14
- lea edi, bword ptr [edi+8*edx+0x08]
- ; gcrRegs -[edi]
- ; byrRegs +[edi]
- mov dword ptr [edi], eax
- mov dword ptr [edi+0x04], edx
+ jae SHORT G_M1960_IG16
+ lea ebx, bword ptr [edi+8*edx+0x08]
+ mov dword ptr [ebx], eax
+ mov dword ptr [ebx+0x04], edx
inc ecx
- cmp ecx, esi
- jl SHORT G_M1960_IG06
- ;; size=47 bbWeight=0.04 PerfScore 0.72
-G_M1960_IG07: ; bbWeight=0.02, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; byrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M1960_IG08: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x10]
+ ; byrRegs -[ebx]
+ cmp ecx, ebx
+ jl SHORT G_M1960_IG15
+ ;; size=53 bbWeight=0.04 PerfScore 0.80
+G_M1960_IG08: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ebx, esi
+ ; gcrRegs +[ebx]
+ ;; size=2 bbWeight=0.02 PerfScore 0.01
+G_M1960_IG09: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
lea esi, bword ptr [edi+0x08]
; byrRegs +[esi]
mov eax, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
cmp eax, 1
- jle SHORT G_M1960_IG11
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M1960_IG09: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ jle SHORT G_M1960_IG12
+ ;; size=14 bbWeight=1.98 PerfScore 9.40
+G_M1960_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 1
- ja SHORT G_M1960_IG13
+ ja SHORT G_M1960_IG14
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x10]
+ mov eax, dword ptr [ebp-0x14]
;; size=24 bbWeight=0.50 PerfScore 2.88
-G_M1960_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M1960_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
mov ecx, esi
; byrRegs +[ecx]
mov edx, eax
call [<unknown method>]
; byrRegs -[ecx esi]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M1960_IG11: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+G_M1960_IG12: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
; gcrRegs +[ecx]
mov edx, edi
; gcrRegs +[edx]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V02}
call [Xunit.Assert:Equal[System.ValueTuple`2[int,int]](System.ValueTuple`2[int,int][],System.ValueTuple`2[int,int][])]
; gcrRegs -[ecx edx ebx edi]
;; size=10 bbWeight=1 PerfScore 3.50
-G_M1960_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M1960_IG13: ; bbWeight=1, epilog, nogc, extend
...
+19 (+11.18%) : 101265.dasm - System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
@@ -9,15 +9,15 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 7, 7.54) ref -> esi class-hnd single-def <int[]>
-; V01 arg1 [V01,T06] ( 3, 3 ) int -> edi single-def
-; V02 arg2 [V02,T07] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Action>
-; V03 loc0 [V03,T04] ( 5, 7 ) ref -> ebx class-hnd exact single-def <System.UnitTesting.CompositionAssert+CompositionErrorExpectation[]>
+; V01 arg1 [V01,T06] ( 3, 3.98) int -> edi single-def
+; V02 arg2 [V02,T07] ( 1, 1.98) ref -> ebx class-hnd single-def <System.Action>
+; V03 loc0 [V03,T04] ( 5, 7.98) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.UnitTesting.CompositionAssert+CompositionErrorExpectation[]>
; V04 loc1 [V04,T01] ( 12, 21.04) int -> [ebp-0x10]
; V05 tmp0 [V05,T00] ( 8, 32 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.UnitTesting.CompositionAssert+CompositionErrorExpectation>
; V06 tmp1 [V06,T02] ( 4, 16 ) int -> edx "Inlining Arg"
; V07 cse0 [V07,T05] ( 5, 6.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M18995_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,29 +25,31 @@ G_M18995_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
- ;; size=13 bbWeight=1 PerfScore 5.00
-G_M18995_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M18995_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [esi+0x04]
mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation[]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- xor eax, eax
+ mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V03}
+ xor edx, edx
+ mov dword ptr [ebp-0x10], edx
+ mov ecx, dword ptr [eax+0x04]
+ mov dword ptr [ebp-0x14], ecx
+ test ecx, ecx
+ jle SHORT G_M18995_IG06
+ ;; size=31 bbWeight=1 PerfScore 9.75
+G_M18995_IG03: ; bbWeight=0.50, gcVars=00000010 {V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], eax
- mov edx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x14], edx
- test edx, edx
- jle SHORT G_M18995_IG07
- ;; size=30 bbWeight=1 PerfScore 9.00
-G_M18995_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi+0x04], edx
- jl SHORT G_M18995_IG06
+ cmp dword ptr [esi+0x04], ecx
+ jl SHORT G_M18995_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation
@@ -57,7 +59,10 @@ G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
mov edx, dword ptr [esi+4*ecx+0x08]
mov dword ptr [eax+0x14], edx
mov byte ptr [eax+0x18], 1
- lea edx, bword ptr [ebx+4*ecx+0x08]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -66,23 +71,34 @@ G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
mov dword ptr [ebp-0x10], ecx
cmp dword ptr [ebp-0x14], ecx
jg SHORT G_M18995_IG04
- ;; size=42 bbWeight=3.96 PerfScore 49.50
-G_M18995_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=45 bbWeight=3.96 PerfScore 53.46
+G_M18995_IG05: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- jmp SHORT G_M18995_IG07
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M18995_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ jmp SHORT G_M18995_IG09
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M18995_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ jmp SHORT G_M18995_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M18995_IG07: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[esi]
mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
mov ecx, dword ptr [ebp-0x10]
cmp ecx, dword ptr [esi+0x04]
- jae SHORT G_M18995_IG09
+ jae SHORT G_M18995_IG11
mov edx, dword ptr [esi+4*ecx+0x08]
mov dword ptr [eax+0x14], edx
mov byte ptr [eax+0x18], 1
- lea edx, bword ptr [ebx+4*ecx+0x08]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -91,32 +107,37 @@ G_M18995_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
mov edx, dword ptr [ebp-0x14]
cmp edx, ecx
mov dword ptr [ebp-0x10], ecx
- jg SHORT G_M18995_IG06
- ;; size=49 bbWeight=0.04 PerfScore 0.63
-G_M18995_IG07: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M18995_IG07
+ ;; size=52 bbWeight=0.04 PerfScore 0.67
+G_M18995_IG08: ; bbWeight=0.02, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
- push gword ptr [ebp+0x08]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ ;; size=3 bbWeight=0.02 PerfScore 0.02
+G_M18995_IG09: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+ push ebx
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, eax
; gcrRegs +[ecx]
mov edx, edi
+ ; GC ptr vars -{V03}
call [System.UnitTesting.CompositionAssert:ThrowsErrors(System.UnitTesting.CompositionAssert+CompositionErrorExpectation[],int,System.Action)]
- ; gcrRegs -[ecx ebx]
+ ; gcrRegs -[eax ecx ebx]
; gcr arg pop 1
- ;; size=13 bbWeight=1 PerfScore 4.50
-G_M18995_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1.98 PerfScore 8.91
+G_M18995_IG10: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M18995_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1.98 PerfScore 8.91
+G_M18995_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 13, PerfScore 77.13, instruction count 60, allocated bytes for code 170 (MethodHash=c9d5b5cc) for method System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
+; Total bytes of code 189, prolog size 16, PerfScore 97.16, instruction count 67, allocated bytes for code 189 (MethodHash=c9d5b5cc) for method System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
; ============================================================
realworld.run.windows.x86.checked.mch
-21 (-7.61%) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
@@ -8,21 +8,21 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 4, 7 ) ref -> [ebp-0x1C] class-hnd single-def <System.String>
-; V01 loc0 [V01,T04] ( 8, 37.50) ref -> edi class-hnd exact single-def <uint[]>
-; V02 loc1 [V02,T06] ( 6, 11 ) int -> [ebp-0x10]
-; V03 loc2 [V03,T05] ( 7, 21 ) int -> [ebp-0x14]
-; V04 loc3 [V04,T03] ( 11, 38 ) int -> ecx
+; V00 arg0 [V00,T08] ( 4, 7 ) ref -> [ebp-0x18] class-hnd single-def <System.String>
+; V01 loc0 [V01,T04] ( 8, 43.42) ref -> edi class-hnd exact single-def <uint[]>
+; V02 loc1 [V02,T06] ( 6, 28.76) int -> ebx
+; V03 loc2 [V03,T07] ( 7, 21 ) int -> [ebp-0x10]
+; V04 loc3 [V04,T03] ( 11, 43.92) int -> ecx
; V05 loc4 [V05,T00] ( 15, 85.32) int -> edx
; V06 loc5 [V06,T11] ( 3, 4.50) ref -> eax class-hnd exact <System.String>
; V07 tmp0 [V07,T01] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store"
-; V08 tmp1 [V08,T08] ( 2, 8 ) int -> ebx "dup spill"
+; V08 tmp1 [V08,T05] ( 2, 31.68) int -> ebx "dup spill"
; V09 tmp2 [V09,T09] ( 3, 6 ) int -> edx "Inline return value spill temp"
;* V10 tmp3 [V10,T12] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 47.52) int -> esi "CSE - aggressive"
-; V12 cse1 [V12,T10] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V12 cse1 [V12,T10] ( 3, 6 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M43253_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -30,7 +30,7 @@ G_M43253_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -45,18 +45,18 @@ G_M43253_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor eax, eax
; gcrRegs -[eax]
mov edx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x18], edx
+ mov dword ptr [ebp-0x14], edx
test edx, edx
- jle G_M43253_IG18
+ jle G_M43253_IG19
;; size=35 bbWeight=1 PerfScore 6.50
G_M43253_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], esi
+ mov gword ptr [ebp-0x18], esi
; GC ptr vars +{V00}
movzx ecx, word ptr [esi+2*eax+0x08]
cmp ecx, 65
jb SHORT G_M43253_IG05
;; size=13 bbWeight=4 PerfScore 17.00
-G_M43253_IG04: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43253_IG04: ; bbWeight=2, gcVars=00000100 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
cmp ecx, 90
ja SHORT G_M43253_IG05
@@ -73,9 +73,8 @@ G_M43253_IG06: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000
cmp ecx, 45
je SHORT G_M43253_IG07
xor ebx, ebx
- mov dword ptr [ebp-0x10], ebx
- jmp G_M43253_IG17
- ;; size=15 bbWeight=2 PerfScore 9.00
+ jmp SHORT G_M43253_IG18
+ ;; size=9 bbWeight=2 PerfScore 7.00
G_M43253_IG07: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 28
jle SHORT G_M43253_IG08
@@ -83,9 +82,9 @@ G_M43253_IG07: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000
jmp SHORT G_M43253_IG09
;; size=12 bbWeight=2 PerfScore 7.00
G_M43253_IG08: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], eax
mov edx, eax
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x10]
;; size=8 bbWeight=2 PerfScore 4.50
G_M43253_IG09: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
@@ -96,23 +95,23 @@ G_M43253_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
jg SHORT G_M43253_IG14
;; size=5 bbWeight=1 PerfScore 1.25
G_M43253_IG11: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x10], ebx
+ mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M43253_IG12: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx-0x01]
cmp esi, 29
- jae G_M43253_IG22
- imul ebx, dword ptr [edi+4*edx+0x04], 31
- add ebx, ecx
- mov dword ptr [edi+4*edx+0x08], ebx
+ jae SHORT G_M43253_IG22
+ imul eax, dword ptr [edi+4*edx+0x04], 31
+ add eax, ecx
+ mov dword ptr [edi+4*edx+0x08], eax
mov edx, esi
test edx, edx
jg SHORT G_M43253_IG12
- ;; size=29 bbWeight=15.84 PerfScore 150.48
-G_M43253_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, dword ptr [ebp-0x10]
+ ;; size=25 bbWeight=15.84 PerfScore 150.48
+G_M43253_IG13: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
jmp SHORT G_M43253_IG15
- ;; size=5 bbWeight=2 PerfScore 6.00
+ ;; size=5 bbWeight=7.92 PerfScore 23.76
G_M43253_IG14: ; bbWeight=0.16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx-0x01]
cmp esi, 29
@@ -126,35 +125,35 @@ G_M43253_IG14: ; bbWeight=0.16, gcrefRegs=00000080 {edi}, byrefRegs=00000
test edx, edx
jg SHORT G_M43253_IG14
;; size=29 bbWeight=0.16 PerfScore 1.72
-G_M43253_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M43253_IG15: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [edi+0x08], ecx
inc ebx
cmp ebx, 4
- jl SHORT G_M43253_IG20
- mov dword ptr [ebp-0x14], eax
+ jl SHORT G_M43253_IG18
+ ;; size=9 bbWeight=7.92 PerfScore 19.80
+G_M43253_IG16: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], eax
mov ecx, edi
; gcrRegs +[ecx]
mov edx, ebx
call [System.Management.Automation.ScriptBlock+SuspiciousContentChecker:CheckForMatches(uint[],int):System.String]
; gcrRegs -[ecx] +[eax]
test eax, eax
- mov dword ptr [ebp-0x10], ebx
jne SHORT G_M43253_IG21
- ;; size=29 bbWeight=2 PerfScore 18.50
-G_M43253_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=17 bbWeight=2 PerfScore 11.50
+G_M43253_IG17: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x10]
;; size=3 bbWeight=1 PerfScore 1.00
-G_M43253_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M43253_IG18: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
inc eax
- mov edx, dword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
cmp edx, eax
- mov ebx, dword ptr [ebp-0x10]
- mov esi, gword ptr [ebp-0x1C]
+ mov esi, gword ptr [ebp-0x18]
; gcrRegs +[esi]
jg G_M43253_IG03
- ;; size=18 bbWeight=4 PerfScore 18.00
-G_M43253_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=15 bbWeight=4 PerfScore 14.00
+G_M43253_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
; GC ptr vars -{V00}
mov ecx, edi
@@ -163,7 +162,7 @@ G_M43253_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {e
call [System.Management.Automation.ScriptBlock+SuspiciousContentChecker:CheckForMatches(uint[],int):System.String]
; gcrRegs -[ecx edi] +[eax]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M43253_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43253_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -171,15 +170,7 @@ G_M43253_IG19: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M43253_IG20: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[edi]
- ; GC ptr vars +{V00 V07}
- mov dword ptr [ebp-0x10], ebx
- jmp SHORT G_M43253_IG17
- ;; size=5 bbWeight=1 PerfScore 3.00
G_M43253_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[edi] +[eax]
- ; GC ptr vars -{V00 V07}
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -193,6 +184,6 @@ G_M43253_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 11, PerfScore 268.95, instruction count 105, allocated bytes for code 276 (MethodHash=ca42570a) for method System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
+; Total bytes of code 255, prolog size 11, PerfScore 290.51, instruction count 100, allocated bytes for code 255 (MethodHash=ca42570a) for method System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
; ============================================================
-19 (-6.03%) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
@@ -8,27 +8,27 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T09] ( 3, 3 ) byref -> [ebp-0x20] single-def
+; V00 RetBuf [V00,T09] ( 3, 2 ) byref -> [ebp-0x20] single-def
; V01 arg0 [V01,T03] ( 4, 10 ) ref -> esi class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+cenv>
; V02 arg1 [V02,T07] ( 2, 8 ) ref -> ebx class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+env>
-; V03 arg2 [V03,T05] ( 6, 10.58) ref -> edi class-hnd single-def <FSharp.Compiler.TypedTree+DecisionTreeTarget[]>
+; V03 arg2 [V03,T04] ( 6, 10.58) ref -> edi class-hnd single-def <FSharp.Compiler.TypedTree+DecisionTreeTarget[]>
; V04 arg3 [V04,T08] ( 2, 8 ) ref -> [ebp+0x08] class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
-; V06 loc1 [V06,T04] ( 5, 11 ) ref -> [ebp-0x24] class-hnd exact spill-single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
+; V06 loc1 [V06,T06] ( 5, 10 ) ref -> [ebp-0x24] class-hnd exact spill-single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
; V07 loc2 [V07,T00] ( 12, 41.08) int -> [ebp-0x10]
; V08 loc3 [V08 ] ( 4, 32 ) struct ( 8) [ebp-0x18] do-not-enreg[HS] hidden-struct-arg "Strict ordering of exceptions for Array store" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit>
-; V09 tmp1 [V09,T10] ( 2, 4 ) ref -> esi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V09 tmp1 [V09,T11] ( 2, 0 ) ref -> esi class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit>
-; V11 tmp3 [V11,T13] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V11 tmp3 [V11,T10] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field empty struct" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit>
; V13 tmp5 [V13,T01] ( 4, 32 ) int -> [ebp-0x18] do-not-enreg[H] hidden-struct-arg "field V08.scope@ (fldOffset=0x0)" P-DEP
; V14 tmp6 [V14,T02] ( 4, 32 ) int -> [ebp-0x14] do-not-enreg[H] hidden-struct-arg "field V08.flags@ (fldOffset=0x4)" P-DEP
;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "field V10.scope@ (fldOffset=0x0)" P-INDEP
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "field V10.flags@ (fldOffset=0x4)" P-INDEP
-;* V17 tmp9 [V17,T11] ( 0, 0 ) int -> zero-ref single-def "field V12.scope@ (fldOffset=0x0)" P-INDEP
-;* V18 tmp10 [V18,T12] ( 0, 0 ) int -> zero-ref single-def "field V12.flags@ (fldOffset=0x4)" P-INDEP
-; V19 tmp11 [V19,T14] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V20 cse0 [V20,T06] ( 5, 10.50) int -> [ebp-0x1C] spill-single-def "CSE - aggressive"
+;* V17 tmp9 [V17,T13] ( 0, 0 ) int -> zero-ref single-def "field V12.scope@ (fldOffset=0x0)" P-INDEP
+;* V18 tmp10 [V18,T14] ( 0, 0 ) int -> zero-ref single-def "field V12.flags@ (fldOffset=0x4)" P-INDEP
+; V19 tmp11 [V19,T12] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V20 cse0 [V20,T05] ( 5, 10.50) int -> [ebp-0x1C] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -48,9 +48,9 @@ G_M728_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
;; size=20 bbWeight=1 PerfScore 7.75
-G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
test edi, edi
- je G_M728_IG13
+ je G_M728_IG08
mov edx, dword ptr [edi+0x04]
mov ecx, 0xD1FFAB1E ; FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]
call CORINFO_HELP_NEWARR_1_VC
@@ -61,12 +61,12 @@ G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx
mov ecx, dword ptr [eax+0x04]
mov dword ptr [ebp-0x1C], ecx
test ecx, ecx
- jle SHORT G_M728_IG06
- ;; size=36 bbWeight=1 PerfScore 10.00
-G_M728_IG03: ; bbWeight=0.50, gcVars=00000210 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jle G_M728_IG09
+ ;; size=40 bbWeight=1 PerfScore 10.00
+G_M728_IG03: ; bbWeight=0.50, gcVars=00000240 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
cmp dword ptr [edi+0x04], ecx
- jl SHORT G_M728_IG07
+ jl SHORT G_M728_IG05
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M728_IG04: ; bbWeight=7.92, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push ebx
@@ -87,26 +87,15 @@ G_M728_IG04: ; bbWeight=7.92, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs
mov dword ptr [eax+8*edx+0x0C], ecx
inc edx
cmp dword ptr [ebp-0x1C], edx
- jg SHORT G_M728_IG04
- ;; size=48 bbWeight=7.92 PerfScore 142.56
-G_M728_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax ebx esi edi]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- jmp SHORT G_M728_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M728_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M728_IG09
+ jmp SHORT G_M728_IG04
+ ;; size=50 bbWeight=7.92 PerfScore 158.40
+G_M728_IG05: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- jmp SHORT G_M728_IG08
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M728_IG07: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ebx esi edi]
push ebx
push gword ptr [ebp+0x08]
cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M728_IG12
+ jae SHORT G_M728_IG07
mov dword ptr [ebp-0x10], edx
push gword ptr [edi+4*edx+0x08]
lea ecx, [ebp-0x18]
@@ -124,53 +113,19 @@ G_M728_IG07: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs
inc edx
mov ecx, dword ptr [ebp-0x1C]
cmp ecx, edx
- jg SHORT G_M728_IG11
- ;; size=55 bbWeight=0.08 PerfScore 1.70
-G_M728_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M728_IG06
+ jmp SHORT G_M728_IG05
+ ;; size=57 bbWeight=0.08 PerfScore 1.86
+G_M728_IG06: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx esi edi]
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M728_IG14
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M728_IG09: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov esi, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[esi]
- cmp dword ptr [D1FFAB1EH], 0
- jne SHORT G_M728_IG15
- ;; size=15 bbWeight=1 PerfScore 6.00
-G_M728_IG10: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- push 0
- push 0
- mov ecx, eax
- ; gcrRegs +[ecx]
- ; GC ptr vars -{V06}
- call [Microsoft.FSharp.Primitives.Basics.List:ofArray[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit](FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit]]
- ; gcrRegs -[ecx]
- push eax
- push 3
- push 3
- push 1
- mov edx, dword ptr [D1FFAB1EH] ; function address
- push edx
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, bword ptr [ebp-0x20]
- ; byrRegs +[ecx]
- ; GC ptr vars -{V00}
- call CORINFO_HELP_TAILCALL
- ; gcrRegs -[eax edx esi]
- ; byrRegs -[ecx]
- ;; size=36 bbWeight=1 PerfScore 14.50
-G_M728_IG11: ; bbWeight=0.04, gcVars=00000210 {V00 V06}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax ebx esi edi]
- ; GC ptr vars +{V00 V04 V06 V09}
- jmp SHORT G_M728_IG07
+ jmp SHORT G_M728_IG09
;; size=2 bbWeight=0.04 PerfScore 0.08
-G_M728_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax ebx esi edi]
- ; GC ptr vars -{V00 V04 V06 V09}
+G_M728_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V00 V06}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M728_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M728_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -190,26 +145,42 @@ G_M728_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
call CORINFO_HELP_THROW
; gcrRegs -[ecx esi]
;; size=44 bbWeight=0 PerfScore 0.00
-G_M728_IG14: ; bbWeight=0, gcVars=00000210 {V00 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
- ; GC ptr vars +{V00 V04 V06 V09}
+G_M728_IG09: ; bbWeight=0, gcVars=00000240 {V00 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00 V06 V09}
mov ecx, 0xD1FFAB1E
mov edx, 0x1AA5
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- jmp SHORT G_M728_IG09
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M728_IG15: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[esi]
+ cmp dword ptr [D1FFAB1EH], 0
+ je SHORT G_M728_IG10
call CORINFO_HELP_POLL_GC
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- jmp SHORT G_M728_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=35 bbWeight=0 PerfScore 0.00
+G_M728_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ push 0
+ push 0
+ mov ecx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ecx]
+ ; GC ptr vars -{V06 V09}
+ call [Microsoft.FSharp.Primitives.Basics.List:ofArray[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit](FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit]]
+ ; gcrRegs -[ecx] +[eax]
+ push eax
+ push 3
+ push 3
+ push 1
+ mov edx, dword ptr [D1FFAB1EH] ; function address
+ push edx
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, bword ptr [ebp-0x20]
+ ; byrRegs +[ecx]
+ ; GC ptr vars -{V00}
+ call CORINFO_HELP_TAILCALL
+ ; gcrRegs -[eax edx esi]
+ ; byrRegs -[ecx]
+ int3
+ ;; size=38 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 9, PerfScore 193.09, instruction count 101, allocated bytes for code 315 (MethodHash=2f90fd27) for method FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
+; Total bytes of code 296, prolog size 9, PerfScore 180.09, instruction count 94, allocated bytes for code 296 (MethodHash=2f90fd27) for method FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
; ============================================================
-20 (-3.02%) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray1[int],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
@@ -8,53 +8,53 @@
; 0 inlinees with PGO data; 14 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 6, 4 ) ref -> [ebp-0x2C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V00 this [V00,T12] ( 6, 4 ) ref -> [ebp-0x2C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
; V01 arg1 [V01,T16] ( 4, 3 ) ref -> [ebp-0x30] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
; V05 arg5 [V05,T32] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V06 loc0 [V06,T18] ( 5, 4.50) ref -> [ebp-0x34] class-hnd exact spill-single-def <<unknown class>>
-; V07 loc1 [V07,T09] ( 5, 7 ) int -> [ebp-0x10] spill-single-def
+; V06 loc0 [V06,T19] ( 5, 4.50) ref -> [ebp-0x34] class-hnd exact spill-single-def <<unknown class>>
+; V07 loc1 [V07,T06] ( 5, 8.96) int -> [ebp-0x10] spill-single-def
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V09 loc3 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V10 loc4 [V10,T28] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
; V11 loc5 [V11,T01] ( 13, 20.52) int -> ebx
-; V12 loc6 [V12,T12] ( 4, 6 ) ref -> [ebp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V12 loc6 [V12,T14] ( 4, 6 ) ref -> [ebp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V13 loc7 [V13,T29] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V14 tmp0 [V14,T05] ( 5, 8 ) int -> registers
-; V15 tmp1 [V15,T08] ( 7, 7 ) ref -> esi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+; V14 tmp0 [V14,T08] ( 5, 8 ) int -> registers
+; V15 tmp1 [V15,T11] ( 7, 7 ) ref -> esi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V16 tmp2 [V16,T23] ( 5, 2.50) int -> [ebp-0x14] spill-single-def "Inline stloc first use temp"
;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V18 tmp4 [V18,T33] ( 2, 1 ) int -> edx "Inline return value spill temp"
; V19 tmp5 [V19,T22] ( 3, 3 ) int -> edx "Inlining Arg"
; V20 tmp6 [V20,T00] ( 14, 28 ) ref -> [ebp-0x3C] class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V21 tmp7 [V21,T03] ( 10, 10 ) int -> [ebp-0x18] "Inline stloc first use temp"
+; V21 tmp7 [V21,T04] ( 10, 10 ) int -> [ebp-0x18] "Inline stloc first use temp"
;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp9 [V23,T11] ( 6, 6 ) int -> [ebp-0x1C] "Inline return value spill temp"
-; V24 tmp10 [V24,T02] ( 6, 12 ) int -> registers "Inlining Arg"
+; V23 tmp9 [V23,T13] ( 6, 6 ) int -> [ebp-0x1C] "Inline return value spill temp"
+; V24 tmp10 [V24,T02] ( 6, 12 ) int -> ecx "Inlining Arg"
;* V25 tmp11 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V26 tmp12 [V26 ] ( 3, 2.50) struct (12) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V26 tmp12 [V26 ] ( 3, 4.46) struct (12) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V27 tmp13 [V27,T25] ( 4, 2 ) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V28 tmp14 [V28,T13] ( 4, 6 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V28 tmp14 [V28,T05] ( 4, 9.92) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
; V30 tmp16 [V30,T30] ( 3, 1.50) ref -> edx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V31 tmp17 [V31,T20] ( 3, 3 ) byref -> eax single-def "Inlining Arg"
-; V32 tmp18 [V32,T19] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp17 [V31,T21] ( 3, 3 ) byref -> eax single-def "Inlining Arg"
+; V32 tmp18 [V32,T20] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V33 tmp19 [V33 ] ( 0, 0 ) ref -> zero-ref single-def
-; V34 tmp20 [V34,T17] ( 6, 4.54) ref -> [ebp+0x14] single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V35 tmp21 [V35,T04] ( 6, 8.75) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V36 tmp22 [V36,T21] ( 3, 3 ) ref -> [ebp+0x0C] single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V34 tmp20 [V34,T18] ( 6, 4.54) ref -> [ebp+0x14] single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V35 tmp21 [V35,T07] ( 6, 8.75) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V36 tmp22 [V36,T17] ( 3, 4.96) ref -> [ebp+0x0C] single-def "field V04.array (fldOffset=0x0)" P-INDEP
; V37 tmp23 [V37,T24] ( 3, 2.50) ref -> ebx "field V09.array (fldOffset=0x0)" P-INDEP
-; V38 tmp24 [V38 ] ( 2, 1.50) ref -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V26.DefaultType (fldOffset=0x0)" P-DEP
-; V39 tmp25 [V39 ] ( 2, 2 ) ref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V26._extensions (fldOffset=0x4)" P-DEP
-; V40 tmp26 [V40 ] ( 1, 1 ) ubyte -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
-; V41 tmp27 [V41,T06] ( 4, 8 ) ref -> registers "argument with side effect"
-; V42 tmp28 [V42,T07] ( 4, 8 ) int -> registers "argument with side effect"
+; V38 tmp24 [V38 ] ( 2, 2.48) ref -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V26.DefaultType (fldOffset=0x0)" P-DEP
+; V39 tmp25 [V39 ] ( 2, 3.96) ref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V26._extensions (fldOffset=0x4)" P-DEP
+; V40 tmp26 [V40 ] ( 1, 1.98) ubyte -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
+; V41 tmp27 [V41,T09] ( 4, 8 ) ref -> ecx "argument with side effect"
+; V42 tmp28 [V42,T10] ( 4, 8 ) int -> registers "argument with side effect"
; V43 tmp29 [V43,T26] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V44 tmp30 [V44,T27] ( 2, 2 ) int -> ebx "argument with side effect"
-; V45 tmp31 [V45,T14] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V46 cse0 [V46,T15] ( 3, 5.94) ref -> edi "CSE - conservative"
+; V45 tmp31 [V45,T03] ( 3, 11.88) ref -> ecx single-def "argument with side effect"
+; V46 cse0 [V46,T15] ( 3, 5.94) ref -> ecx "CSE - conservative"
; V47 cse1 [V47,T31] ( 3, 1.50) ref -> edx "CSE - conservative"
; V48 cse2 [V48,T34] ( 3, 0.06) ref -> ecx "CSE - conservative"
;
@@ -78,7 +78,7 @@ G_M15034_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, gword ptr [ebp+0x10]
; gcrRegs +[esi]
;; size=29 bbWeight=1 PerfScore 10.75
-G_M15034_IG02: ; bbWeight=1, gcVars=0000000000010400 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG02: ; bbWeight=1, gcVars=0000000000011000 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -94,7 +94,7 @@ G_M15034_IG02: ; bbWeight=1, gcVars=0000000000010400 {V00 V01}, gcrefRegs
cmp gword ptr [ebp+0x08], 0
je SHORT G_M15034_IG06
;; size=33 bbWeight=1 PerfScore 16.25
-G_M15034_IG03: ; bbWeight=0.50, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG03: ; bbWeight=0.50, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx esi]
mov esi, gword ptr [eax+0x04]
; gcrRegs +[esi]
@@ -133,27 +133,27 @@ G_M15034_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcr arg pop 1
mov ebx, dword ptr [ebp-0x14]
mov dword ptr [esi+0x08], ebx
- jmp G_M15034_IG28
+ jmp G_M15034_IG26
;; size=29 bbWeight=0.50 PerfScore 5.25
G_M15034_IG05: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M15034_IG04
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M15034_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M15034_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[eax]
xor ebx, ebx
cmp dword ptr [esi+0x04], 0
- jle SHORT G_M15034_IG12
- ;; size=8 bbWeight=0.50 PerfScore 2.12
-G_M15034_IG07: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M15034_IG26
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M15034_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ cmp gword ptr [ebp+0x14], 0
+ je G_M15034_IG16
+ mov eax, dword ptr [esi+0x04]
mov edx, gword ptr [ebp+0x14]
; gcrRegs +[edx]
- test edx, edx
- je G_M15034_IG18
- mov eax, dword ptr [esi+0x04]
- ; gcrRegs -[eax]
cmp eax, dword ptr [edx+0x04]
- jg SHORT G_M15034_IG11
- ;; size=19 bbWeight=0.25 PerfScore 2.06
+ jg SHORT G_M15034_IG10
+ ;; size=21 bbWeight=0.25 PerfScore 2.50
G_M15034_IG08: ; bbWeight=3.96, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
@@ -163,155 +163,140 @@ G_M15034_IG08: ; bbWeight=3.96, gcrefRegs=00000044 {edx esi}, byrefRegs=0
mov edx, dword ptr [edx+4*ebx+0x08]
; gcrRegs -[edx]
cmp edx, dword ptr [ebp-0x10]
- jne SHORT G_M15034_IG16
+ jne SHORT G_M15034_IG14
;; size=19 bbWeight=3.96 PerfScore 35.64
-G_M15034_IG09: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG09: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
mov edx, gword ptr [ebp-0x34]
; gcrRegs +[edx]
mov edx, gword ptr [edx+0x04]
- mov ecx, dword ptr [edx+0x08]
- inc ecx
- mov edi, gword ptr [edx+0x04]
- ; gcrRegs +[edi]
- cmp dword ptr [edi+0x04], ecx
- jge SHORT G_M15034_IG10
- mov edi, dword ptr [edi+0x04]
- ; gcrRegs -[edi]
- add edi, edi
- cmp edi, ecx
+ mov edi, dword ptr [edx+0x08]
+ inc edi
+ mov ecx, gword ptr [edx+0x04]
+ ; gcrRegs +[ecx]
+ cmp dword ptr [ecx+0x04], edi
jge SHORT G_M15034_IG13
- mov dword ptr [ebp-0x18], ecx
- mov edi, ecx
- jmp SHORT G_M15034_IG14
+ mov ecx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ecx]
+ add ecx, ecx
+ cmp ecx, edi
+ jge SHORT G_M15034_IG11
+ mov ecx, edi
+ mov dword ptr [ebp-0x1C], ecx
+ jmp SHORT G_M15034_IG12
;; size=34 bbWeight=1.98 PerfScore 35.64
-G_M15034_IG10: ; bbWeight=0.99, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], ecx
- jmp SHORT G_M15034_IG15
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M15034_IG11: ; bbWeight=0.12, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG10: ; bbWeight=0.12, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V12}
- mov eax, gword ptr [ebp-0x34]
- ; gcrRegs +[eax]
- jmp SHORT G_M15034_IG18
+ mov gword ptr [ebp+0x14], edx
+ jmp SHORT G_M15034_IG16
;; size=5 bbWeight=0.12 PerfScore 0.38
-G_M15034_IG12: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx esi]
- jmp G_M15034_IG28
- ;; size=5 bbWeight=0.25 PerfScore 0.50
-G_M15034_IG13: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx esi]
- ; GC ptr vars +{V12}
- mov dword ptr [ebp-0x18], ecx
+G_M15034_IG11: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V12 V14}
+ mov dword ptr [ebp-0x1C], ecx
;; size=3 bbWeight=1.98 PerfScore 1.98
-G_M15034_IG14: ; bbWeight=1.98, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M15034_IG12: ; bbWeight=1.98, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
push 0xD1FFAB1E
mov gword ptr [ebp-0x3C], edx
; GC ptr vars +{V20}
lea ecx, bword ptr [edx+0x04]
; byrRegs +[ecx]
- mov edx, edi
+ mov edx, dword ptr [ebp-0x1C]
; gcrRegs -[edx]
+ ; GC ptr vars -{V14}
call [System.Array:Resize[System.__Canon](byref,int)]
; byrRegs -[ecx]
mov edx, gword ptr [ebp-0x3C]
; gcrRegs +[edx]
- ;; size=22 bbWeight=1.98 PerfScore 13.37
-G_M15034_IG15: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=23 bbWeight=1.98 PerfScore 14.85
+G_M15034_IG13: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V20}
- mov edi, gword ptr [edx+0x04]
- ; gcrRegs +[edi]
+ mov ecx, gword ptr [edx+0x04]
+ ; gcrRegs +[ecx]
mov gword ptr [ebp-0x3C], edx
; GC ptr vars +{V20}
mov eax, dword ptr [edx+0x08]
push gword ptr [ebp-0x38]
; gcr arg push 0
- mov ecx, edi
- ; gcrRegs +[ecx]
mov edx, eax
; gcrRegs -[edx]
; GC ptr vars -{V12} +{V00}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx]
; gcr arg pop 1
- mov edi, gword ptr [ebp-0x3C]
- ; gcrRegs +[edi]
- mov eax, dword ptr [ebp-0x18]
- mov dword ptr [edi+0x08], eax
- ;; size=30 bbWeight=1.98 PerfScore 20.79
-G_M15034_IG16: ; bbWeight=3.96, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
+ mov eax, gword ptr [ebp-0x3C]
+ ; gcrRegs +[eax]
+ mov dword ptr [eax+0x08], edi
+ ;; size=25 bbWeight=1.98 PerfScore 18.31
+G_M15034_IG14: ; bbWeight=3.96, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
...
+10 (+7.35%) : 31264.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray
1[int],byref):ubyte (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 2.50) int -> ecx single-def
-; V01 arg1 [V01,T03] ( 4, 3 ) int -> edx single-def
+; V00 arg0 [V00,T07] ( 3, 2.50) int -> ecx single-def
+; V01 arg1 [V01,T01] ( 4, 6.46) int -> edx single-def
; V02 arg2 [V02,T08] ( 1, 1 ) ubyte -> [ebp+0x18] single-def
; V03 arg3 [V03,T10] ( 1, 0.50) int -> [ebp+0x14] single-def
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]>
-; V06 arg6 [V06,T07] ( 2, 1.50) byref -> [ebp+0x08] single-def
-; V07 loc0 [V07,T00] ( 14, 17.77) int -> ecx
-; V08 tmp0 [V08,T01] ( 5, 8 ) int -> esi
+; V06 arg6 [V06,T05] ( 2, 4.96) byref -> eax single-def
+; V07 loc0 [V07,T00] ( 14, 21.23) int -> ecx
+; V08 tmp0 [V08,T02] ( 5, 8 ) int -> esi
; V09 tmp1 [V09,T09] ( 1, 0.50) ref -> [ebp+0x10] single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T05] ( 6, 4.54) ref -> eax single-def "field V05.array (fldOffset=0x0)" P-INDEP
-; V11 cse0 [V11,T02] ( 5, 5.25) int -> ebx "CSE - aggressive"
+; V10 tmp2 [V10,T06] ( 6, 4.54) ref -> [ebp+0x0C] single-def "field V05.array (fldOffset=0x0)" P-INDEP
+; V11 cse0 [V11,T03] ( 5, 5.25) int -> ebx "CSE - aggressive"
; V12 cse1 [V12,T04] ( 4, 5 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -30,105 +30,108 @@ G_M47144_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov eax, gword ptr [ebp+0x0C]
- ; gcrRegs +[eax]
+ mov eax, bword ptr [ebp+0x08]
+ ; byrRegs +[eax]
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
;; size=12 bbWeight=1 PerfScore 6.25
-G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
xor edi, edi
- mov bword ptr [ebp+0x08], esi
- mov dword ptr [esi], edi
+ mov dword ptr [eax], edi
cmp byte ptr [ebp+0x18], 0
- je SHORT G_M47144_IG13
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[esi]
+ je SHORT G_M47144_IG12
+ ;; size=10 bbWeight=1 PerfScore 4.25
+G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
mov edi, dword ptr [ebp+0x14]
dec edi
cmp ecx, edi
- jne SHORT G_M47144_IG13
+ jne SHORT G_M47144_IG12
lea ecx, [edx+0x01]
mov ebx, gword ptr [ebp+0x10]
; gcrRegs +[ebx]
mov ebx, dword ptr [ebx+0x04]
; gcrRegs -[ebx]
cmp ebx, ecx
- jle SHORT G_M47144_IG11
+ jle SHORT G_M47144_IG10
;; size=21 bbWeight=0.50 PerfScore 3.62
-G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- je SHORT G_M47144_IG07
+G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ test esi, esi
+ je SHORT G_M47144_IG06
test ecx, ecx
- jl SHORT G_M47144_IG07
- cmp dword ptr [eax+0x04], ebx
- jl SHORT G_M47144_IG07
+ jl SHORT G_M47144_IG06
+ cmp dword ptr [esi+0x04], ebx
+ jl SHORT G_M47144_IG06
;; size=13 bbWeight=0.25 PerfScore 1.62
-G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov esi, dword ptr [eax+4*ecx+0x08]
+G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ mov gword ptr [ebp+0x0C], esi
+ mov esi, dword ptr [esi+4*ecx+0x08]
+ ; gcrRegs -[esi]
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx
cmp ebx, ecx
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
jg SHORT G_M47144_IG05
- ;; size=13 bbWeight=3.96 PerfScore 18.81
-G_M47144_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- jmp SHORT G_M47144_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M47144_IG07: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[eax]
- test eax, eax
- jne SHORT G_M47144_IG09
- ;; size=4 bbWeight=0.04 PerfScore 0.05
-G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov esi, ecx
jmp SHORT G_M47144_IG10
+ ;; size=21 bbWeight=3.96 PerfScore 34.65
+G_M47144_IG06: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ mov gword ptr [ebp+0x0C], esi
+ test esi, esi
+ jne SHORT G_M47144_IG08
+ ;; size=7 bbWeight=0.04 PerfScore 0.09
+G_M47144_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, ecx
+ jmp SHORT G_M47144_IG09
;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M47144_IG09: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M47144_IG15
- mov esi, dword ptr [eax+4*ecx+0x08]
- ;; size=9 bbWeight=0.02 PerfScore 0.12
-G_M47144_IG10: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
+ cmp ecx, dword ptr [esi+0x04]
+ jae SHORT G_M47144_IG14
+ mov gword ptr [ebp+0x0C], esi
+ mov esi, dword ptr [esi+4*ecx+0x08]
+ ; gcrRegs -[esi]
+ ;; size=15 bbWeight=0.02 PerfScore 0.16
+G_M47144_IG09: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx
cmp ebx, ecx
- jg SHORT G_M47144_IG07
- ;; size=9 bbWeight=0.04 PerfScore 0.11
-G_M47144_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- sub eax, edx
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], eax
+ mov esi, gword ptr [ebp+0x0C]
+ ; gcrRegs +[esi]
+ jg SHORT G_M47144_IG06
+ ;; size=12 bbWeight=0.04 PerfScore 0.15
+G_M47144_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
+ ; gcrRegs -[esi]
+ sub ecx, edx
+ mov dword ptr [eax], ecx
mov eax, 1
- ;; size=14 bbWeight=0.50 PerfScore 1.38
-G_M47144_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ; byrRegs -[eax]
+ ;; size=9 bbWeight=3.96 PerfScore 5.94
+G_M47144_IG11: ; bbWeight=3.96, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 20
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi]
+ ;; size=7 bbWeight=3.96 PerfScore 15.84
+G_M47144_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47144_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47144_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 20
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47144_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 42.38, instruction count 64, allocated bytes for code 136 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
+; Total bytes of code 146, prolog size 12, PerfScore 74.75, instruction count 67, allocated bytes for code 146 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
; ============================================================
+27 (+8.79%) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75
G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG10
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG11
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG22
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG16
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG28
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG27
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG24
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG23
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG23
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG22
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
...
+27 (+9.22%) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
@@ -7,20 +7,20 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def
; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def
; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10]
-; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10]
+; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
-; V10 cse0 [V10,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V11 cse1 [V11,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
+; V10 cse0 [V10,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V11 cse1 [V11,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -28,7 +28,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx
; gcrRegs +[ebx]
mov edi, edx
@@ -44,166 +44,172 @@ G_M30277_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
setg cl
call [<unknown method>]
mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx
xor edx, edx
test byte ptr [ebp+0x08], 1
- je G_M30277_IG17
+ je G_M30277_IG16
;; size=53 bbWeight=1 PerfScore 17.75
G_M30277_IG03: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
xor edx, edx
test ecx, ecx
- jle G_M30277_IG16
+ jle G_M30277_IG15
;; size=10 bbWeight=0.50 PerfScore 0.75
G_M30277_IG04: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG06
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG05: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ cmp ecx, eax
je SHORT G_M30277_IG06
inc ebx
cmp ebx, esi
jl SHORT G_M30277_IG05
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
je SHORT G_M30277_IG07
inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG15
+ jg SHORT G_M30277_IG14
;; size=12 bbWeight=4 PerfScore 15.00
G_M30277_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test byte ptr [ebp+0x08], 2
- je G_M30277_IG22
+ je G_M30277_IG21
;; size=10 bbWeight=1 PerfScore 3.00
G_M30277_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG14
+ jl SHORT G_M30277_IG13
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M30277_IG09: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, eax
or ebx, edx
- jl SHORT G_M30277_IG18
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG17
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG18
+ jle SHORT G_M30277_IG17
;; size=13 bbWeight=0.25 PerfScore 0.94
G_M30277_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
jle SHORT G_M30277_IG12
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG11: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
je SHORT G_M30277_IG12
inc ebx
cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG11
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG12: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG22
+ je SHORT G_M30277_IG21
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
jge SHORT G_M30277_IG10
- ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M30277_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG22
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M30277_IG14: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG21
+ ;; size=17 bbWeight=3.96 PerfScore 26.73
+G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG22
+ jmp SHORT G_M30277_IG21
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG15: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG04
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M30277_IG16: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG04
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M30277_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG07
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG17: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG16: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
jmp SHORT G_M30277_IG07
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG18: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG17: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18]
- jae SHORT G_M30277_IG24
- mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20]
+ jae SHORT G_M30277_IG23
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx
; gcrRegs -[ebx]
test esi, esi
- jle SHORT G_M30277_IG20
- ;; size=22 bbWeight=0.04 PerfScore 0.34
-G_M30277_IG19: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx]
- cmp eax, ecx
- je SHORT G_M30277_IG20
+ jle SHORT G_M30277_IG19
+ ;; size=25 bbWeight=0.04 PerfScore 0.38
+G_M30277_IG18: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [edi+2*ebx]
+ mov eax, dword ptr [ebp-0x18]
+ cmp ecx, eax
+ je SHORT G_M30277_IG19
inc ebx
cmp ebx, esi
- jl SHORT G_M30277_IG19
- ;; size=13 bbWeight=0.16 PerfScore 0.76
-G_M30277_IG20: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax
+ jl SHORT G_M30277_IG18
+ ;; size=19 bbWeight=0.16 PerfScore 1.08
+G_M30277_IG19: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG22
+ je SHORT G_M30277_IG21
mov eax, dword ptr [ebp-0x10]
dec eax
cmp eax, edx
- jge SHORT G_M30277_IG18
+ jge SHORT G_M30277_IG17
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG21: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG20: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG21: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
call [System.String:CreateTrimmedString(int,int):System.String:this]
; gcrRegs -[ecx] +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M30277_IG23: ; bbWeight=1, epilog, nogc, extend
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x86.checked.mch |
196 |
45 |
68 |
83 |
-668 |
+906 |
benchmarks.run_pgo.windows.x86.checked.mch |
185 |
38 |
86 |
61 |
-413 |
+1,124 |
benchmarks.run_tiered.windows.x86.checked.mch |
187 |
43 |
67 |
77 |
-717 |
+851 |
coreclr_tests.run.windows.x86.checked.mch |
4,234 |
765 |
1,320 |
2,149 |
-12,759 |
+21,902 |
libraries.crossgen2.windows.x86.checked.mch |
499 |
115 |
163 |
221 |
-1,548 |
+2,264 |
libraries.pmi.windows.x86.checked.mch |
625 |
172 |
206 |
247 |
-2,543 |
+3,485 |
libraries_tests.run.windows.x86.Release.mch |
237 |
57 |
91 |
89 |
-571 |
+1,013 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
885 |
280 |
322 |
283 |
-4,820 |
+6,161 |
realworld.run.windows.x86.checked.mch |
161 |
36 |
61 |
64 |
-964 |
+1,183 |
|
7,209 |
1,551 |
2,384 |
3,274 |
-25,003 |
+38,889 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
38,538 |
6 |
38,532 |
349 (0.90%) |
357 (0.92%) |
benchmarks.run_pgo.windows.x86.checked.mch |
82,769 |
41,585 |
41,184 |
2,660 (3.11%) |
2,664 (3.12%) |
benchmarks.run_tiered.windows.x86.checked.mch |
73,348 |
45,417 |
27,931 |
274 (0.37%) |
281 (0.38%) |
coreclr_tests.run.windows.x86.checked.mch |
406,111 |
186,921 |
219,190 |
490 (0.12%) |
511 (0.13%) |
libraries.crossgen2.windows.x86.checked.mch |
272,456 |
15 |
272,441 |
524 (0.19%) |
566 (0.21%) |
libraries.pmi.windows.x86.checked.mch |
318,787 |
6 |
318,781 |
1,755 (0.55%) |
1,787 (0.56%) |
libraries_tests.run.windows.x86.Release.mch |
49,131 |
31,248 |
17,883 |
483 (0.97%) |
494 (1.00%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
339,970 |
22,425 |
317,545 |
4,067 (1.18%) |
4,091 (1.19%) |
realworld.run.windows.x86.checked.mch |
37,438 |
3 |
37,435 |
417 (1.10%) |
422 (1.11%) |
|
1,618,548 |
327,626 |
1,290,922 |
11,019 (0.68%) |
11,173 (0.69%) |
jit-analyze output
benchmarks.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11103861 (overridden on cmd)
Total bytes of diff: 11104099 (overridden on cmd)
Total bytes of delta: 238 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
82 : 34105.dasm (3.15 % of base)
82 : 31570.dasm (3.16 % of base)
45 : 18370.dasm (1.58 % of base)
45 : 28723.dasm (1.70 % of base)
45 : 4424.dasm (1.58 % of base)
39 : 26882.dasm (1.50 % of base)
31 : 14453.dasm (4.72 % of base)
31 : 43.dasm (4.72 % of base)
27 : 524.dasm (8.79 % of base)
27 : 14935.dasm (8.79 % of base)
24 : 7554.dasm (2.99 % of base)
24 : 35434.dasm (2.99 % of base)
22 : 4232.dasm (4.73 % of base)
22 : 35343.dasm (4.73 % of base)
16 : 28848.dasm (2.64 % of base)
16 : 32704.dasm (2.64 % of base)
16 : 4810.dasm (1.46 % of base)
16 : 17481.dasm (1.46 % of base)
15 : 34704.dasm (1.56 % of base)
15 : 6820.dasm (6.94 % of base)
Top file improvements (bytes):
-65 : 23540.dasm (-4.25 % of base)
-46 : 7776.dasm (-1.15 % of base)
-46 : 35172.dasm (-1.15 % of base)
-46 : 35544.dasm (-1.19 % of base)
-41 : 29035.dasm (-0.92 % of base)
-31 : 14457.dasm (-1.83 % of base)
-31 : 47.dasm (-1.83 % of base)
-25 : 10185.dasm (-1.18 % of base)
-25 : 18902.dasm (-1.18 % of base)
-23 : 26880.dasm (-2.13 % of base)
-20 : 11067.dasm (-0.78 % of base)
-20 : 22114.dasm (-0.78 % of base)
-19 : 37587.dasm (-1.66 % of base)
-19 : 37916.dasm (-1.66 % of base)
-18 : 4180.dasm (-1.38 % of base)
-18 : 16837.dasm (-1.38 % of base)
-17 : 24521.dasm (-4.75 % of base)
-14 : 23623.dasm (-1.47 % of base)
-14 : 24407.dasm (-1.47 % of base)
-13 : 19037.dasm (-0.58 % of base)
60 total files with Code Size differences (30 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
82 (3.15 % of base) : 34105.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
82 (3.16 % of base) : 31570.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
45 (1.70 % of base) : 28723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
45 (1.58 % of base) : 18370.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
45 (1.58 % of base) : 4424.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
39 (1.50 % of base) : 26882.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
31 (4.72 % of base) : 14453.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
27 (8.79 % of base) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
27 (8.79 % of base) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
24 (2.99 % of base) : 7554.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
24 (2.99 % of base) : 35434.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
22 (4.73 % of base) : 4232.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
22 (4.73 % of base) : 35343.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
16 (2.64 % of base) : 28848.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
16 (2.64 % of base) : 32704.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
16 (1.46 % of base) : 4810.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (FullOpts)
16 (1.46 % of base) : 17481.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (FullOpts)
15 (1.56 % of base) : 34704.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
15 (6.94 % of base) : 6820.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
Top method improvements (bytes):
-65 (-4.25 % of base) : 23540.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-46 (-1.15 % of base) : 7776.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-46 (-1.15 % of base) : 35172.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-46 (-1.19 % of base) : 35544.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-41 (-0.92 % of base) : 29035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-31 (-1.83 % of base) : 14457.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-25 (-1.18 % of base) : 10185.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-25 (-1.18 % of base) : 18902.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-23 (-2.13 % of base) : 26880.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
-20 (-0.78 % of base) : 11067.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
-20 (-0.78 % of base) : 22114.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
-19 (-1.66 % of base) : 37587.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-19 (-1.66 % of base) : 37916.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-18 (-1.38 % of base) : 4180.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-18 (-1.38 % of base) : 16837.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-17 (-4.75 % of base) : 24521.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
-14 (-1.47 % of base) : 23623.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
-14 (-1.47 % of base) : 24407.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
-13 (-0.58 % of base) : 19037.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method regressions (percentages):
27 (8.79 % of base) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
27 (8.79 % of base) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
15 (6.94 % of base) : 6820.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
15 (6.94 % of base) : 21792.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
22 (4.73 % of base) : 4232.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
22 (4.73 % of base) : 35343.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
31 (4.72 % of base) : 14453.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
12 (3.47 % of base) : 32959.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
12 (3.47 % of base) : 28370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
82 (3.16 % of base) : 31570.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
82 (3.15 % of base) : 34105.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
24 (2.99 % of base) : 7554.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
24 (2.99 % of base) : 35434.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
14 (2.66 % of base) : 38501.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (FullOpts)
16 (2.64 % of base) : 28848.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
16 (2.64 % of base) : 32704.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
6 (1.99 % of base) : 1095.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
6 (1.99 % of base) : 15361.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
45 (1.70 % of base) : 28723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
Top method improvements (percentages):
-17 (-4.75 % of base) : 24521.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
-65 (-4.25 % of base) : 23540.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-7 (-2.37 % of base) : 8561.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-7 (-2.37 % of base) : 17971.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-23 (-2.13 % of base) : 26880.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
-5 (-1.98 % of base) : 19394.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
-5 (-1.98 % of base) : 6563.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
-31 (-1.83 % of base) : 14457.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-8 (-1.66 % of base) : 37478.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (FullOpts)
-19 (-1.66 % of base) : 37587.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-19 (-1.66 % of base) : 37916.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-14 (-1.47 % of base) : 23623.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
-14 (-1.47 % of base) : 24407.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
-18 (-1.38 % of base) : 4180.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-18 (-1.38 % of base) : 16837.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-6 (-1.20 % of base) : 24087.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
-6 (-1.20 % of base) : 33845.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
-46 (-1.19 % of base) : 35544.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-25 (-1.18 % of base) : 10185.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
benchmarks.run_pgo.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31808217 (overridden on cmd)
Total bytes of diff: 31808928 (overridden on cmd)
Total bytes of delta: 711 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
81 : 59860.dasm (3.06 % of base)
53 : 68344.dasm (2.39 % of base)
45 : 2412.dasm (1.58 % of base)
45 : 32565.dasm (1.58 % of base)
39 : 54025.dasm (1.50 % of base)
30 : 11682.dasm (9.90 % of base)
30 : 23144.dasm (9.90 % of base)
30 : 63032.dasm (9.90 % of base)
27 : 1532.dasm (8.26 % of base)
27 : 31091.dasm (8.26 % of base)
25 : 45578.dasm (7.76 % of base)
25 : 81233.dasm (7.76 % of base)
25 : 85363.dasm (7.76 % of base)
25 : 71339.dasm (7.76 % of base)
24 : 72446.dasm (2.92 % of base)
24 : 10807.dasm (2.92 % of base)
23 : 18703.dasm (7.59 % of base)
23 : 24496.dasm (7.59 % of base)
23 : 76857.dasm (7.59 % of base)
23 : 52729.dasm (7.59 % of base)
Top file improvements (bytes):
-68 : 63120.dasm (-4.56 % of base)
-28 : 12675.dasm (-4.43 % of base)
-25 : 18602.dasm (-1.15 % of base)
-25 : 50695.dasm (-1.15 % of base)
-23 : 54023.dasm (-2.13 % of base)
-19 : 81026.dasm (-1.66 % of base)
-18 : 46525.dasm (-1.38 % of base)
-14 : 29005.dasm (-4.36 % of base)
-12 : 50715.dasm (-0.31 % of base)
-12 : 18629.dasm (-0.31 % of base)
-11 : 38457.dasm (-3.53 % of base)
-11 : 50728.dasm (-0.88 % of base)
-11 : 5246.dasm (-3.53 % of base)
-11 : 73919.dasm (-3.53 % of base)
-11 : 79654.dasm (-0.61 % of base)
-11 : 13315.dasm (-3.53 % of base)
-8 : 16701.dasm (-0.99 % of base)
-8 : 81959.dasm (-1.66 % of base)
-7 : 27752.dasm (-2.37 % of base)
-7 : 11873.dasm (-0.53 % of base)
60 total files with Code Size differences (28 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
81 (3.06 % of base) : 59860.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
53 (2.39 % of base) : 68344.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier0-FullOpts)
45 (1.58 % of base) : 2412.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
45 (1.58 % of base) : 32565.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
39 (1.50 % of base) : 54025.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)
30 (9.90 % of base) : 11682.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
30 (9.90 % of base) : 23144.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
30 (9.90 % of base) : 63032.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
27 (8.26 % of base) : 1532.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
27 (8.26 % of base) : 31091.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
25 (7.76 % of base) : 45578.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 81233.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 85363.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 71339.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
24 (2.92 % of base) : 72446.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
24 (2.92 % of base) : 10807.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
23 (7.59 % of base) : 18703.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 24496.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 76857.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 52729.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
Top method improvements (bytes):
-68 (-4.56 % of base) : 63120.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-28 (-4.43 % of base) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-25 (-1.15 % of base) : 18602.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-25 (-1.15 % of base) : 50695.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-23 (-2.13 % of base) : 54023.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
-19 (-1.66 % of base) : 81026.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-18 (-1.38 % of base) : 46525.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-14 (-4.36 % of base) : 29005.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-12 (-0.31 % of base) : 50715.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
-12 (-0.31 % of base) : 18629.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
-11 (-0.61 % of base) : 79654.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
-11 (-3.53 % of base) : 38457.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 5246.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 73919.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 13315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-0.88 % of base) : 50728.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
-8 (-1.66 % of base) : 81959.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
-8 (-0.99 % of base) : 16701.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier0-FullOpts)
-7 (-2.37 % of base) : 27752.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-7 (-2.37 % of base) : 52756.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
Top method regressions (percentages):
30 (9.90 % of base) : 11682.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
30 (9.90 % of base) : 23144.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
30 (9.90 % of base) : 63032.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
27 (8.26 % of base) : 1532.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
27 (8.26 % of base) : 31091.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
25 (7.76 % of base) : 45578.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 81233.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 85363.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
25 (7.76 % of base) : 71339.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 18703.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 24496.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 76857.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
23 (7.59 % of base) : 52729.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
15 (6.94 % of base) : 50175.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
15 (6.94 % of base) : 70973.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
21 (6.54 % of base) : 58514.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
12 (3.47 % of base) : 61378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (Tier0-FullOpts)
11 (3.43 % of base) : 65351.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
11 (3.42 % of base) : 77186.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
10 (3.30 % of base) : 58619.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
Top method improvements (percentages):
-68 (-4.56 % of base) : 63120.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-28 (-4.43 % of base) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-14 (-4.36 % of base) : 29005.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 38457.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 5246.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 73919.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-11 (-3.53 % of base) : 13315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-7 (-2.37 % of base) : 27752.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-7 (-2.37 % of base) : 52756.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-23 (-2.13 % of base) : 54023.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
-5 (-1.98 % of base) : 42920.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
-8 (-1.66 % of base) : 81959.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
-19 (-1.66 % of base) : 81026.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-5 (-1.61 % of base) : 40315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-5 (-1.61 % of base) : 48762.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-5 (-1.61 % of base) : 52072.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-5 (-1.61 % of base) : 78701.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-18 (-1.38 % of base) : 46525.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-25 (-1.15 % of base) : 18602.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-25 (-1.15 % of base) : 50695.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13978666 (overridden on cmd)
Total bytes of diff: 13978800 (overridden on cmd)
Total bytes of delta: 134 (0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
82 : 67371.dasm (3.15 % of base)
82 : 64891.dasm (3.16 % of base)
45 : 26108.dasm (1.58 % of base)
45 : 9082.dasm (1.58 % of base)
45 : 58922.dasm (1.70 % of base)
39 : 53305.dasm (1.50 % of base)
31 : 17454.dasm (4.72 % of base)
31 : 95.dasm (4.72 % of base)
27 : 18713.dasm (8.79 % of base)
27 : 1363.dasm (8.79 % of base)
24 : 13701.dasm (2.99 % of base)
24 : 33200.dasm (2.99 % of base)
16 : 23473.dasm (1.45 % of base)
16 : 59264.dasm (2.64 % of base)
16 : 9197.dasm (1.46 % of base)
15 : 68211.dasm (1.56 % of base)
15 : 7513.dasm (6.94 % of base)
15 : 25227.dasm (6.94 % of base)
14 : 73258.dasm (2.66 % of base)
12 : 58233.dasm (3.47 % of base)
Top file improvements (bytes):
-68 : 64377.dasm (-4.56 % of base)
-65 : 46224.dasm (-4.25 % of base)
-46 : 21985.dasm (-1.15 % of base)
-46 : 68937.dasm (-1.19 % of base)
-46 : 70824.dasm (-1.19 % of base)
-46 : 68694.dasm (-1.15 % of base)
-38 : 59850.dasm (-0.85 % of base)
-35 : 34629.dasm (-1.62 % of base)
-35 : 50744.dasm (-1.62 % of base)
-31 : 100.dasm (-1.83 % of base)
-31 : 17459.dasm (-1.83 % of base)
-23 : 53302.dasm (-2.13 % of base)
-19 : 72402.dasm (-1.66 % of base)
-18 : 30053.dasm (-1.38 % of base)
-18 : 5306.dasm (-1.38 % of base)
-17 : 36066.dasm (-4.75 % of base)
-14 : 51373.dasm (-1.47 % of base)
-14 : 46580.dasm (-1.47 % of base)
-9 : 71817.dasm (-0.53 % of base)
-8 : 38576.dasm (-0.99 % of base)
58 total files with Code Size differences (31 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
82 (3.15 % of base) : 67371.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
82 (3.16 % of base) : 64891.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
45 (1.70 % of base) : 58922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
45 (1.58 % of base) : 26108.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
45 (1.58 % of base) : 9082.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
39 (1.50 % of base) : 53305.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)
31 (4.72 % of base) : 17454.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
31 (4.72 % of base) : 95.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
27 (8.79 % of base) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
27 (8.79 % of base) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
24 (2.99 % of base) : 13701.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
24 (2.99 % of base) : 33200.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
16 (2.64 % of base) : 59264.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
16 (1.45 % of base) : 23473.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
16 (1.46 % of base) : 9197.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
15 (1.56 % of base) : 68211.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
15 (6.94 % of base) : 7513.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
15 (6.94 % of base) : 25227.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
14 (2.66 % of base) : 73258.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (Tier0-FullOpts)
12 (0.87 % of base) : 64359.dasm - (dynamicClass):ReadArrayOfdateTimeFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Runtime.Serialization.DataContracts.CollectionDataContract):System.Object (FullOpts)
Top method improvements (bytes):
-68 (-4.56 % of base) : 64377.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-65 (-4.25 % of base) : 46224.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-46 (-1.15 % of base) : 21985.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-46 (-1.19 % of base) : 68937.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-46 (-1.19 % of base) : 70824.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-46 (-1.15 % of base) : 68694.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-38 (-0.85 % of base) : 59850.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
-35 (-1.62 % of base) : 34629.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-35 (-1.62 % of base) : 50744.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-31 (-1.83 % of base) : 100.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-31 (-1.83 % of base) : 17459.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-23 (-2.13 % of base) : 53302.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
-19 (-1.66 % of base) : 72402.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-18 (-1.38 % of base) : 30053.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-18 (-1.38 % of base) : 5306.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-17 (-4.75 % of base) : 36066.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
-14 (-1.47 % of base) : 51373.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
-14 (-1.47 % of base) : 46580.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
-9 (-0.53 % of base) : 71817.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
-8 (-1.66 % of base) : 72662.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
Top method regressions (percentages):
27 (8.79 % of base) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
27 (8.79 % of base) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
15 (6.94 % of base) : 7513.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
15 (6.94 % of base) : 25227.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
31 (4.72 % of base) : 17454.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
31 (4.72 % of base) : 95.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
12 (3.47 % of base) : 58233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (Tier0-FullOpts)
82 (3.16 % of base) : 64891.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
82 (3.15 % of base) : 67371.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
24 (2.99 % of base) : 13701.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
24 (2.99 % of base) : 33200.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
14 (2.66 % of base) : 73258.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (Tier0-FullOpts)
16 (2.64 % of base) : 59264.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
6 (1.99 % of base) : 21513.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier0-FullOpts)
6 (1.99 % of base) : 6885.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier0-FullOpts)
45 (1.70 % of base) : 58922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
45 (1.58 % of base) : 26108.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
45 (1.58 % of base) : 9082.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
15 (1.56 % of base) : 68211.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
39 (1.50 % of base) : 53305.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)
Top method improvements (percentages):
-17 (-4.75 % of base) : 36066.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
-68 (-4.56 % of base) : 64377.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-65 (-4.25 % of base) : 46224.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-7 (-2.37 % of base) : 24359.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-7 (-2.37 % of base) : 49392.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-23 (-2.13 % of base) : 53302.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
-5 (-1.98 % of base) : 12571.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
-5 (-1.98 % of base) : 30901.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
-31 (-1.83 % of base) : 100.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-31 (-1.83 % of base) : 17459.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-8 (-1.66 % of base) : 72662.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
-19 (-1.66 % of base) : 72402.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-35 (-1.62 % of base) : 34629.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-35 (-1.62 % of base) : 50744.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-14 (-1.47 % of base) : 51373.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
-14 (-1.47 % of base) : 46580.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
-18 (-1.38 % of base) : 30053.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-18 (-1.38 % of base) : 5306.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-6 (-1.20 % of base) : 47106.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (Tier0-FullOpts)
-6 (-1.20 % of base) : 66923.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (Tier0-FullOpts)
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: 215097885 (overridden on cmd)
Total bytes of diff: 215107028 (overridden on cmd)
Total bytes of delta: 9143 (0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
278 : 336487.dasm (17.15 % of base)
278 : 335133.dasm (17.15 % of base)
276 : 132464.dasm (17.01 % of base)
276 : 133592.dasm (17.01 % of base)
97 : 160634.dasm (7.69 % of base)
97 : 160618.dasm (7.69 % of base)
83 : 115053.dasm (7.28 % of base)
83 : 113819.dasm (7.28 % of base)
83 : 113804.dasm (7.28 % of base)
83 : 115067.dasm (7.28 % of base)
79 : 120647.dasm (6.85 % of base)
77 : 340553.dasm (5.98 % of base)
77 : 306146.dasm (10.68 % of base)
77 : 334586.dasm (6.64 % of base)
77 : 403682.dasm (10.68 % of base)
77 : 334567.dasm (6.64 % of base)
76 : 334658.dasm (7.41 % of base)
76 : 334677.dasm (7.39 % of base)
76 : 334640.dasm (7.41 % of base)
76 : 340514.dasm (5.88 % of base)
Top file improvements (bytes):
-269 : 169423.dasm (-3.33 % of base)
-269 : 207407.dasm (-3.33 % of base)
-136 : 70911.dasm (-7.78 % of base)
-136 : 70996.dasm (-7.77 % of base)
-119 : 161558.dasm (-8.96 % of base)
-119 : 161527.dasm (-8.96 % of base)
-119 : 164057.dasm (-9.29 % of base)
-119 : 164009.dasm (-9.29 % of base)
-104 : 125219.dasm (-6.86 % of base)
-104 : 122060.dasm (-6.86 % of base)
-104 : 125134.dasm (-6.86 % of base)
-104 : 128007.dasm (-6.86 % of base)
-104 : 122145.dasm (-6.86 % of base)
-104 : 127922.dasm (-6.86 % of base)
-103 : 121271.dasm (-6.90 % of base)
-103 : 121223.dasm (-6.90 % of base)
-96 : 63239.dasm (-4.06 % of base)
-96 : 63246.dasm (-4.06 % of base)
-96 : 63253.dasm (-4.06 % of base)
-96 : 63386.dasm (-4.06 % of base)
69 total files with Code Size differences (33 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
278 (17.15 % of base) : 335133.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
278 (17.15 % of base) : 336487.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
276 (17.01 % of base) : 132464.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
276 (17.01 % of base) : 133592.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
97 (7.69 % of base) : 160618.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble0:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
97 (7.69 % of base) : 160634.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble1:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
83 (7.28 % of base) : 113804.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
83 (7.28 % of base) : 113819.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
83 (7.28 % of base) : 115053.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
83 (7.28 % of base) : 115067.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
79 (6.85 % of base) : 120647.dasm - JIT.HardwareIntrinsics.X86._Avx512F.SimpleBinaryOpTest__ScaleScalarDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
77 (6.64 % of base) : 334567.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleUnaryOpTest__DuplicateEvenIndexedSingle:ValidateResult(float[],float[],System.String):this (Tier0-FullOpts)
77 (6.64 % of base) : 334586.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleUnaryOpTest__DuplicateOddIndexedSingle:ValidateResult(float[],float[],System.String):this (Tier0-FullOpts)
77 (5.98 % of base) : 340553.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__CompareScalarUnorderedDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
77 (10.68 % of base) : 306146.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
77 (10.68 % of base) : 403682.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
76 (7.41 % of base) : 334640.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Byte1:ValidateResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
76 (7.39 % of base) : 334677.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int161:ValidateResult(short[],short[],System.String):this (Tier0-FullOpts)
76 (7.41 % of base) : 334658.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128SByte1:ValidateResult(byte[],byte[],System.String):this (Tier0-FullOpts)
76 (7.39 % of base) : 334695.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt161:ValidateResult(ushort[],ushort[],System.String):this (Tier0-FullOpts)
Top method improvements (bytes):
-269 (-3.33 % of base) : 169423.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-269 (-3.33 % of base) : 207407.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-136 (-7.78 % of base) : 70911.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-136 (-7.77 % of base) : 70996.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-119 (-8.96 % of base) : 161527.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalAddSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
-119 (-8.96 % of base) : 161558.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalSubtractSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
-119 (-9.29 % of base) : 164009.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalAddInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
-119 (-9.29 % of base) : 164057.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalSubtractInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 122060.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 122145.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 125134.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 125219.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 127922.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 128007.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-103 (-6.90 % of base) : 121223.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
-103 (-6.90 % of base) : 121271.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
-96 (-4.06 % of base) : 63239.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt640:RunReflectionScenario(int,ubyte):this (FullOpts)
-96 (-4.06 % of base) : 63246.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt641:RunReflectionScenario(int,ubyte):this (FullOpts)
-96 (-4.06 % of base) : 63253.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt643:RunReflectionScenario(int,ubyte):this (FullOpts)
-96 (-4.06 % of base) : 63386.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementUInt643:RunReflectionScenario(int,ubyte):this (FullOpts)
Top method regressions (percentages):
54 (43.20 % of base) : 169587.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
54 (43.20 % of base) : 207717.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
278 (17.15 % of base) : 335133.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
278 (17.15 % of base) : 336487.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
276 (17.01 % of base) : 132464.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
276 (17.01 % of base) : 133592.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
30 (10.95 % of base) : 240294.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
77 (10.68 % of base) : 306146.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
77 (10.68 % of base) : 403682.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
97 (7.69 % of base) : 160618.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble0:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
97 (7.69 % of base) : 160634.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble1:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
76 (7.41 % of base) : 334640.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Byte1:ValidateResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
76 (7.41 % of base) : 334658.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128SByte1:ValidateResult(byte[],byte[],System.String):this (Tier0-FullOpts)
76 (7.39 % of base) : 334677.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int161:ValidateResult(short[],short[],System.String):this (Tier0-FullOpts)
76 (7.39 % of base) : 334695.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt161:ValidateResult(ushort[],ushort[],System.String):this (Tier0-FullOpts)
75 (7.33 % of base) : 334715.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int321:ValidateResult(int[],int[],System.String):this (Tier0-FullOpts)
75 (7.33 % of base) : 334733.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt321:ValidateResult(uint[],uint[],System.String):this (Tier0-FullOpts)
83 (7.28 % of base) : 113804.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
83 (7.28 % of base) : 113819.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
83 (7.28 % of base) : 115053.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
Top method improvements (percentages):
-119 (-9.29 % of base) : 164009.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalAddInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
-119 (-9.29 % of base) : 164057.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalSubtractInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
-119 (-8.96 % of base) : 161527.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalAddSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
-119 (-8.96 % of base) : 161558.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalSubtractSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
-136 (-7.78 % of base) : 70911.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-136 (-7.77 % of base) : 70996.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-103 (-6.90 % of base) : 121223.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
-103 (-6.90 % of base) : 121271.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
-38 (-6.86 % of base) : 229877.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
-38 (-6.86 % of base) : 236395.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
-38 (-6.86 % of base) : 365160.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (Tier0-FullOpts)
-104 (-6.86 % of base) : 122060.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 122145.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 125134.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 125219.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 127922.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-104 (-6.86 % of base) : 128007.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-69 (-5.22 % of base) : 121383.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
-69 (-5.22 % of base) : 124458.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
-69 (-5.22 % of base) : 127246.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
libraries.crossgen2.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35715688 (overridden on cmd)
Total bytes of diff: 35716404 (overridden on cmd)
Total bytes of delta: 716 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
239 : 2226.dasm (3.05 % of base)
124 : 151268.dasm (13.93 % of base)
90 : 169517.dasm (7.85 % of base)
64 : 152903.dasm (3.79 % of base)
54 : 246621.dasm (42.86 % of base)
54 : 37089.dasm (1.76 % of base)
51 : 59978.dasm (12.32 % of base)
48 : 176171.dasm (3.50 % of base)
39 : 113285.dasm (11.96 % of base)
33 : 172870.dasm (5.02 % of base)
33 : 67122.dasm (2.60 % of base)
31 : 173542.dasm (1.80 % of base)
30 : 70787.dasm (2.25 % of base)
30 : 67272.dasm (4.34 % of base)
27 : 154247.dasm (3.31 % of base)
27 : 63363.dasm (4.71 % of base)
27 : 67201.dasm (2.13 % of base)
27 : 100357.dasm (4.71 % of base)
27 : 15633.dasm (8.77 % of base)
26 : 169510.dasm (4.26 % of base)
Top file improvements (bytes):
-83 : 172532.dasm (-3.80 % of base)
-52 : 149867.dasm (-3.79 % of base)
-52 : 70441.dasm (-6.68 % of base)
-42 : 15714.dasm (-7.46 % of base)
-40 : 65250.dasm (-0.91 % of base)
-39 : 169530.dasm (-2.79 % of base)
-39 : 176330.dasm (-3.18 % of base)
-39 : 213369.dasm (-5.30 % of base)
-38 : 37064.dasm (-5.92 % of base)
-38 : 77715.dasm (-5.92 % of base)
-32 : 173539.dasm (-1.87 % of base)
-32 : 71525.dasm (-2.24 % of base)
-31 : 16965.dasm (-1.77 % of base)
-28 : 31841.dasm (-3.46 % of base)
-28 : 73023.dasm (-3.46 % of base)
-27 : 216580.dasm (-2.55 % of base)
-27 : 70516.dasm (-0.99 % of base)
-27 : 70826.dasm (-2.19 % of base)
-27 : 228214.dasm (-1.47 % of base)
-26 : 168717.dasm (-1.83 % of base)
64 total files with Code Size differences (32 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
239 (3.05 % of base) : 2226.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
124 (13.93 % of base) : 151268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
90 (7.85 % of base) : 169517.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:BuildParameterToArgumentMap(byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],byref,byref) (FullOpts)
64 (3.79 % of base) : 152903.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:ReportErrorsOnPartialMethodImplementation(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
54 (1.76 % of base) : 37089.dasm - Microsoft.CodeAnalysis.CSharp.MethodBodySynthesizer:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBlock (FullOpts)
54 (42.86 % of base) : 246621.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
51 (12.32 % of base) : 59978.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:IsOrClosedOverATypeFromAssemblies(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte (FullOpts)
48 (3.50 % of base) : 176171.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (FullOpts)
39 (11.96 % of base) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
33 (5.02 % of base) : 172870.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:RetargetModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
33 (2.60 % of base) : 67122.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
31 (1.80 % of base) : 173542.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
30 (4.34 % of base) : 67272.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
30 (2.25 % of base) : 70787.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
27 (4.71 % of base) : 63363.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
27 (4.71 % of base) : 100357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
27 (3.31 % of base) : 154247.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:Create(Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
27 (2.13 % of base) : 67201.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
27 (8.77 % of base) : 15633.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
26 (4.26 % of base) : 169510.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CandidatesAreEquallyApplicableToArguments(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
Top method improvements (bytes):
-83 (-3.80 % of base) : 172532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-52 (-3.79 % of base) : 149867.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
-52 (-6.68 % of base) : 70441.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
-42 (-7.46 % of base) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
-40 (-0.91 % of base) : 65250.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-39 (-2.79 % of base) : 169530.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnGenericity(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
-39 (-5.30 % of base) : 213369.dasm - System.Reflection.Emit.TypeBuilderImpl:GetInterfaceMap(System.Type):System.Reflection.InterfaceMapping:this (FullOpts)
-39 (-3.18 % of base) : 176330.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)
-38 (-5.92 % of base) : 37064.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-38 (-5.92 % of base) : 77715.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-32 (-1.87 % of base) : 173539.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:CreateAndSetSourceAssemblyFullBind(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation):ubyte:this (FullOpts)
-32 (-2.24 % of base) : 71525.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
-31 (-1.77 % of base) : 16965.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-28 (-3.46 % of base) : 31841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-28 (-3.46 % of base) : 73023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-27 (-2.19 % of base) : 70826.dasm - System.Data.ForeignKeyConstraint:CascadeDelete(System.Data.DataRow):this (FullOpts)
-27 (-0.99 % of base) : 70516.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
-27 (-2.55 % of base) : 216580.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
-27 (-1.47 % of base) : 228214.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)
-26 (-1.83 % of base) : 168717.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
Top method regressions (percentages):
54 (42.86 % of base) : 246621.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
124 (13.93 % of base) : 151268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
51 (12.32 % of base) : 59978.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:IsOrClosedOverATypeFromAssemblies(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte (FullOpts)
39 (11.96 % of base) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
13 (11.50 % of base) : 70150.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
20 (9.01 % of base) : 268671.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
27 (8.77 % of base) : 15633.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
20 (8.16 % of base) : 268672.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
90 (7.85 % of base) : 169517.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:BuildParameterToArgumentMap(byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],byref,byref) (FullOpts)
10 (6.29 % of base) : 205846.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
10 (6.29 % of base) : 70390.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
25 (6.23 % of base) : 268504.dasm - System.Xml.XmlBufferReader:Equals2(int,int,System.String):ubyte:this (FullOpts)
15 (5.95 % of base) : 174485.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+CapturedArrayAccessExpression:Materialize(Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
33 (5.02 % of base) : 172870.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:RetargetModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
19 (4.74 % of base) : 33792.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
19 (4.74 % of base) : 74814.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
27 (4.71 % of base) : 63363.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
27 (4.71 % of base) : 100357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
30 (4.34 % of base) : 67272.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
26 (4.26 % of base) : 169510.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CandidatesAreEquallyApplicableToArguments(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
Top method improvements (percentages):
-22 (-8.91 % of base) : 153759.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
-22 (-8.63 % of base) : 153757.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
-42 (-7.46 % of base) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
-52 (-6.68 % of base) : 70441.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
-38 (-5.92 % of base) : 37064.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-38 (-5.92 % of base) : 77715.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-26 (-5.49 % of base) : 269091.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
-39 (-5.30 % of base) : 213369.dasm - System.Reflection.Emit.TypeBuilderImpl:GetInterfaceMap(System.Type):System.Reflection.InterfaceMapping:this (FullOpts)
-23 (-5.10 % of base) : 66828.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
-23 (-5.05 % of base) : 269092.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
-18 (-4.16 % of base) : 237607.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][],System.Linq.Parallel.HashJoinOutputKeyBuilder`3[int,int,int],System.Collections.Generic.IComparer`1[int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
-83 (-3.80 % of base) : 172532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-52 (-3.79 % of base) : 149867.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
-19 (-3.72 % of base) : 206367.dasm - System.Data.OleDb.RowBinding:SetBindings(System.Data.OleDb.OleDbDataReader,System.Data.OleDb.Bindings,int,int,System.Data.OleDb.OleDbParameter[],System.Data.OleDb.tagDBBINDING[],ubyte):System.Data.OleDb.ColumnBinding[]:this (FullOpts)
-28 (-3.46 % of base) : 31841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-28 (-3.46 % of base) : 73023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-24 (-3.30 % of base) : 23284.dasm - System.Buffers.TeddyBucketizer:Bucketize(System.ReadOnlySpan`1[System.String],int,int):System.String[][] (FullOpts)
-39 (-3.18 % of base) : 176330.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)
-39 (-2.79 % of base) : 169530.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnGenericity(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
-26 (-2.77 % of base) : 70431.dasm - System.Data.Common.DbCommandBuilder:BuildCache(ubyte,ubyte):this (FullOpts)
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: 50205777 (overridden on cmd)
Total bytes of diff: 50206719 (overridden on cmd)
Total bytes of delta: 942 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
122 : 30081.dasm (4.55 % of base)
115 : 68932.dasm (0.47 % of base)
110 : 81577.dasm (3.35 % of base)
95 : 81016.dasm (1.59 % of base)
95 : 72656.dasm (7.35 % of base)
74 : 305466.dasm (3.03 % of base)
71 : 177767.dasm (8.53 % of base)
69 : 76962.dasm (0.55 % of base)
68 : 76594.dasm (2.22 % of base)
59 : 38549.dasm (3.62 % of base)
58 : 180188.dasm (2.84 % of base)
57 : 167541.dasm (16.81 % of base)
55 : 64521.dasm (3.90 % of base)
55 : 103684.dasm (1.42 % of base)
55 : 70688.dasm (1.95 % of base)
54 : 221772.dasm (4.49 % of base)
54 : 185702.dasm (43.20 % of base)
51 : 70872.dasm (3.81 % of base)
50 : 99805.dasm (1.49 % of base)
50 : 100442.dasm (7.91 % of base)
Top file improvements (bytes):
-269 : 186428.dasm (-3.33 % of base)
-75 : 77000.dasm (-1.83 % of base)
-72 : 66468.dasm (-2.88 % of base)
-72 : 100611.dasm (-3.52 % of base)
-65 : 177368.dasm (-2.88 % of base)
-58 : 60096.dasm (-1.14 % of base)
-53 : 77215.dasm (-1.68 % of base)
-52 : 75426.dasm (-6.61 % of base)
-47 : 99664.dasm (-2.12 % of base)
-43 : 38545.dasm (-3.53 % of base)
-43 : 185315.dasm (-3.70 % of base)
-42 : 76941.dasm (-5.13 % of base)
-42 : 84308.dasm (-1.00 % of base)
-40 : 283288.dasm (-2.14 % of base)
-39 : 260162.dasm (-2.45 % of base)
-38 : 35443.dasm (-5.53 % of base)
-38 : 176037.dasm (-1.65 % of base)
-34 : 30067.dasm (-0.51 % of base)
-31 : 81827.dasm (-0.59 % of base)
-31 : 30073.dasm (-2.05 % of base)
77 total files with Code Size differences (38 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
122 (4.55 % of base) : 30081.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
115 (0.47 % of base) : 68932.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
110 (3.35 % of base) : 81577.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:AddGroupClassMembersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
95 (1.59 % of base) : 81016.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol:ComputeType(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
95 (7.35 % of base) : 72656.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
74 (3.03 % of base) : 305466.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
71 (8.53 % of base) : 177767.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
69 (0.55 % of base) : 76962.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
68 (2.22 % of base) : 76594.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
59 (3.62 % of base) : 38549.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.CSharpCompilation):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
58 (2.84 % of base) : 180188.dasm - ILCompiler.ReadyToRunStandaloneMethodMetadata:Compute(Internal.TypeSystem.Ecma.EcmaMethod):ILCompiler.ReadyToRunStandaloneMethodMetadata (FullOpts)
57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
55 (3.90 % of base) : 64521.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
55 (1.42 % of base) : 103684.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
55 (1.95 % of base) : 70688.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
54 (43.20 % of base) : 185702.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
54 (4.49 % of base) : 221772.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
51 (3.81 % of base) : 70872.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
50 (7.91 % of base) : 100442.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
50 (1.49 % of base) : 99805.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeSetArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
Top method improvements (bytes):
-269 (-3.33 % of base) : 186428.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-75 (-1.83 % of base) : 77000.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
-72 (-2.88 % of base) : 66468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-72 (-3.52 % of base) : 100611.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-65 (-2.88 % of base) : 177368.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
-58 (-1.14 % of base) : 60096.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
-53 (-1.68 % of base) : 77215.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-52 (-6.61 % of base) : 75426.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
-47 (-2.12 % of base) : 99664.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-43 (-3.70 % of base) : 185315.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-43 (-3.53 % of base) : 38545.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
-42 (-5.13 % of base) : 76941.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:GetCommonExpressionTypeForErrorRecovery(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.ConstantFieldsInProgress):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-42 (-1.00 % of base) : 84308.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
-40 (-2.14 % of base) : 283288.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-39 (-2.45 % of base) : 260162.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-38 (-5.53 % of base) : 35443.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-38 (-1.65 % of base) : 176037.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-34 (-0.51 % of base) : 30067.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-31 (-2.05 % of base) : 30073.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-31 (-0.59 % of base) : 81827.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedEventAccessorSymbol:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
Top method regressions (percentages):
54 (43.20 % of base) : 185702.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
13 (11.40 % of base) : 71233.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
33 (9.76 % of base) : 173460.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
71 (8.53 % of base) : 177767.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
50 (7.91 % of base) : 100442.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
10 (7.35 % of base) : 38550.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
95 (7.35 % of base) : 72656.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
30 (7.32 % of base) : 174267.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
29 (6.73 % of base) : 99280.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:AdjustCallForLiftedOperator_DoNotCallDirectly(Microsoft.CodeAnalysis.VisualBasic.BoundCall,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
48 (6.68 % of base) : 32046.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
10 (6.29 % of base) : 228499.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
10 (6.29 % of base) : 74617.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
17 (6.20 % of base) : 264611.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
44 (6.19 % of base) : 82833.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
47 (5.20 % of base) : 173596.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
16 (4.89 % of base) : 293891.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (FullOpts)
19 (4.75 % of base) : 32088.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
14 (4.73 % of base) : 260688.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
18 (4.65 % of base) : 31006.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<GetBaseInterfaces>g__addAllInterfaces|652_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]) (FullOpts)
Top method improvements (percentages):
-15 (-9.93 % of base) : 23249.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
-6 (-9.38 % of base) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-9.38 % of base) : 310876.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.33 % of base) : 310864.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.33 % of base) : 2849.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-29 (-7.46 % of base) : 100144.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
-52 (-6.61 % of base) : 75426.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
-29 (-5.61 % of base) : 99607.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:InsertXmlLiteralsPreamble(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.LocalRewriter+XmlLiteralFixupData+LocalWithInitialization]):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
-38 (-5.53 % of base) : 35443.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-23 (-5.53 % of base) : 72102.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
-26 (-5.37 % of base) : 260144.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
-42 (-5.13 % of base) : 76941.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:GetCommonExpressionTypeForErrorRecovery(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.ConstantFieldsInProgress):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-26 (-4.60 % of base) : 79647.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingAssemblySymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,ubyte):this (FullOpts)
-14 (-4.27 % of base) : 82112.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
-14 (-4.13 % of base) : 82110.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
-19 (-4.08 % of base) : 260145.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
-12 (-4.01 % of base) : 297101.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ReflectionFactoryServiceOnlySpan(System.Reflection.ConstructorInvoker,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[],System.Type,System.IServiceProvider):System.Object (FullOpts)
-5 (-4.00 % of base) : 221759.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:Reorder[ubyte](ubyte[],int[]):ubyte[] (FullOpts)
-43 (-3.70 % of base) : 185315.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-16 (-3.64 % of base) : 245604.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte],ubyte):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: 14786707 (overridden on cmd)
Total bytes of diff: 14787149 (overridden on cmd)
Total bytes of delta: 442 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
249 : 20424.dasm (3.91 % of base)
57 : 43285.dasm (16.81 % of base)
57 : 36026.dasm (2.00 % of base)
47 : 19209.dasm (2.03 % of base)
45 : 16812.dasm (1.57 % of base)
31 : 26483.dasm (1.21 % of base)
21 : 20451.dasm (0.80 % of base)
19 : 1135.dasm (2.54 % of base)
19 : 36326.dasm (1.93 % of base)
19 : 4651.dasm (2.54 % of base)
17 : 49275.dasm (6.20 % of base)
17 : 24123.dasm (2.06 % of base)
17 : 38546.dasm (1.32 % of base)
16 : 42322.dasm (0.61 % of base)
16 : 14413.dasm (4.89 % of base)
16 : 6583.dasm (1.46 % of base)
16 : 2667.dasm (4.89 % of base)
16 : 39017.dasm (0.65 % of base)
14 : 17283.dasm (4.73 % of base)
13 : 36876.dasm (3.08 % of base)
Top file improvements (bytes):
-69 : 31320.dasm (-1.78 % of base)
-28 : 10624.dasm (-1.07 % of base)
-26 : 17806.dasm (-5.37 % of base)
-25 : 5300.dasm (-0.96 % of base)
-25 : 40944.dasm (-0.96 % of base)
-25 : 37829.dasm (-0.96 % of base)
-25 : 18132.dasm (-0.96 % of base)
-25 : 22745.dasm (-0.96 % of base)
-25 : 24021.dasm (-0.96 % of base)
-25 : 39561.dasm (-0.96 % of base)
-25 : 8095.dasm (-0.96 % of base)
-21 : 4392.dasm (-5.16 % of base)
-20 : 27834.dasm (-0.78 % of base)
-19 : 10948.dasm (-2.39 % of base)
-15 : 43419.dasm (-1.54 % of base)
-12 : 13478.dasm (-2.39 % of base)
-10 : 6912.dasm (-2.00 % of base)
-10 : 27783.dasm (-2.24 % of base)
-8 : 27435.dasm (-0.83 % of base)
-8 : 3839.dasm (-1.61 % of base)
63 total files with Code Size differences (31 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
249 (3.91 % of base) : 20424.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
57 (2.00 % of base) : 36026.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (Tier0-FullOpts)
57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
47 (2.03 % of base) : 19209.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
45 (1.57 % of base) : 16812.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
31 (1.21 % of base) : 26483.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
21 (0.80 % of base) : 20451.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
19 (2.54 % of base) : 1135.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
19 (2.54 % of base) : 4651.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
19 (1.93 % of base) : 36326.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectMap:.ctor(System.String,System.String[],int[],System.Object[],int[],System.Runtime.Serialization.Formatters.Binary.ObjectReader,int,System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo,System.Runtime.Serialization.Formatters.Binary.SizedArray):this (Tier0-FullOpts)
17 (1.32 % of base) : 38546.dasm - Moq.MatcherFactory:CreateMatcher(System.Linq.Expressions.Expression,System.Reflection.ParameterInfo):Moq.Pair`2[Moq.IMatcher,System.Linq.Expressions.Expression] (Tier0-FullOpts)
17 (2.06 % of base) : 24123.dasm - System.IO.Tests.BinaryWriter_WriteByteCharTests:BinaryWriter_WriteBArrayTest2():this (Tier0-FullOpts)
17 (6.20 % of base) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
16 (0.65 % of base) : 39017.dasm - Castle.DynamicProxy.Generators.InvocationTypeGenerator:ImplementInvokeMethodOnTarget(Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter,System.Reflection.ParameterInfo[],Castle.DynamicProxy.Generators.Emitters.MethodEmitter,Castle.DynamicProxy.Generators.Emitters.SimpleAST.Reference):this (Tier0-FullOpts)
16 (1.46 % of base) : 6583.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
16 (0.61 % of base) : 42322.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
16 (4.89 % of base) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
16 (4.89 % of base) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
14 (4.73 % of base) : 17283.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
13 (3.08 % of base) : 36876.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
Top method improvements (bytes):
-69 (-1.78 % of base) : 31320.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
-28 (-1.07 % of base) : 10624.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-25 (-0.96 % of base) : 5300.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 40944.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 37829.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 18132.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 22745.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 24021.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 39561.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-25 (-0.96 % of base) : 8095.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-21 (-5.16 % of base) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
-20 (-0.78 % of base) : 27834.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-19 (-2.39 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-15 (-1.54 % of base) : 43419.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (Tier0-FullOpts)
-12 (-2.39 % of base) : 13478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-10 (-2.24 % of base) : 27783.dasm - System.Linq.Parallel.SortHelper`2[double,int]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[int],System.Collections.Generic.List`1[double],ubyte):this (Tier0-FullOpts)
-10 (-2.00 % of base) : 6912.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-8 (-0.83 % of base) : 27435.dasm - System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask`2[int,int]:SpoolingWork():this (Tier0-FullOpts)
-8 (-1.61 % of base) : 3839.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method regressions (percentages):
57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
17 (6.20 % of base) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
16 (4.89 % of base) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
16 (4.89 % of base) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
14 (4.73 % of base) : 17283.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
4 (4.08 % of base) : 38105.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 41041.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 42748.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 44043.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 48396.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 16577.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 19466.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 19689.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
4 (4.08 % of base) : 21680.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
249 (3.91 % of base) : 20424.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
13 (3.08 % of base) : 36876.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
13 (3.07 % of base) : 23565.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
19 (2.54 % of base) : 1135.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
19 (2.54 % of base) : 4651.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
2 (2.13 % of base) : 11034.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(uint,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-21 (-5.16 % of base) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
-6 (-3.51 % of base) : 22150.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
-6 (-2.96 % of base) : 14622.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
-6 (-2.96 % of base) : 43053.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
-19 (-2.39 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-12 (-2.39 % of base) : 13478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-10 (-2.24 % of base) : 27783.dasm - System.Linq.Parallel.SortHelper`2[double,int]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[int],System.Collections.Generic.List`1[double],ubyte):this (Tier0-FullOpts)
-10 (-2.00 % of base) : 6912.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-2 (-1.98 % of base) : 48332.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-2 (-1.98 % of base) : 6037.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-2 (-1.98 % of base) : 18386.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-2 (-1.98 % of base) : 23735.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-2 (-1.98 % of base) : 2811.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-2 (-1.98 % of base) : 34438.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-69 (-1.78 % of base) : 31320.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
-8 (-1.61 % of base) : 3839.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-15 (-1.54 % of base) : 43419.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (Tier0-FullOpts)
-2 (-1.47 % of base) : 3982.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
-2 (-1.47 % of base) : 544.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented 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: 107805173 (overridden on cmd)
Total bytes of diff: 107806514 (overridden on cmd)
Total bytes of delta: 1341 (0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
249 : 145746.dasm (3.91 % of base)
181 : 12804.dasm (3.90 % of base)
181 : 35532.dasm (3.90 % of base)
117 : 62705.dasm (2.92 % of base)
112 : 77423.dasm (0.46 % of base)
100 : 119684.dasm (3.79 % of base)
87 : 311700.dasm (2.48 % of base)
82 : 116173.dasm (6.67 % of base)
74 : 315460.dasm (2.36 % of base)
71 : 196781.dasm (8.53 % of base)
71 : 209442.dasm (3.25 % of base)
63 : 95671.dasm (4.31 % of base)
57 : 114730.dasm (16.81 % of base)
57 : 218178.dasm (2.00 % of base)
57 : 80209.dasm (16.81 % of base)
55 : 315462.dasm (3.39 % of base)
54 : 102191.dasm (4.49 % of base)
54 : 101169.dasm (4.55 % of base)
54 : 40274.dasm (43.20 % of base)
53 : 315384.dasm (3.50 % of base)
Top file improvements (bytes):
-269 : 191227.dasm (-3.33 % of base)
-269 : 39877.dasm (-3.33 % of base)
-114 : 314357.dasm (-2.67 % of base)
-113 : 315548.dasm (-4.18 % of base)
-110 : 315640.dasm (-3.79 % of base)
-104 : 315609.dasm (-6.55 % of base)
-101 : 37839.dasm (-1.50 % of base)
-100 : 325030.dasm (-2.77 % of base)
-90 : 73400.dasm (-3.73 % of base)
-81 : 315459.dasm (-2.60 % of base)
-78 : 315468.dasm (-3.38 % of base)
-73 : 315471.dasm (-3.27 % of base)
-72 : 325355.dasm (-4.89 % of base)
-71 : 117000.dasm (-6.67 % of base)
-69 : 24850.dasm (-1.38 % of base)
-69 : 213116.dasm (-1.78 % of base)
-66 : 29197.dasm (-1.30 % of base)
-66 : 315604.dasm (-4.87 % of base)
-66 : 14154.dasm (-1.30 % of base)
-61 : 329278.dasm (-3.44 % of base)
75 total files with Code Size differences (37 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
249 (3.91 % of base) : 145746.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
181 (3.90 % of base) : 12804.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
181 (3.90 % of base) : 35532.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
117 (2.92 % of base) : 62705.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)
112 (0.46 % of base) : 77423.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
100 (3.79 % of base) : 119684.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
87 (2.48 % of base) : 311700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex888_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
82 (6.67 % of base) : 116173.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
74 (2.36 % of base) : 315460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2439_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
71 (3.25 % of base) : 209442.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
71 (8.53 % of base) : 196781.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
63 (4.31 % of base) : 95671.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
57 (2.00 % of base) : 218178.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
57 (16.81 % of base) : 114730.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (16.81 % of base) : 80209.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
55 (3.39 % of base) : 315462.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3916_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
54 (43.20 % of base) : 40274.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
54 (4.49 % of base) : 102191.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
54 (4.55 % of base) : 101169.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
53 (3.50 % of base) : 315384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3828_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-269 (-3.33 % of base) : 191227.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-269 (-3.33 % of base) : 39877.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-114 (-2.67 % of base) : 314357.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-113 (-4.18 % of base) : 315548.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2574_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-110 (-3.79 % of base) : 315640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2706_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-6.55 % of base) : 315609.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2664_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-101 (-1.50 % of base) : 37839.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression:this (FullOpts)
-100 (-2.77 % of base) : 325030.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30735_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-90 (-3.73 % of base) : 73400.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|231_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
-81 (-2.60 % of base) : 315459.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2438_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-78 (-3.38 % of base) : 315468.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3919_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-73 (-3.27 % of base) : 315471.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2455_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-72 (-4.89 % of base) : 325355.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-71 (-6.67 % of base) : 117000.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-69 (-1.38 % of base) : 24850.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-69 (-1.78 % of base) : 213116.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
-66 (-1.30 % of base) : 29197.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
-66 (-1.30 % of base) : 14154.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
-66 (-4.87 % of base) : 315604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2658_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-61 (-3.44 % of base) : 329278.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32794_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
54 (43.20 % of base) : 40274.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
57 (16.81 % of base) : 114730.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (16.81 % of base) : 80209.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
19 (11.18 % of base) : 101265.dasm - System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
24 (10.13 % of base) : 174193.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesEightByteSize(int) (FullOpts)
33 (9.76 % of base) : 200462.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
71 (8.53 % of base) : 196781.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
20 (7.72 % of base) : 173741.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesFourBytesSize(int) (FullOpts)
47 (7.57 % of base) : 265272.dasm - System.ServiceModel.Syndication.Tests.CompareHelper:IsAllowableFailure(System.Xml.XmlNode):ubyte:this (FullOpts)
30 (7.32 % of base) : 201920.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
45 (6.86 % of base) : 10424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
82 (6.67 % of base) : 116173.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
45 (6.66 % of base) : 24212.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
10 (6.29 % of base) : 115392.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
12 (6.25 % of base) : 51722.dasm - Stashbox.Expressions.Compile.Emitters.Emitter:BuildLocals(Stashbox.Utils.Data.ExpandableArray`1[System.Linq.Expressions.Expression],System.Reflection.Emit.ILGenerator):System.Reflection.Emit.LocalBuilder[] (FullOpts)
17 (6.20 % of base) : 196548.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
17 (6.20 % of base) : 154647.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
32 (5.36 % of base) : 160388.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],int,int][],System.Linq.Parallel.HashJoinOutputKeyBuilder`3[int,int,int],System.Collections.Generic.IComparer`1[int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
47 (5.20 % of base) : 200634.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
30 (5.05 % of base) : 61797.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForBadNonTrailingNamedArgument(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Nullable`1[int] (FullOpts)
Top method improvements (percentages):
-43 (-12.91 % of base) : 215942.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
-43 (-12.91 % of base) : 216028.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
-14 (-8.09 % of base) : 200557.dasm - System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
-71 (-6.67 % of base) : 117000.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-104 (-6.55 % of base) : 315609.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2664_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-38 (-5.53 % of base) : 38837.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-23 (-5.53 % of base) : 117610.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
-26 (-5.37 % of base) : 126653.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
-72 (-4.89 % of base) : 325355.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-66 (-4.87 % of base) : 315604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2658_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-113 (-4.18 % of base) : 315548.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2574_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-19 (-4.08 % of base) : 229539.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
-12 (-4.01 % of base) : 53877.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ReflectionFactoryServiceOnlySpan(System.Reflection.ConstructorInvoker,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[],System.Type,System.IServiceProvider):System.Object (FullOpts)
-18 (-3.85 % of base) : 119918.dasm - System.Data.OleDb.RowBinding:SetBindings(System.Data.OleDb.OleDbDataReader,System.Data.OleDb.Bindings,int,int,System.Data.OleDb.OleDbParameter[],System.Data.OleDb.tagDBBINDING[],ubyte):System.Data.OleDb.ColumnBinding[]:this (FullOpts)
-110 (-3.79 % of base) : 315640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2706_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-90 (-3.73 % of base) : 73400.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|231_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
-16 (-3.60 % of base) : 140758.dasm - Microsoft.FSharp.Reflection.Impl:mkTupleTypeNetStandard(System.Type[],System.Type[]):System.Type (FullOpts)
-14 (-3.60 % of base) : 70204.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
-14 (-3.60 % of base) : 64169.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
-43 (-3.49 % of base) : 29731.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:MakeArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
realworld.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11475105 (overridden on cmd)
Total bytes of diff: 11475324 (overridden on cmd)
Total bytes of delta: 219 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
144 : 15701.dasm (10.60 % of base)
122 : 29554.dasm (4.63 % of base)
78 : 11668.dasm (2.66 % of base)
60 : 17597.dasm (0.81 % of base)
45 : 26846.dasm (6.90 % of base)
45 : 18145.dasm (1.58 % of base)
45 : 23888.dasm (1.70 % of base)
44 : 33392.dasm (1.01 % of base)
42 : 16714.dasm (3.22 % of base)
39 : 13643.dasm (2.24 % of base)
39 : 29254.dasm (0.94 % of base)
31 : 1629.dasm (4.72 % of base)
31 : 43.dasm (4.72 % of base)
29 : 24641.dasm (0.55 % of base)
27 : 3281.dasm (9.22 % of base)
27 : 525.dasm (8.79 % of base)
25 : 6605.dasm (3.62 % of base)
19 : 25424.dasm (4.75 % of base)
16 : 23912.dasm (2.64 % of base)
16 : 27283.dasm (2.64 % of base)
Top file improvements (bytes):
-276 : 9819.dasm (-2.90 % of base)
-141 : 7388.dasm (-0.20 % of base)
-72 : 32173.dasm (-2.93 % of base)
-53 : 26172.dasm (-1.06 % of base)
-41 : 24459.dasm (-0.92 % of base)
-31 : 1633.dasm (-1.83 % of base)
-31 : 28969.dasm (-2.09 % of base)
-31 : 47.dasm (-1.83 % of base)
-27 : 17876.dasm (-0.96 % of base)
-22 : 9038.dasm (-0.33 % of base)
-21 : 35560.dasm (-7.61 % of base)
-20 : 31319.dasm (-3.02 % of base)
-19 : 7612.dasm (-1.66 % of base)
-19 : 12218.dasm (-6.03 % of base)
-19 : 35552.dasm (-1.66 % of base)
-16 : 17327.dasm (-0.23 % of base)
-15 : 31582.dasm (-2.09 % of base)
-12 : 18029.dasm (-1.25 % of base)
-10 : 23684.dasm (-1.38 % of base)
-9 : 17152.dasm (-2.85 % of base)
56 total files with Code Size differences (24 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
144 (10.60 % of base) : 15701.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
122 (4.63 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
78 (2.66 % of base) : 11668.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
60 (0.81 % of base) : 17597.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
45 (6.90 % of base) : 26846.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
45 (1.70 % of base) : 23888.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
45 (1.58 % of base) : 18145.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
44 (1.01 % of base) : 33392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
42 (3.22 % of base) : 16714.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
39 (2.24 % of base) : 13643.dasm - FSharp.Compiler.CheckExpressions:checkAndRewrite@3647(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
39 (0.94 % of base) : 29254.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
31 (4.72 % of base) : 1629.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
29 (0.55 % of base) : 24641.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
27 (9.22 % of base) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
27 (8.79 % of base) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
25 (3.62 % of base) : 6605.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
19 (4.75 % of base) : 25424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
16 (3.14 % of base) : 8034.dasm - <StartupCode$FSharp-Compiler-Service>.$IncrementalBuild+TryCreateIncrementalBuilderForProjectOptions@1627-9:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder]):FSharp.Compiler.BuildGraph+NodeCode`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder],FSharp.Compiler.Diagnostics.FSharpDiagnostic[]]]:this (FullOpts)
16 (4.36 % of base) : 23689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:ConstructMapping(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.SmallDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations] (FullOpts)
Top method improvements (bytes):
-276 (-2.90 % of base) : 9819.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-141 (-0.20 % of base) : 7388.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-72 (-2.93 % of base) : 32173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-53 (-1.06 % of base) : 26172.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-41 (-0.92 % of base) : 24459.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-31 (-2.09 % of base) : 28969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-31 (-1.83 % of base) : 1633.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-27 (-0.96 % of base) : 17876.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
-22 (-0.33 % of base) : 9038.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeEqualsType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-21 (-7.61 % of base) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
-20 (-3.02 % of base) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-19 (-6.03 % of base) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
-19 (-1.66 % of base) : 7612.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-19 (-1.66 % of base) : 35552.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-16 (-0.23 % of base) : 17327.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-15 (-2.09 % of base) : 31582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:AccessTupleFields(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-12 (-1.25 % of base) : 18029.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
-10 (-1.38 % of base) : 23684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-9 (-2.85 % of base) : 17152.dasm - Microsoft.ML.Data.RowToRowMapperTransform:GetRowCursorSet(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],int,System.Random):Microsoft.ML.DataViewRowCursor[]:this (FullOpts)
Top method regressions (percentages):
144 (10.60 % of base) : 15701.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
27 (9.22 % of base) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
27 (8.79 % of base) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
10 (7.35 % of base) : 31264.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
45 (6.90 % of base) : 26846.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
19 (4.75 % of base) : 25424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
31 (4.72 % of base) : 1629.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
122 (4.63 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (4.36 % of base) : 23689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:ConstructMapping(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.SmallDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations] (FullOpts)
25 (3.62 % of base) : 6605.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
12 (3.47 % of base) : 22311.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
42 (3.22 % of base) : 16714.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
16 (3.14 % of base) : 8034.dasm - <StartupCode$FSharp-Compiler-Service>.$IncrementalBuild+TryCreateIncrementalBuilderForProjectOptions@1627-9:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder]):FSharp.Compiler.BuildGraph+NodeCode`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder],FSharp.Compiler.Diagnostics.FSharpDiagnostic[]]]:this (FullOpts)
12 (3.12 % of base) : 12747.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
78 (2.66 % of base) : 11668.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
16 (2.64 % of base) : 23912.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
16 (2.64 % of base) : 27283.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
39 (2.24 % of base) : 13643.dasm - FSharp.Compiler.CheckExpressions:checkAndRewrite@3647(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
6 (1.99 % of base) : 14719.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
Top method improvements (percentages):
-21 (-7.61 % of base) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
-19 (-6.03 % of base) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
-20 (-3.02 % of base) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-72 (-2.93 % of base) : 32173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-276 (-2.90 % of base) : 9819.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-9 (-2.85 % of base) : 17152.dasm - Microsoft.ML.Data.RowToRowMapperTransform:GetRowCursorSet(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],int,System.Random):Microsoft.ML.DataViewRowCursor[]:this (FullOpts)
-7 (-2.55 % of base) : 25418.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForBadNonTrailingNamedArgument(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
-9 (-2.26 % of base) : 15298.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgb24](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgb24][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
-15 (-2.09 % of base) : 31582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:AccessTupleFields(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-31 (-2.09 % of base) : 28969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-31 (-1.83 % of base) : 1633.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-19 (-1.66 % of base) : 7612.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-19 (-1.66 % of base) : 35552.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-8 (-1.57 % of base) : 9503.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-10 (-1.38 % of base) : 23684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-1.25 % of base) : 18029.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
-53 (-1.06 % of base) : 26172.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-27 (-0.96 % of base) : 17876.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
-41 (-0.92 % of base) : 24459.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)