Assembly Diffs
linux arm
Diffs are based on 1,449,677 contexts (345,734 MinOpts, 1,103,943 FullOpts).
MISSED contexts: 55,309 (3.68%)
Overall (+6,954 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
13,691,660 |
+402 |
benchmarks.run_pgo.linux.arm.checked.mch |
24,676,764 |
+144 |
benchmarks.run_tiered.linux.arm.checked.mch |
17,983,552 |
+444 |
coreclr_tests.run.linux.arm.checked.mch |
321,243,680 |
-626 |
libraries.crossgen2.linux.arm.checked.mch |
35,989,292 |
-172 |
libraries.pmi.linux.arm.checked.mch |
49,882,798 |
+678 |
libraries_tests.run.linux.arm.Release.mch |
17,138,332 |
+4,772 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
93,857,406 |
+956 |
realworld.run.linux.arm.checked.mch |
13,598,268 |
+356 |
FullOpts (+6,954 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
13,379,084 |
+402 |
benchmarks.run_pgo.linux.arm.checked.mch |
19,755,612 |
+144 |
benchmarks.run_tiered.linux.arm.checked.mch |
10,616,262 |
+444 |
coreclr_tests.run.linux.arm.checked.mch |
108,808,730 |
-626 |
libraries.crossgen2.linux.arm.checked.mch |
35,988,062 |
-172 |
libraries.pmi.linux.arm.checked.mch |
49,776,574 |
+678 |
libraries_tests.run.linux.arm.Release.mch |
16,541,272 |
+4,772 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
83,827,636 |
+956 |
realworld.run.linux.arm.checked.mch |
13,163,196 |
+356 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-12 (-2.13%) : 34376.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 27.50) int -> r5 single-def
-; V01 arg1 [V01,T13] ( 8, 7 ) int -> r7
-; V02 arg2 [V02,T03] ( 10, 28 ) byref -> r4 single-def
+; V01 arg1 [V01,T11] ( 8, 9 ) int -> r7
+; V02 arg2 [V02,T03] ( 10, 30 ) byref -> r4 single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> r6 single-def
; V04 loc0 [V04,T05] ( 8, 26 ) int -> r8
; V05 loc1 [V05,T08] ( 9, 14 ) int -> registers
; V06 loc2 [V06,T15] ( 4, 5.50) ubyte -> r10
; V07 loc3 [V07,T16] ( 3, 5 ) ubyte -> [sp+0x1C]
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [sp+0x18]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [sp+0x18]
; V09 loc5 [V09,T10] ( 5, 13.50) ubyte -> [sp+0x14]
; V10 loc6 [V10,T17] ( 3, 5 ) int -> [sp+0x10]
-; V11 loc7 [V11 ] ( 19, 81.50) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 19, 85.50) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T20] ( 3, 1.50) int -> r0
; V13 loc9 [V13,T09] ( 7, 14 ) ushort -> r2
; V14 OutArgs [V14 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -40,8 +40,8 @@
; V29 tmp15 [V29,T18] ( 2, 4 ) byref -> [sp+0x08] spill-single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp16 [V30 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V31 cse0 [V31,T01] ( 3, 48 ) int -> r0 "CSE - aggressive"
-; V32 cse1 [V32,T11] ( 5, 10 ) int -> r2 multi-def "CSE - moderate"
-; V33 cse2 [V33,T12] ( 5, 10 ) int -> r0 multi-def "CSE - moderate"
+; V32 cse1 [V32,T12] ( 5, 10 ) int -> r2 multi-def "CSE - moderate"
+; V33 cse2 [V33,T13] ( 5, 10 ) int -> r0 multi-def "CSE - moderate"
;
; Lcl frame size = 36
@@ -74,12 +74,12 @@ G_M7969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, by
adds r2, r7, 1
ldr r0, [r4]
cmp r2, r0
- bge G_M7969_IG33
+ bge G_M7969_IG34
lsls r2, r7, 1
adds r2, r5, r2
ldrh r2, [r2+0x02]
cmp r2, 58
- bne G_M7969_IG33
+ bne G_M7969_IG34
;; size=22 bbWeight=0.50 PerfScore 4.50
G_M7969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
str r7, [sp+0x0C] // [V11 loc7]
@@ -106,7 +106,7 @@ G_M7969_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; GC ptr vars +{V29}
mov r1, 256
cmp lr, r1
- bhs G_M7969_IG35
+ bhs G_M7969_IG36
ldr r1, [sp+0x08] // [V29 tmp15]
; byrRegs +[r1]
ldrb r1, [r1+lr]
@@ -118,9 +118,8 @@ G_M7969_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
G_M7969_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; GC ptr vars -{V29}
str r12, [sp+0x18] // [V08 loc4]
- str r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG25
- ;; size=8 bbWeight=0.25 PerfScore 0.75
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
G_M7969_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
lsls r0, r0, 1
@@ -133,11 +132,12 @@ G_M7969_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
add r9, r9, 1
movs r3, 0
str r3, [sp+0x14] // [V09 loc5]
+ ldr r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG24
- ;; size=10 bbWeight=2 PerfScore 8.00
+ ;; size=12 bbWeight=2 PerfScore 10.00
G_M7969_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r9, 4
- bgt G_M7969_IG33
+ bgt G_M7969_IG34
cmp r9, 0
beq SHORT G_M7969_IG11
add r8, r8, 1
@@ -152,11 +152,11 @@ G_M7969_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r2, 37
beq SHORT G_M7969_IG14
cmp r2, 46
- bne G_M7969_IG33
+ bne G_M7969_IG34
ldr lr, [sp+0x1C] // [V07 loc3]
cmp lr, 0
str r3, [sp+0x14] // [V09 loc5]
- bne G_M7969_IG33
+ bne G_M7969_IG34
ldr r2, [r4]
str r2, [sp+0x0C] // [V11 loc7]
movs r2, 0
@@ -171,7 +171,7 @@ G_M7969_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
blx lr // <unknown method>
; gcr arg pop 0
cmp r0, 0
- beq G_M7969_IG33
+ beq G_M7969_IG34
b SHORT G_M7969_IG22
;; size=66 bbWeight=2 PerfScore 50.00
G_M7969_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
@@ -182,10 +182,10 @@ G_M7969_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r2, 93
beq SHORT G_M7969_IG16
;; size=12 bbWeight=2 PerfScore 12.00
-G_M7969_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M7969_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4]
- b SHORT G_M7969_IG33
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ b SHORT G_M7969_IG34
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs +[r4]
ldr r0, [sp+0x0C] // [V11 loc7]
@@ -193,7 +193,7 @@ G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
str r0, [sp+0x0C] // [V11 loc7]
ldr r2, [r4]
cmp r0, r2
- beq SHORT G_M7969_IG33
+ beq SHORT G_M7969_IG34
ldr r0, [sp+0x0C] // [V11 loc7]
lsls r0, r0, 1
ldrh r0, [r5+r0]
@@ -205,13 +205,12 @@ G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
G_M7969_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
b SHORT G_M7969_IG19
;; size=2 bbWeight=2 PerfScore 2.00
-G_M7969_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r7, [sp+0x0C] // [V11 loc7]
ldr r0, [r4]
str r0, [sp+0x0C] // [V11 loc7]
- str r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG24
- ;; size=10 bbWeight=2 PerfScore 10.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M7969_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r3, [sp+0x0C] // [V11 loc7]
cmp r3, 0
@@ -221,7 +220,7 @@ G_M7969_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r0, 58
bne SHORT G_M7969_IG18
cmp r10, 0
- bne SHORT G_M7969_IG33
+ bne SHORT G_M7969_IG34
mov r10, 1
movs r3, 0
mov r9, r3
@@ -246,7 +245,7 @@ G_M7969_IG21: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
uxtb r0, r6
orrs r0, r12, r0
cmp r0, 0
- bne SHORT G_M7969_IG33
+ bne SHORT G_M7969_IG34
mov r12, 1
mov r9, r12
str r9, [sp+0x18] // [V08 loc4]
@@ -263,80 +262,80 @@ G_M7969_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
;; size=22 bbWeight=2 PerfScore 14.00
G_M7969_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movs r0, 0
- str r9, [sp+0x14] // [V09 loc5]
+ mov r3, r9
mov r9, r0
- ;; size=8 bbWeight=2 PerfScore 6.00
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M7969_IG24: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
adds r0, r0, 1
str r0, [sp+0x0C] // [V11 loc7]
ldr r0, [sp+0x0C] // [V11 loc7]
- ldr r3, [r4]
- cmp r0, r3
- blt SHORT G_M7969_IG29
+ ldr r2, [r4]
+ cmp r0, r2
+ blt SHORT G_M7969_IG30
;; size=14 bbWeight=4 PerfScore 28.00
-G_M7969_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r12, [sp+0x18] // [V08 loc4]
cmp r12, 0
- beq SHORT G_M7969_IG26
+ beq SHORT G_M7969_IG27
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M7969_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
sub r0, r9, 1
cmp r0, 1
- bhi SHORT G_M7969_IG33
- ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M7969_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ bhi SHORT G_M7969_IG34
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M7969_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r12, 0
- bne SHORT G_M7969_IG27
+ bne SHORT G_M7969_IG28
movs r0, 0
- b SHORT G_M7969_IG28
+ b SHORT G_M7969_IG29
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M7969_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M7969_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7969_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
adds r0, 8
- ldr lr, [sp+0x14] // [V09 loc5]
- cmp lr, 0
- bne SHORT G_M7969_IG33
+ cmp r3, 0
+ bne SHORT G_M7969_IG34
cmp r9, 4
- bgt SHORT G_M7969_IG33
+ bgt SHORT G_M7969_IG34
cmp r10, 0
- bne SHORT G_M7969_IG30
+ bne SHORT G_M7969_IG31
cmp r8, r0
- bne SHORT G_M7969_IG33
- b SHORT G_M7969_IG31
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M7969_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ldr r3, [sp+0x14] // [V09 loc5]
+ bne SHORT G_M7969_IG34
+ b SHORT G_M7969_IG32
+ ;; size=24 bbWeight=0.50 PerfScore 5.00
+G_M7969_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r12, [sp+0x18] // [V08 loc4]
b SHORT G_M7969_IG05
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M7969_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- cmp r8, r0
- bge SHORT G_M7969_IG33
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=2 PerfScore 4.00
G_M7969_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ cmp r8, r0
+ bge SHORT G_M7969_IG34
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M7969_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
ldr r3, [r4]
...
-4 (-2.00%) : 2310.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
@@ -7,15 +7,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> lr single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> r4 single-def
-; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x38] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
-; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x40] single-def
-; V05 arg5 [V05,T10] ( 2, 1 ) byref -> [sp+0x44] single-def
-; V06 arg6 [V06,T11] ( 2, 1 ) byref -> [sp+0x48] single-def
+; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T05] ( 3, 3 ) int -> lr single-def
+; V02 arg2 [V02,T06] ( 3, 3 ) int -> r4 single-def
+; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x40] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
+; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x48] single-def
+; V05 arg5 [V05,T10] ( 2, 1.50) byref -> r5 single-def
+; V06 arg6 [V06,T11] ( 2, 1.50) byref -> r6 single-def
; V07 loc0 [V07 ] ( 8, 15.50) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V08 loc1 [V08 ] ( 2, 1.50) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc1 [V08 ] ( 2, 2 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc2 [V09 ] ( 0, 0 ) ubyte -> zero-ref
;* V10 loc3 [V10 ] ( 0, 0 ) long -> zero-ref
; V11 loc4 [V11,T00] ( 6, 20.50) int -> r2
@@ -23,36 +23,40 @@
; V13 tmp1 [V13,T09] ( 3, 1.50) int -> r0
; V14 tmp2 [V14 ] ( 3, 5.50) byref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
; V15 tmp3 [V15 ] ( 6, 11 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP
-; V16 rat0 [V16,T01] ( 5, 13 ) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V17 rat1 [V17,T02] ( 4, 9 ) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T06] ( 3, 3 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V16 rat0 [V16,T01] ( 5, 13.50) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
+; V17 rat1 [V17,T02] ( 4, 9.50) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat2 [V18,T07] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
; V19 rat3 [V19,T08] ( 3, 3 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V20 rat4 [V20,T07] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V20 rat4 [V20,T04] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 36
G_M61562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r4,r11,lr}
+ push {r4,r5,r6,r11,lr}
sub sp, 36
- add r11, sp, 40
+ add r11, sp, 48
movs r0, 0
str r0, [sp+0x18] // [V07 loc0]
mov lr, r2
mov r4, r3
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x38]
+ ldr r5, [sp+0x4C] // [V05 arg5]
+ ; byrRegs +[r5]
+ ldr r6, [sp+0x50] // [V06 arg6]
+ ; byrRegs +[r6]
+ ;; size=24 bbWeight=1 PerfScore 10.00
+G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ ldr r1, [sp+0x40]
str r1, [sp]
- ldr r1, [sp+0x3C]
+ ldr r1, [sp+0x44]
str r1, [sp+0x04]
- ldr r1, [sp+0x40] // [V04 arg4]
+ ldr r1, [sp+0x48] // [V04 arg4]
str r1, [sp+0x08] // [V12 OutArgs+0x08]
add r1, sp, 20 // [V08 loc1]
str r1, [sp+0x0C] // [V12 OutArgs+0x0c]
- ldr r1, [sp+0x30] // [V00 arg0]
+ ldr r1, [sp+0x38] // [V00 arg0]
; byrRegs +[r1]
- ldr r2, [sp+0x34] // [V00 arg0+0x04]
+ ldr r2, [sp+0x3C] // [V00 arg0+0x04]
add r0, sp, 24 // [V07 loc0]
mov r3, lr
movw lr, 0xd1ff
@@ -65,29 +69,26 @@ G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, r4
ble SHORT G_M61562_IG07
;; size=44 bbWeight=1 PerfScore 19.00
-G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r4, [sp+0x44] // [V05 arg5]
- ; byrRegs +[r4]
+G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
movs r0, 0
- str r0, [r4]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- str r0, [r4+0x04]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r0, [r4]
+ str r0, [r5]
;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
+ str r0, [r5+0x04]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
+ ; byrRegs -[r5]
+ str r0, [r6]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M61562_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
add sp, 36
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, gcvars, byref, isz
+ ; byrRegs +[r5-r6]
movs r0, 0
ldr r3, [sp+0x1C] // [V15 tmp3]
cmp r0, r3
@@ -102,17 +103,17 @@ G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r0, 0
b SHORT G_M61562_IG09
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
asrs r3, r0, 31
movs r2, 0
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r1, 0
ble SHORT G_M61562_IG11
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r2, r1
bhs SHORT G_M61562_IG13
@@ -131,26 +132,23 @@ G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r2, r1
blt SHORT G_M61562_IG10
;; size=38 bbWeight=4 PerfScore 60.00
-G_M61562_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
ldr r2, [sp+0x14] // [V08 loc1]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r2, [r4]
- ldr r4, [sp+0x44] // [V05 arg5]
- mov r2, r4
+ str r2, [r6]
+ mov r2, r5
; byrRegs +[r2]
str r0, [r2]
str r3, [r2+0x04]
movs r0, 1
- ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M61562_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M61562_IG12: ; bbWeight=1, epilog, nogc, extend
add sp, 36
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r2 r4]
+ ; byrRegs -[r2 r5-r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -158,7 +156,7 @@ G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 20, PerfScore 106.50, instruction count 85, allocated bytes for code 200 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 196, prolog size 24, PerfScore 111.50, instruction count 83, allocated bytes for code 196 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +168,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
+ Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -182,12 +180,12 @@ Unwind Info:
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
09 add sp, sp, #36 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 6 ----
09 add sp, sp, #36 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
-22 (-1.77%) : 13325.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 14 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 40, 23 ) ref -> r4 this class-hnd single-def <System.Xml.EncodingStreamWrapper>
+; V00 this [V00,T00] ( 40, 24.50) ref -> r4 this class-hnd single-def <System.Xml.EncodingStreamWrapper>
; V01 arg1 [V01,T31] ( 3, 3 ) ref -> r6 class-hnd single-def <System.IO.Stream>
; V02 arg2 [V02,T28] ( 4, 4 ) ref -> r5 class-hnd single-def <System.Text.Encoding>
; V03 loc0 [V03,T35] ( 7, 4 ) int -> r6
@@ -20,7 +20,7 @@
; V09 tmp2 [V09,T68] ( 2, 0 ) ref -> r4 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V10 tmp3 [V10,T67] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V11 tmp4 [V11,T13] ( 7, 14 ) int -> r5 "Inlining Arg"
-; V12 tmp5 [V12,T55] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V12 tmp5 [V12,T47] ( 2, 3 ) int -> r7 "impAppendStmt"
; V13 tmp6 [V13,T07] ( 4, 18 ) ref -> r8 class-hnd single-def "impAppendStmt" <System.IO.Stream>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V15 tmp8 [V15,T29] ( 5, 5 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
@@ -29,14 +29,14 @@
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V21 tmp14 [V21,T01] ( 8, 25 ) int -> [sp+0x54] "Inline stloc first use temp"
+; V21 tmp14 [V21,T01] ( 8, 25.50) int -> [sp+0x4C] "Inline stloc first use temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V23 tmp16 [V23,T16] ( 3, 12 ) int -> r0 "Inline stloc first use temp"
;* V24 tmp17 [V24 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V25 tmp18 [V25,T04] ( 3, 24 ) int -> [sp+0x50] spill-single-def "Inlining Arg"
-; V26 tmp19 [V26,T10] ( 2, 16 ) byref -> [sp+0x20] spill-single-def "Inlining Arg"
+; V25 tmp18 [V25,T04] ( 3, 24 ) int -> [sp+0x48] spill-single-def "Inlining Arg"
+; V26 tmp19 [V26,T10] ( 2, 16 ) byref -> [sp+0x1C] spill-single-def "Inlining Arg"
; V27 tmp20 [V27,T14] ( 7, 14 ) int -> r5 "Inlining Arg"
-; V28 tmp21 [V28,T56] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V28 tmp21 [V28,T48] ( 2, 3 ) int -> r7 "impAppendStmt"
; V29 tmp22 [V29,T08] ( 4, 18 ) ref -> r8 class-hnd single-def "impAppendStmt" <System.IO.Stream>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V31 tmp24 [V31,T40] ( 3, 3 ) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
@@ -45,14 +45,14 @@
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V35 tmp28 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V36 tmp29 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V37 tmp30 [V37,T02] ( 8, 25 ) int -> [sp+0x4C] "Inline stloc first use temp"
+; V37 tmp30 [V37,T02] ( 8, 25.50) int -> [sp+0x44] "Inline stloc first use temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V39 tmp32 [V39,T17] ( 3, 12 ) int -> r0 "Inline stloc first use temp"
;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V41 tmp34 [V41,T05] ( 3, 24 ) int -> [sp+0x48] spill-single-def "Inlining Arg"
-; V42 tmp35 [V42,T11] ( 2, 16 ) byref -> [sp+0x1C] spill-single-def "Inlining Arg"
+; V41 tmp34 [V41,T05] ( 3, 24 ) int -> [sp+0x40] spill-single-def "Inlining Arg"
+; V42 tmp35 [V42,T11] ( 2, 16 ) byref -> [sp+0x18] spill-single-def "Inlining Arg"
; V43 tmp36 [V43,T15] ( 7, 14 ) int -> r7 "Inlining Arg"
-; V44 tmp37 [V44,T57] ( 2, 2 ) int -> [sp+0x44] spill-single-def "impAppendStmt"
+; V44 tmp37 [V44,T49] ( 2, 3 ) int -> r8 "impAppendStmt"
; V45 tmp38 [V45,T09] ( 4, 18 ) ref -> r9 class-hnd single-def "impAppendStmt" <System.IO.Stream>
;* V46 tmp39 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V47 tmp40 [V47,T30] ( 5, 5 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
@@ -61,20 +61,20 @@
;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V52 tmp45 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V53 tmp46 [V53,T03] ( 8, 25 ) int -> [sp+0x40] "Inline stloc first use temp"
+; V53 tmp46 [V53,T03] ( 8, 25.50) int -> [sp+0x3C] "Inline stloc first use temp"
;* V54 tmp47 [V54 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V55 tmp48 [V55,T18] ( 3, 12 ) int -> r0 "Inline stloc first use temp"
;* V56 tmp49 [V56 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V57 tmp50 [V57,T06] ( 3, 24 ) int -> [sp+0x3C] spill-single-def "Inlining Arg"
-; V58 tmp51 [V58,T12] ( 2, 16 ) byref -> [sp+0x18] spill-single-def "Inlining Arg"
+; V57 tmp50 [V57,T06] ( 3, 24 ) int -> [sp+0x38] spill-single-def "Inlining Arg"
+; V58 tmp51 [V58,T12] ( 2, 16 ) byref -> [sp+0x14] spill-single-def "Inlining Arg"
;* V59 tmp52 [V59 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp53 [V60 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
; V61 tmp54 [V61,T61] ( 2, 1 ) byref -> r9 "field V17._reference (fldOffset=0x0)" P-INDEP
-; V62 tmp55 [V62,T58] ( 3, 1.50) int -> [sp+0x38] spill-single-def "field V17._length (fldOffset=0x4)" P-INDEP
+; V62 tmp55 [V62,T58] ( 3, 1.50) int -> [sp+0x34] spill-single-def "field V17._length (fldOffset=0x4)" P-INDEP
;* V63 tmp56 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
; V65 tmp58 [V65,T32] ( 2, 4.50) byref -> r9 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-; V66 tmp59 [V66,T19] ( 4, 9 ) int -> [sp+0x34] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
+; V66 tmp59 [V66,T19] ( 4, 9 ) int -> [sp+0x30] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V69 tmp62 [V69,T22] ( 2, 8 ) byref -> r1 "field V24._reference (fldOffset=0x0)" P-INDEP
@@ -82,56 +82,56 @@
;* V71 tmp64 [V71 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
; V73 tmp66 [V73,T62] ( 2, 1 ) byref -> r9 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V74 tmp67 [V74,T59] ( 3, 1.50) int -> [sp+0x30] spill-single-def "field V33._length (fldOffset=0x4)" P-INDEP
+; V74 tmp67 [V74,T59] ( 3, 1.50) int -> [sp+0x2C] spill-single-def "field V33._length (fldOffset=0x4)" P-INDEP
;* V75 tmp68 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp69 [V76 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP
; V77 tmp70 [V77,T33] ( 2, 4.50) byref -> r9 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp71 [V78,T20] ( 4, 9 ) int -> [sp+0x2C] spill-single-def "field V36._length (fldOffset=0x4)" P-INDEP
+; V78 tmp71 [V78,T20] ( 4, 9 ) int -> [sp+0x28] spill-single-def "field V36._length (fldOffset=0x4)" P-INDEP
;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp73 [V80 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
; V81 tmp74 [V81,T23] ( 2, 8 ) byref -> r1 "field V40._reference (fldOffset=0x0)" P-INDEP
; V82 tmp75 [V82,T26] ( 2, 8 ) int -> r2 "field V40._length (fldOffset=0x4)" P-INDEP
;* V83 tmp76 [V83 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp77 [V84 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP
-; V85 tmp78 [V85,T63] ( 2, 1 ) byref -> [sp+0x14] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp79 [V86,T60] ( 3, 1.50) int -> [sp+0x28] spill-single-def "field V49._length (fldOffset=0x4)" P-INDEP
+; V85 tmp78 [V85,T63] ( 2, 1 ) byref -> [sp+0x10] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp79 [V86,T60] ( 3, 1.50) int -> [sp+0x24] spill-single-def "field V49._length (fldOffset=0x4)" P-INDEP
;* V87 tmp80 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp81 [V88 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x4)" P-INDEP
-; V89 tmp82 [V89,T34] ( 2, 4.50) byref -> [sp+0x10] spill-single-def "field V52._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp83 [V90,T21] ( 4, 9 ) int -> [sp+0x24] spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+; V89 tmp82 [V89,T34] ( 2, 4.50) byref -> [sp+0x0C] spill-single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T21] ( 4, 9 ) int -> [sp+0x20] spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
;* V91 tmp84 [V91 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp85 [V92 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
; V93 tmp86 [V93,T24] ( 2, 8 ) byref -> r1 "field V56._reference (fldOffset=0x0)" P-INDEP
; V94 tmp87 [V94,T27] ( 2, 8 ) int -> r2 "field V56._length (fldOffset=0x4)" P-INDEP
; V95 tmp88 [V95,T41] ( 3, 3 ) ref -> r1 single-def "arr expr"
; V96 tmp89 [V96,T45] ( 3, 3 ) int -> r2 "index expr"
-; V97 tmp90 [V97,T54] ( 2, 2 ) ref -> r1 single-def "arr expr"
+; V97 tmp90 [V97,T57] ( 2, 2 ) ref -> r1 single-def "arr expr"
; V98 tmp91 [V98,T46] ( 3, 3 ) int -> r2 "index expr"
; V99 tmp92 [V99,T42] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
; V100 tmp93 [V100,T43] ( 3, 3 ) ref -> r2 single-def "arr expr"
; V101 tmp94 [V101,T44] ( 3, 3 ) ref -> r2 single-def "arr expr"
; V102 tmp95 [V102,T69] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V103 tmp96 [V103,T70] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V104 PSPSym [V104,T65] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
-; V105 cse0 [V105,T50] ( 4, 2 ) int -> r0 "CSE - conservative"
-; V106 cse1 [V106,T48] ( 4, 2 ) ref -> r0 "CSE - conservative"
-; V107 cse2 [V107,T51] ( 4, 2 ) int -> r3 "CSE - conservative"
-; V108 cse3 [V108,T52] ( 4, 2 ) int -> r1 "CSE - conservative"
-; V109 cse4 [V109,T53] ( 4, 2 ) int -> r0 "CSE - conservative"
-; V110 cse5 [V110,T49] ( 4, 2 ) ref -> r0 "CSE - conservative"
-; V111 cse6 [V111,T47] ( 5, 2.50) int -> lr "CSE - conservative"
-; TEMP_01 ref -> [r11-0x6C]
+; V104 PSPSym [V104,T65] ( 1, 1 ) int -> [sp+0x50] do-not-enreg[V] "PSPSym"
+; V105 cse0 [V105,T53] ( 4, 2 ) int -> r0 "CSE - conservative"
+; V106 cse1 [V106,T51] ( 4, 2 ) ref -> r0 "CSE - conservative"
+; V107 cse2 [V107,T54] ( 4, 2 ) int -> r3 "CSE - conservative"
+; V108 cse3 [V108,T55] ( 4, 2 ) int -> r1 "CSE - conservative"
+; V109 cse4 [V109,T56] ( 4, 2 ) int -> r0 "CSE - conservative"
+; V110 cse5 [V110,T52] ( 4, 2 ) ref -> r0 "CSE - conservative"
+; V111 cse6 [V111,T50] ( 5, 2.50) int -> lr "CSE - conservative"
+; TEMP_01 ref -> [r11-0x68]
;
-; Lcl frame size = 92
+; Lcl frame size = 84
G_M44481_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 92
- add r11, sp, 120
+ sub sp, 84
+ add r11, sp, 112
movs r3, 0
- str r3, [sp+0x0C] // [TEMP_01]
- add r3, sp, 128
- str r3, [sp+0x58] // [V104 PSPSym]
+ str r3, [sp+0x08] // [TEMP_01]
+ add r3, sp, 120
+ str r3, [sp+0x50] // [V104 PSPSym]
mov r4, r0
; gcrRegs +[r4]
mov r6, r1
@@ -148,11 +148,11 @@ G_M44481_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
- str r0, [sp+0x0C]
+ str r0, [sp+0x08]
add r0, r4, 32
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x0C]
+ ldr r1, [sp+0x08]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -205,7 +205,7 @@ G_M44481_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
;; size=20 bbWeight=1 PerfScore 8.00
G_M44481_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r6, r5
- bne G_M44481_IG41
+ bne G_M44481_IG40
;; size=6 bbWeight=0.50 PerfScore 1.00
G_M44481_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
@@ -225,20 +225,20 @@ G_M44481_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r4+0x28]
add r9, r3, r0
cmp r1, 0
- beq G_M44481_IG40
+ beq G_M44481_IG39
ldr r0, [r1+0x04]
cmp r0, r9
- blo G_M44481_IG42
+ blo G_M44481_IG41
ldr r0, [r1+0x04]
sub r0, r0, r9
cmp r0, r5
- blo G_M44481_IG42
+ blo G_M44481_IG41
add r0, r1, 8
; byrRegs +[r0]
add r9, r0
; byrRegs +[r9]
mov r3, r5
- str r3, [sp+0x38]
+ str r3, [sp+0x34]
ldrsb r0, [r8]
; byrRegs -[r0]
mov r0, r3
@@ -249,8 +249,8 @@ G_M44481_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [r2]
blx r2 // System.IO.Stream:ValidateReadAtLeastArguments(int,int)
; gcr arg pop 0
- ldr r3, [sp+0x38] // [V62 tmp55]
- str r3, [sp+0x34] // [V66 tmp59]
+ ldr r3, [sp+0x34] // [V62 tmp55]
+ str r3, [sp+0x30] // [V66 tmp59]
cmp r5, r3
ble SHORT G_M44481_IG09
movs r0, 0
@@ -268,16 +268,16 @@ G_M44481_IG10: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r
movs r3, 0
;; size=14 bbWeight=0.50 PerfScore 2.50
G_M44481_IG11: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ldr r2, [sp+0x34] // [V66 tmp59]
+ ldr r2, [sp+0x30] // [V66 tmp59]
cmp r3, r2
- bhi G_M44481_IG42
+ bhi G_M44481_IG41
add r1, r9, r3
; byrRegs +[r1]
- str r1, [sp+0x20] // [V26 tmp19]
+ str r1, [sp+0x1C] // [V26 tmp19]
; GC ptr vars +{V26}
- str r3, [sp+0x54] // [V21 tmp14]
+ str r3, [sp+0x4C] // [V21 tmp14]
sub lr, r2, r3
- str lr, [sp+0x50] // [V25 tmp18]
+ str lr, [sp+0x48] // [V25 tmp18]
cmp lr, 0
bge SHORT G_M44481_IG12
movs r0, 0
@@ -293,9 +293,9 @@ G_M44481_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9},
ldr r12, [r12]
blx r12 // <unknown method>
; gcr arg pop 0
- ldr r1, [sp+0x20] // [V26 tmp19]
+ ldr r1, [sp+0x1C] // [V26 tmp19]
; byrRegs +[r1]
- ldr r2, [sp+0x50] // [V25 tmp18]
...
+34 (+3.94%) : 4669.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan
1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
@@ -15,8 +15,8 @@
; V05 arg5 [V05,T16] ( 6, 5 ) ref -> r7 class-hnd single-def <System.Type>
; V06 arg6 [V06,T21] ( 3, 2.50) ref -> [sp+0x68] class-hnd single-def <System.Type[]>
; V07 arg7 [V07,T15] ( 7, 5.04) ref -> r6 class-hnd single-def <System.Object[]>
-; V08 loc0 [V08,T18] ( 5, 3.50) ubyte -> [sp+0x24]
-; V09 loc1 [V09,T19] ( 5, 3.50) ubyte -> [sp+0x20]
+; V08 loc0 [V08,T18] ( 5, 4 ) ubyte -> [sp+0x24]
+; V09 loc1 [V09,T19] ( 5, 4 ) ubyte -> [sp+0x20]
; V10 loc2 [V10,T01] ( 19, 16.68) int -> [sp+0x1C]
; V11 loc3 [V11,T09] ( 8, 8 ) ref -> [sp+0x10] class-hnd <System.Type>
; V12 loc4 [V12,T10] ( 8, 8 ) ref -> [sp+0x0C] class-hnd <System.Type>
@@ -86,7 +86,7 @@ G_M3967_IG05: ; bbWeight=0.50, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
ldr r12, [r9+0x04]
str r12, [sp+0x14] // [V22 cse1]
cmp r12, 0
- ble G_M3967_IG33
+ ble G_M3967_IG32
;; size=32 bbWeight=0.50 PerfScore 5.00
G_M3967_IG06: ; bbWeight=0.25, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
@@ -174,15 +174,15 @@ G_M3967_IG11: ; bbWeight=1.98, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefR
ldr r0, [r0+r9]
; byrRegs -[r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r2, r3, 1
- cmp r0, r2
+ add r12, r3, -1
+ cmp r0, r12
blt SHORT G_M3967_IG12
- mov r2, r7
- ; gcrRegs +[r2]
+ mov r12, r7
+ ; gcrRegs +[r12]
b SHORT G_M3967_IG15
- ;; size=24 bbWeight=1.98 PerfScore 19.80
+ ;; size=26 bbWeight=1.98 PerfScore 19.80
G_M3967_IG12: ; bbWeight=0.99, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
+ ; gcrRegs -[r12]
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
b SHORT G_M3967_IG14
@@ -201,39 +201,39 @@ G_M3967_IG14: ; bbWeight=1.98, gcVars=00000200 {V11}, gcrefRegs=01F0 {r4
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs G_M3967_IG41
- ldr r2, [sp+0x58] // [V03 arg3]
- ; byrRegs +[r2]
+ ldr r12, [sp+0x58] // [V03 arg3]
+ ; byrRegs +[r12]
lsls r0, r0, 2
- ldr r0, [r2+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r2, [r0]
- ; byrRegs -[r2]
- ldr r2, [r2+0x2C]
- ldr r2, [r2+0x1C]
- blx r2 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r2, r3
- ; gcrRegs +[r2]
+ mov r12, r3
+ ; gcrRegs +[r12]
ldr r1, [sp+0x10] // [V11 loc3]
; gcrRegs +[r1]
- ;; size=36 bbWeight=1.98 PerfScore 29.70
-G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=01F6 {r1 r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=46 bbWeight=1.98 PerfScore 29.70
+G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=11F2 {r1 r4 r5 r6 r7 r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r3]
; GC ptr vars -{V11}
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
mov r0, r1
; gcrRegs +[r0]
- str r2, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
- mov r1, r2
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r2]
+ mov r1, r12
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M3967_IG18
@@ -284,10 +284,10 @@ G_M3967_IG18: ; bbWeight=3.96, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
cmp r12, lr
bgt G_M3967_IG07
;; size=18 bbWeight=3.96 PerfScore 19.80
-G_M3967_IG19: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M3967_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4-r5 r7-r8]
- b SHORT G_M3967_IG33
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ b SHORT G_M3967_IG32
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M3967_IG20: ; bbWeight=0.04, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5 r7-r8]
cmp r6, 0
@@ -312,7 +312,7 @@ G_M3967_IG21: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
ldr r9, [r9]
; gcrRegs +[r9]
cmp r0, r9
- beq G_M3967_IG32
+ beq G_M3967_IG31
;; size=44 bbWeight=0.02 PerfScore 0.26
G_M3967_IG22: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r9]
@@ -374,7 +374,7 @@ G_M3967_IG24: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r7, 0
- beq SHORT G_M3967_IG27
+ beq SHORT G_M3967_IG26
ldr r0, [r8+0x04]
cmp lr, r0
bhs G_M3967_IG41
@@ -383,24 +383,21 @@ G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str r0, [sp+0x08] // [TEMP_03]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r1, r3, 1
- ; byrRegs -[r1]
- cmp r0, r1
+ add r12, r3, -1
+ ; byrRegs -[r12]
+ cmp r0, r12
blt SHORT G_M3967_IG26
- mov r1, r7
- ; gcrRegs +[r1]
+ mov r12, r7
+ ; gcrRegs +[r12]
str lr, [sp+0x1C] // [V10 loc2]
- b SHORT G_M3967_IG28
- ;; size=44 bbWeight=0.02 PerfScore 0.34
-G_M3967_IG26: ; bbWeight=0.01, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1]
b SHORT G_M3967_IG27
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=0.02 PerfScore 0.34
+G_M3967_IG26: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12]
ldr r0, [r8+0x04]
cmp lr, r0
bhs SHORT G_M3967_IG41
@@ -410,34 +407,36 @@ G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str lr, [sp+0x1C] // [V10 loc2]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs SHORT G_M3967_IG41
- ldr r1, [sp+0x58] // [V03 arg3]
+ ldr r12, [sp+0x58] // [V03 arg3]
lsls r0, r0, 2
- ldr r0, [r1+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r1, [r0]
- ; byrRegs -[r1]
- ldr r1, [r1+0x2C]
- ldr r1, [r1+0x1C]
- blx r1 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r1, r3
- ; gcrRegs +[r1]
- ;; size=50 bbWeight=0.02 PerfScore 0.42
-G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r12, r3
+ ; gcrRegs +[r12]
+ ;; size=64 bbWeight=0.02 PerfScore 0.42
+G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=13F0 {r4 r5 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r3]
mov r0, r9
; gcrRegs +[r0]
str r0, [sp+0x04] // [TEMP_02]
- str r1, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
+ mov r1, r12
+ ; gcrRegs +[r1]
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
@@ -447,10 +446,10 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
; gcrRegs +[r0]
ldr r2, [sp] // [TEMP_01]
blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M3967_IG29
+ bne SHORT G_M3967_IG28
ldr r3, [sp+0x68] // [V06 arg6]
; gcrRegs +[r3]
add r2, r3, 8
@@ -474,43 +473,45 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
cmp r0, 2
ldr r12, [sp+0x14] // [V22 cse1]
ldr lr, [sp+0x1C] // [V10 loc2]
- bhi SHORT G_M3967_IG32
+ bhi SHORT G_M3967_IG31
movw r9, LOW ADDRESS J_M3967_DS12
movt r9, HIGH ADDRESS J_M3967_DS12
J_M3967_DS12 LABEL DWORD
DD G_M3967_IG34
+ DD G_M3967_IG29
DD G_M3967_IG30
- DD G_M3967_IG31
ldr pc, [r9+4*r0]
- ;; size=86 bbWeight=0.02 PerfScore 0.60
...
+22 (+4.12%) : 14883.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):ubyte (FullOpts)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T26] ( 3, 1.50) byref -> [sp+0x48] single-def
-; V03 arg3 [V03,T28] ( 2, 1 ) byref -> [sp+0x4C] single-def
-; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r7 single-def
-; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r8 single-def
-; V06 loc2 [V06,T16] ( 7, 4 ) int -> r9
-; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x0C] spill-single-def
-; V08 loc4 [V08,T04] ( 10, 19.50) int -> r10
-; V09 loc5 [V09,T02] ( 19, 20.50) int -> [sp+0x08]
-; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x00] spill-single-def
-; V11 loc7 [V11,T13] ( 5, 6 ) int -> lr
+; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T22] ( 3, 2.50) byref -> [sp+0x50] single-def
+; V03 arg3 [V03,T28] ( 2, 1.50) byref -> [sp+0x54] single-def
+; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r8 single-def
+; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r9 single-def
+; V06 loc2 [V06,T16] ( 7, 4.50) int -> r10
+; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x14] spill-single-def
+; V08 loc4 [V08,T03] ( 10, 20 ) int -> [sp+0x10]
+; V09 loc5 [V09,T02] ( 19, 21 ) int -> [sp+0x0C]
+; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x04] spill-single-def
+; V11 loc7 [V11,T13] ( 5, 6.50) int -> r12
; V12 loc8 [V12,T10] ( 17, 8.50) int -> r1
-; V13 loc9 [V13,T27] ( 3, 1.50) int -> lr
-; V14 loc10 [V14,T20] ( 5, 2.50) int -> r12
-; V15 loc11 [V15,T22] ( 4, 2 ) int -> r0
+; V13 loc9 [V13,T27] ( 3, 1.50) int -> r12
+; V14 loc10 [V14,T20] ( 5, 2.50) int -> r4
+; V15 loc11 [V15,T23] ( 4, 2 ) int -> r0
;* V16 loc12 [V16 ] ( 0, 0 ) int -> zero-ref
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
@@ -31,10 +31,10 @@
;* V20 tmp3 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
-; V23 tmp6 [V23,T03] ( 6, 20 ) int -> r5 "Inline return value spill temp"
+; V23 tmp6 [V23,T04] ( 6, 20 ) int -> r6 "Inline return value spill temp"
; V24 tmp7 [V24,T00] ( 5, 40 ) byref -> r0 "Inlining Arg"
; V25 tmp8 [V25,T05] ( 5, 14 ) int -> r1 "Inline stloc first use temp"
-; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r12 "Inline stloc first use temp"
+; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r5 "Inline stloc first use temp"
; V27 tmp10 [V27,T08] ( 3, 10 ) int -> r4 "Inline stloc first use temp"
; V28 tmp11 [V28,T09] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
; V29 tmp12 [V29,T01] ( 4, 32 ) byref -> r0 "Inlining Arg"
@@ -42,296 +42,309 @@
;* V31 tmp14 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp16 [V33 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
-; V34 tmp17 [V34,T23] ( 2, 2 ) byref -> r7 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V34 tmp17 [V34,T24] ( 2, 2 ) byref -> r8 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp18 [V35 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V36 tmp19 [V36,T24] ( 2, 2 ) byref -> r8 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+; V36 tmp19 [V36,T25] ( 2, 2 ) byref -> r9 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp20 [V37 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V38 tmp21 [V38,T29] ( 2, 1 ) byref -> r2 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp21 [V38,T29] ( 2, 1 ) byref -> lr single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp22 [V39 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp24 [V41 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V42 tmp25 [V42,T19] ( 4, 3.50) int -> [sp+0x04] spill-single-def "V00.[004..008)"
-; V43 tmp26 [V43,T25] ( 2, 2 ) int -> r6 "V01.[004..008)"
+; V42 tmp25 [V42,T19] ( 4, 3.50) int -> [sp+0x08] spill-single-def "V00.[004..008)"
+; V43 tmp26 [V43,T26] ( 2, 2 ) int -> r7 "V01.[004..008)"
; V44 cse0 [V44,T21] ( 5, 2.50) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M25359_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, 20
- add r11, sp, 48
+ sub sp, 28
+ add r11, sp, 56
;; size=12 bbWeight=1 PerfScore 4.00
G_M25359_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x3C]
- str r5, [sp+0x04]
ldr r6, [sp+0x44]
- ldr r7, [sp+0x38]
- ; byrRegs +[r7]
+ str r6, [sp+0x08]
+ ldr r7, [sp+0x4C]
ldr r8, [sp+0x40]
; byrRegs +[r8]
+ ldr r9, [sp+0x48]
+ ; byrRegs +[r9]
mvn r0, 3
- and r9, r5, r0
- str r6, [sp+0x0C]
- mov r10, 0
+ and r10, r6, r0
+ str r7, [sp+0x14]
movs r3, 0
- str r3, [sp+0x08] // [V09 loc5]
- cmp r5, 0
- beq G_M25359_IG23
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- str r2, [sp] // [V10 loc6]
- ; GC ptr vars +{V10}
- asr r0, r9, 2
- movs r1, 3
- mul r0, r0, r1
- cmp r6, r0
- blt SHORT G_M25359_IG04
- sub lr, r9, 4
- b SHORT G_M25359_IG05
- ;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, gcvars, byref
- mov r0, r6
- movs r1, 3
+ str r3, [sp+0x10] // [V08 loc4]
+ movs r2, 0
+ str r2, [sp+0x0C] // [V09 loc5]
+ cmp r6, 0
+ beq G_M25359_IG25
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
movw lr, 0xd1ff
movt lr, 0xd1ff
- blx lr // CORINFO_HELP_DIV
+ str lr, [sp+0x04] // [V10 loc6]
+ ; GC ptr vars +{V10}
+ asr r0, r10, 2
+ movs r1, 3
+ mul r0, r0, r1
+ cmp r7, r0
+ blt SHORT G_M25359_IG04
+ sub r12, r10, 4
+ b SHORT G_M25359_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
+G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, gcvars, byref
+ mov r0, r7
+ movs r1, 3
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_DIV
; gcr arg pop 0
- lsl lr, r0, 2
- ldr r6, [sp+0x0C] // [V07 loc3]
+ lsl r12, r0, 2
+ ldr r7, [sp+0x14] // [V07 loc3]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- cmp lr, 0
+G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r12, 0
ble SHORT G_M25359_IG08
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- lsl r0, r10, 1
- adds r0, r7, r0
+G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r3, [sp+0x10] // [V08 loc4]
+ lsls r0, r3, 1
+ add r0, r8
; byrRegs +[r0]
ldrh r1, [r0]
- ldrh r12, [r0+0x02]
+ ldrh r5, [r0+0x02]
ldrh r4, [r0+0x04]
ldrh r0, [r0+0x06]
; byrRegs -[r0]
+ orr r6, r1, r5
+ orrs r6, r4
+ orrs r6, r0
+ mvn r7, 255
+ ands r6, r7
+ cmp r6, 0
+ beq SHORT G_M25359_IG09
+ ;; size=32 bbWeight=4 PerfScore 56.00
+G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ mov r6, -1
+ b SHORT G_M25359_IG10
+ ;; size=6 bbWeight=2 PerfScore 4.00
+G_M25359_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ ldr r3, [sp+0x10] // [V08 loc4]
+ b SHORT G_M25359_IG11
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M25359_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref
+ ldr lr, [sp+0x04] // [V10 loc6]
+ ; byrRegs +[lr]
+ ldrsb r1, [lr+r1]
+ lsls r1, r1, 18
+ ldrsb r0, [lr+r0]
+ orrs r0, r1
+ ldrsb r1, [lr+r5]
+ lsls r1, r1, 12
+ orrs r0, r1
+ ldrsb r1, [lr+r4]
+ lsls r1, r1, 6
+ orrs r1, r0
+ mov r6, r1
+ ;; size=34 bbWeight=2 PerfScore 24.00
+G_M25359_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[lr]
+ cmp r6, 0
+ blt G_M25359_IG29
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ add r0, r9, r2
+ ; byrRegs +[r0]
+ asrs r1, r6, 16
+ strb r1, [r0]
+ asrs r1, r6, 8
+ strb r1, [r0+0x01]
+ strb r6, [r0+0x02]
+ adds r2, r2, 3
+ adds r3, r3, 4
+ cmp r3, r12
+ blt SHORT G_M25359_IG18
+ ;; size=30 bbWeight=4 PerfScore 52.00
+G_M25359_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[r0]
+ sub r0, r10, 4
+ cmp r12, r0
+ bne SHORT G_M25359_IG17
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r3, r10
+ beq SHORT G_M25359_IG16
+ lsl r0, r10, 1
+ sub r1, r0, 8
+ ldrh r1, [r8+r1]
+ sub r12, r0, 6
+ ldrh r12, [r8+r12]
+ subs r4, r0, 4
+ ldrh r4, [r8+r4]
+ subs r0, r0, 2
+ ldrh r0, [r8+r0]
orr r5, r1, r12
orrs r5, r4
orrs r5, r0
mvn r6, 255
ands r5, r6
cmp r5, 0
- beq SHORT G_M25359_IG09
- ;; size=34 bbWeight=4 PerfScore 52.00
-G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
...
+8 (+4.94%) : 789.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x24]
cmp r4, 0
beq SHORT G_M3988_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M3988_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M3988_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,43 +103,42 @@ G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M3988_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=20 bbWeight=0.50 PerfScore 3.50
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
G_M3988_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 162, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 162 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
+; Total bytes of code 170, prolog size 24, PerfScore 85.40, instruction count 60, allocated bytes for code 170 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +150,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +162,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
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.75) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 7.25) 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
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
beq G_M43427_IG24
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ;; 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
;; 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_IG25
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M43427_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M43427_IG15
;; 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
@@ -148,9 +148,11 @@ G_M43427_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
cmp r0, 0
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
+G_M43427_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
bge SHORT G_M43427_IG18
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrh r2, [lr]
cmp r2, 128
bge SHORT G_M43427_IG22
@@ -159,24 +161,20 @@ G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldrb r0, [lr+r2]
cmp r0, 0
bne SHORT G_M43427_IG22
- ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
+G_M43427_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG14: ; 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_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43427_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_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
@@ -188,14 +186,14 @@ G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
- bls SHORT G_M43427_IG12
+ bls SHORT G_M43427_IG13
ldrh r0, [lr-0x02]
cmp r0, 128
bge SHORT G_M43427_IG22
- b SHORT G_M43427_IG12
+ b SHORT G_M43427_IG13
;; size=14 bbWeight=0.50 PerfScore 3.00
G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M43427_IG19
ldrh r0, [r2]
cmp r0, 128
@@ -210,8 +208,8 @@ G_M43427_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
cmp r5, 0
beq SHORT G_M43427_IG20
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M43427_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -221,26 +219,26 @@ G_M43427_IG21: ; bbWeight=0.50, epilog, nogc, extend
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_IG22: ; 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_IG23: ; bbWeight=1, 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
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M43427_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
movw r0, 0xd1ff
@@ -264,11 +262,10 @@ G_M43427_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
b SHORT G_M43427_IG07
- ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 22, PerfScore 156.75, instruction count 144, allocated bytes for code 388 (MethodHash=f382565c) for method System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 382, prolog size 24, PerfScore 164.25, instruction count 141, allocated bytes for code 382 (MethodHash=f382565c) for method System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -280,7 +277,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 194 (0x000c2) Actual length = 388 (0x000184)
+ Function Length : 191 (0x000bf) Actual length = 382 (0x00017e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-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.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,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
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
beq G_M3596_IG24
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ;; 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
;; 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_IG25
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M3596_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M3596_IG15
;; 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]
@@ -144,9 +144,11 @@ G_M3596_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
cmp r0, 0
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
+G_M3596_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
bge SHORT G_M3596_IG18
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrh r2, [lr]
cmp r2, 128
bge SHORT G_M3596_IG22
@@ -155,28 +157,24 @@ G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
ldrb r0, [lr+r2]
cmp r0, 0
bne SHORT G_M3596_IG22
- ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
+G_M3596_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M3596_IG14: ; 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_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3596_IG15: ; 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
+ lsls r0, r7, 1
adds r0, r3, r0
subs r0, r0, 2
cmp r0, r2
@@ -186,18 +184,18 @@ G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
bge SHORT G_M3596_IG22
;; 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
+ lsl r0, r8, 1
adds r0, r1, r0
subs r0, r0, 2
cmp r0, lr
- bls SHORT G_M3596_IG12
+ bls SHORT G_M3596_IG13
ldrh r0, [lr+0x02]
cmp r0, 128
bge SHORT G_M3596_IG22
- b SHORT G_M3596_IG12
- ;; size=20 bbWeight=0.50 PerfScore 4.50
+ b SHORT G_M3596_IG13
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M3596_IG19
ldrh r0, [r2]
cmp r0, 128
@@ -212,8 +210,8 @@ G_M3596_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[r4]
cmp r5, 0
beq SHORT G_M3596_IG20
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M3596_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -223,26 +221,26 @@ G_M3596_IG21: ; bbWeight=0.50, epilog, nogc, extend
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_IG22: ; 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_M3596_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M3596_IG23: ; bbWeight=1, 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
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M3596_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
movw r0, 0xd1ff
@@ -266,11 +264,10 @@ G_M3596_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
b SHORT G_M3596_IG07
- ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 386, prolog size 22, PerfScore 156.50, instruction count 146, allocated bytes for code 386 (MethodHash=795ef1f3) for method System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 382, prolog size 24, PerfScore 164.00, instruction count 143, allocated bytes for code 382 (MethodHash=795ef1f3) for method System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -282,7 +279,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 193 (0x000c1) Actual length = 386 (0x000182)
+ Function Length : 191 (0x000bf) Actual length = 382 (0x00017e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-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.75) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 7.25) 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
+ ldr r7, [sp+0x40]
+ ldr r8, [sp+0x48]
+ cmp r8, 0
beq G_M23311_IG30
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ;; 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
;; 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_IG31
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M23311_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M23311_IG16
;; 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,15 +113,15 @@ 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]
@@ -150,9 +150,11 @@ G_M23311_IG11: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr
cmp r0, 0
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
+G_M23311_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
bge SHORT G_M23311_IG24
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M23311_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrh r0, [r10]
cmp r0, 128
bge SHORT G_M23311_IG28
@@ -161,24 +163,20 @@ G_M23311_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldrb r0, [r2+r0]
cmp r0, 0
bne SHORT G_M23311_IG28
- ;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M23311_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
+G_M23311_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M23311_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M23311_IG15: ; 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_M23311_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M23311_IG16: ; 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
@@ -210,14 +208,14 @@ G_M23311_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
;; size=12 bbWeight=0.50 PerfScore 2.50
G_M23311_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r10, r1
- bls SHORT G_M23311_IG13
+ bls SHORT G_M23311_IG14
ldrh r0, [r10-0x02]
cmp r0, 128
bge SHORT G_M23311_IG28
- b SHORT G_M23311_IG13
+ b SHORT G_M23311_IG14
;; size=14 bbWeight=0.50 PerfScore 3.00
G_M23311_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M23311_IG25
ldrh r0, [r9]
cmp r0, 128
@@ -232,8 +230,8 @@ G_M23311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
cmp r5, 0
beq SHORT G_M23311_IG26
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M23311_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -243,26 +241,26 @@ G_M23311_IG27: ; bbWeight=0.50, epilog, nogc, extend
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M23311_IG28: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M23311_IG28: ; 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_M23311_IG29: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M23311_IG29: ; bbWeight=1, 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
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M23311_IG30: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
movw r0, 0xd1ff
@@ -286,11 +284,10 @@ G_M23311_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3]
b SHORT G_M23311_IG07
- ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 418, prolog size 22, PerfScore 360.75, instruction count 154, allocated bytes for code 418 (MethodHash=23ada4f0) for method System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 414, prolog size 24, PerfScore 368.25, instruction count 151, allocated bytes for code 414 (MethodHash=23ada4f0) for method System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -302,7 +299,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 209 (0x000d1) Actual length = 418 (0x0001a2)
+ Function Length : 207 (0x000cf) Actual length = 414 (0x00019e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+34 (+3.94%) : 24027.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan
1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
@@ -15,8 +15,8 @@
; V05 arg5 [V05,T16] ( 6, 5 ) ref -> r7 class-hnd single-def <System.Type>
; V06 arg6 [V06,T21] ( 3, 2.50) ref -> [sp+0x68] class-hnd single-def <System.Type[]>
; V07 arg7 [V07,T15] ( 7, 5.04) ref -> r6 class-hnd single-def <System.Object[]>
-; V08 loc0 [V08,T18] ( 5, 3.50) ubyte -> [sp+0x24]
-; V09 loc1 [V09,T19] ( 5, 3.50) ubyte -> [sp+0x20]
+; V08 loc0 [V08,T18] ( 5, 4 ) ubyte -> [sp+0x24]
+; V09 loc1 [V09,T19] ( 5, 4 ) ubyte -> [sp+0x20]
; V10 loc2 [V10,T01] ( 19, 16.68) int -> [sp+0x1C]
; V11 loc3 [V11,T09] ( 8, 8 ) ref -> [sp+0x10] class-hnd <System.Type>
; V12 loc4 [V12,T10] ( 8, 8 ) ref -> [sp+0x0C] class-hnd <System.Type>
@@ -86,7 +86,7 @@ G_M3967_IG05: ; bbWeight=0.50, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
ldr r12, [r9+0x04]
str r12, [sp+0x14] // [V22 cse1]
cmp r12, 0
- ble G_M3967_IG33
+ ble G_M3967_IG32
;; size=32 bbWeight=0.50 PerfScore 5.00
G_M3967_IG06: ; bbWeight=0.25, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
@@ -174,15 +174,15 @@ G_M3967_IG11: ; bbWeight=1.98, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefR
ldr r0, [r0+r9]
; byrRegs -[r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r2, r3, 1
- cmp r0, r2
+ add r12, r3, -1
+ cmp r0, r12
blt SHORT G_M3967_IG12
- mov r2, r7
- ; gcrRegs +[r2]
+ mov r12, r7
+ ; gcrRegs +[r12]
b SHORT G_M3967_IG15
- ;; size=24 bbWeight=1.98 PerfScore 19.80
+ ;; size=26 bbWeight=1.98 PerfScore 19.80
G_M3967_IG12: ; bbWeight=0.99, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
+ ; gcrRegs -[r12]
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
b SHORT G_M3967_IG14
@@ -201,39 +201,39 @@ G_M3967_IG14: ; bbWeight=1.98, gcVars=00000200 {V11}, gcrefRegs=01F0 {r4
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs G_M3967_IG41
- ldr r2, [sp+0x58] // [V03 arg3]
- ; byrRegs +[r2]
+ ldr r12, [sp+0x58] // [V03 arg3]
+ ; byrRegs +[r12]
lsls r0, r0, 2
- ldr r0, [r2+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r2, [r0]
- ; byrRegs -[r2]
- ldr r2, [r2+0x2C]
- ldr r2, [r2+0x1C]
- blx r2 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r2, r3
- ; gcrRegs +[r2]
+ mov r12, r3
+ ; gcrRegs +[r12]
ldr r1, [sp+0x10] // [V11 loc3]
; gcrRegs +[r1]
- ;; size=36 bbWeight=1.98 PerfScore 29.70
-G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=01F6 {r1 r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=46 bbWeight=1.98 PerfScore 29.70
+G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=11F2 {r1 r4 r5 r6 r7 r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r3]
; GC ptr vars -{V11}
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
mov r0, r1
; gcrRegs +[r0]
- str r2, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
- mov r1, r2
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r2]
+ mov r1, r12
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M3967_IG18
@@ -284,10 +284,10 @@ G_M3967_IG18: ; bbWeight=3.96, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
cmp r12, lr
bgt G_M3967_IG07
;; size=18 bbWeight=3.96 PerfScore 19.80
-G_M3967_IG19: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M3967_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4-r5 r7-r8]
- b SHORT G_M3967_IG33
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ b SHORT G_M3967_IG32
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M3967_IG20: ; bbWeight=0.04, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5 r7-r8]
cmp r6, 0
@@ -312,7 +312,7 @@ G_M3967_IG21: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
ldr r9, [r9]
; gcrRegs +[r9]
cmp r0, r9
- beq G_M3967_IG32
+ beq G_M3967_IG31
;; size=44 bbWeight=0.02 PerfScore 0.26
G_M3967_IG22: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r9]
@@ -374,7 +374,7 @@ G_M3967_IG24: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r7, 0
- beq SHORT G_M3967_IG27
+ beq SHORT G_M3967_IG26
ldr r0, [r8+0x04]
cmp lr, r0
bhs G_M3967_IG41
@@ -383,24 +383,21 @@ G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str r0, [sp+0x08] // [TEMP_03]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r1, r3, 1
- ; byrRegs -[r1]
- cmp r0, r1
+ add r12, r3, -1
+ ; byrRegs -[r12]
+ cmp r0, r12
blt SHORT G_M3967_IG26
- mov r1, r7
- ; gcrRegs +[r1]
+ mov r12, r7
+ ; gcrRegs +[r12]
str lr, [sp+0x1C] // [V10 loc2]
- b SHORT G_M3967_IG28
- ;; size=44 bbWeight=0.02 PerfScore 0.34
-G_M3967_IG26: ; bbWeight=0.01, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1]
b SHORT G_M3967_IG27
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=0.02 PerfScore 0.34
+G_M3967_IG26: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12]
ldr r0, [r8+0x04]
cmp lr, r0
bhs SHORT G_M3967_IG41
@@ -410,34 +407,36 @@ G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str lr, [sp+0x1C] // [V10 loc2]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs SHORT G_M3967_IG41
- ldr r1, [sp+0x58] // [V03 arg3]
+ ldr r12, [sp+0x58] // [V03 arg3]
lsls r0, r0, 2
- ldr r0, [r1+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r1, [r0]
- ; byrRegs -[r1]
- ldr r1, [r1+0x2C]
- ldr r1, [r1+0x1C]
- blx r1 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r1, r3
- ; gcrRegs +[r1]
- ;; size=50 bbWeight=0.02 PerfScore 0.42
-G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r12, r3
+ ; gcrRegs +[r12]
+ ;; size=64 bbWeight=0.02 PerfScore 0.42
+G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=13F0 {r4 r5 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r3]
mov r0, r9
; gcrRegs +[r0]
str r0, [sp+0x04] // [TEMP_02]
- str r1, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
+ mov r1, r12
+ ; gcrRegs +[r1]
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
@@ -447,10 +446,10 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
; gcrRegs +[r0]
ldr r2, [sp] // [TEMP_01]
blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M3967_IG29
+ bne SHORT G_M3967_IG28
ldr r3, [sp+0x68] // [V06 arg6]
; gcrRegs +[r3]
add r2, r3, 8
@@ -474,43 +473,45 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
cmp r0, 2
ldr r12, [sp+0x14] // [V22 cse1]
ldr lr, [sp+0x1C] // [V10 loc2]
- bhi SHORT G_M3967_IG32
+ bhi SHORT G_M3967_IG31
movw r9, LOW ADDRESS J_M3967_DS12
movt r9, HIGH ADDRESS J_M3967_DS12
J_M3967_DS12 LABEL DWORD
DD G_M3967_IG34
+ DD G_M3967_IG29
DD G_M3967_IG30
- DD G_M3967_IG31
ldr pc, [r9+4*r0]
- ;; size=86 bbWeight=0.02 PerfScore 0.60
...
+8 (+4.94%) : 2421.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x24]
cmp r4, 0
beq SHORT G_M3988_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M3988_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M3988_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,43 +103,42 @@ G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M3988_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=20 bbWeight=0.50 PerfScore 3.50
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
G_M3988_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 162, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 162 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 170, prolog size 24, PerfScore 85.40, instruction count 60, allocated bytes for code 170 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +150,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +162,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
+16 (+9.88%) : 4225.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -15,15 +15,15 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> r3 class-hnd single-def "impAppendStmt" <int[]>
-; V06 tmp2 [V06,T12] ( 2, 2 ) int -> r7 "Inline return value spill temp"
-; V07 tmp3 [V07,T05] ( 4, 18 ) byref -> r3 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T04] ( 3, 20 ) int -> lr "Inlining Arg"
-; V09 tmp5 [V09,T03] ( 4, 25 ) int -> r12 "Inline stloc first use temp"
-; V10 tmp6 [V10,T00] ( 5, 33 ) int -> r4 "Inline stloc first use temp"
-; V11 tmp7 [V11,T02] ( 5, 29 ) byref -> r5 "Inline stloc first use temp"
-; V12 tmp8 [V12,T01] ( 5, 33 ) int -> r6 "Inline stloc first use temp"
-; V13 tmp9 [V13,T06] ( 2, 16 ) int -> r7 "Inline stloc first use temp"
-; V14 tmp10 [V14,T08] ( 3, 9 ) int -> r7 "Inline stloc first use temp"
+; V06 tmp2 [V06,T12] ( 2, 2 ) int -> r12 "Inline return value spill temp"
+; V07 tmp3 [V07,T05] ( 4, 18 ) byref -> r5 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T04] ( 3, 20 ) int -> r4 "Inlining Arg"
+; V09 tmp5 [V09,T03] ( 4, 25 ) int -> r6 "Inline stloc first use temp"
+; V10 tmp6 [V10,T00] ( 5, 33 ) int -> r7 "Inline stloc first use temp"
+; V11 tmp7 [V11,T02] ( 5, 29 ) byref -> r3 "Inline stloc first use temp"
+; V12 tmp8 [V12,T01] ( 5, 33 ) int -> lr "Inline stloc first use temp"
+; V13 tmp9 [V13,T06] ( 2, 16 ) int -> r12 "Inline stloc first use temp"
+; V14 tmp10 [V14,T08] ( 3, 9 ) int -> r12 "Inline stloc first use temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
@@ -40,76 +40,74 @@ G_M35959_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, by
movt r3, 0xd1ff
ldr r3, [r3]
; gcrRegs +[r3]
- ldr lr, [r2]
- adds r3, 8
+ ldr r4, [r2]
+ add r5, r3, 8
+ ; byrRegs +[r5]
+ ror r3, r4, 16
; gcrRegs -[r3]
- ; byrRegs +[r3]
- ror r12, lr, 16
- eor r12, r12, r1
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- mul r12, r12, r4
- ldr r4, [r3]
- and r4, r4, 31
- lsr r12, r12, r4
- movs r4, 0
+ eors r3, r1
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ mul r3, r3, lr
+ ldr lr, [r5]
+ and lr, lr, 31
+ lsr r6, r3, lr
+ movs r7, 0
;; size=48 bbWeight=1 PerfScore 14.00
-G_M35959_IG03: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz
- add r5, r12, 1
- movs r6, 12
- mul r5, r5, r6
- adds r5, r3, r5
- ; byrRegs +[r5]
- ldr r6, [r5]
+G_M35959_IG03: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz
+ adds r3, r6, 1
+ mov lr, 12
+ mul r3, r3, lr
+ adds r3, r5, r3
+ ; byrRegs +[r3]
+ ldr lr, [r3]
dmb 15
- ldr r7, [r5+0x04]
+ ldr r12, [r3+0x04]
mvn r8, 1
- and r6, r6, r8
- cmp r7, lr
+ and lr, lr, r8
+ cmp r12, r4
bne SHORT G_M35959_IG05
- ;; size=32 bbWeight=8 PerfScore 88.00
+ ;; size=36 bbWeight=8 PerfScore 88.00
G_M35959_IG04: ; bbWeight=4, gcrefRegs=0004 {r2}, byrefRegs=0029 {r0 r3 r5}, byref, isz
- ldr r7, [r5+0x08]
- eors r7, r1
- cmp r7, 1
- bls SHORT G_M35959_IG07
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M35959_IG05: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz
- ; byrRegs -[r5]
- cmp r6, 0
- beq SHORT G_M35959_IG09
- adds r4, r4, 1
- add r12, r4
- ldr r7, [r3+0x04]
- and r12, r12, r7
- cmp r4, 8
- blt SHORT G_M35959_IG03
- ;; size=18 bbWeight=8 PerfScore 64.00
-G_M35959_IG06: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr r12, [r3+0x08]
+ eor r12, r12, r1
+ cmp r12, 1
+ bls SHORT G_M35959_IG06
+ ;; size=14 bbWeight=4 PerfScore 16.00
+G_M35959_IG05: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz
; byrRegs -[r3]
- b SHORT G_M35959_IG09
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M35959_IG07: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz
- ; byrRegs +[r5]
+ cmp lr, 0
+ beq SHORT G_M35959_IG08
+ adds r7, r7, 1
+ add r12, r6, r7
+ ldr r3, [r5+0x04]
+ and r6, r12, r3
+ cmp r7, 8
+ bge SHORT G_M35959_IG08
+ b SHORT G_M35959_IG03
+ ;; size=24 bbWeight=8 PerfScore 72.00
+G_M35959_IG06: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz
+ ; byrRegs -[r5] +[r3]
dmb 15
- ldr r3, [r5]
- cmp r6, r3
- bne SHORT G_M35959_IG09
- cmp r7, 1
- bne SHORT G_M35959_IG09
+ ldr r3, [r3]
+ ; byrRegs -[r3]
+ cmp lr, r3
+ bne SHORT G_M35959_IG08
+ cmp r12, 1
+ bne SHORT G_M35959_IG08
mov r1, r2
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // <unknown method>
; gcrRegs -[r1-r2]
- ; byrRegs -[r0 r5]
+ ; byrRegs -[r0]
; gcr arg pop 0
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M35959_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=28 bbWeight=1 PerfScore 10.00
+G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M35959_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, gcvars, byref
+G_M35959_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, gcvars, byref
; gcrRegs +[r2]
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -120,11 +118,11 @@ G_M35959_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byr
; byrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M35959_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 162, prolog size 8, PerfScore 196.00, instruction count 56, allocated bytes for code 162 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 178, prolog size 8, PerfScore 203.00, instruction count 56, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================
Unwind Info:
@@ -136,7 +134,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 89 (0x00059) Actual length = 178 (0x0000b2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm.checked.mch
-12 (-2.13%) : 63889.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (Tier0-FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 27.50) int -> r5 single-def
-; V01 arg1 [V01,T13] ( 8, 7 ) int -> r7
-; V02 arg2 [V02,T03] ( 10, 28 ) byref -> r4 single-def
+; V01 arg1 [V01,T11] ( 8, 9 ) int -> r7
+; V02 arg2 [V02,T03] ( 10, 30 ) byref -> r4 single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> r6 single-def
; V04 loc0 [V04,T05] ( 8, 26 ) int -> r8
; V05 loc1 [V05,T08] ( 9, 14 ) int -> registers
; V06 loc2 [V06,T15] ( 4, 5.50) ubyte -> r10
; V07 loc3 [V07,T16] ( 3, 5 ) ubyte -> [sp+0x1C]
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [sp+0x18]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [sp+0x18]
; V09 loc5 [V09,T10] ( 5, 13.50) ubyte -> [sp+0x14]
; V10 loc6 [V10,T17] ( 3, 5 ) int -> [sp+0x10]
-; V11 loc7 [V11 ] ( 19, 81.50) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 19, 85.50) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T20] ( 3, 1.50) int -> r0
; V13 loc9 [V13,T09] ( 7, 14 ) ushort -> r2
; V14 OutArgs [V14 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -40,8 +40,8 @@
; V29 tmp15 [V29,T18] ( 2, 4 ) byref -> [sp+0x08] spill-single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp16 [V30 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V31 cse0 [V31,T01] ( 3, 48 ) int -> r0 "CSE - aggressive"
-; V32 cse1 [V32,T11] ( 5, 10 ) int -> r2 multi-def "CSE - moderate"
-; V33 cse2 [V33,T12] ( 5, 10 ) int -> r0 multi-def "CSE - moderate"
+; V32 cse1 [V32,T12] ( 5, 10 ) int -> r2 multi-def "CSE - moderate"
+; V33 cse2 [V33,T13] ( 5, 10 ) int -> r0 multi-def "CSE - moderate"
;
; Lcl frame size = 36
@@ -74,12 +74,12 @@ G_M7969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, by
adds r2, r7, 1
ldr r0, [r4]
cmp r2, r0
- bge G_M7969_IG33
+ bge G_M7969_IG34
lsls r2, r7, 1
adds r2, r5, r2
ldrh r2, [r2+0x02]
cmp r2, 58
- bne G_M7969_IG33
+ bne G_M7969_IG34
;; size=22 bbWeight=0.50 PerfScore 4.50
G_M7969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
str r7, [sp+0x0C] // [V11 loc7]
@@ -106,7 +106,7 @@ G_M7969_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; GC ptr vars +{V29}
mov r1, 256
cmp lr, r1
- bhs G_M7969_IG35
+ bhs G_M7969_IG36
ldr r1, [sp+0x08] // [V29 tmp15]
; byrRegs +[r1]
ldrb r1, [r1+lr]
@@ -118,9 +118,8 @@ G_M7969_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
G_M7969_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; GC ptr vars -{V29}
str r12, [sp+0x18] // [V08 loc4]
- str r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG25
- ;; size=8 bbWeight=0.25 PerfScore 0.75
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
G_M7969_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
lsls r0, r0, 1
@@ -133,11 +132,12 @@ G_M7969_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
add r9, r9, 1
movs r3, 0
str r3, [sp+0x14] // [V09 loc5]
+ ldr r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG24
- ;; size=10 bbWeight=2 PerfScore 8.00
+ ;; size=12 bbWeight=2 PerfScore 10.00
G_M7969_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r9, 4
- bgt G_M7969_IG33
+ bgt G_M7969_IG34
cmp r9, 0
beq SHORT G_M7969_IG11
add r8, r8, 1
@@ -152,11 +152,11 @@ G_M7969_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r2, 37
beq SHORT G_M7969_IG14
cmp r2, 46
- bne G_M7969_IG33
+ bne G_M7969_IG34
ldr lr, [sp+0x1C] // [V07 loc3]
cmp lr, 0
str r3, [sp+0x14] // [V09 loc5]
- bne G_M7969_IG33
+ bne G_M7969_IG34
ldr r2, [r4]
str r2, [sp+0x0C] // [V11 loc7]
movs r2, 0
@@ -171,7 +171,7 @@ G_M7969_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
blx lr // <unknown method>
; gcr arg pop 0
cmp r0, 0
- beq G_M7969_IG33
+ beq G_M7969_IG34
b SHORT G_M7969_IG22
;; size=66 bbWeight=2 PerfScore 50.00
G_M7969_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
@@ -182,10 +182,10 @@ G_M7969_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r2, 93
beq SHORT G_M7969_IG16
;; size=12 bbWeight=2 PerfScore 12.00
-G_M7969_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M7969_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4]
- b SHORT G_M7969_IG33
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ b SHORT G_M7969_IG34
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs +[r4]
ldr r0, [sp+0x0C] // [V11 loc7]
@@ -193,7 +193,7 @@ G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
str r0, [sp+0x0C] // [V11 loc7]
ldr r2, [r4]
cmp r0, r2
- beq SHORT G_M7969_IG33
+ beq SHORT G_M7969_IG34
ldr r0, [sp+0x0C] // [V11 loc7]
lsls r0, r0, 1
ldrh r0, [r5+r0]
@@ -205,13 +205,12 @@ G_M7969_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
G_M7969_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
b SHORT G_M7969_IG19
;; size=2 bbWeight=2 PerfScore 2.00
-G_M7969_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r7, [sp+0x0C] // [V11 loc7]
ldr r0, [r4]
str r0, [sp+0x0C] // [V11 loc7]
- str r3, [sp+0x14] // [V09 loc5]
b SHORT G_M7969_IG24
- ;; size=10 bbWeight=2 PerfScore 10.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M7969_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r3, [sp+0x0C] // [V11 loc7]
cmp r3, 0
@@ -221,7 +220,7 @@ G_M7969_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
cmp r0, 58
bne SHORT G_M7969_IG18
cmp r10, 0
- bne SHORT G_M7969_IG33
+ bne SHORT G_M7969_IG34
mov r10, 1
movs r3, 0
mov r9, r3
@@ -246,7 +245,7 @@ G_M7969_IG21: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
uxtb r0, r6
orrs r0, r12, r0
cmp r0, 0
- bne SHORT G_M7969_IG33
+ bne SHORT G_M7969_IG34
mov r12, 1
mov r9, r12
str r9, [sp+0x18] // [V08 loc4]
@@ -263,80 +262,80 @@ G_M7969_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
;; size=22 bbWeight=2 PerfScore 14.00
G_M7969_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movs r0, 0
- str r9, [sp+0x14] // [V09 loc5]
+ mov r3, r9
mov r9, r0
- ;; size=8 bbWeight=2 PerfScore 6.00
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M7969_IG24: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
adds r0, r0, 1
str r0, [sp+0x0C] // [V11 loc7]
ldr r0, [sp+0x0C] // [V11 loc7]
- ldr r3, [r4]
- cmp r0, r3
- blt SHORT G_M7969_IG29
+ ldr r2, [r4]
+ cmp r0, r2
+ blt SHORT G_M7969_IG30
;; size=14 bbWeight=4 PerfScore 28.00
-G_M7969_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r12, [sp+0x18] // [V08 loc4]
cmp r12, 0
- beq SHORT G_M7969_IG26
+ beq SHORT G_M7969_IG27
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M7969_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
sub r0, r9, 1
cmp r0, 1
- bhi SHORT G_M7969_IG33
- ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M7969_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ bhi SHORT G_M7969_IG34
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M7969_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r12, 0
- bne SHORT G_M7969_IG27
+ bne SHORT G_M7969_IG28
movs r0, 0
- b SHORT G_M7969_IG28
+ b SHORT G_M7969_IG29
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M7969_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M7969_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7969_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M7969_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
adds r0, 8
- ldr lr, [sp+0x14] // [V09 loc5]
- cmp lr, 0
- bne SHORT G_M7969_IG33
+ cmp r3, 0
+ bne SHORT G_M7969_IG34
cmp r9, 4
- bgt SHORT G_M7969_IG33
+ bgt SHORT G_M7969_IG34
cmp r10, 0
- bne SHORT G_M7969_IG30
+ bne SHORT G_M7969_IG31
cmp r8, r0
- bne SHORT G_M7969_IG33
- b SHORT G_M7969_IG31
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M7969_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ldr r3, [sp+0x14] // [V09 loc5]
+ bne SHORT G_M7969_IG34
+ b SHORT G_M7969_IG32
+ ;; size=24 bbWeight=0.50 PerfScore 5.00
+G_M7969_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r12, [sp+0x18] // [V08 loc4]
b SHORT G_M7969_IG05
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M7969_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- cmp r8, r0
- bge SHORT G_M7969_IG33
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=2 PerfScore 4.00
G_M7969_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ cmp r8, r0
+ bge SHORT G_M7969_IG34
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M7969_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x0C] // [V11 loc7]
ldr r3, [r4]
...
-4 (-2.00%) : 9642.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier0-FullOpts)
@@ -7,15 +7,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> lr single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> r4 single-def
-; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x38] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
-; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x40] single-def
-; V05 arg5 [V05,T10] ( 2, 1 ) byref -> [sp+0x44] single-def
-; V06 arg6 [V06,T11] ( 2, 1 ) byref -> [sp+0x48] single-def
+; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T05] ( 3, 3 ) int -> lr single-def
+; V02 arg2 [V02,T06] ( 3, 3 ) int -> r4 single-def
+; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x40] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
+; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x48] single-def
+; V05 arg5 [V05,T10] ( 2, 1.50) byref -> r5 single-def
+; V06 arg6 [V06,T11] ( 2, 1.50) byref -> r6 single-def
; V07 loc0 [V07 ] ( 8, 15.50) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V08 loc1 [V08 ] ( 2, 1.50) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc1 [V08 ] ( 2, 2 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc2 [V09 ] ( 0, 0 ) ubyte -> zero-ref
;* V10 loc3 [V10 ] ( 0, 0 ) long -> zero-ref
; V11 loc4 [V11,T00] ( 6, 20.50) int -> r2
@@ -23,36 +23,40 @@
; V13 tmp1 [V13,T09] ( 3, 1.50) int -> r0
; V14 tmp2 [V14 ] ( 3, 5.50) byref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
; V15 tmp3 [V15 ] ( 6, 11 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP
-; V16 rat0 [V16,T01] ( 5, 13 ) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V17 rat1 [V17,T02] ( 4, 9 ) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T06] ( 3, 3 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V16 rat0 [V16,T01] ( 5, 13.50) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
+; V17 rat1 [V17,T02] ( 4, 9.50) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat2 [V18,T07] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
; V19 rat3 [V19,T08] ( 3, 3 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V20 rat4 [V20,T07] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V20 rat4 [V20,T04] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 36
G_M61562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r4,r11,lr}
+ push {r4,r5,r6,r11,lr}
sub sp, 36
- add r11, sp, 40
+ add r11, sp, 48
movs r0, 0
str r0, [sp+0x18] // [V07 loc0]
mov lr, r2
mov r4, r3
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x38]
+ ldr r5, [sp+0x4C] // [V05 arg5]
+ ; byrRegs +[r5]
+ ldr r6, [sp+0x50] // [V06 arg6]
+ ; byrRegs +[r6]
+ ;; size=24 bbWeight=1 PerfScore 10.00
+G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ ldr r1, [sp+0x40]
str r1, [sp]
- ldr r1, [sp+0x3C]
+ ldr r1, [sp+0x44]
str r1, [sp+0x04]
- ldr r1, [sp+0x40] // [V04 arg4]
+ ldr r1, [sp+0x48] // [V04 arg4]
str r1, [sp+0x08] // [V12 OutArgs+0x08]
add r1, sp, 20 // [V08 loc1]
str r1, [sp+0x0C] // [V12 OutArgs+0x0c]
- ldr r1, [sp+0x30] // [V00 arg0]
+ ldr r1, [sp+0x38] // [V00 arg0]
; byrRegs +[r1]
- ldr r2, [sp+0x34] // [V00 arg0+0x04]
+ ldr r2, [sp+0x3C] // [V00 arg0+0x04]
add r0, sp, 24 // [V07 loc0]
mov r3, lr
movw lr, 0xd1ff
@@ -65,29 +69,26 @@ G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, r4
ble SHORT G_M61562_IG07
;; size=44 bbWeight=1 PerfScore 19.00
-G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r4, [sp+0x44] // [V05 arg5]
- ; byrRegs +[r4]
+G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
movs r0, 0
- str r0, [r4]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- str r0, [r4+0x04]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r0, [r4]
+ str r0, [r5]
;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
+ str r0, [r5+0x04]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
+ ; byrRegs -[r5]
+ str r0, [r6]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M61562_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
add sp, 36
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, gcvars, byref, isz
+ ; byrRegs +[r5-r6]
movs r0, 0
ldr r3, [sp+0x1C] // [V15 tmp3]
cmp r0, r3
@@ -102,17 +103,17 @@ G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r0, 0
b SHORT G_M61562_IG09
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
asrs r3, r0, 31
movs r2, 0
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r1, 0
ble SHORT G_M61562_IG11
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r2, r1
bhs SHORT G_M61562_IG13
@@ -131,26 +132,23 @@ G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r2, r1
blt SHORT G_M61562_IG10
;; size=38 bbWeight=4 PerfScore 60.00
-G_M61562_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref
ldr r2, [sp+0x14] // [V08 loc1]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r2, [r4]
- ldr r4, [sp+0x44] // [V05 arg5]
- mov r2, r4
+ str r2, [r6]
+ mov r2, r5
; byrRegs +[r2]
str r0, [r2]
str r3, [r2+0x04]
movs r0, 1
- ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M61562_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M61562_IG12: ; bbWeight=1, epilog, nogc, extend
add sp, 36
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r2 r4]
+ ; byrRegs -[r2 r5-r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -158,7 +156,7 @@ G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 20, PerfScore 106.50, instruction count 85, allocated bytes for code 200 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 196, prolog size 24, PerfScore 111.50, instruction count 83, allocated bytes for code 196 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +168,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
+ Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -182,12 +180,12 @@ Unwind Info:
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
09 add sp, sp, #36 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 6 ----
09 add sp, sp, #36 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
-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,T09] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo>
+; V01 arg1 [V01,T10] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T11] ( 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,T08] ( 7, 6 ) int -> r7 "V01.[004..008)"
+; V46 tmp29 [V46,T07] ( 9, 7.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_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,36 +120,35 @@ 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]
@@ -176,11 +172,13 @@ G_M43427_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
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
+G_M43427_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, r8
bge SHORT G_M43427_IG20
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrh r2, [lr]
cmp r2, 128
bge SHORT G_M43427_IG24
@@ -190,7 +188,7 @@ G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M43427_IG24
b SHORT G_M43427_IG18
- ;; size=30 bbWeight=0.50 PerfScore 5.50
+ ;; size=26 bbWeight=0.50 PerfScore 4.50
G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
bls SHORT G_M43427_IG17
@@ -217,7 +215,7 @@ G_M43427_IG19: ; bbWeight=0.50, epilog, nogc, extend
;; size=10 bbWeight=0.50 PerfScore 2.00
G_M43427_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7
+ cmp r7, r8
ble SHORT G_M43427_IG21
ldrh r0, [r2]
cmp r0, 128
@@ -232,8 +230,8 @@ G_M43427_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
cmp r5, 0
beq SHORT G_M43427_IG22
- str r7, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ str r8, [r5]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M43427_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -243,28 +241,28 @@ G_M43427_IG23: ; bbWeight=0.50, epilog, nogc, extend
add sp, 12
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG24: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43427_IG24: ; 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_IG25: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M43427_IG25: ; bbWeight=1, 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
+ ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 378, prolog size 22, PerfScore 165.75, instruction count 141, allocated bytes for code 378 (MethodHash=f382565c) for method System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 372, prolog size 24, PerfScore 173.00, instruction count 139, allocated bytes for code 372 (MethodHash=f382565c) for method System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -276,7 +274,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 189 (0x000bd) Actual length = 378 (0x00017a)
+ Function Length : 186 (0x000ba) Actual length = 372 (0x000174)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+34 (+3.94%) : 6984.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan
1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
@@ -15,8 +15,8 @@
; V05 arg5 [V05,T16] ( 6, 5 ) ref -> r7 class-hnd single-def <System.Type>
; V06 arg6 [V06,T21] ( 3, 2.50) ref -> [sp+0x68] class-hnd single-def <System.Type[]>
; V07 arg7 [V07,T15] ( 7, 5.04) ref -> r6 class-hnd single-def <System.Object[]>
-; V08 loc0 [V08,T18] ( 5, 3.50) ubyte -> [sp+0x24]
-; V09 loc1 [V09,T19] ( 5, 3.50) ubyte -> [sp+0x20]
+; V08 loc0 [V08,T18] ( 5, 4 ) ubyte -> [sp+0x24]
+; V09 loc1 [V09,T19] ( 5, 4 ) ubyte -> [sp+0x20]
; V10 loc2 [V10,T01] ( 19, 16.68) int -> [sp+0x1C]
; V11 loc3 [V11,T09] ( 8, 8 ) ref -> [sp+0x10] class-hnd <System.Type>
; V12 loc4 [V12,T10] ( 8, 8 ) ref -> [sp+0x0C] class-hnd <System.Type>
@@ -86,7 +86,7 @@ G_M3967_IG05: ; bbWeight=0.50, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
ldr r12, [r9+0x04]
str r12, [sp+0x14] // [V22 cse1]
cmp r12, 0
- ble G_M3967_IG33
+ ble G_M3967_IG32
;; size=32 bbWeight=0.50 PerfScore 5.00
G_M3967_IG06: ; bbWeight=0.25, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
@@ -174,15 +174,15 @@ G_M3967_IG11: ; bbWeight=1.98, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefR
ldr r0, [r0+r9]
; byrRegs -[r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r2, r3, 1
- cmp r0, r2
+ add r12, r3, -1
+ cmp r0, r12
blt SHORT G_M3967_IG12
- mov r2, r7
- ; gcrRegs +[r2]
+ mov r12, r7
+ ; gcrRegs +[r12]
b SHORT G_M3967_IG15
- ;; size=24 bbWeight=1.98 PerfScore 19.80
+ ;; size=26 bbWeight=1.98 PerfScore 19.80
G_M3967_IG12: ; bbWeight=0.99, gcrefRegs=01F2 {r1 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
+ ; gcrRegs -[r12]
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
b SHORT G_M3967_IG14
@@ -201,39 +201,39 @@ G_M3967_IG14: ; bbWeight=1.98, gcVars=00000200 {V11}, gcrefRegs=01F0 {r4
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs G_M3967_IG41
- ldr r2, [sp+0x58] // [V03 arg3]
- ; byrRegs +[r2]
+ ldr r12, [sp+0x58] // [V03 arg3]
+ ; byrRegs +[r12]
lsls r0, r0, 2
- ldr r0, [r2+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r2, [r0]
- ; byrRegs -[r2]
- ldr r2, [r2+0x2C]
- ldr r2, [r2+0x1C]
- blx r2 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r2, r3
- ; gcrRegs +[r2]
+ mov r12, r3
+ ; gcrRegs +[r12]
ldr r1, [sp+0x10] // [V11 loc3]
; gcrRegs +[r1]
- ;; size=36 bbWeight=1.98 PerfScore 29.70
-G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=01F6 {r1 r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=46 bbWeight=1.98 PerfScore 29.70
+G_M3967_IG15: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=11F2 {r1 r4 r5 r6 r7 r8 r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r3]
; GC ptr vars -{V11}
str r1, [sp+0x10] // [V11 loc3]
; GC ptr vars +{V11}
mov r0, r1
; gcrRegs +[r0]
- str r2, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
- mov r1, r2
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r2]
+ mov r1, r12
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M3967_IG18
@@ -284,10 +284,10 @@ G_M3967_IG18: ; bbWeight=3.96, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
cmp r12, lr
bgt G_M3967_IG07
;; size=18 bbWeight=3.96 PerfScore 19.80
-G_M3967_IG19: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M3967_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4-r5 r7-r8]
- b SHORT G_M3967_IG33
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ b SHORT G_M3967_IG32
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M3967_IG20: ; bbWeight=0.04, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5 r7-r8]
cmp r6, 0
@@ -312,7 +312,7 @@ G_M3967_IG21: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
ldr r9, [r9]
; gcrRegs +[r9]
cmp r0, r9
- beq G_M3967_IG32
+ beq G_M3967_IG31
;; size=44 bbWeight=0.02 PerfScore 0.26
G_M3967_IG22: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r9]
@@ -374,7 +374,7 @@ G_M3967_IG24: ; bbWeight=0.02, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs
G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r7, 0
- beq SHORT G_M3967_IG27
+ beq SHORT G_M3967_IG26
ldr r0, [r8+0x04]
cmp lr, r0
bhs G_M3967_IG41
@@ -383,24 +383,21 @@ G_M3967_IG25: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str r0, [sp+0x08] // [TEMP_03]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
- subs r1, r3, 1
- ; byrRegs -[r1]
- cmp r0, r1
+ add r12, r3, -1
+ ; byrRegs -[r12]
+ cmp r0, r12
blt SHORT G_M3967_IG26
- mov r1, r7
- ; gcrRegs +[r1]
+ mov r12, r7
+ ; gcrRegs +[r12]
str lr, [sp+0x1C] // [V10 loc2]
- b SHORT G_M3967_IG28
- ;; size=44 bbWeight=0.02 PerfScore 0.34
-G_M3967_IG26: ; bbWeight=0.01, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1]
b SHORT G_M3967_IG27
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=0.02 PerfScore 0.34
+G_M3967_IG26: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12]
ldr r0, [r8+0x04]
cmp lr, r0
bhs SHORT G_M3967_IG41
@@ -410,34 +407,36 @@ G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefR
str lr, [sp+0x1C] // [V10 loc2]
lsl r0, lr, 2
; byrRegs -[r0]
- ldr r1, [sp+0x08] // [TEMP_03]
- ; byrRegs +[r1]
- ldr r0, [r1+r0]
+ ldr r12, [sp+0x08] // [TEMP_03]
+ ; byrRegs +[r12]
+ ldr r0, [r12+r0]
ldr r3, [sp+0x18] // [V18 tmp4]
cmp r0, r3
bhs SHORT G_M3967_IG41
- ldr r1, [sp+0x58] // [V03 arg3]
+ ldr r12, [sp+0x58] // [V03 arg3]
lsls r0, r0, 2
- ldr r0, [r1+r0]
+ ldr r0, [r12+r0]
; gcrRegs +[r0]
- ldr r1, [r0]
- ; byrRegs -[r1]
- ldr r1, [r1+0x2C]
- ldr r1, [r1+0x1C]
- blx r1 // <unknown method>
+ ldr r12, [r0]
+ ; byrRegs -[r12]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x1C]
+ blx r12 // <unknown method>
; gcr arg pop 0
mov r3, r0
; gcrRegs +[r3]
- mov r1, r3
- ; gcrRegs +[r1]
- ;; size=50 bbWeight=0.02 PerfScore 0.42
-G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r12, r3
+ ; gcrRegs +[r12]
+ ;; size=64 bbWeight=0.02 PerfScore 0.42
+G_M3967_IG27: ; bbWeight=0.02, gcrefRegs=13F0 {r4 r5 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r3]
mov r0, r9
; gcrRegs +[r0]
str r0, [sp+0x04] // [TEMP_02]
- str r1, [sp+0x0C] // [V12 loc4]
+ str r12, [sp+0x0C] // [V12 loc4]
; GC ptr vars +{V12}
+ mov r1, r12
+ ; gcrRegs +[r1]
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
@@ -447,10 +446,10 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
; gcrRegs +[r0]
ldr r2, [sp] // [TEMP_01]
blx r2 // System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0-r1 r12]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M3967_IG29
+ bne SHORT G_M3967_IG28
ldr r3, [sp+0x68] // [V06 arg6]
; gcrRegs +[r3]
add r2, r3, 8
@@ -474,43 +473,45 @@ G_M3967_IG28: ; bbWeight=0.02, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byr
cmp r0, 2
ldr r12, [sp+0x14] // [V22 cse1]
ldr lr, [sp+0x1C] // [V10 loc2]
- bhi SHORT G_M3967_IG32
+ bhi SHORT G_M3967_IG31
movw r9, LOW ADDRESS J_M3967_DS12
movt r9, HIGH ADDRESS J_M3967_DS12
J_M3967_DS12 LABEL DWORD
DD G_M3967_IG34
+ DD G_M3967_IG29
DD G_M3967_IG30
- DD G_M3967_IG31
ldr pc, [r9+4*r0]
- ;; size=86 bbWeight=0.02 PerfScore 0.60
...
+22 (+4.12%) : 33762.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T26] ( 3, 1.50) byref -> [sp+0x48] single-def
-; V03 arg3 [V03,T28] ( 2, 1 ) byref -> [sp+0x4C] single-def
-; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r7 single-def
-; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r8 single-def
-; V06 loc2 [V06,T16] ( 7, 4 ) int -> r9
-; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x0C] spill-single-def
-; V08 loc4 [V08,T04] ( 10, 19.50) int -> r10
-; V09 loc5 [V09,T02] ( 19, 20.50) int -> [sp+0x08]
-; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x00] spill-single-def
-; V11 loc7 [V11,T13] ( 5, 6 ) int -> lr
+; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T22] ( 3, 2.50) byref -> [sp+0x50] single-def
+; V03 arg3 [V03,T28] ( 2, 1.50) byref -> [sp+0x54] single-def
+; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r8 single-def
+; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r9 single-def
+; V06 loc2 [V06,T16] ( 7, 4.50) int -> r10
+; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x14] spill-single-def
+; V08 loc4 [V08,T03] ( 10, 20 ) int -> [sp+0x10]
+; V09 loc5 [V09,T02] ( 19, 21 ) int -> [sp+0x0C]
+; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x04] spill-single-def
+; V11 loc7 [V11,T13] ( 5, 6.50) int -> r12
; V12 loc8 [V12,T10] ( 17, 8.50) int -> r1
-; V13 loc9 [V13,T27] ( 3, 1.50) int -> lr
-; V14 loc10 [V14,T20] ( 5, 2.50) int -> r12
-; V15 loc11 [V15,T22] ( 4, 2 ) int -> r0
+; V13 loc9 [V13,T27] ( 3, 1.50) int -> r12
+; V14 loc10 [V14,T20] ( 5, 2.50) int -> r4
+; V15 loc11 [V15,T23] ( 4, 2 ) int -> r0
;* V16 loc12 [V16 ] ( 0, 0 ) int -> zero-ref
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
@@ -31,10 +31,10 @@
;* V20 tmp3 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
-; V23 tmp6 [V23,T03] ( 6, 20 ) int -> r5 "Inline return value spill temp"
+; V23 tmp6 [V23,T04] ( 6, 20 ) int -> r6 "Inline return value spill temp"
; V24 tmp7 [V24,T00] ( 5, 40 ) byref -> r0 "Inlining Arg"
; V25 tmp8 [V25,T05] ( 5, 14 ) int -> r1 "Inline stloc first use temp"
-; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r12 "Inline stloc first use temp"
+; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r5 "Inline stloc first use temp"
; V27 tmp10 [V27,T08] ( 3, 10 ) int -> r4 "Inline stloc first use temp"
; V28 tmp11 [V28,T09] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
; V29 tmp12 [V29,T01] ( 4, 32 ) byref -> r0 "Inlining Arg"
@@ -42,296 +42,309 @@
;* V31 tmp14 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp16 [V33 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
-; V34 tmp17 [V34,T23] ( 2, 2 ) byref -> r7 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V34 tmp17 [V34,T24] ( 2, 2 ) byref -> r8 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp18 [V35 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V36 tmp19 [V36,T24] ( 2, 2 ) byref -> r8 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+; V36 tmp19 [V36,T25] ( 2, 2 ) byref -> r9 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp20 [V37 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V38 tmp21 [V38,T29] ( 2, 1 ) byref -> r2 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp21 [V38,T29] ( 2, 1 ) byref -> lr single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp22 [V39 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp24 [V41 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V42 tmp25 [V42,T19] ( 4, 3.50) int -> [sp+0x04] spill-single-def "V00.[004..008)"
-; V43 tmp26 [V43,T25] ( 2, 2 ) int -> r6 "V01.[004..008)"
+; V42 tmp25 [V42,T19] ( 4, 3.50) int -> [sp+0x08] spill-single-def "V00.[004..008)"
+; V43 tmp26 [V43,T26] ( 2, 2 ) int -> r7 "V01.[004..008)"
; V44 cse0 [V44,T21] ( 5, 2.50) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M25359_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, 20
- add r11, sp, 48
+ sub sp, 28
+ add r11, sp, 56
;; size=12 bbWeight=1 PerfScore 4.00
G_M25359_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x3C]
- str r5, [sp+0x04]
ldr r6, [sp+0x44]
- ldr r7, [sp+0x38]
- ; byrRegs +[r7]
+ str r6, [sp+0x08]
+ ldr r7, [sp+0x4C]
ldr r8, [sp+0x40]
; byrRegs +[r8]
+ ldr r9, [sp+0x48]
+ ; byrRegs +[r9]
mvn r0, 3
- and r9, r5, r0
- str r6, [sp+0x0C]
- mov r10, 0
+ and r10, r6, r0
+ str r7, [sp+0x14]
movs r3, 0
- str r3, [sp+0x08] // [V09 loc5]
- cmp r5, 0
- beq G_M25359_IG23
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- str r2, [sp] // [V10 loc6]
- ; GC ptr vars +{V10}
- asr r0, r9, 2
- movs r1, 3
- mul r0, r0, r1
- cmp r6, r0
- blt SHORT G_M25359_IG04
- sub lr, r9, 4
- b SHORT G_M25359_IG05
- ;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, gcvars, byref
- mov r0, r6
- movs r1, 3
+ str r3, [sp+0x10] // [V08 loc4]
+ movs r2, 0
+ str r2, [sp+0x0C] // [V09 loc5]
+ cmp r6, 0
+ beq G_M25359_IG25
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
movw lr, 0xd1ff
movt lr, 0xd1ff
- blx lr // CORINFO_HELP_DIV
+ str lr, [sp+0x04] // [V10 loc6]
+ ; GC ptr vars +{V10}
+ asr r0, r10, 2
+ movs r1, 3
+ mul r0, r0, r1
+ cmp r7, r0
+ blt SHORT G_M25359_IG04
+ sub r12, r10, 4
+ b SHORT G_M25359_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
+G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, gcvars, byref
+ mov r0, r7
+ movs r1, 3
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_DIV
; gcr arg pop 0
- lsl lr, r0, 2
- ldr r6, [sp+0x0C] // [V07 loc3]
+ lsl r12, r0, 2
+ ldr r7, [sp+0x14] // [V07 loc3]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- cmp lr, 0
+G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r12, 0
ble SHORT G_M25359_IG08
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- lsl r0, r10, 1
- adds r0, r7, r0
+G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r3, [sp+0x10] // [V08 loc4]
+ lsls r0, r3, 1
+ add r0, r8
; byrRegs +[r0]
ldrh r1, [r0]
- ldrh r12, [r0+0x02]
+ ldrh r5, [r0+0x02]
ldrh r4, [r0+0x04]
ldrh r0, [r0+0x06]
; byrRegs -[r0]
+ orr r6, r1, r5
+ orrs r6, r4
+ orrs r6, r0
+ mvn r7, 255
+ ands r6, r7
+ cmp r6, 0
+ beq SHORT G_M25359_IG09
+ ;; size=32 bbWeight=4 PerfScore 56.00
+G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ mov r6, -1
+ b SHORT G_M25359_IG10
+ ;; size=6 bbWeight=2 PerfScore 4.00
+G_M25359_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ ldr r3, [sp+0x10] // [V08 loc4]
+ b SHORT G_M25359_IG11
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M25359_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref
+ ldr lr, [sp+0x04] // [V10 loc6]
+ ; byrRegs +[lr]
+ ldrsb r1, [lr+r1]
+ lsls r1, r1, 18
+ ldrsb r0, [lr+r0]
+ orrs r0, r1
+ ldrsb r1, [lr+r5]
+ lsls r1, r1, 12
+ orrs r0, r1
+ ldrsb r1, [lr+r4]
+ lsls r1, r1, 6
+ orrs r1, r0
+ mov r6, r1
+ ;; size=34 bbWeight=2 PerfScore 24.00
+G_M25359_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[lr]
+ cmp r6, 0
+ blt G_M25359_IG29
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ add r0, r9, r2
+ ; byrRegs +[r0]
+ asrs r1, r6, 16
+ strb r1, [r0]
+ asrs r1, r6, 8
+ strb r1, [r0+0x01]
+ strb r6, [r0+0x02]
+ adds r2, r2, 3
+ adds r3, r3, 4
+ cmp r3, r12
+ blt SHORT G_M25359_IG18
+ ;; size=30 bbWeight=4 PerfScore 52.00
+G_M25359_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[r0]
+ sub r0, r10, 4
+ cmp r12, r0
+ bne SHORT G_M25359_IG17
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r3, r10
+ beq SHORT G_M25359_IG16
+ lsl r0, r10, 1
+ sub r1, r0, 8
+ ldrh r1, [r8+r1]
+ sub r12, r0, 6
+ ldrh r12, [r8+r12]
+ subs r4, r0, 4
+ ldrh r4, [r8+r4]
+ subs r0, r0, 2
+ ldrh r0, [r8+r0]
orr r5, r1, r12
orrs r5, r4
orrs r5, r0
mvn r6, 255
ands r5, r6
cmp r5, 0
- beq SHORT G_M25359_IG09
- ;; size=34 bbWeight=4 PerfScore 52.00
-G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
...
+8 (+4.94%) : 2024.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x24]
cmp r4, 0
beq SHORT G_M3988_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M3988_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M3988_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,43 +103,42 @@ G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M3988_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=20 bbWeight=0.50 PerfScore 3.50
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
G_M3988_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 162, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 162 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 170, prolog size 24, PerfScore 85.40, instruction count 60, allocated bytes for code 170 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +150,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +162,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
coreclr_tests.run.linux.arm.checked.mch
-10 (-7.58%) : 1533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -11,102 +11,106 @@
;
; V00 arg0 [V00,T01] ( 8, 3.96) int -> r0 single-def
; V01 arg1 [V01,T00] ( 7, 5.04) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.04) int -> r4
-; V03 loc1 [V03,T02] ( 10, 5.33) int -> r3
-; V04 loc2 [V04,T03] ( 10, 4.48) int -> r2
+; V02 loc0 [V02,T04] ( 4, 3.43) int -> r4
+; V03 loc1 [V03,T02] ( 10, 5.33) int -> r5
+; V04 loc2 [V04,T03] ( 10, 4.48) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M10596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+G_M10596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r3,r4,r5,r6,r11,lr}
+ add r11, sp, 16
;; size=8 bbWeight=1 PerfScore 2.00
G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M10596_IG04
+ beq SHORT G_M10596_IG12
ldr r4, [r1]
- ldrh r3, [r4+0x0E]
- cmp r3, 0
- beq SHORT G_M10596_IG11
- ldr r2, [r4+0x28]
- cmp r3, 4
- bge SHORT G_M10596_IG08
+ ldrh r5, [r4+0x0E]
+ cmp r5, 0
+ beq SHORT G_M10596_IG05
+ ldr r6, [r4+0x28]
+ cmp r5, 4
+ bge SHORT G_M10596_IG07
;; size=18 bbWeight=1 PerfScore 9.00
G_M10596_IG03: ; bbWeight=1.63, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- bne SHORT G_M10596_IG06
- ;; size=8 bbWeight=1.63 PerfScore 4.89
-G_M10596_IG04: ; bbWeight=1.00, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- mov r0, r1
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1.00 PerfScore 1.00
-G_M10596_IG05: ; bbWeight=1.00, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M10596_IG06: ; bbWeight=0.69, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- adds r2, r2, 4
- subs r3, r3, 1
- cmp r3, 0
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ;; size=6 bbWeight=1.63 PerfScore 4.89
+G_M10596_IG04: ; bbWeight=0.69, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ adds r6, r6, 4
+ subs r5, r5, 1
+ cmp r5, 0
bgt SHORT G_M10596_IG03
;; size=8 bbWeight=0.69 PerfScore 2.76
-G_M10596_IG07: ; bbWeight=0.02, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10596_IG11
- ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M10596_IG08: ; bbWeight=0.09, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ldr lr, [r2+0x04]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ;; size=16 bbWeight=0.09 PerfScore 0.54
-G_M10596_IG09: ; bbWeight=0.07, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2+0x08]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ldr lr, [r2+0x0C]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- adds r2, 16
- subs r3, r3, 4
- cmp r3, 4
- bge SHORT G_M10596_IG08
- ;; size=24 bbWeight=0.07 PerfScore 0.73
-G_M10596_IG10: ; bbWeight=0.04, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- cmp r3, 0
- bne SHORT G_M10596_IG03
- ;; size=4 bbWeight=0.04 PerfScore 0.08
-G_M10596_IG11: ; bbWeight=0.04, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M10596_IG05: ; bbWeight=0.43, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- bne SHORT G_M10596_IG13
- ;; size=16 bbWeight=0.04 PerfScore 0.26
-G_M10596_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M10596_IG14
+ ;; size=16 bbWeight=0.43 PerfScore 2.59
+G_M10596_IG06: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1]
+ b SHORT G_M10596_IG11
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M10596_IG07: ; bbWeight=0.09, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1]
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ldr r3, [r6+0x04]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ;; size=12 bbWeight=0.09 PerfScore 0.54
+G_M10596_IG08: ; bbWeight=0.07, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r6+0x08]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ldr r3, [r6+0x0C]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ adds r6, 16
+ subs r5, r5, 4
+ cmp r5, 4
+ bge SHORT G_M10596_IG07
+ ;; size=20 bbWeight=0.07 PerfScore 0.73
+G_M10596_IG09: ; bbWeight=0.04, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M10596_IG05
+ ;; size=4 bbWeight=0.04 PerfScore 0.08
+G_M10596_IG10: ; bbWeight=0.02, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M10596_IG03
+ ;; size=2 bbWeight=0.02 PerfScore 0.02
+G_M10596_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
movs r1, 0
- b SHORT G_M10596_IG04
- ;; size=4 bbWeight=0.04 PerfScore 0.08
-G_M10596_IG13: ; bbWeight=0.00, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M10596_IG12: ; bbWeight=1.00, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M10596_IG13: ; bbWeight=1.00, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=1.00 PerfScore 1.00
+G_M10596_IG14: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
;; size=10 bbWeight=0.00 PerfScore 0.01
-G_M10596_IG14: ; bbWeight=0.00, epilog, nogc, extend
+G_M10596_IG15: ; bbWeight=0.00, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.00 PerfScore 0.01
-; Total bytes of code 132, prolog size 8, PerfScore 22.38, instruction count 53, allocated bytes for code 132 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 122, prolog size 8, PerfScore 24.70, instruction count 53, allocated bytes for code 122 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -118,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,11 +134,11 @@ Unwind Info:
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
-10 (-7.58%) : 312821.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -11,102 +11,106 @@
;
; V00 arg0 [V00,T01] ( 8, 4.36) int -> r0 single-def
; V01 arg1 [V01,T00] ( 7, 5.09) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.10) int -> r4
-; V03 loc1 [V03,T02] ( 10, 5.82) int -> r3
-; V04 loc2 [V04,T03] ( 10, 5.17) int -> r2
+; V02 loc0 [V02,T04] ( 4, 3.65) int -> r4
+; V03 loc1 [V03,T02] ( 10, 5.82) int -> r5
+; V04 loc2 [V04,T03] ( 10, 5.17) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M10596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+G_M10596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r3,r4,r5,r6,r11,lr}
+ add r11, sp, 16
;; size=8 bbWeight=1 PerfScore 2.00
G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M10596_IG04
+ beq SHORT G_M10596_IG12
ldr r4, [r1]
- ldrh r3, [r4+0x0E]
- cmp r3, 0
- beq SHORT G_M10596_IG11
- ldr r2, [r4+0x28]
- cmp r3, 4
- bge SHORT G_M10596_IG08
+ ldrh r5, [r4+0x0E]
+ cmp r5, 0
+ beq SHORT G_M10596_IG05
+ ldr r6, [r4+0x28]
+ cmp r5, 4
+ bge SHORT G_M10596_IG07
;; size=18 bbWeight=1 PerfScore 9.00
G_M10596_IG03: ; bbWeight=1.60, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- bne SHORT G_M10596_IG06
- ;; size=8 bbWeight=1.60 PerfScore 4.79
-G_M10596_IG04: ; bbWeight=0.99, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- mov r0, r1
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.99 PerfScore 0.99
-G_M10596_IG05: ; bbWeight=0.99, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M10596_IG06: ; bbWeight=0.74, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- adds r2, r2, 4
- subs r3, r3, 1
- cmp r3, 0
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ;; size=6 bbWeight=1.60 PerfScore 4.79
+G_M10596_IG04: ; bbWeight=0.74, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ adds r6, r6, 4
+ subs r5, r5, 1
+ cmp r5, 0
bgt SHORT G_M10596_IG03
;; size=8 bbWeight=0.74 PerfScore 2.96
-G_M10596_IG07: ; bbWeight=0.06, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10596_IG11
- ;; size=2 bbWeight=0.06 PerfScore 0.06
-G_M10596_IG08: ; bbWeight=0.21, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ldr lr, [r2+0x04]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ;; size=16 bbWeight=0.21 PerfScore 1.25
-G_M10596_IG09: ; bbWeight=0.17, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2+0x08]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- ldr lr, [r2+0x0C]
- cmp lr, r0
- beq SHORT G_M10596_IG04
- adds r2, 16
- subs r3, r3, 4
- cmp r3, 4
- bge SHORT G_M10596_IG08
- ;; size=24 bbWeight=0.17 PerfScore 1.69
-G_M10596_IG10: ; bbWeight=0.09, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- cmp r3, 0
- bne SHORT G_M10596_IG03
- ;; size=4 bbWeight=0.09 PerfScore 0.18
-G_M10596_IG11: ; bbWeight=0.10, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M10596_IG05: ; bbWeight=0.65, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- bne SHORT G_M10596_IG13
- ;; size=16 bbWeight=0.10 PerfScore 0.62
-G_M10596_IG12: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M10596_IG14
+ ;; size=16 bbWeight=0.65 PerfScore 3.90
+G_M10596_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1]
+ b SHORT G_M10596_IG11
+ ;; size=2 bbWeight=0.09 PerfScore 0.09
+G_M10596_IG07: ; bbWeight=0.21, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1]
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ldr r3, [r6+0x04]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ;; size=12 bbWeight=0.21 PerfScore 1.25
+G_M10596_IG08: ; bbWeight=0.17, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r6+0x08]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ ldr r3, [r6+0x0C]
+ cmp r3, r0
+ beq SHORT G_M10596_IG12
+ adds r6, 16
+ subs r5, r5, 4
+ cmp r5, 4
+ bge SHORT G_M10596_IG07
+ ;; size=20 bbWeight=0.17 PerfScore 1.69
+G_M10596_IG09: ; bbWeight=0.09, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M10596_IG05
+ ;; size=4 bbWeight=0.09 PerfScore 0.18
+G_M10596_IG10: ; bbWeight=0.05, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M10596_IG03
+ ;; size=2 bbWeight=0.05 PerfScore 0.05
+G_M10596_IG11: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
movs r1, 0
- b SHORT G_M10596_IG04
- ;; size=4 bbWeight=0.09 PerfScore 0.18
-G_M10596_IG13: ; bbWeight=0.01, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.09 PerfScore 0.09
+G_M10596_IG12: ; bbWeight=0.99, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M10596_IG13: ; bbWeight=0.99, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=0.99 PerfScore 0.99
+G_M10596_IG14: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
;; size=10 bbWeight=0.01 PerfScore 0.04
-G_M10596_IG14: ; bbWeight=0.01, epilog, nogc, extend
+G_M10596_IG15: ; bbWeight=0.01, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.01 PerfScore 0.04
-; Total bytes of code 132, prolog size 8, PerfScore 24.79, instruction count 53, allocated bytes for code 132 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 122, prolog size 8, PerfScore 28.05, instruction count 53, allocated bytes for code 122 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -118,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,11 +134,11 @@ Unwind Info:
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
-10 (-7.58%) : 166090.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -11,104 +11,108 @@
;
; V00 arg0 [V00,T01] ( 8, 3.77) int -> r0 single-def
; V01 arg1 [V01,T00] ( 7, 4.97) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 2.86) int -> r4
-; V03 loc1 [V03,T02] ( 10, 4.94) int -> r3
-; V04 loc2 [V04,T03] ( 10, 4.10) int -> r2
+; V02 loc0 [V02,T04] ( 4, 3.10) int -> r4
+; V03 loc1 [V03,T02] ( 10, 4.94) int -> r5
+; V04 loc2 [V04,T03] ( 10, 4.10) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M10596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+G_M10596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r3,r4,r5,r6,r11,lr}
+ add r11, sp, 16
;; size=8 bbWeight=1 PerfScore 2.00
G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M10596_IG05
+ beq SHORT G_M10596_IG13
;; size=4 bbWeight=1 PerfScore 2.00
G_M10596_IG03: ; bbWeight=0.94, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r4, [r1]
- ldrh r3, [r4+0x0E]
- cmp r3, 0
- beq SHORT G_M10596_IG12
- ldr r2, [r4+0x28]
- cmp r3, 4
- bge SHORT G_M10596_IG09
+ ldrh r5, [r4+0x0E]
+ cmp r5, 0
+ beq SHORT G_M10596_IG06
+ ldr r6, [r4+0x28]
+ cmp r5, 4
+ bge SHORT G_M10596_IG08
;; size=14 bbWeight=0.94 PerfScore 6.61
G_M10596_IG04: ; bbWeight=1.55, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- bne SHORT G_M10596_IG07
- ;; size=8 bbWeight=1.55 PerfScore 4.66
-G_M10596_IG05: ; bbWeight=0.99, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- mov r0, r1
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.99 PerfScore 0.99
-G_M10596_IG06: ; bbWeight=0.99, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M10596_IG07: ; bbWeight=0.65, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- adds r2, r2, 4
- subs r3, r3, 1
- cmp r3, 0
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG13
+ ;; size=6 bbWeight=1.55 PerfScore 4.66
+G_M10596_IG05: ; bbWeight=0.65, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ adds r6, r6, 4
+ subs r5, r5, 1
+ cmp r5, 0
bgt SHORT G_M10596_IG04
;; size=8 bbWeight=0.65 PerfScore 2.58
-G_M10596_IG08: ; bbWeight=0.01, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10596_IG12
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M10596_IG09: ; bbWeight=0.06, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2]
- cmp lr, r0
- beq SHORT G_M10596_IG05
- ldr lr, [r2+0x04]
- cmp lr, r0
- beq SHORT G_M10596_IG05
- ;; size=16 bbWeight=0.06 PerfScore 0.35
-G_M10596_IG10: ; bbWeight=0.05, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r2+0x08]
- cmp lr, r0
- beq SHORT G_M10596_IG05
- ldr lr, [r2+0x0C]
- cmp lr, r0
- beq SHORT G_M10596_IG05
- adds r2, 16
- subs r3, r3, 4
- cmp r3, 4
- bge SHORT G_M10596_IG09
- ;; size=24 bbWeight=0.05 PerfScore 0.48
-G_M10596_IG11: ; bbWeight=0.03, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- cmp r3, 0
- bne SHORT G_M10596_IG04
- ;; size=4 bbWeight=0.03 PerfScore 0.05
-G_M10596_IG12: ; bbWeight=0.03, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M10596_IG06: ; bbWeight=0.27, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- bne SHORT G_M10596_IG14
- ;; size=16 bbWeight=0.03 PerfScore 0.16
-G_M10596_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M10596_IG15
+ ;; size=16 bbWeight=0.27 PerfScore 1.60
+G_M10596_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1]
+ b SHORT G_M10596_IG12
+ ;; size=2 bbWeight=0.02 PerfScore 0.02
+G_M10596_IG08: ; bbWeight=0.06, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1]
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG13
+ ldr r3, [r6+0x04]
+ cmp r3, r0
+ beq SHORT G_M10596_IG13
+ ;; size=12 bbWeight=0.06 PerfScore 0.35
+G_M10596_IG09: ; bbWeight=0.05, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r6+0x08]
+ cmp r3, r0
+ beq SHORT G_M10596_IG13
+ ldr r3, [r6+0x0C]
+ cmp r3, r0
+ beq SHORT G_M10596_IG13
+ adds r6, 16
+ subs r5, r5, 4
+ cmp r5, 4
+ bge SHORT G_M10596_IG08
+ ;; size=20 bbWeight=0.05 PerfScore 0.48
+G_M10596_IG10: ; bbWeight=0.03, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M10596_IG06
+ ;; size=4 bbWeight=0.03 PerfScore 0.05
+G_M10596_IG11: ; bbWeight=0.01, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M10596_IG04
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M10596_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
movs r1, 0
- b SHORT G_M10596_IG05
- ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10596_IG14: ; bbWeight=0.01, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.02 PerfScore 0.02
+G_M10596_IG13: ; bbWeight=0.99, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M10596_IG14: ; bbWeight=0.99, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=0.99 PerfScore 0.99
+G_M10596_IG15: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
;; size=10 bbWeight=0.01 PerfScore 0.02
-G_M10596_IG15: ; bbWeight=0.01, epilog, nogc, extend
+G_M10596_IG16: ; bbWeight=0.01, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 132, prolog size 8, PerfScore 20.97, instruction count 53, allocated bytes for code 132 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 122, prolog size 8, PerfScore 22.41, instruction count 53, allocated bytes for code 122 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -120,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -132,11 +136,11 @@ Unwind Info:
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
+14 (+11.48%) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -10,9 +10,9 @@
; 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
-; V03 loc1 [V03,T02] ( 10, 14.90) int -> r5
+; V01 arg1 [V01,T02] ( 7, 14.80) ref -> r1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 5, 13 ) int -> r4
+; V03 loc1 [V03,T03] ( 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=10, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=10 PerfScore 10.00
+G_M10596_IG09: ; bbWeight=10, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=10 PerfScore 10.00
+G_M10596_IG10: ; bbWeight=10, 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=10 PerfScore 60.00
+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 160.72, 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 (+12.50%) : 2971.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -9,11 +9,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 8.33) int -> r0 single-def
-; V01 arg1 [V01,T02] ( 7, 5 ) ref -> r1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) int -> r4
-; V03 loc1 [V03,T03] ( 10, 6 ) int -> r5
-; V04 loc2 [V04,T01] ( 11, 9.33) int -> r6
+; V00 arg0 [V00,T02] ( 9, 8.33) int -> r0 single-def
+; V01 arg1 [V01,T00] ( 7,104 ) ref -> r1 class-hnd <System.Object>
+; V02 loc0 [V02,T01] ( 5,103 ) int -> r4
+; V03 loc1 [V03,T04] ( 10, 6 ) int -> r5
+; V04 loc2 [V04,T03] ( 11, 9.33) int -> r6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
@@ -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_IG13
+ beq SHORT G_M10596_IG09
ldr r6, [r4+0x28]
cmp r5, 4
blt SHORT G_M10596_IG06
@@ -52,7 +52,7 @@ G_M10596_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
adds r6, 16
subs r5, r5, 4
cmp r5, 4
- blt SHORT G_M10596_IG11
+ blt SHORT G_M10596_IG12
;; size=20 bbWeight=1 PerfScore 10.00
G_M10596_IG05: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10596_IG03
@@ -60,53 +60,61 @@ G_M10596_IG05: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, b
G_M10596_IG06: ; bbWeight=0.33, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6]
cmp r3, r0
- bne SHORT G_M10596_IG12
+ bne SHORT G_M10596_IG13
;; size=6 bbWeight=0.33 PerfScore 1.00
-G_M10596_IG07: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M10596_IG07: ; bbWeight=100, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
mov r0, r1
; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M10596_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=100 PerfScore 100.00
+G_M10596_IG08: ; bbWeight=100, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M10596_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=4 bbWeight=100 PerfScore 100.00
+G_M10596_IG09: ; bbWeight=100, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10596_IG10: ; bbWeight=0, 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
-G_M10596_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp r5, 0
- beq SHORT G_M10596_IG13
- ldr r3, [r6]
- cmp r3, r0
- beq SHORT G_M10596_IG07
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10596_IG12: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- adds r6, r6, 4
- subs r5, r5, 1
- cmp r5, 0
- bgt SHORT G_M10596_IG06
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M10596_IG13: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4]
movw r2, 0xd1ff
movt r2, 0xd1ff
ands r3, r2
cmp r3, 0
- bne SHORT G_M10596_IG09
- movs r1, 0
+ beq SHORT G_M10596_IG14
+ ;; size=16 bbWeight=100 PerfScore 600.00
+G_M10596_IG10: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10596_IG11: ; bbWeight=0, 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
+G_M10596_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r5, 0
+ beq SHORT G_M10596_IG09
+ ldr r3, [r6]
+ cmp r3, r0
+ beq SHORT G_M10596_IG07
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10596_IG13: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ adds r6, r6, 4
+ subs r5, r5, 1
+ cmp r5, 0
+ bgt SHORT G_M10596_IG06
+ ldr r3, [r4]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ands r3, r2
+ cmp r3, 0
+ bne SHORT G_M10596_IG10
+ ;; 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_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 36.50, instruction count 56, allocated bytes for code 128 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 144, prolog size 8, PerfScore 834.50, instruction count 62, allocated bytes for code 144 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -118,7 +126,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 128 (0x000080)
+ Function Length : 72 (0x00048) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+13.33%) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
@@ -10,9 +10,9 @@
; 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
-; V03 loc1 [V03,T02] ( 10, 28 ) int -> r5
+; V01 arg1 [V01,T02] ( 7, 30 ) ref -> r1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 5, 28 ) int -> r4
+; V03 loc1 [V03,T03] ( 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=25, 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=25 PerfScore 25.00
+G_M10596_IG07: ; bbWeight=25, 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=25 PerfScore 25.00
+G_M10596_IG08: ; bbWeight=25, 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=25 PerfScore 150.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 350.88, 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
-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, 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 PerfScore 1.00
+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
...
-44 (-2.02%) : 165042.dasm - System.Data.XSDSchema:HandleSimpleTypeSimpleContentColumn(System.Xml.Schema.XmlSchemaSimpleType,System.String,System.Data.DataTable,ubyte,System.Xml.XmlAttribute[],ubyte):this (FullOpts)
@@ -9,57 +9,57 @@
; 0 inlinees with PGO data; 24 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T13] ( 11, 7 ) ref -> r7 this class-hnd single-def <System.Data.XSDSchema>
+; V00 this [V00,T13] ( 11, 7.50) ref -> r7 this class-hnd single-def <System.Data.XSDSchema>
; V01 arg1 [V01,T14] ( 10, 6 ) ref -> r8 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleType>
-; V02 arg2 [V02,T20] ( 6, 4 ) ref -> [sp+0x3C] class-hnd <System.String>
+; V02 arg2 [V02,T20] ( 6, 4.50) ref -> [sp+0x38] class-hnd <System.String>
; V03 arg3 [V03,T07] ( 12, 10.50) ref -> r5 class-hnd single-def <System.Data.DataTable>
; V04 arg4 [V04,T65] ( 1, 0.50) ubyte -> [sp+0x80] single-def
; V05 arg5 [V05,T11] ( 7, 10.50) ref -> r6 class-hnd single-def <System.Xml.XmlAttribute[]>
; V06 arg6 [V06,T66] ( 1, 0.50) ubyte -> [sp+0x88] single-def
-; V07 loc0 [V07,T34] ( 5, 2 ) ref -> [sp+0x38] do-not-enreg[M] class-hnd EH-live <System.Type>
-; V08 loc1 [V08,T21] ( 10, 5 ) ref -> [sp+0x34] class-hnd <System.Data.SimpleType>
-; V09 loc2 [V09,T09] ( 18, 10.50) ref -> [sp+0x30] class-hnd <System.Data.DataColumn>
-; V10 loc3 [V10,T10] ( 8, 10.50) ref -> [sp+0x2C] class-hnd <System.String>
+; V07 loc0 [V07,T35] ( 5, 2.50) ref -> [sp+0x34] do-not-enreg[M] class-hnd EH-live <System.Type>
+; V08 loc1 [V08,T21] ( 10, 5.50) ref -> [sp+0x30] class-hnd <System.Data.SimpleType>
+; V09 loc2 [V09,T09] ( 18, 10.50) ref -> [sp+0x2C] class-hnd <System.Data.DataColumn>
+; V10 loc3 [V10,T10] ( 8, 10.50) ref -> [sp+0x28] class-hnd <System.String>
;* V11 loc4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
; V12 loc5 [V12,T63] ( 3, 1.50) ubyte -> [sp+0x54]
-; V13 loc6 [V13,T28] ( 3, 3 ) ref -> [sp+0x28] class-hnd <System.String>
-; V14 loc7 [V14,T26] ( 5, 3.50) ref -> [sp+0x24] do-not-enreg[Z] class-hnd EH-live <System.String>
-; V15 loc8 [V15,T37] ( 4, 2 ) int -> r6
+; V13 loc6 [V13,T29] ( 3, 3.50) ref -> [sp+0x24] class-hnd <System.String>
+; V14 loc7 [V14,T28] ( 5, 3.50) ref -> [sp+0x20] do-not-enreg[Z] class-hnd EH-live <System.String>
+; V15 loc8 [V15,T39] ( 4, 2 ) int -> r6
; V16 loc9 [V16,T59] ( 3, 1.50) ref -> r0 class-hnd single-def <System.Xml.Schema.XmlSchemaSimpleType>
-; V17 loc10 [V17,T06] ( 5, 13 ) ref -> r1 class-hnd <System.Data.SimpleType>
-; V18 loc11 [V18,T22] ( 3, 4.50) int -> [sp+0x50]
+; V17 loc10 [V17,T06] ( 5, 13.50) ref -> r1 class-hnd <System.Data.SimpleType>
+; V18 loc11 [V18,T23] ( 3, 4.50) int -> [sp+0x50]
; V19 loc12 [V19 ] ( 4, 5 ) int -> [sp+0x4C] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc13 [V20,T02] ( 5, 16.50) int -> [sp+0x48]
; V21 OutArgs [V21 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T29] ( 3, 3 ) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <System.Data.DataColumn>
-; V23 tmp2 [V23,T27] ( 4, 3.50) ref -> r4 single-def "inline UNBOX clone1"
+; V22 tmp1 [V22,T31] ( 3, 3 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Data.DataColumn>
+; V23 tmp2 [V23,T22] ( 4, 5.50) ref -> r4 single-def "inline UNBOX clone1"
;* V24 tmp3 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
; V25 tmp4 [V25,T08] ( 3, 12 ) int -> r4 "impSpillLclRefs"
-; V26 tmp5 [V26,T30] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Data.SimpleType>
-; V27 tmp6 [V27,T31] ( 3, 3 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Data.SimpleType>
+; V26 tmp5 [V26,T32] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Data.SimpleType>
+; V27 tmp6 [V27,T33] ( 3, 3 ) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Data.SimpleType>
; V28 tmp7 [V28,T60] ( 2, 1 ) ref -> r1 class-hnd "Inline return value spill temp" <System.String>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.DataExpression>
-; V30 tmp9 [V30,T39] ( 2, 2 ) ref -> r1 class-hnd single-def "dup spill" <System.String>
-; V31 tmp10 [V31,T35] ( 4, 2 ) ref -> r1
+; V30 tmp9 [V30,T41] ( 2, 2 ) ref -> r1 class-hnd single-def "dup spill" <System.String>
+; V31 tmp10 [V31,T37] ( 4, 2 ) ref -> r1
; V32 tmp11 [V32,T61] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <System.String>
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.DataExpression>
-; V34 tmp13 [V34,T40] ( 2, 2 ) ref -> r0 class-hnd single-def "dup spill" <System.String>
-; V35 tmp14 [V35,T36] ( 4, 2 ) ref -> r0
-; V36 tmp15 [V36,T41] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <System.String>
+; V34 tmp13 [V34,T42] ( 2, 2 ) ref -> r0 class-hnd single-def "dup spill" <System.String>
+; V35 tmp14 [V35,T38] ( 4, 2 ) ref -> r0
+; V36 tmp15 [V36,T43] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <System.String>
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.DataColumnCollection>
-; V38 tmp17 [V38,T32] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.DataColumnCollection>
-; V39 tmp18 [V39,T42] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V40 tmp19 [V40,T43] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V41 tmp20 [V41,T44] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V42 tmp21 [V42,T45] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V43 tmp22 [V43,T46] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V44 tmp23 [V44,T47] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V45 tmp24 [V45,T48] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V46 tmp25 [V46,T49] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V47 tmp26 [V47,T50] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V48 tmp27 [V48,T51] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V38 tmp17 [V38,T34] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.DataColumnCollection>
+; V39 tmp18 [V39,T44] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V40 tmp19 [V40,T45] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V41 tmp20 [V41,T46] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V42 tmp21 [V42,T47] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V43 tmp22 [V43,T48] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V44 tmp23 [V44,T49] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V45 tmp24 [V45,T50] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V46 tmp25 [V46,T51] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V47 tmp26 [V47,T52] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V48 tmp27 [V48,T53] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V49 tmp28 [V49,T15] ( 2, 8 ) ref -> r1 "argument with side effect"
-; V50 tmp29 [V50,T52] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V50 tmp29 [V50,T54] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V51 tmp30 [V51,T03] ( 2, 16 ) ref -> r0 "argument with side effect"
; V52 tmp31 [V52,T16] ( 2, 8 ) ref -> r0 "argument with side effect"
; V53 tmp32 [V53,T17] ( 2, 8 ) ref -> r0 "argument with side effect"
@@ -67,23 +67,23 @@
; V55 tmp34 [V55,T18] ( 2, 8 ) ref -> r0 "argument with side effect"
; V56 tmp35 [V56,T05] ( 2, 16 ) ref -> r0 "argument with side effect"
; V57 tmp36 [V57,T19] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V58 tmp37 [V58,T53] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V59 tmp38 [V59,T54] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V60 tmp39 [V60,T55] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V61 tmp40 [V61,T56] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V62 tmp41 [V62,T57] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V58 tmp37 [V58,T27] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V59 tmp38 [V59,T55] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V60 tmp39 [V60,T56] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V61 tmp40 [V61,T57] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V62 tmp41 [V62,T58] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V63 tmp42 [V63,T67] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V64 PSPSym [V64,T64] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
-; V65 cse0 [V65,T33] ( 5, 2.50) ref -> r0 "CSE - moderate"
-; V66 cse1 [V66,T23] ( 2, 4.25) ref -> [sp+0x18] spill-single-def hoist "CSE - moderate"
-; V67 cse2 [V67,T24] ( 2, 4.25) ref -> [sp+0x14] spill-single-def hoist "CSE - moderate"
-; V68 cse3 [V68,T25] ( 2, 4.25) ref -> [sp+0x10] spill-single-def hoist "CSE - moderate"
+; V65 cse0 [V65,T36] ( 5, 2.50) ref -> r0 "CSE - moderate"
+; V66 cse1 [V66,T24] ( 2, 4.25) ref -> [sp+0x14] spill-single-def hoist "CSE - moderate"
+; V67 cse2 [V67,T25] ( 2, 4.25) ref -> [sp+0x10] spill-single-def hoist "CSE - moderate"
+; V68 cse3 [V68,T26] ( 2, 4.25) ref -> [sp+0x0C] spill-single-def hoist "CSE - moderate"
; V69 cse4 [V69,T12] ( 12, 9.50) int -> [sp+0x44] multi-def "CSE - aggressive"
-; V70 cse5 [V70,T38] ( 4, 2 ) int -> r9 "CSE - conservative"
-; V71 cse6 [V71,T58] ( 4, 1.75) int -> r6 "CSE - conservative"
+; V70 cse5 [V70,T40] ( 4, 2 ) int -> [sp+0x40] spill-single-def "CSE - conservative"
+; V71 cse6 [V71,T30] ( 4, 3.25) int -> r6 "CSE - conservative"
; V72 cse7 [V72,T62] ( 3, 1.50) ref -> r1 "CSE - conservative"
-; V73 cse8 [V73,T00] ( 10, 28 ) byref -> [sp+0x0C] spill-single-def "CSE - aggressive"
-; V74 cse9 [V74,T01] ( 10, 28 ) int -> [sp+0x40] spill-single-def "CSE - aggressive"
+; V73 cse8 [V73,T00] ( 10, 28 ) byref -> [sp+0x08] spill-single-def "CSE - aggressive"
+; V74 cse9 [V74,T01] ( 10, 28 ) int -> [sp+0x3C] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 92
@@ -131,7 +131,7 @@ G_M59920_IG05: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref
; gcrRegs +[r5-r9]
movs r4, 0
; gcrRegs +[r4]
- str r4, [sp+0x34] // [V08 loc1]
+ str r4, [sp+0x30] // [V08 loc1]
; GC ptr vars +{V08}
mov r0, r8
; gcrRegs +[r0]
@@ -199,7 +199,7 @@ G_M59920_IG05: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
- str r4, [sp+0x1C] // [V27 tmp6]
+ str r4, [sp+0x18] // [V27 tmp6]
; GC ptr vars +{V27}
mov r0, r4
mov r1, r8
@@ -212,7 +212,7 @@ G_M59920_IG05: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0
- ldr r4, [sp+0x1C] // [V27 tmp6]
+ ldr r4, [sp+0x18] // [V27 tmp6]
; gcrRegs +[r4]
mov r9, r4
; gcrRegs +[r9]
@@ -233,7 +233,7 @@ G_M59920_IG05: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- str r0, [sp+0x3C] // [V02 arg2]
+ str r0, [sp+0x38] // [V02 arg2]
; GC ptr vars +{V02}
mov r0, r8
movw r4, LOW RELOC 0xD1FFAB1E
@@ -259,12 +259,14 @@ G_M59920_IG05: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref
blx r3 // System.Data.XSDSchema:ParseDataType(System.String):System.Type:this
; gcrRegs -[r1]
; gcr arg pop 0
- str r0, [sp+0x38] // [V07 loc0]
+ str r0, [sp+0x34] // [V07 loc0]
; GC ptr vars +{V07}
+ ldr r4, [sp+0x38] // [V02 arg2]
+ ; gcrRegs +[r4]
b SHORT G_M59920_IG10
- ;; size=248 bbWeight=0.50 PerfScore 48.00
+ ;; size=250 bbWeight=0.50 PerfScore 48.50
G_M59920_IG06: ; bbWeight=0.50, gcVars=000000000000000000200000 {V08}, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
+ ; gcrRegs -[r0 r4]
; GC ptr vars -{V02 V07} +{V08}
mov r0, r8
; gcrRegs +[r0]
@@ -345,7 +347,7 @@ G_M59920_IG07: ; bbWeight=4, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefReg
cmp r0, 0
bne SHORT G_M59920_IG07
;; size=8 bbWeight=4 PerfScore 16.00
-G_M59920_IG08: ; bbWeight=0.50, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M59920_IG08: ; bbWeight=1, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r1, [r1+0x04]
mov r0, r7
@@ -357,23 +359,20 @@ G_M59920_IG08: ; bbWeight=0.50, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref
blx r3 // System.Data.XSDSchema:ParseDataType(System.String):System.Type:this
; gcrRegs -[r1]
; gcr arg pop 0
- str r0, [sp+0x38] // [V07 loc0]
+ str r0, [sp+0x34] // [V07 loc0]
; GC ptr vars +{V07}
- str r9, [sp+0x34] // [V08 loc1]
- ; GC ptr vars +{V08}
ldr r0, [r9+0x10]
mov r4, r0
; gcrRegs +[r4]
- str r4, [sp+0x3C] // [V02 arg2]
- ; GC ptr vars +{V02}
- ldr r9, [sp+0x34] // [V08 loc1]
b SHORT G_M59920_IG10
- ;; size=38 bbWeight=0.50 PerfScore 7.00
+ ;; size=28 bbWeight=1 PerfScore 11.00
G_M59920_IG09: ; bbWeight=0.50, gcVars=000000000000000000200000 {V08}, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r4]
- ; GC ptr vars -{V02 V07}
+ ; GC ptr vars -{V07} +{V08}
mov r0, r7
; gcrRegs +[r0]
+ str r9, [sp+0x38] // [V02 arg2]
+ ; GC ptr vars +{V02}
mov r1, r9
; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -381,29 +380,32 @@ G_M59920_IG09: ; bbWeight=0.50, gcVars=000000000000000000200000 {V08}, gc
add r4, pc
ldr r3, [r4]
blx r3 // System.Data.XSDSchema:ParseDataType(System.String):System.Type:this
- ; gcrRegs -[r1]
+ ; gcrRegs -[r1 r9]
; gcr arg pop 0
- str r0, [sp+0x38] // [V07 loc0]
+ str r0, [sp+0x34] // [V07 loc0]
; GC ptr vars +{V07}
- str r9, [sp+0x3C] // [V02 arg2]
- ; GC ptr vars +{V02}
- ldr r9, [sp+0x34] // [V08 loc1]
- ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M59920_IG10: ; bbWeight=0.50, gcVars=000000000000000400100000 {V02 V07}, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r4, [sp+0x38] // [V02 arg2]
+ ; gcrRegs +[r4]
+ ldr r9, [sp+0x30] // [V08 loc1]
+ ; gcrRegs +[r9]
+ ;; size=30 bbWeight=0.50 PerfScore 5.50
+G_M59920_IG10: ; bbWeight=0.50, gcVars=000000000000000800000000 {V07}, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ; GC ptr vars -{V08}
+ ; GC ptr vars -{V02 V08}
ldrb r0, [r7+0x4C]
cmp r0, 0
beq SHORT G_M59920_IG14
- movs r4, 0
- str r4, [sp+0x50] // [V18 loc11]
+ str r4, [sp+0x38] // [V02 arg2]
+ ; GC ptr vars +{V02}
...
-4 (-1.94%) : 130017.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
@@ -8,15 +8,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> lr single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> r5 single-def
-; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x38] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
-; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x40] single-def
-; V05 arg5 [V05,T10] ( 2, 1 ) byref -> [sp+0x44] single-def
-; V06 arg6 [V06,T11] ( 2, 1 ) byref -> [sp+0x48] single-def
+; V00 arg0 [V00,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T05] ( 3, 3 ) int -> lr single-def
+; V02 arg2 [V02,T06] ( 3, 3 ) int -> r5 single-def
+; V03 arg3 [V03,T12] ( 1, 1 ) struct ( 8) [sp+0x40] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
+; V04 arg4 [V04,T13] ( 1, 1 ) int -> [sp+0x48] single-def
+; V05 arg5 [V05,T10] ( 2, 1.50) byref -> r6 single-def
+; V06 arg6 [V06,T11] ( 2, 1.50) byref -> r7 single-def
; V07 loc0 [V07 ] ( 8, 15.50) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V08 loc1 [V08 ] ( 2, 1.50) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc1 [V08 ] ( 2, 2 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc2 [V09 ] ( 0, 0 ) ubyte -> zero-ref
;* V10 loc3 [V10 ] ( 0, 0 ) long -> zero-ref
; V11 loc4 [V11,T00] ( 6, 20.50) int -> r2
@@ -24,36 +24,40 @@
; V13 tmp1 [V13,T09] ( 3, 1.50) int -> r0
; V14 tmp2 [V14 ] ( 3, 5.50) byref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
; V15 tmp3 [V15 ] ( 6, 11 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP
-; V16 rat0 [V16,T01] ( 5, 13 ) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V17 rat1 [V17,T02] ( 4, 9 ) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T06] ( 3, 3 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V16 rat0 [V16,T01] ( 5, 13.50) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
+; V17 rat1 [V17,T02] ( 4, 9.50) int -> r3 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat2 [V18,T07] ( 3, 3 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable"
; V19 rat3 [V19,T08] ( 3, 3 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V20 rat4 [V20,T07] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V20 rat4 [V20,T04] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
G_M61562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r4,r5,r11,lr}
+ push {r4,r5,r6,r7,r11,lr}
sub sp, 32
- add r11, sp, 40
+ add r11, sp, 48
movs r0, 0
str r0, [sp+0x18] // [V07 loc0]
mov lr, r2
mov r5, r3
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x38]
+ ldr r6, [sp+0x4C] // [V05 arg5]
+ ; byrRegs +[r6]
+ ldr r7, [sp+0x50] // [V06 arg6]
+ ; byrRegs +[r7]
+ ;; size=24 bbWeight=1 PerfScore 10.00
+G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
+ ldr r1, [sp+0x40]
str r1, [sp]
- ldr r1, [sp+0x3C]
+ ldr r1, [sp+0x44]
str r1, [sp+0x04]
- ldr r1, [sp+0x40] // [V04 arg4]
+ ldr r1, [sp+0x48] // [V04 arg4]
str r1, [sp+0x08] // [V12 OutArgs+0x08]
add r1, sp, 20 // [V08 loc1]
str r1, [sp+0x0C] // [V12 OutArgs+0x0c]
- ldr r1, [sp+0x30] // [V00 arg0]
+ ldr r1, [sp+0x38] // [V00 arg0]
; byrRegs +[r1]
- ldr r2, [sp+0x34] // [V00 arg0+0x04]
+ ldr r2, [sp+0x3C] // [V00 arg0+0x04]
add r0, sp, 24 // [V07 loc0]
mov r3, lr
movw r4, LOW RELOC 0xD1FFAB1E
@@ -67,29 +71,26 @@ G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, r5
ble SHORT G_M61562_IG07
;; size=46 bbWeight=1 PerfScore 20.00
-G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r4, [sp+0x44] // [V05 arg5]
- ; byrRegs +[r4]
+G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref
movs r0, 0
- str r0, [r4]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- str r0, [r4+0x04]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r0, [r4]
+ str r0, [r6]
;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref
+ str r0, [r6+0x04]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
+ ; byrRegs -[r6]
+ str r0, [r7]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M61562_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
+ ; byrRegs -[r7]
add sp, 32
- pop {r4,r5,r11,lr}
+ pop {r4,r5,r6,r7,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, gcvars, byref, isz
+ ; byrRegs +[r6-r7]
movs r0, 0
ldr r3, [sp+0x1C] // [V15 tmp3]
cmp r0, r3
@@ -104,17 +105,17 @@ G_M61562_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r0, 0
b SHORT G_M61562_IG09
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
asrs r3, r0, 31
movs r2, 0
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r1, 0
ble SHORT G_M61562_IG11
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
ldr r1, [sp+0x1C] // [V15 tmp3]
cmp r2, r1
bhs SHORT G_M61562_IG13
@@ -133,26 +134,23 @@ G_M61562_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r2, r1
blt SHORT G_M61562_IG10
;; size=38 bbWeight=4 PerfScore 60.00
-G_M61562_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref
ldr r2, [sp+0x14] // [V08 loc1]
- ldr r4, [sp+0x48] // [V06 arg6]
- ; byrRegs +[r4]
- str r2, [r4]
- ldr r4, [sp+0x44] // [V05 arg5]
- mov r2, r4
+ str r2, [r7]
+ mov r2, r6
; byrRegs +[r2]
str r0, [r2]
str r3, [r2+0x04]
movs r0, 1
- ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M61562_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M61562_IG12: ; bbWeight=1, epilog, nogc, extend
add sp, 32
- pop {r4,r5,r11,lr}
+ pop {r4,r5,r6,r7,r11,lr}
add sp, 8
bx lr
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r2 r4]
+ ; byrRegs -[r2 r6-r7]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -162,7 +160,7 @@ G_M61562_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 206, prolog size 20, PerfScore 107.50, instruction count 88, allocated bytes for code 206 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 202, prolog size 24, PerfScore 112.50, instruction count 86, allocated bytes for code 202 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -174,7 +172,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 103 (0x00067) Actual length = 206 (0x0000ce)
+ Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,12 +184,12 @@ Unwind Info:
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
08 add sp, sp, #32 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 6 ----
08 add sp, sp, #32 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
+18 (+2.45%) : 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)
@@ -9,23 +9,23 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 13, 18.50) ref -> r5 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V00 arg0 [V00,T02] ( 13, 19 ) ref -> r5 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V01 arg1 [V01,T05] ( 8, 11.50) ref -> r6 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T08] ( 5, 7 ) ref -> [sp+0x08] class-hnd single-def <System.String[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type[]>
-; V04 arg4 [V04,T06] ( 8, 10.50) ref -> r7 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V05 loc0 [V05,T13] ( 3, 2 ) ubyte -> r0
+; V04 arg4 [V04,T06] ( 8, 11 ) ref -> r7 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
+; V05 loc0 [V05,T13] ( 3, 2.50) ubyte -> r0
; V06 loc1 [V06,T09] ( 5, 9 ) ubyte -> r9 single-def
; V07 loc2 [V07,T01] ( 13, 22 ) ref -> r10 class-hnd single-def <System.Reflection.ParameterInfo[]>
; V08 loc3 [V08,T00] ( 26, 52.04) int -> [sp+0x1C]
-; V09 loc4 [V09 ] ( 19, 36 ) int -> [sp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V09 loc4 [V09 ] ( 19, 37 ) int -> [sp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T04] ( 2, 16 ) ref -> r1 "argument with side effect"
; V12 tmp2 [V12,T11] ( 2, 8 ) ref -> r1 "argument with side effect"
; V13 tmp3 [V13,T14] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V14 tmp4 [V14,T10] ( 4, 8 ) ref -> r1 "argument with side effect"
-; V15 cse0 [V15,T03] ( 10, 17.52) int -> [sp+0x14] spill-single-def "CSE - aggressive"
-; V16 cse1 [V16,T12] ( 6, 7 ) int -> [sp+0x10] spill-single-def "CSE - aggressive"
+; V15 cse0 [V15,T03] ( 10, 17.52) int -> [sp+0x14] "CSE - aggressive"
+; V16 cse1 [V16,T12] ( 6, 7 ) int -> [sp+0x10] "CSE - aggressive"
; V17 cse2 [V17,T07] ( 3, 9.90) int -> [sp+0x0C] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 36
@@ -63,18 +63,18 @@ G_M21804_IG04: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000
str r4, [sp+0x10]
mov lr, r4
ldr r12, [r6+0x04]
- str r12, [sp+0x14]
cmp r12, lr
ble SHORT G_M21804_IG06
- ;; size=28 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 8.00
G_M21804_IG05: ; bbWeight=4, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r8]
ldr r1, [sp+0x18]
ldr r2, [r5+0x24]
cmp r1, r2
beq SHORT G_M21804_IG06
+ str r12, [sp+0x14]
cmp lr, r12
- bhs G_M21804_IG25
+ bhs G_M21804_IG27
add r1, r6, 8
; byrRegs +[r1]
str lr, [sp+0x1C]
@@ -86,7 +86,7 @@ G_M21804_IG05: ; bbWeight=4, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5 r6
ldr r2, [sp+0x18]
ldr r0, [r10+0x04]
cmp r2, r0
- bhs G_M21804_IG25
+ bhs G_M21804_IG27
add r2, r10, 8
; byrRegs +[r2]
ldr r0, [sp+0x18]
@@ -105,47 +105,52 @@ G_M21804_IG05: ; bbWeight=4, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5 r6
; gcrRegs -[r0-r2]
orrs r1, r0, r9
cmp r1, 0
- beq SHORT G_M21804_IG07
+ beq SHORT G_M21804_IG08
ldr r8, [sp+0x1C] // [V08 loc3]
adds r8, r8, 1
- bvs G_M21804_IG24
+ bvs G_M21804_IG26
ldr r1, [sp+0x18] // [V09 loc4]
adds r1, r1, 1
- bvs G_M21804_IG24
+ bvs G_M21804_IG26
str r1, [sp+0x18] // [V09 loc4]
ldr r4, [sp+0x14] // [V15 cse0]
cmp r4, r8
mov r12, r4
mov lr, r8
bgt SHORT G_M21804_IG05
- ;; size=112 bbWeight=4 PerfScore 164.00
-G_M21804_IG06: ; bbWeight=0.50, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ;; size=116 bbWeight=4 PerfScore 168.00
+G_M21804_IG06: ; bbWeight=1, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r1, [r5+0x24]
cmp r1, 0
- blt SHORT G_M21804_IG12
+ blt SHORT G_M21804_IG13
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M21804_IG07: ; bbWeight=0.50, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
ldrb r1, [r5+0x28]
cmp r1, 0
- bne SHORT G_M21804_IG10
+ bne SHORT G_M21804_IG11
subs r1, r12, lr
- bvs G_M21804_IG24
+ bvs G_M21804_IG26
cmp r1, 1
- bne G_M21804_IG21
- b SHORT G_M21804_IG08
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M21804_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ bne G_M21804_IG23
+ mov r4, lr
+ mov lr, r12
+ b SHORT G_M21804_IG09
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M21804_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r5-r7 r10]
; GC ptr vars -{V02}
movs r0, 0
- b SHORT G_M21804_IG22
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M21804_IG08: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ b SHORT G_M21804_IG24
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M21804_IG09: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r5-r7 r10]
; GC ptr vars +{V02 V08}
- cmp lr, r12
- bhs G_M21804_IG25
+ str lr, [sp+0x14] // [V15 cse0]
+ cmp r4, lr
+ bhs G_M21804_IG27
add r1, r6, 8
; byrRegs +[r1]
- lsl r2, lr, 2
+ lsls r2, r4, 2
ldr r1, [r1+r2]
; gcrRegs +[r1]
; byrRegs -[r1]
@@ -153,7 +158,7 @@ G_M21804_IG08: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5
ldr r2, [sp+0x18] // [V09 loc4]
ldr r0, [r10+0x04]
cmp r2, r0
- bhs G_M21804_IG25
+ bhs G_M21804_IG27
add r2, r10, 8
; byrRegs +[r2]
ldr r0, [sp+0x18] // [V09 loc4]
@@ -167,17 +172,18 @@ G_M21804_IG08: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=04E0 {r5
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
movs r3, 0
- ldr lr, [r4]
- blx lr // Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArgumentsFromArgument(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object,System.Reflection.ParameterInfo,ubyte,System.Collections.Generic.List`1[System.String]):ubyte
+ ldr r8, [r4]
+ blx r8 // Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArgumentsFromArgument(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object,System.Reflection.ParameterInfo,ubyte,System.Collections.Generic.List`1[System.String]):ubyte
; gcrRegs -[r0-r2]
cmp r0, 0
- beq SHORT G_M21804_IG07
+ beq SHORT G_M21804_IG08
ldr r12, [sp+0x14] // [V15 cse0]
- b SHORT G_M21804_IG11
- ;; size=70 bbWeight=0.50 PerfScore 12.50
-G_M21804_IG09: ; bbWeight=2, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M21804_IG12
+ ;; size=72 bbWeight=0.50 PerfScore 13.00
+G_M21804_IG10: ; bbWeight=2, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ str r12, [sp+0x14] // [V15 cse0]
cmp lr, r12
- bhs G_M21804_IG25
+ bhs G_M21804_IG27
add r1, r6, 8
; byrRegs +[r1]
str lr, [sp+0x1C] // [V08 loc3]
@@ -189,7 +195,7 @@ G_M21804_IG09: ; bbWeight=2, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=000
ldr r2, [sp+0x18] // [V09 loc4]
ldr r0, [r10+0x04]
cmp r2, r0
- bhs G_M21804_IG25
+ bhs G_M21804_IG27
add r2, r10, 8
; byrRegs +[r2]
ldr r0, [sp+0x18] // [V09 loc4]
@@ -208,33 +214,35 @@ G_M21804_IG09: ; bbWeight=2, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=000
; gcrRegs -[r0-r2]
orrs r1, r0, r9
cmp r1, 0
- beq SHORT G_M21804_IG07
+ beq SHORT G_M21804_IG08
ldr r8, [sp+0x1C] // [V08 loc3]
adds r8, r8, 1
- bvs G_M21804_IG24
+ bvs G_M21804_IG26
mov lr, r8
ldr r12, [sp+0x14] // [V15 cse0]
- ;; size=90 bbWeight=2 PerfScore 60.00
-G_M21804_IG10: ; bbWeight=4, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ;; size=94 bbWeight=2 PerfScore 62.00
+G_M21804_IG11: ; bbWeight=4, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
cmp r12, lr
- bgt SHORT G_M21804_IG09
+ bgt SHORT G_M21804_IG10
;; size=4 bbWeight=4 PerfScore 8.00
-G_M21804_IG11: ; bbWeight=0.50, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+G_M21804_IG12: ; bbWeight=1, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x18] // [V09 loc4]
adds r1, r1, 1
- bvs G_M21804_IG24
+ bvs G_M21804_IG26
str r1, [sp+0x18] // [V09 loc4]
- ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M21804_IG12: ; bbWeight=0.50, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M21804_IG13: ; bbWeight=0.50, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp+0x10] // [V16 cse1]
cmp r4, 0
- ble G_M21804_IG20
+ ble G_M21804_IG21
movs r1, 0
mov r3, r1
+ str r4, [sp+0x10] // [V16 cse1]
+ str r12, [sp+0x14] // [V15 cse0]
cmp r4, r12
- bgt SHORT G_M21804_IG17
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M21804_IG13: ; bbWeight=3.96, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
+ bgt SHORT G_M21804_IG18
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M21804_IG14: ; bbWeight=3.96, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r8, [sp+0x08] // [V02 arg2]
; gcrRegs +[r8]
add r1, r8, 8
@@ -256,13 +264,13 @@ G_M21804_IG13: ; bbWeight=3.96, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=
blx r12 // Microsoft.VisualBasic.CompilerServices.OverloadResolution:FindParameterByName(System.Reflection.ParameterInfo[],System.String,byref):ubyte
; gcrRegs -[r0-r1]
cmp r0, 0
- beq SHORT G_M21804_IG15
+ beq SHORT G_M21804_IG16
;; size=46 bbWeight=3.96 PerfScore 59.40
-G_M21804_IG14: ; bbWeight=1.98, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M21804_IG15: ; bbWeight=1.98, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x18] // [V09 loc4]
ldr r2, [r5+0x24]
cmp r1, r2
- beq SHORT G_M21804_IG15
+ beq SHORT G_M21804_IG16
add r1, r6, 8
; byrRegs +[r1]
ldr r4, [sp+0x0C] // [V17 cse2]
@@ -273,7 +281,7 @@ G_M21804_IG14: ; bbWeight=1.98, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
ldr r2, [sp+0x18] // [V09 loc4]
ldr r0, [r10+0x04]
cmp r2, r0
- bhs SHORT G_M21804_IG25
+ bhs SHORT G_M21804_IG27
add r2, r10, 8
; byrRegs +[r2]
...
+12 (+4.58%) : 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 ) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T03] ( 6, 7.50) 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, 2.50) int -> r9 single-def
+; V05 arg5 [V05,T09] ( 2, 1.50) int -> r10 single-def
+; V06 arg6 [V06,T10] ( 1, 1 ) ref -> [sp+0x38] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V07 loc0 [V07,T00] ( 16, 20.12) 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, 7.54) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V11 cse1 [V11,T02] ( 3, 11.88) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 12
@@ -29,112 +29,117 @@ 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
+ ldr r10, [sp+0x34] // [V05 arg5]
+ ;; size=26 bbWeight=1 PerfScore 9.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
+ 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
+ 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
+ ;; size=14 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
+ 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, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6-r7]
b SHORT G_M11155_IG09
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1 PerfScore 1.00
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]
+ ; 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=0120 {r5 r8}, 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
- bhs SHORT G_M11155_IG15
- add r1, r5, 8
+ ; gcrRegs +[r6-r7]
+ cmp r4, r3
+ bhs SHORT G_M11155_IG17
+ 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
- bhs SHORT G_M11155_IG15
- add r2, r6, 8
+ ldr r2, [r7+0x04]
+ cmp r4, r2
+ bhs SHORT G_M11155_IG17
+ 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, gcrefRegs=0120 {r5 r8}, 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]
; gcrRegs +[r2]
@@ -143,44 +148,51 @@ G_M11155_IG09: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}
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]
+ ldr r0, [sp] // [V10 cse0]
+ ;; size=26 bbWeight=1 PerfScore 10.00
+G_M11155_IG10: ; bbWeight=1, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=1 PerfScore 2.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]
+ 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]
- ldr r4, [sp+0x34] // [V05 arg5]
- cmp r4, r10
- bge SHORT G_M11155_IG13
- mov r3, r5
+G_M11155_IG12: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7-r8]
+ ldr r4, [sp+0x04] // [V07 loc0]
+ cmp r10, r4
+ bge SHORT G_M11155_IG16
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M11155_IG13: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ mov r3, r6
; gcrRegs +[r3]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0]
mov r1, r9
- mov r2, r4
+ mov r2, r10
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr lr, [r4]
blx lr // <unknown method>
- ; gcrRegs -[r0 r3 r5 r7]
- ;; size=30 bbWeight=0.50 PerfScore 6.00
-G_M11155_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r0, r10
+ ; gcrRegs -[r0 r3 r5-r6]
+ ldr r4, [sp+0x04] // [V07 loc0]
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M11155_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+8 (+5.13%) : 170850.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (FullOpts)
@@ -13,10 +13,10 @@
; V01 arg0 [V01,T04] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T05] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T02] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T10] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T07] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T10] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T07] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T01] ( 3, 12 ) int -> r4 "VirtualCall with runtime lookup"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
@@ -27,21 +27,24 @@
; V15 cse0 [V15,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
; V16 cse1 [V16,T09] ( 2, 2 ) int -> r1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -55,19 +58,19 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG06
;; size=42 bbWeight=1 PerfScore 15.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG05
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
mov r0, r6
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -76,9 +79,9 @@ G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
; gcr arg pop 0
mov r4, r0
- ldr r1, [r9+0x04]
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -89,47 +92,46 @@ G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG08
;; size=34 bbWeight=2 PerfScore 28.00
-G_M3988_IG05: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG05: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
; gcrRegs +[r0]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0]
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
ldr r12, [r12]
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=26 bbWeight=0.50 PerfScore 4.50
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M3988_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 156, prolog size 18, PerfScore 84.00, instruction count 56, allocated bytes for code 156 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
+; Total bytes of code 164, prolog size 24, PerfScore 88.00, instruction count 58, allocated bytes for code 164 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -153,7 +155,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M34838_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M34838_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 53.77, 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, 18 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M35228_IG07: ; bbWeight=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M35228_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, lr
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M35228_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 53.77, 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)
-40 (-5.70%) : 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)
@@ -7,26 +7,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T17] ( 4, 18 ) ref -> r7 this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
-; V01 arg1 [V01,T18] ( 4, 18 ) ref -> r8 class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
+; V00 this [V00,T16] ( 4, 26 ) ref -> r7 this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
+; V01 arg1 [V01,T17] ( 4, 26 ) ref -> r8 class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
; V02 arg2 [V02,T06] ( 21,168.25) int -> r4 single-def
; V03 arg3 [V03,T07] ( 7,147.28) ref -> r5 class-hnd single-def <int[]>
-; V04 arg4 [V04,T20] ( 2, 16 ) ref -> [sp+0x40] class-hnd single-def <System.Array>
-; V05 arg5 [V05,T21] ( 2, 16 ) ref -> [sp+0x44] class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.NameInfo>
+; V04 arg4 [V04,T19] ( 2, 24 ) ref -> r9 class-hnd single-def <System.Array>
+; V05 arg5 [V05,T20] ( 2, 24 ) ref -> [sp+0x44] class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.NameInfo>
; V06 arg6 [V06,T10] ( 10, 77.93) ref -> r6 class-hnd single-def <int[]>
-; V07 loc0 [V07,T12] ( 16, 43.30) ref -> [sp+0x0C] class-hnd exact spill-single-def <int[]>
-; V08 loc1 [V08,T09] ( 8, 82.14) ref -> [sp+0x08] class-hnd <int[]>
-; V09 loc2 [V09,T13] ( 5, 36 ) ubyte -> [sp+0x14]
-;* V10 loc3 [V10,T11] ( 0, 0 ) ubyte -> zero-ref
-; V11 loc4 [V11,T19] ( 10, 16.54) int -> r1
+; V07 loc0 [V07,T13] ( 16, 43.30) ref -> [sp+0x0C] class-hnd exact spill-single-def <int[]>
+; V08 loc1 [V08,T09] ( 8, 90.14) ref -> [sp+0x08] class-hnd <int[]>
+; V09 loc2 [V09,T14] ( 5, 36 ) ubyte -> [sp+0x14]
+;* V10 loc3 [V10,T12] ( 0, 0 ) ubyte -> zero-ref
+; V11 loc4 [V11,T21] ( 10, 16.54) int -> r1
; V12 loc5 [V12,T02] ( 12,265.92) int -> r0
; V13 loc6 [V13,T00] ( 18,418.56) int -> registers
; V14 loc7 [V14,T08] ( 12,138.32) int -> r1
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T16] ( 3, 24 ) byref -> r2 "dup spill"
+; V16 tmp1 [V16,T18] ( 3, 24 ) byref -> r2 "dup spill"
; V17 tmp2 [V17,T03] ( 4,256 ) int -> registers "Strict ordering of exceptions for Array store"
-; V18 tmp3 [V18,T14] ( 2, 32 ) ref -> r3 "argument with side effect"
-; V19 tmp4 [V19,T15] ( 2, 32 ) ref -> r3 "argument with side effect"
+; V18 tmp3 [V18,T15] ( 2, 32 ) ref -> r3 "argument with side effect"
+; V19 tmp4 [V19,T11] ( 2, 64 ) ref -> r3 "argument with side effect"
; V20 cse0 [V20,T05] ( 11,241.92) byref -> r12 hoist multi-def "CSE - aggressive"
; V21 cse1 [V21,T04] ( 4,253.44) int -> r1 "CSE - aggressive"
; V22 cse2 [V22,T01] ( 3,380.16) int -> r2 "CSE - aggressive"
@@ -47,10 +47,12 @@ G_M8188_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r4, r2
mov r5, r3
; gcrRegs +[r5]
+ ldr r9, [sp+0x40] // [V04 arg4]
+ ; gcrRegs +[r9]
ldr r6, [sp+0x48] // [V06 arg6]
; gcrRegs +[r6]
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M8188_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M8188_IG02: ; bbWeight=1, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
mov r1, r4
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -64,24 +66,20 @@ G_M8188_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000
movs r2, 0
mov lr, 0
cmp r6, 0
- ldr r9, [sp+0x40] // [V04 arg4]
- ; gcrRegs +[r9]
- ldr r10, [sp+0x44] // [V05 arg5]
- ; gcrRegs +[r10]
beq SHORT G_M8188_IG12
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M8188_IG03: ; bbWeight=0.50, gcVars=00001000 {V07}, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 11.00
+G_M8188_IG03: ; bbWeight=0.50, gcVars=00002000 {V07}, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r2]
movs r1, 0
cmp r4, 0
ble SHORT G_M8188_IG12
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M8188_IG04: ; bbWeight=0.25, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG04: ; bbWeight=0.25, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r0, r4
blt SHORT G_M8188_IG09
;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M8188_IG05: ; bbWeight=3.96, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG05: ; bbWeight=3.96, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
add r0, r6, 8
; byrRegs +[r0]
lsl r12, r1, 2
@@ -90,21 +88,21 @@ G_M8188_IG05: ; bbWeight=3.96, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, by
cmp r0, 0
beq SHORT G_M8188_IG07
;; size=16 bbWeight=3.96 PerfScore 19.80
-G_M8188_IG06: ; bbWeight=1.98, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref
+G_M8188_IG06: ; bbWeight=1.98, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov lr, 1
;; size=4 bbWeight=1.98 PerfScore 1.98
-G_M8188_IG07: ; bbWeight=3.96, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG07: ; bbWeight=3.96, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
adds r1, r1, 1
cmp r1, r4
blt SHORT G_M8188_IG05
;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M8188_IG08: ; bbWeight=1, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG08: ; bbWeight=1, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8188_IG12
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8188_IG09: ; bbWeight=0.04, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG09: ; bbWeight=0.04, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
cmp r1, r0
- bhs G_M8188_IG45
+ bhs G_M8188_IG43
add r0, r6, 8
; byrRegs +[r0]
lsl r12, r1, 2
@@ -113,20 +111,20 @@ G_M8188_IG09: ; bbWeight=0.04, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, by
cmp r0, 0
beq SHORT G_M8188_IG11
;; size=24 bbWeight=0.04 PerfScore 0.32
-G_M8188_IG10: ; bbWeight=0.02, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref
+G_M8188_IG10: ; bbWeight=0.02, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov lr, 1
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M8188_IG11: ; bbWeight=0.04, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG11: ; bbWeight=0.04, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
adds r1, r1, 1
cmp r1, r4
blt SHORT G_M8188_IG09
;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M8188_IG12: ; bbWeight=1, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG12: ; bbWeight=1, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
str lr, [sp+0x14] // [V09 loc2]
cmp lr, 0
beq SHORT G_M8188_IG14
;; size=10 bbWeight=1 PerfScore 3.00
-G_M8188_IG13: ; bbWeight=0.50, gcrefRegs=07E0 {r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref
+G_M8188_IG13: ; bbWeight=0.50, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
mov r1, r4
movw r0, 0xd1ff
@@ -139,18 +137,18 @@ G_M8188_IG13: ; bbWeight=0.50, gcrefRegs=07E0 {r5 r6 r7 r8 r9 r10}, byref
mov r2, r0
; gcrRegs +[r2]
;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M8188_IG14: ; bbWeight=32, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG14: ; bbWeight=32, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr lr, [sp+0x14] // [V09 loc2]
cmp lr, 0
- beq SHORT G_M8188_IG26
+ beq SHORT G_M8188_IG25
;; size=10 bbWeight=32 PerfScore 96.00
-G_M8188_IG15: ; bbWeight=8, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG15: ; bbWeight=8, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
movs r0, 0
cmp r4, 0
- ble SHORT G_M8188_IG24
+ ble SHORT G_M8188_IG23
;; size=6 bbWeight=8 PerfScore 24.00
-G_M8188_IG16: ; bbWeight=4, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG16: ; bbWeight=4, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
beq SHORT G_M8188_IG21
cmp r2, 0
@@ -168,51 +166,44 @@ G_M8188_IG16: ; bbWeight=4, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byref
blt SHORT G_M8188_IG19
add r12, r3, 8
; byrRegs +[r12]
- str r9, [sp+0x40] // [V04 arg4]
- str r10, [sp+0x44] // [V05 arg5]
- ;; size=40 bbWeight=4 PerfScore 68.00
-G_M8188_IG17: ; bbWeight=63.36, gcrefRegs=01EC {r2 r3 r5 r6 r7 r8}, byrefRegs=1000 {r12}, byref, isz
- ; gcrRegs -[r9-r10]
+ ;; size=32 bbWeight=4 PerfScore 60.00
+G_M8188_IG17: ; bbWeight=63.36, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=1000 {r12}, byref, isz
+ ; gcrRegs -[r3]
lsls r1, r0, 2
- ldr r10, [r12+r1]
- add r9, r6, 8
- ; byrRegs +[r9]
- ldr r9, [r9+r1]
- ; byrRegs -[r9]
- add r9, r10
+ ldr r3, [r12+r1]
+ add r10, r6, 8
+ ; byrRegs +[r10]
+ ldr r10, [r10+r1]
+ ; byrRegs -[r10]
+ add r3, r10
add r10, r2, 8
; byrRegs +[r10]
- str r9, [r10+r1]
+ str r3, [r10+r1]
adds r0, r0, 1
cmp r0, r4
blt SHORT G_M8188_IG17
;; size=30 bbWeight=63.36 PerfScore 633.60
-G_M8188_IG18: ; bbWeight=8, gcrefRegs=01EC {r2 r3 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG18: ; bbWeight=16, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r10 r12]
- ldr r9, [sp+0x40] // [V04 arg4]
- ; gcrRegs +[r9]
- ldr r10, [sp+0x44] // [V05 arg5]
- ; gcrRegs +[r10]
- b SHORT G_M8188_IG24
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M8188_IG19: ; bbWeight=2, gcrefRegs=07EC {r2 r3 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M8188_IG23
+ ;; size=2 bbWeight=16 PerfScore 16.00
+G_M8188_IG19: ; bbWeight=2, gcrefRegs=03EC {r2 r3 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
b SHORT G_M8188_IG21
;; size=2 bbWeight=2 PerfScore 2.00
-G_M8188_IG20: ; bbWeight=2, gcrefRegs=07EC {r2 r3 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
+G_M8188_IG20: ; bbWeight=2, gcrefRegs=03EC {r2 r3 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8188_IG21
;; size=2 bbWeight=2 PerfScore 2.00
-G_M8188_IG21: ; bbWeight=0.04, gcrefRegs=07E4 {r2 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref
+G_M8188_IG21: ; bbWeight=0.04, gcrefRegs=03E4 {r2 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
ldr r3, [sp+0x0C] // [V07 loc0]
; gcrRegs +[r3]
ldr r12, [r3+0x04]
- str r10, [sp+0x44] // [V05 arg5]
- ;; size=10 bbWeight=0.04 PerfScore 0.12
+ ;; size=6 bbWeight=0.04 PerfScore 0.08
G_M8188_IG22: ; bbWeight=0.64, gcrefRegs=03EC {r2 r3 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
ldr r1, [r3+0x04]
cmp r0, r1
- bhs G_M8188_IG45
+ bhs G_M8188_IG43
add r12, r3, 8
; byrRegs +[r12]
lsls r1, r0, 2
@@ -222,7 +213,7 @@ G_M8188_IG22: ; bbWeight=0.64, gcrefRegs=03EC {r2 r3 r5 r6 r7 r8 r9}, byr
str r12, [sp+0x04] // [TEMP_01]
ldr r12, [r6+0x04]
cmp r0, r12
- bhs G_M8188_IG45
+ bhs G_M8188_IG43
add r12, r6, 8
; byrRegs +[r12]
ldr r12, [r12+r1]
@@ -231,23 +222,18 @@ G_M8188_IG22: ; bbWeight=0.64, gcrefRegs=03EC {r2 r3 r5 r6 r7 r8 r9}, byr
add r1, r12
ldr r12, [r2+0x04]
cmp r0, r12
- bhs G_M8188_IG45
+ bhs G_M8188_IG43
add r12, r2, 8
; byrRegs +[r12]
ldr r10, [sp+0x10] // [V23 cse3]
str r1, [r12+r10]
adds r0, r0, 1
...
+14 (+8.75%) : 221533.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable
1[int]]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary2+Tables[System.__Canon,System.Nullable
1[int]],System.__Canon,int,byref):ubyte (FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.Nullable`1[int]]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M56212_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M56212_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M56212_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M56212_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, b
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M56212_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M56212_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M56212_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x0C]
+ ldr r0, [r10+0x0C]
cmp r5, r0
bne SHORT G_M56212_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M56212_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M56212_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x20]
cmp r4, 0
beq SHORT G_M56212_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M56212_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M56212_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M56212_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M56212_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M56212_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M56212_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M56212_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M56212_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,39 +103,38 @@ G_M56212_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}
cmp r0, 0
bne SHORT G_M56212_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M56212_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x08]
+G_M56212_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x08]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M56212_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M56212_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M56212_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- str r0, [r5+0x04]
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M56212_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M56212_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r0, [r9+0x10]
- str r0, [r5]
- ldr r0, [r9+0x14]
- str r0, [r5+0x04]
+ str r0, [r8]
+ str r0, [r8+0x04]
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M56212_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M56212_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r0, [r10+0x10]
+ str r0, [r8]
+ ldr r0, [r10+0x14]
+ str r0, [r8+0x04]
movs r0, 1
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=0.50 PerfScore 2.50
G_M56212_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 160, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 160 (MethodHash=9f93246b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.Nullable`1[int]],System.__Canon,int,byref):ubyte (FullOpts)
+; Total bytes of code 174, prolog size 24, PerfScore 85.90, instruction count 60, allocated bytes for code 174 (MethodHash=9f93246b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.Nullable`1[int]],System.__Canon,int,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,7 +158,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
+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, 18 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M23107_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M23107_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, lr
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M23107_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 50.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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37321_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37321_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M37321_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 50.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
-12 (-3.31%) : 4185.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
@@ -15,29 +15,29 @@
; V03 arg3 [V03,T10] ( 3, 2.99) int -> r6 single-def
; V04 arg4 [V04,T19] ( 1, 1 ) int -> [sp+0x34] single-def
; V05 arg5 [V05,T20] ( 1, 1 ) int -> [sp+0x38] single-def
-; V06 arg6 [V06,T13] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T14] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> r8 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T09] ( 2, 4 ) int -> r10 "impImportAndPushBox"
-; V10 tmp3 [V10,T11] ( 2, 2 ) int -> r0
+; V10 tmp3 [V10,T12] ( 2, 1.99) int -> r0
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T12] ( 3, 2.00) int -> r6
+; V13 tmp6 [V13,T13] ( 3, 2.00) int -> r6
; V14 tmp7 [V14,T04] ( 3, 5.97) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T14] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
; V18 tmp11 [V18,T08] ( 2, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T16] ( 3, 1.99) ubyte -> r0 "Inline return value spill temp"
-; V22 tmp15 [V22,T06] ( 5, 4.97) int -> r8 "Inline stloc first use temp"
+; V21 tmp14 [V21,T11] ( 3, 2.52) ubyte -> r0 "Inline return value spill temp"
+; V22 tmp15 [V22,T06] ( 5, 4.97) int -> r1 "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V26 tmp19 [V26,T15] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
+; V26 tmp19 [V26,T16] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; V27 cse0 [V27,T07] ( 4, 4 ) int -> r9 "CSE - aggressive"
-; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r10 hoist "CSE - moderate"
+; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r0 hoist "CSE - moderate"
; V29 cse2 [V29,T18] ( 2, 1.99) int -> r3 hoist "CSE - moderate"
; V30 cse3 [V30,T01] ( 9, 9 ) ref -> r1 multi-def "CSE - aggressive"
;
@@ -147,26 +147,26 @@ G_M43134_IG09: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000
; gcr arg pop 0
mov r1, 0x8000000
str r1, [r0+0x08]
- mov r8, 0
- add r10, r0, 8
- ; byrRegs +[r10]
- and r3, r6, -0x1000000
- ;; size=38 bbWeight=0.99 PerfScore 10.94
-G_M43134_IG10: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ movs r1, 0
+ adds r0, 8
; gcrRegs -[r0]
- lsl r0, r8, 2
- ldr r0, [r10+r0]
- cmp r0, r3
- beq SHORT G_M43134_IG11
- add r8, r8, 1
- cmp r8, 1
- bge SHORT G_M43134_IG18
- b SHORT G_M43134_IG10
- ;; size=24 bbWeight=0.99 PerfScore 7.96
-G_M43134_IG11: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
- ; byrRegs -[r10]
- movs r0, 1
- ;; size=2 bbWeight=0.99 PerfScore 0.99
+ ; byrRegs +[r0]
+ and r3, r6, -0x1000000
+ ;; size=34 bbWeight=0.99 PerfScore 10.94
+G_M43134_IG10: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0001 {r0}, byref, isz
+ lsls r2, r1, 2
+ ldr r2, [r0+r2]
+ cmp r2, r3
+ beq SHORT G_M43134_IG17
+ adds r1, r1, 1
+ cmp r1, 1
+ blt SHORT G_M43134_IG10
+ ;; size=14 bbWeight=0.99 PerfScore 6.96
+G_M43134_IG11: ; bbWeight=0.53, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
+ movs r0, 0
+ b SHORT G_M43134_IG18
+ ;; size=4 bbWeight=0.53 PerfScore 1.05
G_M43134_IG12: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
@@ -204,7 +204,7 @@ G_M43134_IG13: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r1 r5]
; byrRegs -[r0]
cmp r9, 0
- beq SHORT G_M43134_IG17
+ beq SHORT G_M43134_IG19
;; size=46 bbWeight=1 PerfScore 14.00
G_M43134_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
str r6, [r4+0x24]
@@ -217,8 +217,8 @@ G_M43134_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r12 // CORINFO_HELP_ASSIGN_BYREF
ldr r2, [r1!+0x04]
str r2, [r0!+0x04]
- ldr r6, [sp+0x38] // [V05 arg5]
- str r6, [r4+0x14]
+ ldr r5, [sp+0x38] // [V05 arg5]
+ str r5, [r4+0x14]
movs r3, 0
str r3, [r4+0x04]
;; size=34 bbWeight=1 PerfScore 12.00
@@ -231,17 +231,20 @@ G_M43134_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 8
bx lr
;; size=8 bbWeight=1 PerfScore 3.00
-G_M43134_IG17: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43134_IG17: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r5 r7]
+ movs r0, 1
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M43134_IG18: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M43134_IG12
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M43134_IG19: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5 r7]
mov r6, 0x8000000
b SHORT G_M43134_IG14
;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M43134_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- movs r0, 0
- b SHORT G_M43134_IG12
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 362, prolog size 18, PerfScore 116.91, instruction count 121, allocated bytes for code 362 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 350, prolog size 18, PerfScore 117.96, instruction count 121, allocated bytes for code 350 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================
Unwind Info:
@@ -253,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
+ Function Length : 175 (0x000af) Actual length = 350 (0x00015e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-3.31%) : 5201.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
@@ -15,29 +15,29 @@
; V03 arg3 [V03,T10] ( 3, 2.99) int -> r6 single-def
; V04 arg4 [V04,T19] ( 1, 1 ) int -> [sp+0x34] single-def
; V05 arg5 [V05,T20] ( 1, 1.00) int -> [sp+0x38] single-def
-; V06 arg6 [V06,T13] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T14] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> r8 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T09] ( 2, 4 ) int -> r10 "impImportAndPushBox"
-; V10 tmp3 [V10,T11] ( 2, 2 ) int -> r0
+; V10 tmp3 [V10,T12] ( 2, 2.00) int -> r0
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T12] ( 3, 2.00) int -> r6
+; V13 tmp6 [V13,T13] ( 3, 2.00) int -> r6
; V14 tmp7 [V14,T04] ( 3, 5.98) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T14] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
; V18 tmp11 [V18,T08] ( 2, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T16] ( 3, 2.00) ubyte -> r0 "Inline return value spill temp"
-; V22 tmp15 [V22,T06] ( 5, 4.98) int -> r8 "Inline stloc first use temp"
+; V21 tmp14 [V21,T11] ( 3, 2.40) ubyte -> r0 "Inline return value spill temp"
+; V22 tmp15 [V22,T06] ( 5, 4.98) int -> r1 "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V26 tmp19 [V26,T15] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
+; V26 tmp19 [V26,T16] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; V27 cse0 [V27,T07] ( 4, 4 ) int -> r9 "CSE - aggressive"
-; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r10 hoist "CSE - moderate"
+; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r0 hoist "CSE - moderate"
; V29 cse2 [V29,T18] ( 2, 1.99) int -> r3 hoist "CSE - moderate"
; V30 cse3 [V30,T01] ( 9, 9 ) ref -> r1 multi-def "CSE - aggressive"
;
@@ -147,26 +147,26 @@ G_M43134_IG09: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000
; gcr arg pop 0
mov r1, 0x8000000
str r1, [r0+0x08]
- mov r8, 0
- add r10, r0, 8
- ; byrRegs +[r10]
- and r3, r6, -0x1000000
- ;; size=38 bbWeight=1.00 PerfScore 10.96
-G_M43134_IG10: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ movs r1, 0
+ adds r0, 8
; gcrRegs -[r0]
- lsl r0, r8, 2
- ldr r0, [r10+r0]
- cmp r0, r3
- beq SHORT G_M43134_IG11
- add r8, r8, 1
- cmp r8, 1
- bge SHORT G_M43134_IG18
- b SHORT G_M43134_IG10
- ;; size=24 bbWeight=1.00 PerfScore 7.97
-G_M43134_IG11: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
- ; byrRegs -[r10]
- movs r0, 1
- ;; size=2 bbWeight=1.00 PerfScore 1.00
+ ; byrRegs +[r0]
+ and r3, r6, -0x1000000
+ ;; size=34 bbWeight=1.00 PerfScore 10.96
+G_M43134_IG10: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0001 {r0}, byref, isz
+ lsls r2, r1, 2
+ ldr r2, [r0+r2]
+ cmp r2, r3
+ beq SHORT G_M43134_IG17
+ adds r1, r1, 1
+ cmp r1, 1
+ blt SHORT G_M43134_IG10
+ ;; size=14 bbWeight=1.00 PerfScore 6.97
+G_M43134_IG11: ; bbWeight=0.40, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
+ movs r0, 0
+ b SHORT G_M43134_IG18
+ ;; size=4 bbWeight=0.40 PerfScore 0.81
G_M43134_IG12: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
@@ -204,7 +204,7 @@ G_M43134_IG13: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r1 r5]
; byrRegs -[r0]
cmp r9, 0
- beq SHORT G_M43134_IG17
+ beq SHORT G_M43134_IG19
;; size=46 bbWeight=1 PerfScore 14.00
G_M43134_IG14: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
str r6, [r4+0x24]
@@ -217,8 +217,8 @@ G_M43134_IG14: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r12 // CORINFO_HELP_ASSIGN_BYREF
ldr r2, [r1!+0x04]
str r2, [r0!+0x04]
- ldr r6, [sp+0x38] // [V05 arg5]
- str r6, [r4+0x14]
+ ldr r5, [sp+0x38] // [V05 arg5]
+ str r5, [r4+0x14]
movs r3, 0
str r3, [r4+0x04]
;; size=34 bbWeight=1.00 PerfScore 12.00
@@ -231,17 +231,20 @@ G_M43134_IG16: ; bbWeight=1.00, epilog, nogc, extend
add sp, 8
bx lr
;; size=8 bbWeight=1.00 PerfScore 3.00
-G_M43134_IG17: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43134_IG17: ; bbWeight=1.00, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r5 r7]
+ movs r0, 1
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M43134_IG18: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M43134_IG12
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M43134_IG19: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5 r7]
mov r6, 0x8000000
b SHORT G_M43134_IG14
;; size=6 bbWeight=0.00 PerfScore 0.01
-G_M43134_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- movs r0, 0
- b SHORT G_M43134_IG12
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 362, prolog size 18, PerfScore 116.93, instruction count 121, allocated bytes for code 362 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 350, prolog size 18, PerfScore 117.74, instruction count 121, allocated bytes for code 350 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================
Unwind Info:
@@ -253,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
+ Function Length : 175 (0x000af) Actual length = 350 (0x00015e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-3.31%) : 11025.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
@@ -15,29 +15,29 @@
; V03 arg3 [V03,T10] ( 3, 2.99) int -> r6 single-def
; V04 arg4 [V04,T19] ( 1, 1 ) int -> [sp+0x34] single-def
; V05 arg5 [V05,T20] ( 1, 1 ) int -> [sp+0x38] single-def
-; V06 arg6 [V06,T13] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T14] ( 2, 2 ) ref -> r7 class-hnd single-def <System.Reflection.MemberInfo>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> r8 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T09] ( 2, 4 ) int -> r10 "impImportAndPushBox"
-; V10 tmp3 [V10,T11] ( 2, 2 ) int -> r0
+; V10 tmp3 [V10,T12] ( 2, 1.99) int -> r0
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T12] ( 3, 2 ) int -> r6
+; V13 tmp6 [V13,T13] ( 3, 2 ) int -> r6
; V14 tmp7 [V14,T04] ( 3, 5.97) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T14] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
; V18 tmp11 [V18,T08] ( 2, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T16] ( 3, 1.99) ubyte -> r0 "Inline return value spill temp"
-; V22 tmp15 [V22,T06] ( 5, 4.97) int -> r8 "Inline stloc first use temp"
+; V21 tmp14 [V21,T11] ( 3, 2.51) ubyte -> r0 "Inline return value spill temp"
+; V22 tmp15 [V22,T06] ( 5, 4.97) int -> r1 "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V26 tmp19 [V26,T15] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
+; V26 tmp19 [V26,T16] ( 2, 2 ) int -> r0 "field V19.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; V27 cse0 [V27,T07] ( 4, 4 ) int -> r9 "CSE - aggressive"
-; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r10 hoist "CSE - moderate"
+; V28 cse1 [V28,T17] ( 2, 1.99) byref -> r0 hoist "CSE - moderate"
; V29 cse2 [V29,T18] ( 2, 1.99) int -> r3 hoist "CSE - moderate"
; V30 cse3 [V30,T01] ( 9, 9 ) ref -> r1 multi-def "CSE - aggressive"
;
@@ -147,26 +147,26 @@ G_M43134_IG09: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000
; gcr arg pop 0
mov r1, 0x8000000
str r1, [r0+0x08]
- mov r8, 0
- add r10, r0, 8
- ; byrRegs +[r10]
- and r3, r6, -0x1000000
- ;; size=38 bbWeight=0.99 PerfScore 10.94
-G_M43134_IG10: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ movs r1, 0
+ adds r0, 8
; gcrRegs -[r0]
- lsl r0, r8, 2
- ldr r0, [r10+r0]
- cmp r0, r3
- beq SHORT G_M43134_IG11
- add r8, r8, 1
- cmp r8, 1
- bge SHORT G_M43134_IG18
- b SHORT G_M43134_IG10
- ;; size=24 bbWeight=0.99 PerfScore 7.96
-G_M43134_IG11: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
- ; byrRegs -[r10]
- movs r0, 1
- ;; size=2 bbWeight=0.99 PerfScore 0.99
+ ; byrRegs +[r0]
+ and r3, r6, -0x1000000
+ ;; size=34 bbWeight=0.99 PerfScore 10.94
+G_M43134_IG10: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0001 {r0}, byref, isz
+ lsls r2, r1, 2
+ ldr r2, [r0+r2]
+ cmp r2, r3
+ beq SHORT G_M43134_IG17
+ adds r1, r1, 1
+ cmp r1, 1
+ blt SHORT G_M43134_IG10
+ ;; size=14 bbWeight=0.99 PerfScore 6.96
+G_M43134_IG11: ; bbWeight=0.52, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
+ movs r0, 0
+ b SHORT G_M43134_IG18
+ ;; size=4 bbWeight=0.52 PerfScore 1.05
G_M43134_IG12: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
uxtb r0, r0
cmp r0, 0
@@ -204,7 +204,7 @@ G_M43134_IG13: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r1 r5]
; byrRegs -[r0]
cmp r9, 0
- beq SHORT G_M43134_IG17
+ beq SHORT G_M43134_IG19
;; size=46 bbWeight=1 PerfScore 14.00
G_M43134_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
str r6, [r4+0x24]
@@ -217,8 +217,8 @@ G_M43134_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r12 // CORINFO_HELP_ASSIGN_BYREF
ldr r2, [r1!+0x04]
str r2, [r0!+0x04]
- ldr r6, [sp+0x38] // [V05 arg5]
- str r6, [r4+0x14]
+ ldr r5, [sp+0x38] // [V05 arg5]
+ str r5, [r4+0x14]
movs r3, 0
str r3, [r4+0x04]
;; size=34 bbWeight=1 PerfScore 12.00
@@ -231,17 +231,20 @@ G_M43134_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 8
bx lr
;; size=8 bbWeight=1 PerfScore 3.00
-G_M43134_IG17: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43134_IG17: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r5 r7]
+ movs r0, 1
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M43134_IG18: ; bbWeight=0.99, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M43134_IG12
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M43134_IG19: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5 r7]
mov r6, 0x8000000
b SHORT G_M43134_IG14
;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M43134_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- movs r0, 0
- b SHORT G_M43134_IG12
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 362, prolog size 18, PerfScore 116.91, instruction count 121, allocated bytes for code 362 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 350, prolog size 18, PerfScore 117.95, instruction count 121, allocated bytes for code 350 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================
Unwind Info:
@@ -253,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
+ Function Length : 175 (0x000af) Actual length = 350 (0x00015e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+2 (+4.17%) : 28188.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
@@ -13,7 +13,7 @@
; V02 loc0 [V02,T01] ( 5, 5 ) int -> r3
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 cse0 [V04,T04] ( 2, 2 ) byref -> r1 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 2 ) int -> lr hoist "CSE - aggressive"
+; V05 cse1 [V05,T05] ( 2, 2 ) int -> r0 hoist "CSE - aggressive"
; V06 cse2 [V06,T03] ( 3, 3 ) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -31,33 +31,32 @@ G_M26314_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
- and lr, r0, -0x1000000
+ and r0, r0, -0x1000000
;; size=14 bbWeight=1 PerfScore 6.00
G_M26314_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
- lsls r0, r3, 2
- ldr r0, [r1+r0]
- cmp r0, lr
+ lsl lr, r3, 2
+ ldr lr, [r1+lr]
+ cmp lr, r0
bne SHORT G_M26314_IG05
movs r0, 1
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M26314_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
G_M26314_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, gcvars, byref, isz
adds r3, r3, 1
cmp r2, r3
- ble SHORT G_M26314_IG06
- b SHORT G_M26314_IG03
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M26314_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt SHORT G_M26314_IG03
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M26314_IG06: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r1]
movs r0, 0
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26314_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.30 PerfScore 0.30
+G_M26314_IG07: ; bbWeight=0.30, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0.30 PerfScore 0.30
-; Total bytes of code 48, prolog size 6, PerfScore 18.00, instruction count 20, allocated bytes for code 48 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.60, instruction count 19, allocated bytes for code 50 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 48 (0x000030)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+2 (+4.17%) : 28940.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
@@ -13,7 +13,7 @@
; V02 loc0 [V02,T01] ( 5, 5 ) int -> r3
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 cse0 [V04,T04] ( 2, 2 ) byref -> r1 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 2 ) int -> lr hoist "CSE - aggressive"
+; V05 cse1 [V05,T05] ( 2, 2 ) int -> r0 hoist "CSE - aggressive"
; V06 cse2 [V06,T03] ( 3, 3 ) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -31,33 +31,32 @@ G_M26314_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
- and lr, r0, -0x1000000
+ and r0, r0, -0x1000000
;; size=14 bbWeight=1 PerfScore 6.00
G_M26314_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
- lsls r0, r3, 2
- ldr r0, [r1+r0]
- cmp r0, lr
+ lsl lr, r3, 2
+ ldr lr, [r1+lr]
+ cmp lr, r0
bne SHORT G_M26314_IG05
movs r0, 1
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M26314_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
G_M26314_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, gcvars, byref, isz
adds r3, r3, 1
cmp r2, r3
- ble SHORT G_M26314_IG06
- b SHORT G_M26314_IG03
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M26314_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt SHORT G_M26314_IG03
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M26314_IG06: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r1]
movs r0, 0
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26314_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.23 PerfScore 0.23
+G_M26314_IG07: ; bbWeight=0.23, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0.23 PerfScore 0.23
-; Total bytes of code 48, prolog size 6, PerfScore 18.00, instruction count 20, allocated bytes for code 48 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.45, instruction count 19, allocated bytes for code 50 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 48 (0x000030)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.94%) : 1638.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x24]
cmp r4, 0
beq SHORT G_M3988_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M3988_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M3988_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,43 +103,42 @@ G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M3988_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=20 bbWeight=0.50 PerfScore 3.50
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
G_M3988_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 162, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 162 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 170, prolog size 24, PerfScore 85.40, instruction count 60, allocated bytes for code 170 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +150,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +162,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M18970_IG07: ; bbWeight=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M18970_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M18970_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 96.49, 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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63363_IG07: ; bbWeight=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63363_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M63363_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 53.88, 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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M34838_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M34838_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 53.77, 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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M13244_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M13244_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13244_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 51.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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37321_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37321_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M37321_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 50.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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42181_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42181_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M42181_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; 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 79.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
-34 (-4.02%) : 29538.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:GetFields(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref,byref) (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T22] ( 3, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V00 arg0 [V00,T24] ( 3, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V01 arg1 [V01,T27] ( 3, 2.50) ubyte -> r7 single-def
-; V02 arg2 [V02,T20] ( 4, 3.50) byref -> r4 single-def
-; V03 arg3 [V03,T21] ( 4, 3.50) byref -> r5 single-def
+; V02 arg2 [V02,T18] ( 4, 4 ) byref -> r4 single-def
+; V03 arg3 [V03,T19] ( 4, 4 ) byref -> r5 single-def
; V04 arg4 [V04,T42] ( 2, 1.50) byref -> [sp+0x80] single-def
; V05 loc0 [V05,T29] ( 6, 4 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
; V06 loc1 [V06,T32] ( 6, 3 ) int -> [sp+0x54] spill-single-def
-; V07 loc2 [V07,T23] ( 3, 5 ) ref -> [sp+0x24] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V08 loc3 [V08,T24] ( 3, 5 ) ref -> [sp+0x20] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
+; V07 loc2 [V07,T22] ( 3, 5.50) ref -> [sp+0x24] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V08 loc3 [V08,T23] ( 3, 5.50) ref -> [sp+0x20] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
; V11 loc6 [V11,T07] ( 5, 20 ) ref -> [sp+0x1C] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
@@ -38,12 +38,12 @@
; V27 tmp13 [V27,T00] ( 8, 56 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
; V28 tmp14 [V28,T08] ( 5, 16 ) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp"
;* V29 tmp15 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V30 tmp16 [V30,T18] ( 3, 6 ) int -> r1 "Inline return value spill temp"
+; V30 tmp16 [V30,T20] ( 3, 6 ) int -> r1 "Inline return value spill temp"
; V31 tmp17 [V31,T13] ( 3, 12 ) int -> r1 "Inlining Arg"
; V32 tmp18 [V32,T01] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V33 tmp19 [V33,T09] ( 5, 16 ) int -> [sp+0x38] spill-single-def "Inline stloc first use temp"
;* V34 tmp20 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp21 [V35,T19] ( 3, 6 ) int -> r1 "Inline return value spill temp"
+; V35 tmp21 [V35,T21] ( 3, 6 ) int -> r1 "Inline return value spill temp"
; V36 tmp22 [V36,T14] ( 3, 12 ) int -> r1 "Inlining Arg"
; V37 tmp23 [V37,T12] ( 4, 12.50) int -> r2 "Inline stloc first use temp"
; V38 tmp24 [V38 ] ( 3, 1.50) struct (12) [sp+0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
@@ -140,29 +140,24 @@ G_M45709_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r
;; size=76 bbWeight=1 PerfScore 26.00
G_M45709_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r0]
- ldr r8, [sp+0x80] // [V04 arg4]
- ; byrRegs +[r8]
movs r6, 0
b SHORT G_M45709_IG05
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M45709_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0030 {r4 r5}, byref
; gcrRegs +[r0]
- ; byrRegs -[r8]
- ldr r8, [sp+0x80] // [V04 arg4]
- ; byrRegs +[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_DelegateInvokeMethod():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this
mov r6, r0
; gcrRegs +[r6]
- ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M45709_IG05: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, byref, isz
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M45709_IG05: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r0]
cmp r6, 0
- beq G_M45709_IG25
+ beq G_M45709_IG23
;; size=6 bbWeight=1 PerfScore 2.00
-G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, byref, isz
+G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
mov r0, r6
; gcrRegs +[r0]
ldr r9, [r6]
@@ -171,9 +166,9 @@ G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
blx r3 // <unknown method>
; gcrRegs -[r0]
mov r3, r0
- str r3, [sp+0x54] // [V06 loc1]
+ str r3, [sp+0x54]
cmp r3, 0
- ble G_M45709_IG21
+ ble G_M45709_IG19
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
@@ -185,7 +180,7 @@ G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
blx r2 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this
mov r3, r0
; gcrRegs +[r3]
- str r3, [sp+0x18] // [V19 tmp5]
+ str r3, [sp+0x18]
; GC ptr vars +{V19}
ldr r0, [r3+0x04]
ldr r1, [r0+0x04]
@@ -194,7 +189,7 @@ G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
; gcrRegs -[r1]
ldr r2, [sp+0x54] // [V06 loc1]
cmp r1, r2
- bge SHORT G_M45709_IG13
+ bge SHORT G_M45709_IG12
mov r1, r2
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -202,7 +197,7 @@ G_M45709_IG06: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
blx lr // System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:set_Capacity(int):this
; gcrRegs -[r0 r3]
;; size=82 bbWeight=0.50 PerfScore 15.00
-G_M45709_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, byref, isz
+G_M45709_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r3, [sp+0x18] // [V19 tmp5]
; gcrRegs +[r3]
str r3, [sp+0x24] // [V07 loc2]
@@ -237,7 +232,7 @@ G_M45709_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
blx r2 // System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]:set_Capacity(int):this
; gcrRegs -[r0 r3]
;; size=60 bbWeight=0.50 PerfScore 11.50
-G_M45709_IG08: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, byref, isz
+G_M45709_IG08: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r3, [sp+0x14] // [V21 tmp7]
; gcrRegs +[r3]
str r3, [sp+0x20] // [V08 loc3]
@@ -257,9 +252,9 @@ G_M45709_IG08: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r
movs r1, 0
str r1, [sp+0x28] // [V43 tmp29]
cmp r10, 0
- ble SHORT G_M45709_IG12
+ ble SHORT G_M45709_IG11
;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M45709_IG09: ; bbWeight=4, gcVars=0000000011800000 {V07 V08 V42}, gcrefRegs=0048 {r3 r6}, byrefRegs=0130 {r4 r5 r8}, gcvars, byref, isz
+G_M45709_IG09: ; bbWeight=4, gcVars=0000000010C00000 {V07 V08 V42}, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; gcrRegs -[r0]
add r0, r3, 8
; byrRegs +[r0]
@@ -291,9 +286,9 @@ G_M45709_IG09: ; bbWeight=4, gcVars=0000000011800000 {V07 V08 V42}, gcref
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, r12
- bge SHORT G_M45709_IG11
+ bge SHORT G_M45709_IG14
;; size=60 bbWeight=4 PerfScore 80.00
-G_M45709_IG10: ; bbWeight=2, gcVars=0000000011800081 {V07 V08 V11 V27 V42}, gcrefRegs=4040 {r6 lr}, byrefRegs=0130 {r4 r5 r8}, gcvars, byref, isz
+G_M45709_IG10: ; bbWeight=2, gcVars=0000000010C00081 {V07 V08 V11 V27 V42}, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; gcrRegs -[r2]
ldr r0, [lr+0x04]
; gcrRegs +[r0]
@@ -301,37 +296,25 @@ G_M45709_IG10: ; bbWeight=2, gcVars=0000000011800081 {V07 V08 V11 V27 V42
; gcrRegs -[r0]
lsls r1, r0, 1
cmp r1, r12
- bge SHORT G_M45709_IG14
+ bge SHORT G_M45709_IG13
mov r1, r12
- str r8, [sp+0x80]
- b SHORT G_M45709_IG15
- ;; size=20 bbWeight=2 PerfScore 16.00
-G_M45709_IG11: ; bbWeight=2, gcrefRegs=4040 {r6 lr}, byrefRegs=0130 {r4 r5 r8}, byref, isz
- str r8, [sp+0x80]
- b SHORT G_M45709_IG16
- ;; size=6 bbWeight=2 PerfScore 4.00
-G_M45709_IG12: ; bbWeight=0.25, gcVars=0000000001800000 {V07 V08}, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, gcvars, byref, isz
+ b SHORT G_M45709_IG13
+ ;; size=16 bbWeight=2 PerfScore 14.00
+G_M45709_IG11: ; bbWeight=0.25, gcVars=0000000000C00000 {V07 V08}, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; gcrRegs -[lr]
; GC ptr vars -{V07 V11 V27 V42}
- str r8, [sp+0x80]
ldr r8, [sp+0x24] // [V07 loc2]
; gcrRegs +[r8]
- ; byrRegs -[r8]
- b SHORT G_M45709_IG20
- ;; size=10 bbWeight=0.25 PerfScore 0.75
-G_M45709_IG13: ; bbWeight=0.25, gcVars=0000000200000000 {V19}, gcrefRegs=0040 {r6}, byrefRegs=0130 {r4 r5 r8}, gcvars, byref, isz
+ b SHORT G_M45709_IG18
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M45709_IG12: ; bbWeight=0.25, gcVars=0000000200000000 {V19}, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; gcrRegs -[r8]
- ; byrRegs +[r8]
; GC ptr vars -{V08} +{V19 V33}
b SHORT G_M45709_IG07
;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M45709_IG14: ; bbWeight=2, gcVars=0000000011800081 {V07 V08 V11 V27 V42}, gcrefRegs=4040 {r6 lr}, byrefRegs=0130 {r4 r5 r8}, gcvars, byref
+G_M45709_IG13: ; bbWeight=2, gcVars=0000000010C00081 {V07 V08 V11 V27 V42}, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r5}, gcvars, byref
; gcrRegs +[lr]
; GC ptr vars -{V19 V33} +{V00 V07 V08 V11 V27 V28 V42}
- str r8, [sp+0x80] // [V04 arg4]
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M45709_IG15: ; bbWeight=2, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r8]
add r0, lr, 4
; byrRegs +[r0]
movw r8, 0xd1ff
@@ -344,13 +327,13 @@ G_M45709_IG15: ; bbWeight=2, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r
ldr lr, [sp+0x10] // [V27 tmp13]
; gcrRegs +[lr]
;; size=26 bbWeight=2 PerfScore 14.00
-G_M45709_IG16: ; bbWeight=4, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M45709_IG14: ; bbWeight=4, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r1, [lr+0x04]
; gcrRegs +[r1]
ldr r0, [lr+0x08]
ldr r8, [r1+0x04]
cmp r0, r8
- bhs G_M45709_IG26
+ bhs G_M45709_IG24
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
@@ -381,9 +364,9 @@ G_M45709_IG16: ; bbWeight=4, gcrefRegs=4040 {r6 lr}, byrefRegs=0030 {r4 r
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, r2
- bge SHORT G_M45709_IG19
+ bge SHORT G_M45709_IG17
;; size=64 bbWeight=4 PerfScore 100.00
-G_M45709_IG17: ; bbWeight=2, gcVars=0000000011800002 {V07 V08 V32 V42}, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M45709_IG15: ; bbWeight=2, gcVars=0000000010C00002 {V07 V08 V32 V42}, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; GC ptr vars +{V07}
ldr r0, [r3+0x04]
; gcrRegs +[r0]
@@ -391,11 +374,11 @@ G_M45709_IG17: ; bbWeight=2, gcVars=0000000011800002 {V07 V08 V32 V42}, g
; gcrRegs -[r0]
lsls r1, r0, 1
cmp r1, r2
- bge SHORT G_M45709_IG18
+ bge SHORT G_M45709_IG16
mov r1, r2
- b SHORT G_M45709_IG18
+ b SHORT G_M45709_IG16
;; size=14 bbWeight=2 PerfScore 14.00
-G_M45709_IG18: ; bbWeight=2, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, byref
+G_M45709_IG16: ; bbWeight=2, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, byref
adds r0, r3, 4
; byrRegs +[r0]
movw lr, 0xd1ff
@@ -408,13 +391,13 @@ G_M45709_IG18: ; bbWeight=2, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r
ldr r3, [sp+0x0C] // [V32 tmp18]
; gcrRegs +[r3]
;; size=20 bbWeight=2 PerfScore 14.00
-G_M45709_IG19: ; bbWeight=4, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M45709_IG17: ; bbWeight=4, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r1, [r3+0x04]
; gcrRegs +[r1]
ldr r0, [r3+0x08]
ldr lr, [r1+0x04]
cmp r0, lr
- bhs G_M45709_IG26
+ bhs G_M45709_IG24
mov lr, 12
mul r0, r0, lr
adds r0, 8
@@ -460,9 +443,9 @@ G_M45709_IG19: ; bbWeight=4, gcrefRegs=0148 {r3 r6 r8}, byrefRegs=0030 {r
str r0, [sp+0x28] // [V43 tmp29]
...
-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
...
+22 (+4.20%) : 20382.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span
1[ubyte],byref,byref):ubyte (FullOpts)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T26] ( 3, 1.50) byref -> [sp+0x48] single-def
-; V03 arg3 [V03,T28] ( 2, 1 ) byref -> [sp+0x4C] single-def
-; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r7 single-def
-; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r8 single-def
-; V06 loc2 [V06,T16] ( 7, 4 ) int -> r9
-; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x0C] spill-single-def
-; V08 loc4 [V08,T04] ( 10, 19.50) int -> r10
-; V09 loc5 [V09,T02] ( 19, 20.50) int -> [sp+0x08]
-; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x00] spill-single-def
-; V11 loc7 [V11,T13] ( 5, 6 ) int -> lr
+; V00 arg0 [V00,T14] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T15] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T22] ( 3, 2.50) byref -> [sp+0x50] single-def
+; V03 arg3 [V03,T28] ( 2, 1.50) byref -> [sp+0x54] single-def
+; V04 loc0 [V04,T11] ( 6, 7 ) byref -> r8 single-def
+; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r9 single-def
+; V06 loc2 [V06,T16] ( 7, 4.50) int -> r10
+; V07 loc3 [V07,T18] ( 6, 3.50) int -> [sp+0x14] spill-single-def
+; V08 loc4 [V08,T03] ( 10, 20 ) int -> [sp+0x10]
+; V09 loc5 [V09,T02] ( 19, 21 ) int -> [sp+0x0C]
+; V10 loc6 [V10,T06] ( 10, 11 ) byref -> [sp+0x04] spill-single-def
+; V11 loc7 [V11,T13] ( 5, 6.50) int -> r12
; V12 loc8 [V12,T10] ( 17, 8.50) int -> r1
-; V13 loc9 [V13,T27] ( 3, 1.50) int -> lr
-; V14 loc10 [V14,T20] ( 5, 2.50) int -> r12
-; V15 loc11 [V15,T22] ( 4, 2 ) int -> r0
+; V13 loc9 [V13,T27] ( 3, 1.50) int -> r12
+; V14 loc10 [V14,T20] ( 5, 2.50) int -> r4
+; V15 loc11 [V15,T23] ( 4, 2 ) int -> r0
;* V16 loc12 [V16 ] ( 0, 0 ) int -> zero-ref
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[byte]>
@@ -31,329 +31,339 @@
;* V20 tmp3 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]>
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
-; V23 tmp6 [V23,T03] ( 6, 20 ) int -> r5 "Inline return value spill temp"
+; V23 tmp6 [V23,T04] ( 6, 20 ) int -> r6 "Inline return value spill temp"
; V24 tmp7 [V24,T00] ( 5, 40 ) byref -> r0 "Inlining Arg"
; V25 tmp8 [V25,T05] ( 5, 14 ) int -> r1 "Inline stloc first use temp"
-; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r12 "Inline stloc first use temp"
+; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r5 "Inline stloc first use temp"
; V27 tmp10 [V27,T08] ( 3, 10 ) int -> r4 "Inline stloc first use temp"
; V28 tmp11 [V28,T09] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
; V29 tmp12 [V29,T01] ( 4, 32 ) byref -> r0 "Inlining Arg"
; V30 tmp13 [V30,T17] ( 4, 4 ) byref -> r0 single-def "Inlining Arg"
;* V31 tmp14 [V31 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp15 [V32 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
-; V33 tmp16 [V33,T23] ( 2, 2 ) byref -> r7 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp16 [V33,T24] ( 2, 2 ) byref -> r8 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp17 [V34 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V35 tmp18 [V35,T24] ( 2, 2 ) byref -> r8 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp18 [V35,T25] ( 2, 2 ) byref -> r9 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp19 [V36 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V37 tmp20 [V37,T29] ( 2, 1 ) byref -> r2 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp20 [V37,T29] ( 2, 1 ) byref -> lr single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V39 tmp22 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T19] ( 4, 3.50) int -> [sp+0x04] spill-single-def "V00.[004..008)"
-; V42 tmp25 [V42,T25] ( 2, 2 ) int -> r6 "V01.[004..008)"
+; V41 tmp24 [V41,T19] ( 4, 3.50) int -> [sp+0x08] spill-single-def "V00.[004..008)"
+; V42 tmp25 [V42,T26] ( 2, 2 ) int -> r7 "V01.[004..008)"
; V43 cse0 [V43,T21] ( 5, 2.50) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M25359_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, 20
- add r11, sp, 48
+ sub sp, 28
+ add r11, sp, 56
;; size=12 bbWeight=1 PerfScore 4.00
G_M25359_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x3C]
- str r5, [sp+0x04]
ldr r6, [sp+0x44]
- ldr r7, [sp+0x38]
- ; byrRegs +[r7]
+ str r6, [sp+0x08]
+ ldr r7, [sp+0x4C]
ldr r8, [sp+0x40]
; byrRegs +[r8]
+ ldr r9, [sp+0x48]
+ ; byrRegs +[r9]
mvn r0, 3
- and r9, r5, r0
- str r6, [sp+0x0C]
- mov r10, 0
+ and r10, r6, r0
+ str r7, [sp+0x14]
movs r3, 0
- str r3, [sp+0x08] // [V09 loc5]
- cmp r5, 0
- beq G_M25359_IG23
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- str r2, [sp] // [V10 loc6]
- ; GC ptr vars +{V10}
- asr r0, r9, 2
- movs r1, 3
- mul r0, r0, r1
- cmp r6, r0
- blt SHORT G_M25359_IG04
- sub lr, r9, 4
- b SHORT G_M25359_IG05
- ;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, gcvars, byref
- mov r0, r6
- movs r1, 3
+ str r3, [sp+0x10] // [V08 loc4]
+ movs r2, 0
+ str r2, [sp+0x0C] // [V09 loc5]
+ cmp r6, 0
+ beq G_M25359_IG25
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
movw lr, 0xd1ff
movt lr, 0xd1ff
- blx lr // CORINFO_HELP_DIV
+ str lr, [sp+0x04] // [V10 loc6]
+ ; GC ptr vars +{V10}
+ asr r0, r10, 2
+ movs r1, 3
+ mul r0, r0, r1
+ cmp r7, r0
+ blt SHORT G_M25359_IG04
+ sub r12, r10, 4
+ b SHORT G_M25359_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
+G_M25359_IG04: ; bbWeight=0.50, gcVars=00000040 {V10}, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, gcvars, byref
+ mov r0, r7
+ movs r1, 3
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_DIV
; gcr arg pop 0
- lsl lr, r0, 2
- ldr r6, [sp+0x0C] // [V07 loc3]
+ lsl r12, r0, 2
+ ldr r7, [sp+0x14] // [V07 loc3]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- cmp lr, 0
+G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r12, 0
ble SHORT G_M25359_IG08
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- lsl r0, r10, 1
- adds r0, r7, r0
+G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r3, [sp+0x10] // [V08 loc4]
+ lsls r0, r3, 1
+ add r0, r8
; byrRegs +[r0]
ldrh r1, [r0]
- ldrh r12, [r0+0x02]
+ ldrh r5, [r0+0x02]
ldrh r4, [r0+0x04]
ldrh r0, [r0+0x06]
; byrRegs -[r0]
+ orr r6, r1, r5
+ orrs r6, r4
+ orrs r6, r0
+ mvn r7, 255
+ ands r6, r7
+ cmp r6, 0
+ beq SHORT G_M25359_IG09
+ ;; size=32 bbWeight=4 PerfScore 56.00
+G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ mov r6, -1
+ b SHORT G_M25359_IG10
+ ;; size=6 bbWeight=2 PerfScore 4.00
+G_M25359_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ ldr r3, [sp+0x10] // [V08 loc4]
+ b SHORT G_M25359_IG11
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M25359_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref
+ ldr lr, [sp+0x04] // [V10 loc6]
+ ; byrRegs +[lr]
+ ldrsb r1, [lr+r1]
+ lsls r1, r1, 18
+ ldrsb r0, [lr+r0]
+ orrs r0, r1
+ ldrsb r1, [lr+r5]
+ lsls r1, r1, 12
+ orrs r0, r1
+ ldrsb r1, [lr+r4]
+ lsls r1, r1, 6
+ orrs r1, r0
+ mov r6, r1
+ ;; size=34 bbWeight=2 PerfScore 24.00
+G_M25359_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[lr]
+ cmp r6, 0
+ blt G_M25359_IG29
+ ldr r2, [sp+0x0C] // [V09 loc5]
+ add r0, r9, r2
+ ; byrRegs +[r0]
+ asrs r1, r6, 16
+ strb r1, [r0]
+ asrs r1, r6, 8
+ strb r1, [r0+0x01]
+ strb r6, [r0+0x02]
+ adds r2, r2, 3
+ adds r3, r3, 4
+ cmp r3, r12
+ blt SHORT G_M25359_IG18
+ ;; size=30 bbWeight=4 PerfScore 52.00
+G_M25359_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ ; byrRegs -[r0]
+ sub r0, r10, 4
+ cmp r12, r0
+ bne SHORT G_M25359_IG17
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0300 {r8 r9}, byref, isz
+ cmp r3, r10
+ beq SHORT G_M25359_IG16
+ lsl r0, r10, 1
+ sub r1, r0, 8
+ ldrh r1, [r8+r1]
+ sub r12, r0, 6
+ ldrh r12, [r8+r12]
+ subs r4, r0, 4
+ ldrh r4, [r8+r4]
+ subs r0, r0, 2
+ ldrh r0, [r8+r0]
orr r5, r1, r12
orrs r5, r4
orrs r5, r0
mvn r6, 255
ands r5, r6
cmp r5, 0
- beq SHORT G_M25359_IG09
- ;; size=34 bbWeight=4 PerfScore 52.00
-G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0180 {r7 r8}, byref, isz
- mov r5, -1
...
+8 (+4.94%) : 787.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (FullOpts)
@@ -12,10 +12,10 @@
; V01 arg0 [V01,T05] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V02 arg1 [V02,T06] ( 3, 4 ) ref -> r7 class-hnd single-def <System.__Canon>
; V03 arg2 [V03,T03] ( 4, 7 ) int -> r5 single-def
-; V04 arg3 [V04,T11] ( 2, 1 ) byref -> [sp+0x28] single-def
-; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r8 class-hnd single-def <<unknown class>>
+; V04 arg3 [V04,T11] ( 2, 1.50) byref -> r8 single-def
+; V05 loc0 [V05,T08] ( 2, 3 ) ref -> r9 class-hnd single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r9 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> r10 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T01] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
@@ -28,21 +28,24 @@
; V17 cse1 [V17,T10] ( 2, 2 ) int -> r1 "CSE - aggressive"
; V18 rat0 [V18,T02] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
- str r0, [r11-0x1C]
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 12
+ add r11, sp, 40
+ str r0, [r11-0x24]
mov r6, r0
mov r7, r2
; gcrRegs +[r7]
mov r5, r3
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x30]
+ ; byrRegs +[r8]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs +[r1]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r9, [r1+0x10]
+ ; gcrRegs +[r9]
ldr r4, [r1+0x14]
; gcrRegs +[r4]
ldr r1, [r4+0x04]
@@ -54,29 +57,29 @@ G_M3988_IG02: ; bbWeight=1, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, by
; gcr arg pop 0
lsls r0, r0, 2
adds r0, 8
- ldr r9, [r4+r0]
- ; gcrRegs +[r9]
+ ldr r10, [r4+r0]
+ ; gcrRegs +[r10]
dmb 15
- cmp r9, 0
+ cmp r10, 0
beq SHORT G_M3988_IG09
;; size=38 bbWeight=1 PerfScore 13.00
-G_M3988_IG03: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG03: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r4]
- ldr r0, [r9+0x10]
+ ldr r0, [r10+0x10]
cmp r5, r0
bne SHORT G_M3988_IG08
;; size=8 bbWeight=4 PerfScore 12.00
-G_M3988_IG04: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r4, [r0+0x24]
cmp r4, 0
beq SHORT G_M3988_IG06
;; size=10 bbWeight=2 PerfScore 10.00
-G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M3988_IG05: ; bbWeight=1.60, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M3988_IG07
;; size=2 bbWeight=1.60 PerfScore 1.60
-G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -86,10 +89,10 @@ G_M3988_IG06: ; bbWeight=0.40, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.40 PerfScore 2.80
-G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
+G_M3988_IG07: ; bbWeight=2, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r1, [r10+0x04]
; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r9
; gcrRegs +[r0]
mov r2, r7
; gcrRegs +[r2]
@@ -100,43 +103,42 @@ G_M3988_IG07: ; bbWeight=2, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {},
cmp r0, 0
bne SHORT G_M3988_IG11
;; size=16 bbWeight=2 PerfScore 14.00
-G_M3988_IG08: ; bbWeight=4, gcrefRegs=0380 {r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r9+0x0C]
+G_M3988_IG08: ; bbWeight=4, gcrefRegs=0680 {r7 r9 r10}, byrefRegs=0100 {r8}, byref, isz
+ ldr r10, [r10+0x0C]
dmb 15
- cmp r9, 0
+ cmp r10, 0
bne SHORT G_M3988_IG03
;; size=14 bbWeight=4 PerfScore 16.00
-G_M3988_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7-r9]
+G_M3988_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; gcrRegs -[r7 r9-r10]
movs r0, 0
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- str r0, [r5]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3988_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r5]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r9]
- ldr r5, [sp+0x28] // [V04 arg3]
- ; byrRegs +[r5]
- ldr r1, [r9+0x08]
+ str r0, [r8]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r8]
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M3988_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0400 {r10}, byrefRegs=0100 {r8}, gcvars, byref
+ ; gcrRegs +[r10]
+ ; byrRegs +[r8]
+ ldr r1, [r10+0x08]
; gcrRegs +[r1]
- mov r0, r5
+ mov r0, r8
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r9]
- ; byrRegs -[r0 r5]
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0 r8]
movs r0, 1
- ;; size=20 bbWeight=0.50 PerfScore 3.50
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
G_M3988_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 162, prolog size 18, PerfScore 81.40, instruction count 58, allocated bytes for code 162 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
+; Total bytes of code 170, prolog size 24, PerfScore 85.40, instruction count 60, allocated bytes for code 170 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +150,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +162,8 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32
+ 03 add sp, sp, #12 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
+22 (+12.22%) : 2043.dasm - BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
@@ -12,116 +12,115 @@
; V01 arg1 [V01,T03] ( 7, 12 ) byref -> r1 single-def
; V02 arg2 [V02,T06] ( 4, 3 ) int -> r2 single-def
; V03 arg3 [V03,T05] ( 6, 8 ) int -> r3 single-def
-; V04 arg4 [V04,T11] ( 3, 2.50) byref -> lr single-def
-; V05 arg5 [V05,T14] ( 2, 1 ) byref -> [sp+0x2C] single-def
-; V06 loc0 [V06,T12] ( 3, 2.50) int -> r12
-; V07 loc1 [V07,T13] ( 3, 2 ) int -> r5
+; V04 arg4 [V04,T12] ( 3, 2.50) byref -> lr single-def
+; V05 arg5 [V05,T14] ( 2, 1.50) byref -> r12 single-def
+; V06 loc0 [V06,T11] ( 3, 3 ) int -> r5
+; V07 loc1 [V07,T13] ( 3, 2 ) int -> r6
; V08 loc2 [V08,T10] ( 5, 4 ) int -> r4
; V09 loc3 [V09,T08] ( 2, 4.50) int -> r0
-; V10 loc4 [V10,T09] ( 2, 4.50) int -> r5
+; V10 loc4 [V10,T09] ( 2, 4.50) int -> r6
; V11 loc5 [V11,T00] ( 6, 20.50) int -> r2
; V12 loc6 [V12,T02] ( 4, 16 ) int -> lr
; V13 loc7 [V13,T01] ( 5, 20 ) byref -> r4
-; V14 loc8 [V14,T04] ( 3, 12 ) byref -> r6
+; V14 loc8 [V14,T04] ( 3, 12 ) byref -> r7
; V15 OutArgs [V15 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M61579_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- sub sp, 16
- add r11, sp, 32
- ldr lr, [sp+0x28] // [V04 arg4]
+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ ldr lr, [sp+0x30]
; byrRegs +[lr]
- ;; size=14 bbWeight=1 PerfScore 4.00
-G_M61579_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4003 {r0 r1 lr}, byref, isz
+ ldr r12, [sp+0x34]
+ ; byrRegs +[r12]
+ ;; size=18 bbWeight=1 PerfScore 5.00
+G_M61579_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=5003 {r0 r1 r12 lr}, byref, isz
; byrRegs +[r0-r1]
ldr r4, [lr]
- add r12, r4, 1
- str r12, [lr]
- mov r12, r4
- ldr r5, [r1+0x14]
- lsl r6, r12, 6
- adds r5, r5, r6
+ adds r5, r4, 1
+ str r5, [lr]
+ mov r5, r4
+ ldr r6, [r1+0x14]
+ lsls r7, r5, 6
+ adds r6, r6, r7
cmp r3, 2
bgt SHORT G_M61579_IG07
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M61579_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+ ;; size=22 bbWeight=1 PerfScore 9.00
+G_M61579_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1002 {r1 r12}, byref, isz
; byrRegs -[r0 lr]
ldr r0, [r1+0x08]
lsl lr, r2, 2
add r0, lr
- ldrsb r2, [r5]
+ ldrsb r2, [r6]
movs r2, 0
cmp r3, 0
ble SHORT G_M61579_IG05
;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M61579_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+G_M61579_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1002 {r1 r12}, byref, isz
lsl lr, r2, 2
ldr lr, [r0+lr]
lsls r4, r2, 5
- adds r4, r5, r4
- ldr r6, [r1]
- lsl r7, lr, 5
- adds r6, r6, r7
- ldr r7, [r6]
- str r7, [r4]
- ldr r7, [r6+0x04]
- str r7, [r4+0x04]
- ldr r7, [r6+0x08]
- str r7, [r4+0x08]
- ldr r7, [r6+0x10]
- str r7, [r4+0x10]
- ldr r7, [r6+0x14]
- str r7, [r4+0x14]
- ldr r7, [r6+0x18]
- str r7, [r4+0x18]
- ldr r6, [r1+0x04]
- lsl r7, lr, 2
- ldr r6, [r6+r7]
- str r6, [r4+0x1C]
+ adds r4, r6, r4
+ ldr r7, [r1]
+ lsl r8, lr, 5
+ add r7, r8
+ ldr r8, [r7]
+ str r8, [r4]
+ ldr r8, [r7+0x04]
+ str r8, [r4+0x04]
+ ldr r8, [r7+0x08]
+ str r8, [r4+0x08]
+ ldr r8, [r7+0x10]
+ str r8, [r4+0x10]
+ ldr r8, [r7+0x14]
+ str r8, [r4+0x14]
+ ldr r8, [r7+0x18]
+ str r8, [r4+0x18]
+ ldr r7, [r1+0x04]
+ lsl r8, lr, 2
+ ldr r7, [r7+r8]
+ str r7, [r4+0x1C]
rsbs lr, lr, 0
add lr, lr, -1
str lr, [r4+0x0C]
adds r2, r2, 1
cmp r2, r3
blt SHORT G_M61579_IG04
- ;; size=72 bbWeight=4 PerfScore 116.00
-G_M61579_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=98 bbWeight=4 PerfScore 116.00
+G_M61579_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
; byrRegs -[r1]
movs r0, 0
- ldr r1, [sp+0x2C] // [V05 arg5]
- ; byrRegs +[r1]
- str r0, [r1]
- mov r0, r12
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M61579_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 16
- pop {r4,r5,r6,r7,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M61579_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=4003 {r0 r1 lr}, gcvars, byref
- ; byrRegs +[r0 lr]
- str r4, [sp] // [V15 OutArgs]
- str lr, [sp+0x04] // [V15 OutArgs+0x04]
+ str r0, [r12]
+ mov r0, r5
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M61579_IG06: ; bbWeight=1, epilog, nogc, extend
+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M61579_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=5003 {r0 r1 r12 lr}, gcvars, byref
+ ; byrRegs +[r0-r1 lr]
+ str r4, [sp]
+ str lr, [sp+0x04]
; byr arg write
- ldr lr, [sp+0x2C] // [V05 arg5]
- str lr, [sp+0x08] // [V15 OutArgs+0x08]
+ str r12, [sp+0x08]
; byr arg write
movw lr, 0xd1ff
; byrRegs -[lr]
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; byrRegs -[r0-r1]
+ ; byrRegs -[r0-r1 r12]
; gcr arg pop 0
mov r0, r4
- ;; size=30 bbWeight=0.50 PerfScore 4.50
+ ;; size=26 bbWeight=0.50 PerfScore 4.00
G_M61579_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 16
- pop {r4,r5,r6,r7,r11,pc}
+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 180, prolog size 14, PerfScore 141.00, instruction count 66, allocated bytes for code 180 (MethodHash=a6360f74) for method BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
+; Total bytes of code 202, prolog size 18, PerfScore 143.50, instruction count 65, allocated bytes for code 202 (MethodHash=a6360f74) for method BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -133,7 +132,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
+ Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -145,7 +144,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ 05 add sp, sp, #20 ; opsize 16
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm.checked.mch |
191 |
25 |
35 |
131 |
-186 |
+588 |
benchmarks.run_pgo.linux.arm.checked.mch |
105 |
16 |
32 |
57 |
-82 |
+226 |
benchmarks.run_tiered.linux.arm.checked.mch |
188 |
25 |
33 |
130 |
-146 |
+590 |
coreclr_tests.run.linux.arm.checked.mch |
5,266 |
629 |
982 |
3,655 |
-10,598 |
+9,972 |
libraries.crossgen2.linux.arm.checked.mch |
418 |
50 |
61 |
307 |
-692 |
+520 |
libraries.pmi.linux.arm.checked.mch |
958 |
194 |
192 |
572 |
-2,064 |
+2,742 |
libraries_tests.run.linux.arm.Release.mch |
3,224 |
471 |
761 |
1,992 |
-1,918 |
+6,690 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
980 |
215 |
279 |
486 |
-2,950 |
+3,906 |
realworld.run.linux.arm.checked.mch |
269 |
44 |
58 |
167 |
-718 |
+1,074 |
|
11,599 |
1,669 |
2,433 |
7,497 |
-19,354 |
+26,308 |
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 |
198,321 |
14 |
198,307 |
77 (0.04%) |
77 (0.04%) |
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,677 |
345,734 |
1,103,943 |
55,309 (3.68%) |
55,309 (3.68%) |
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: 13691660 (overridden on cmd)
Total bytes of diff: 13692062 (overridden on cmd)
Total bytes of delta: 402 (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)
54 : 13381.dasm (19.01 % of base)
44 : 27868.dasm (1.34 % of base)
44 : 28013.dasm (1.36 % of base)
34 : 31132.dasm (3.20 % of base)
34 : 4669.dasm (3.94 % of base)
30 : 7072.dasm (3.32 % of base)
26 : 14588.dasm (1.76 % of base)
22 : 16220.dasm (3.07 % of base)
22 : 14883.dasm (4.12 % of base)
20 : 26383.dasm (2.54 % of base)
12 : 13825.dasm (1.03 % of base)
12 : 2341.dasm (0.63 % of base)
12 : 24266.dasm (1.83 % of base)
10 : 37038.dasm (0.78 % of base)
10 : 2906.dasm (1.17 % of base)
10 : 26382.dasm (0.41 % of base)
8 : 7246.dasm (1.90 % of base)
8 : 789.dasm (4.94 % of base)
8 : 25520.dasm (0.24 % of base)
Top file improvements (bytes):
-28 : 12745.dasm (-1.61 % of base)
-24 : 24822.dasm (-1.30 % of base)
-22 : 13325.dasm (-1.77 % of base)
-12 : 34376.dasm (-2.13 % of base)
-12 : 34378.dasm (-0.42 % of base)
-10 : 23376.dasm (-0.73 % of base)
-10 : 24903.dasm (-1.09 % of base)
-6 : 9490.dasm (-0.36 % of base)
-6 : 7387.dasm (-1.59 % of base)
-6 : 24673.dasm (-0.61 % of base)
-4 : 28497.dasm (-0.47 % of base)
-4 : 28499.dasm (-0.47 % of base)
-4 : 4387.dasm (-0.97 % of base)
-4 : 28502.dasm (-0.47 % of base)
-4 : 13542.dasm (-0.25 % of base)
-4 : 21792.dasm (-0.35 % of base)
-4 : 2310.dasm (-2.00 % of base)
-4 : 4382.dasm (-0.96 % of base)
-4 : 733.dasm (-1.06 % of base)
-4 : 13684.dasm (-0.24 % of base)
46 total files with Code Size differences (22 improved, 24 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)
54 (19.01 % 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)
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)
34 (3.94 % 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)
34 (3.20 % of base) : 31132.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
30 (3.32 % of base) : 7072.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
26 (1.76 % of base) : 14588.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (FullOpts)
22 (4.12 % of base) : 14883.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
22 (3.07 % of base) : 16220.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
20 (2.54 % of base) : 26383.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
12 (1.03 % of base) : 13825.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
12 (0.63 % of base) : 2341.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
10 (0.41 % of base) : 26382.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
10 (0.78 % of base) : 37038.dasm - System.Buffers.SequenceReader`1[int]:TryReadToInternal(byref,int,ubyte,int):ubyte:this (FullOpts)
10 (1.17 % of base) : 2906.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
8 (0.24 % of base) : 25520.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:MakeParametersAndBindReturnType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]:this (FullOpts)
8 (0.37 % of base) : 28348.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
8 (1.90 % of base) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
Top method improvements (bytes):
-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)
-24 (-1.30 % of base) : 24822.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
-22 (-1.77 % of base) : 13325.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-12 (-2.13 % of base) : 34376.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (FullOpts)
-12 (-0.42 % of base) : 34378.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
-10 (-1.09 % of base) : 24903.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
-10 (-0.73 % of base) : 23376.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-6 (-0.61 % 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)
-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.36 % of base) : 9490.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:EmitNewObject(System.Reflection.Emit.ILGenerator,System.Type,Utf8Json.Internal.Emit.MetaType,Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder+DeserializeInfo[],ubyte):System.Reflection.Emit.LocalBuilder (FullOpts)
-4 (-0.24 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.00 % of base) : 2310.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-4 (-0.25 % of base) : 13542.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (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.35 % of base) : 21792.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.47 % of base) : 28497.dasm - System.Text.StringBuilder:InsertSpanFormattable[byte](int,byte):System.Text.StringBuilder:this (FullOpts)
-4 (-0.47 % of base) : 28502.dasm - System.Text.StringBuilder:InsertSpanFormattable[int](int,int):System.Text.StringBuilder:this (FullOpts)
-4 (-0.47 % of base) : 28499.dasm - System.Text.StringBuilder:InsertSpanFormattable[short](int,short):System.Text.StringBuilder:this (FullOpts)
Top method regressions (percentages):
54 (19.01 % 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)
8 (4.94 % of base) : 789.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
22 (4.12 % of base) : 14883.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
34 (3.94 % 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)
30 (3.32 % of base) : 7072.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
34 (3.20 % of base) : 31132.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
22 (3.07 % of base) : 16220.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
20 (2.54 % of base) : 26383.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
26 (1.76 % of base) : 14588.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (FullOpts)
6 (1.71 % of base) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
4 (1.49 % of base) : 13103.dasm - System.Buffers.Text.Utf8Parser:TryParseUInt64X(System.ReadOnlySpan`1[ubyte],byref,byref):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)
44 (1.34 % of base) : 27868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
10 (1.17 % of base) : 2906.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
12 (1.03 % of base) : 13825.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
4 (0.87 % of base) : 28268.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:LookupLocal(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:this (FullOpts)
10 (0.78 % of base) : 37038.dasm - System.Buffers.SequenceReader`1[int]:TryReadToInternal(byref,int,ubyte,int):ubyte:this (FullOpts)
Top method improvements (percentages):
-12 (-2.13 % of base) : 34376.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (FullOpts)
-4 (-2.00 % of base) : 2310.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-22 (-1.77 % of base) : 13325.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):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)
-24 (-1.30 % of base) : 24822.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
-10 (-1.09 % of base) : 24903.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):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)
-10 (-0.73 % of base) : 23376.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-6 (-0.61 % 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)
-4 (-0.47 % of base) : 28502.dasm - System.Text.StringBuilder:InsertSpanFormattable[int](int,int):System.Text.StringBuilder:this (FullOpts)
-4 (-0.47 % of base) : 28497.dasm - System.Text.StringBuilder:InsertSpanFormattable[byte](int,byte):System.Text.StringBuilder:this (FullOpts)
-4 (-0.47 % of base) : 28499.dasm - System.Text.StringBuilder:InsertSpanFormattable[short](int,short):System.Text.StringBuilder:this (FullOpts)
-12 (-0.42 % of base) : 34378.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
-6 (-0.36 % of base) : 9490.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:EmitNewObject(System.Reflection.Emit.ILGenerator,System.Type,Utf8Json.Internal.Emit.MetaType,Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder+DeserializeInfo[],ubyte):System.Reflection.Emit.LocalBuilder (FullOpts)
-4 (-0.35 % of base) : 21792.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.28 % of base) : 28498.dasm - System.Text.StringBuilder:InsertSpanFormattable[ubyte](int,ubyte):System.Text.StringBuilder:this (FullOpts)
-2 (-0.28 % of base) : 28503.dasm - System.Text.StringBuilder:InsertSpanFormattable[uint](int,uint):System.Text.StringBuilder: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: 24676764 (overridden on cmd)
Total bytes of diff: 24676908 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
38 : 37571.dasm (3.53 % of base)
34 : 24027.dasm (3.94 % of base)
22 : 28225.dasm (2.68 % of base)
16 : 4225.dasm (9.88 % of base)
12 : 44669.dasm (1.68 % of base)
10 : 17721.dasm (0.75 % of base)
8 : 2421.dasm (4.94 % of base)
6 : 46482.dasm (0.38 % of base)
6 : 16715.dasm (0.38 % of base)
6 : 18510.dasm (0.38 % of base)
6 : 22594.dasm (0.43 % of base)
6 : 25606.dasm (0.38 % of base)
6 : 43053.dasm (0.38 % of base)
6 : 45083.dasm (0.38 % of base)
4 : 13986.dasm (1.24 % of base)
4 : 8290.dasm (0.56 % of base)
4 : 24592.dasm (1.24 % of base)
4 : 4112.dasm (0.20 % of base)
2 : 46260.dasm (0.25 % of base)
2 : 48000.dasm (0.25 % of base)
Top file improvements (bytes):
-10 : 1986.dasm (-0.56 % of base)
-6 : 43918.dasm (-0.38 % of base)
-6 : 5440.dasm (-1.55 % of base)
-6 : 21116.dasm (-0.38 % of base)
-6 : 23094.dasm (-0.38 % of base)
-6 : 43722.dasm (-0.38 % of base)
-6 : 44935.dasm (-0.38 % of base)
-4 : 6588.dasm (-0.96 % of base)
-4 : 13809.dasm (-0.72 % of base)
-4 : 6586.dasm (-0.95 % of base)
-4 : 13812.dasm (-0.49 % of base)
-4 : 17233.dasm (-0.24 % of base)
-4 : 17719.dasm (-0.72 % of base)
-4 : 22168.dasm (-0.49 % of base)
-4 : 2268.dasm (-1.04 % of base)
-4 : 44658.dasm (-0.49 % of base)
41 total files with Code Size differences (16 improved, 25 regressed), 24 unchanged.
Top method regressions (bytes):
38 (3.53 % of base) : 37571.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
34 (3.94 % 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)
22 (2.68 % of base) : 28225.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[int,int],System.__Canon]:TryInsert(System.ValueTuple`2[int,int],System.__Canon,ubyte):ubyte:this (Tier0-FullOpts)
16 (9.88 % of base) : 4225.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
12 (1.68 % of base) : 44669.dasm - System.RuntimeType+RuntimeTypeCache:GetName(int):System.String:this (Tier1)
10 (0.75 % of base) : 17721.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (Tier0-FullOpts)
8 (4.94 % of base) : 2421.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
6 (0.38 % of base) : 46482.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 16715.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 18510.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.43 % of base) : 22594.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 25606.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 43053.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 45083.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
4 (0.56 % of base) : 8290.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier0-FullOpts)
4 (1.24 % of base) : 13986.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
4 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
4 (0.20 % of base) : 4112.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier0-FullOpts)
2 (0.67 % of base) : 41065.dasm - System.Enum+EnumInfo`1[uint]:.ctor(ubyte,uint[],System.String[]):this (Tier1)
2 (0.62 % of base) : 16865.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
Top method improvements (bytes):
-10 (-0.56 % of base) : 1986.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier0-FullOpts)
-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)
-6 (-0.38 % of base) : 43918.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 21116.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 23094.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 43722.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 44935.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-4 (-0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (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)
-4 (-0.72 % of base) : 13809.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
-4 (-0.72 % of base) : 17719.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
-4 (-0.49 % of base) : 13812.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
-4 (-0.49 % of base) : 22168.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
-4 (-0.49 % of base) : 44658.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
Top method regressions (percentages):
16 (9.88 % of base) : 4225.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
8 (4.94 % of base) : 2421.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
34 (3.94 % 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)
38 (3.53 % of base) : 37571.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
22 (2.68 % of base) : 28225.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[int,int],System.__Canon]:TryInsert(System.ValueTuple`2[int,int],System.__Canon,ubyte):ubyte:this (Tier0-FullOpts)
12 (1.68 % of base) : 44669.dasm - System.RuntimeType+RuntimeTypeCache:GetName(int):System.String: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 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
10 (0.75 % of base) : 17721.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (Tier0-FullOpts)
2 (0.67 % of base) : 41065.dasm - System.Enum+EnumInfo`1[uint]:.ctor(ubyte,uint[],System.String[]):this (Tier1)
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) : 17741.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)
4 (0.56 % of base) : 8290.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier0-FullOpts)
6 (0.43 % of base) : 22594.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 46482.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 16715.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 18510.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
6 (0.38 % of base) : 25606.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
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)
-4 (-0.72 % of base) : 13809.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
-4 (-0.72 % of base) : 17719.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
-10 (-0.56 % of base) : 1986.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier0-FullOpts)
-4 (-0.49 % of base) : 13812.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
-4 (-0.49 % of base) : 22168.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
-4 (-0.49 % of base) : 44658.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
-6 (-0.38 % of base) : 43918.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 21116.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 23094.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 43722.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-6 (-0.38 % of base) : 44935.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-4 (-0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
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: 17983552 (overridden on cmd)
Total bytes of diff: 17983996 (overridden on cmd)
Total bytes of delta: 444 (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)
54 : 32704.dasm (19.01 % of base)
44 : 54644.dasm (1.34 % of base)
44 : 55791.dasm (1.36 % of base)
34 : 60296.dasm (3.20 % of base)
34 : 6984.dasm (3.94 % of base)
30 : 13631.dasm (3.37 % of base)
28 : 44994.dasm (3.27 % of base)
26 : 35223.dasm (1.76 % of base)
22 : 33762.dasm (4.12 % of base)
22 : 36990.dasm (3.07 % of base)
20 : 52470.dasm (2.67 % of base)
14 : 29327.dasm (1.16 % of base)
12 : 9689.dasm (0.63 % of base)
10 : 65350.dasm (0.78 % of base)
10 : 49717.dasm (0.41 % of base)
8 : 2024.dasm (4.94 % of base)
8 : 47885.dasm (0.24 % of base)
8 : 16392.dasm (1.90 % of base)
8 : 55315.dasm (0.37 % of base)
Top file improvements (bytes):
-24 : 46239.dasm (-1.30 % of base)
-12 : 63889.dasm (-2.13 % of base)
-12 : 63891.dasm (-0.42 % of base)
-10 : 53269.dasm (-0.71 % of base)
-10 : 46381.dasm (-1.09 % of base)
-8 : 31813.dasm (-0.45 % of base)
-6 : 17926.dasm (-0.36 % of base)
-6 : 19472.dasm (-1.59 % of base)
-6 : 45853.dasm (-0.61 % of base)
-4 : 43220.dasm (-0.35 % of base)
-4 : 4857.dasm (-0.96 % of base)
-4 : 54412.dasm (-0.47 % of base)
-4 : 9642.dasm (-2.00 % of base)
-4 : 29579.dasm (-0.24 % of base)
-4 : 32268.dasm (-0.25 % of base)
-4 : 54415.dasm (-0.47 % of base)
-4 : 1946.dasm (-1.06 % of base)
-4 : 4865.dasm (-0.97 % of base)
-4 : 54419.dasm (-0.47 % of base)
-2 : 54417.dasm (-0.28 % of base)
45 total files with Code Size differences (22 improved, 23 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)
54 (19.01 % 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)
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)
34 (3.94 % 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)
34 (3.20 % of base) : 60296.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
30 (3.37 % of base) : 13631.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte: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)
26 (1.76 % of base) : 35223.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (Tier0-FullOpts)
22 (4.12 % of base) : 33762.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
22 (3.07 % of base) : 36990.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (Tier0-FullOpts)
20 (2.67 % of base) : 52470.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
14 (1.16 % of base) : 29327.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (Tier0-FullOpts)
12 (0.63 % of base) : 9689.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
10 (0.41 % of base) : 49717.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier0-FullOpts)
10 (0.78 % of base) : 65350.dasm - System.Buffers.SequenceReader`1[int]:TryReadToInternal(byref,int,ubyte,int):ubyte:this (Tier0-FullOpts)
8 (0.24 % of base) : 47885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:MakeParametersAndBindReturnType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]:this (Tier0-FullOpts)
8 (0.37 % of base) : 55315.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (Tier0-FullOpts)
8 (1.90 % of base) : 16392.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (Tier0-FullOpts)
8 (4.94 % of base) : 2024.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
Top method improvements (bytes):
-24 (-1.30 % of base) : 46239.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (Tier0-FullOpts)
-12 (-2.13 % of base) : 63889.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (Tier0-FullOpts)
-12 (-0.42 % of base) : 63891.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-10 (-1.09 % of base) : 46381.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier0-FullOpts)
-10 (-0.71 % of base) : 53269.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (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 (-0.61 % 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)
-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.36 % of base) : 17926.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:EmitNewObject(System.Reflection.Emit.ILGenerator,System.Type,Utf8Json.Internal.Emit.MetaType,Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder+DeserializeInfo[],ubyte):System.Reflection.Emit.LocalBuilder (Tier0-FullOpts)
-4 (-0.24 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
-4 (-2.00 % of base) : 9642.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier0-FullOpts)
-4 (-0.25 % of base) : 32268.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (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.35 % of base) : 43220.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.47 % of base) : 54412.dasm - System.Text.StringBuilder:InsertSpanFormattable[byte](int,byte):System.Text.StringBuilder:this (Tier1)
-4 (-0.47 % of base) : 54419.dasm - System.Text.StringBuilder:InsertSpanFormattable[int](int,int):System.Text.StringBuilder:this (Tier1)
-4 (-0.47 % of base) : 54415.dasm - System.Text.StringBuilder:InsertSpanFormattable[short](int,short):System.Text.StringBuilder:this (Tier1)
-2 (-0.32 % of base) : 23275.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (Tier0-FullOpts)
Top method regressions (percentages):
54 (19.01 % 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)
8 (4.94 % of base) : 2024.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
22 (4.12 % of base) : 33762.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
34 (3.94 % 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)
30 (3.37 % of base) : 13631.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte: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)
34 (3.20 % of base) : 60296.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
22 (3.07 % of base) : 36990.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (Tier0-FullOpts)
20 (2.67 % of base) : 52470.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
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)
26 (1.76 % of base) : 35223.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (Tier0-FullOpts)
6 (1.71 % of base) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
4 (1.49 % of base) : 29685.dasm - System.Buffers.Text.Utf8Parser:TryParseUInt64X(System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (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)
14 (1.16 % of base) : 29327.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (Tier0-FullOpts)
4 (0.87 % of base) : 55108.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:LookupLocal(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:this (Tier0-FullOpts)
10 (0.78 % of base) : 65350.dasm - System.Buffers.SequenceReader`1[int]:TryReadToInternal(byref,int,ubyte,int):ubyte:this (Tier0-FullOpts)
12 (0.63 % of base) : 9689.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
Top method improvements (percentages):
-12 (-2.13 % of base) : 63889.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (Tier0-FullOpts)
-4 (-2.00 % of base) : 9642.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (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)
-24 (-1.30 % of base) : 46239.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (Tier0-FullOpts)
-10 (-1.09 % of base) : 46381.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):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)
-10 (-0.71 % of base) : 53269.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-6 (-0.61 % 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)
-4 (-0.47 % of base) : 54419.dasm - System.Text.StringBuilder:InsertSpanFormattable[int](int,int):System.Text.StringBuilder:this (Tier1)
-4 (-0.47 % of base) : 54412.dasm - System.Text.StringBuilder:InsertSpanFormattable[byte](int,byte):System.Text.StringBuilder:this (Tier1)
-4 (-0.47 % of base) : 54415.dasm - System.Text.StringBuilder:InsertSpanFormattable[short](int,short):System.Text.StringBuilder:this (Tier1)
-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)
-12 (-0.42 % of base) : 63891.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-6 (-0.36 % of base) : 17926.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:EmitNewObject(System.Reflection.Emit.ILGenerator,System.Type,Utf8Json.Internal.Emit.MetaType,Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder+DeserializeInfo[],ubyte):System.Reflection.Emit.LocalBuilder (Tier0-FullOpts)
-4 (-0.35 % of base) : 43220.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.32 % of base) : 23275.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (Tier0-FullOpts)
-2 (-0.28 % of base) : 54414.dasm - System.Text.StringBuilder:InsertSpanFormattable[ubyte](int,ubyte):System.Text.StringBuilder:this (Tier1)
-2 (-0.28 % of base) : 54417.dasm - System.Text.StringBuilder:InsertSpanFormattable[ushort](int,ushort):System.Text.StringBuilder:this (Tier1)
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321243680 (overridden on cmd)
Total bytes of diff: 321243054 (overridden on cmd)
Total bytes of delta: -626 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
122 : 2391.dasm (3.77 % of base)
82 : 198788.dasm (7.12 % of base)
76 : 149483.dasm (8.23 % of base)
70 : 261208.dasm (1.44 % of base)
70 : 314384.dasm (1.44 % of base)
70 : 226156.dasm (1.44 % of base)
70 : 232297.dasm (1.44 % of base)
70 : 266059.dasm (1.44 % of base)
70 : 217042.dasm (1.46 % of base)
66 : 338374.dasm (12.09 % of base)
66 : 353055.dasm (6.92 % of base)
66 : 353135.dasm (6.92 % of base)
66 : 338449.dasm (12.09 % of base)
66 : 338074.dasm (12.09 % of base)
66 : 338149.dasm (12.09 % of base)
66 : 352716.dasm (6.92 % of base)
66 : 352796.dasm (6.92 % of base)
64 : 152880.dasm (1.31 % of base)
64 : 197066.dasm (1.31 % of base)
64 : 248605.dasm (1.31 % of base)
Top file improvements (bytes):
-1100 : 307870.dasm (-7.66 % of base)
-258 : 156943.dasm (-5.17 % of base)
-248 : 171143.dasm (-4.94 % of base)
-248 : 256416.dasm (-4.94 % of base)
-248 : 122677.dasm (-4.94 % of base)
-242 : 213241.dasm (-4.99 % of base)
-238 : 210585.dasm (-4.74 % of base)
-238 : 191115.dasm (-4.74 % of base)
-200 : 1602.dasm (-2.84 % of base)
-184 : 159297.dasm (-3.89 % of base)
-146 : 338434.dasm (-12.44 % of base)
-146 : 338059.dasm (-12.44 % of base)
-146 : 338134.dasm (-12.44 % of base)
-146 : 338359.dasm (-12.44 % of base)
-128 : 8095.dasm (-2.60 % of base)
-128 : 166174.dasm (-2.60 % of base)
-128 : 2335.dasm (-2.62 % of base)
-102 : 338404.dasm (-9.06 % of base)
-102 : 338029.dasm (-9.06 % of base)
-102 : 338104.dasm (-9.06 % of base)
84 total files with Code Size differences (32 improved, 52 regressed), 20 unchanged.
Top method regressions (bytes):
122 (3.77 % of base) : 2391.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
82 (7.12 % of base) : 198788.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (Tier1)
76 (8.23 % of base) : 149483.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier1)
70 (1.44 % of base) : 261208.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
70 (1.44 % of base) : 314384.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
70 (1.44 % of base) : 226156.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
70 (1.44 % of base) : 232297.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
70 (1.44 % of base) : 266059.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
70 (1.46 % of base) : 217042.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
66 (12.09 % of base) : 338074.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338149.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338374.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338449.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (6.92 % of base) : 352716.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBooleanBinaryOpTest__op_EqualityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (6.92 % of base) : 352796.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBooleanBinaryOpTest__op_EqualityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (6.92 % of base) : 353055.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBooleanBinaryOpTest__op_InequalityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (6.92 % of base) : 353135.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBooleanBinaryOpTest__op_InequalityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
64 (1.31 % of base) : 152880.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
64 (1.31 % of base) : 197066.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
64 (1.31 % of base) : 248605.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
Top method improvements (bytes):
-1100 (-7.66 % of base) : 307870.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-258 (-5.17 % of base) : 156943.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-248 (-4.94 % of base) : 171143.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-248 (-4.94 % of base) : 256416.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-248 (-4.94 % of base) : 122677.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-242 (-4.99 % of base) : 213241.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-238 (-4.74 % of base) : 210585.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-238 (-4.74 % of base) : 191115.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-200 (-2.84 % of base) : 1602.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
-184 (-3.89 % of base) : 159297.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-146 (-12.44 % of base) : 338059.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338134.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityUInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338359.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338434.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityUInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-128 (-2.60 % of base) : 8095.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-128 (-2.60 % of base) : 166174.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-128 (-2.62 % of base) : 2335.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
-102 (-9.06 % of base) : 338029.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338104.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualitySByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338329.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
Top method regressions (percentages):
16 (13.33 % of base) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
16 (12.50 % of base) : 2971.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
66 (12.09 % of base) : 338074.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338149.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338374.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
66 (12.09 % of base) : 338449.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityUInt32:RunLclVarScenario_UnsafeRead():this (FullOpts)
14 (11.48 % of base) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
76 (8.23 % of base) : 149483.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier1)
10 (8.20 % of base) : 313824.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 198130.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 198767.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 201979.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 294992.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 295032.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 313770.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 198872.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 201731.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 298925.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 313017.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
10 (8.20 % of base) : 313858.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-146 (-12.44 % of base) : 338059.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338134.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityUInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338359.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-146 (-12.44 % of base) : 338434.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityUInt16:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338029.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualityByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338104.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_EqualitySByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338329.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalityByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-102 (-9.06 % of base) : 338404.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBooleanBinaryOpTest__op_InequalitySByte:RunLclVarScenario_UnsafeRead():this (FullOpts)
-1100 (-7.66 % of base) : 307870.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-10 (-7.58 % of base) : 279063.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-10 (-7.58 % of base) : 1533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-10 (-7.58 % of base) : 166090.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-10 (-7.58 % of base) : 173823.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-10 (-7.58 % of base) : 312821.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-82 (-6.61 % of base) : 340180.dasm - CompareVectorWithZero:TestEquality[int](System.Runtime.Intrinsics.Vector512`1[int]) (FullOpts)
-82 (-6.61 % of base) : 340181.dasm - CompareVectorWithZero:TestEqualityUsingReversedInputs[int](System.Runtime.Intrinsics.Vector512`1[int]) (FullOpts)
-82 (-6.61 % of base) : 340205.dasm - CompareVectorWithZero:TestInequality[int](System.Runtime.Intrinsics.Vector512`1[int]) (FullOpts)
-82 (-6.61 % of base) : 340206.dasm - CompareVectorWithZero:TestInequalityUsingReversedInputs[int](System.Runtime.Intrinsics.Vector512`1[int]) (FullOpts)
-8 (-6.15 % of base) : 156860.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
-8 (-6.15 % of base) : 170962.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (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: 35989292 (overridden on cmd)
Total bytes of diff: 35989120 (overridden on cmd)
Total bytes of delta: -172 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
40 : 165006.dasm (1.08 % of base)
40 : 173363.dasm (1.59 % of base)
40 : 110404.dasm (1.60 % of base)
34 : 105547.dasm (0.79 % of base)
28 : 41808.dasm (0.63 % of base)
26 : 108374.dasm (1.41 % of base)
20 : 41531.dasm (1.16 % of base)
18 : 159087.dasm (2.45 % of base)
14 : 178577.dasm (0.66 % of base)
14 : 164742.dasm (0.72 % of base)
12 : 190016.dasm (4.58 % of base)
12 : 117991.dasm (1.28 % of base)
10 : 75008.dasm (1.35 % of base)
10 : 170159.dasm (1.34 % of base)
10 : 78650.dasm (0.35 % of base)
8 : 46750.dasm (1.44 % of base)
8 : 170850.dasm (5.13 % of base)
8 : 181087.dasm (0.24 % of base)
8 : 99164.dasm (0.55 % of base)
8 : 104959.dasm (2.40 % of base)
Top file improvements (bytes):
-198 : 1404.dasm (-0.27 % of base)
-44 : 164902.dasm (-1.14 % of base)
-44 : 165042.dasm (-2.02 % of base)
-28 : 46670.dasm (-3.45 % of base)
-28 : 171174.dasm (-1.21 % of base)
-26 : 161390.dasm (-1.22 % of base)
-24 : 79086.dasm (-0.71 % of base)
-22 : 79039.dasm (-0.78 % of base)
-20 : 65992.dasm (-0.88 % of base)
-16 : 41796.dasm (-0.38 % of base)
-16 : 164644.dasm (-0.41 % of base)
-14 : 190343.dasm (-1.04 % of base)
-12 : 122173.dasm (-0.24 % of base)
-12 : 187882.dasm (-0.85 % of base)
-12 : 14906.dasm (-0.98 % of base)
-10 : 42254.dasm (-1.40 % of base)
-10 : 98805.dasm (-0.30 % of base)
-10 : 171227.dasm (-1.57 % of base)
-8 : 119899.dasm (-1.08 % of base)
-8 : 77301.dasm (-0.76 % of base)
56 total files with Code Size differences (29 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
40 (1.59 % of base) : 173363.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
40 (1.60 % of base) : 110404.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
40 (1.08 % of base) : 165006.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
34 (0.79 % of base) : 105547.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ImplementsHelper:FindExplicitlyImplementedMember[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],byref):System.__Canon (FullOpts)
28 (0.63 % of base) : 41808.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
26 (1.41 % of base) : 108374.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (FullOpts)
20 (1.16 % of base) : 41531.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression: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 (0.66 % of base) : 178577.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:PackBlocks(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder],Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder]):ubyte (FullOpts)
14 (0.72 % of base) : 164742.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
12 (1.28 % of base) : 117991.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructParsedResult(int,byref,byref,byref,byref,byref):int:this (FullOpts)
12 (4.58 % 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)
10 (1.35 % of base) : 75008.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon: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 (1.34 % of base) : 170159.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
8 (1.67 % of base) : 41944.dasm - Microsoft.CodeAnalysis.CSharp.Binder:HasApplicableBooleanOperator(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref):ubyte:this (FullOpts)
8 (1.44 % of base) : 46750.dasm - Microsoft.CodeAnalysis.CSharp.TypeCompilationState:ReportCtorInitializerCycles(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
8 (0.24 % of base) : 181087.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:CreateIndicesForNonTypeMembers(Microsoft.Cci.ITypeDefinition):this (FullOpts)
8 (0.55 % of base) : 99164.dasm - Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter:UseTwicePropertyAccess(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedLocal]):Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter+Result (FullOpts)
8 (2.40 % of base) : 104959.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+DocWriter:WriteSubString(System.String,int,int,ubyte):this (FullOpts)
Top method improvements (bytes):
-198 (-0.27 % of base) : 1404.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
-44 (-1.14 % of base) : 164902.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
-44 (-2.02 % of base) : 165042.dasm - System.Data.XSDSchema:HandleSimpleTypeSimpleContentColumn(System.Xml.Schema.XmlSchemaSimpleType,System.String,System.Data.DataTable,ubyte,System.Xml.XmlAttribute[],ubyte):this (FullOpts)
-28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-28 (-1.21 % 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)
-26 (-1.22 % of base) : 161390.dasm - System.Data.SqlTypes.SqlDecimal:op_Multiply(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal):System.Data.SqlTypes.SqlDecimal (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)
-22 (-0.78 % of base) : 79039.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:PassArguments(Microsoft.CodeAnalysis.SyntaxNode,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.BitVector]: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)
-16 (-0.38 % of base) : 41796.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-16 (-0.41 % of base) : 164644.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-14 (-1.04 % of base) : 190343.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-12 (-0.24 % of base) : 122173.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-12 (-0.85 % of base) : 187882.dasm - System.Text.Base64Encoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
-12 (-0.98 % of base) : 14906.dasm - System.Text.UTF7Encoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (FullOpts)
-10 (-1.40 % of base) : 42254.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
-10 (-0.30 % of base) : 98805.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)
-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)
-8 (-1.08 % of base) : 119899.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-8 (-0.41 % of base) : 9909.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method regressions (percentages):
8 (5.13 % of base) : 170850.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
12 (4.58 % 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)
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)
8 (2.40 % of base) : 104959.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+DocWriter:WriteSubString(System.String,int,int,ubyte):this (FullOpts)
6 (2.01 % of base) : 22095.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses:FindAndRemove(long,int,byref):Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses+ILToNativeMap:this (FullOpts)
8 (1.72 % of base) : 134670.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:TryVarianceAdjustmentToGetAccessibleType(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType,byref):ubyte (FullOpts)
8 (1.67 % of base) : 41944.dasm - Microsoft.CodeAnalysis.CSharp.Binder:HasApplicableBooleanOperator(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref):ubyte:this (FullOpts)
4 (1.67 % of base) : 58716.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:CheckForSpaceDifference(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref,byref):ubyte (FullOpts)
40 (1.60 % of base) : 110404.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
40 (1.59 % of base) : 173363.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
6 (1.45 % of base) : 68460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
4 (1.45 % of base) : 105597.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)
8 (1.44 % of base) : 46750.dasm - Microsoft.CodeAnalysis.CSharp.TypeCompilationState:ReportCtorInitializerCycles(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
26 (1.41 % of base) : 108374.dasm - System.IriHelper:EscapeUnescapeIri(uint,int,int,int):System.String (FullOpts)
10 (1.35 % of base) : 75008.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
10 (1.34 % of base) : 170159.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
12 (1.28 % of base) : 117991.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructParsedResult(int,byref,byref,byref,byref,byref):int:this (FullOpts)
20 (1.16 % of base) : 41531.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
40 (1.08 % of base) : 165006.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
2 (1.01 % of base) : 159058.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-44 (-2.02 % of base) : 165042.dasm - System.Data.XSDSchema:HandleSimpleTypeSimpleContentColumn(System.Xml.Schema.XmlSchemaSimpleType,System.String,System.Data.DataTable,ubyte,System.Xml.XmlAttribute[],ubyte):this (FullOpts)
-4 (-1.94 % of base) : 130017.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-4 (-1.85 % of base) : 133880.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
-4 (-1.85 % of base) : 152612.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte: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)
-2 (-1.49 % of base) : 125646.dasm - Newtonsoft.Json.Utilities.EnumUtils:FindIndexByName(System.String[],System.String,int,int,int):System.Nullable`1[int] (FullOpts)
-10 (-1.40 % of base) : 42254.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
-26 (-1.22 % of base) : 161390.dasm - System.Data.SqlTypes.SqlDecimal:op_Multiply(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal):System.Data.SqlTypes.SqlDecimal (FullOpts)
-28 (-1.21 % 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)
-4 (-1.20 % of base) : 139470.dasm - System.Reflection.Metadata.BlobBuilder:TryWriteBytes(System.IO.Stream,int):int:this (FullOpts)
-44 (-1.14 % of base) : 164902.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
-8 (-1.08 % of base) : 119899.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-14 (-1.04 % of base) : 190343.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-4 (-1.02 % of base) : 17219.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
-12 (-0.98 % of base) : 14906.dasm - System.Text.UTF7Encoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (FullOpts)
-8 (-0.95 % of base) : 141856.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateTableWithExportedTypes(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder]):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)
-12 (-0.85 % of base) : 187882.dasm - System.Text.Base64Encoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
-6 (-0.85 % of base) : 99214.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:CanBeAccessedThroughInheritance(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (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: 49882798 (overridden on cmd)
Total bytes of diff: 49883476 (overridden on cmd)
Total bytes of delta: 678 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
278 : 6590.dasm (4.12 % of base)
200 : 222948.dasm (4.79 % of base)
200 : 222932.dasm (4.79 % of base)
100 : 95697.dasm (1.84 % of base)
60 : 887.dasm (3.66 % of base)
54 : 148763.dasm (19.01 % of base)
50 : 10479.dasm (5.03 % of base)
50 : 189564.dasm (2.59 % of base)
50 : 28550.dasm (1.02 % of base)
46 : 90843.dasm (1.44 % of base)
44 : 98929.dasm (1.82 % of base)
42 : 65266.dasm (0.58 % of base)
40 : 214071.dasm (4.73 % of base)
40 : 211751.dasm (4.73 % of base)
38 : 117523.dasm (1.09 % of base)
38 : 209200.dasm (3.84 % of base)
36 : 189575.dasm (1.22 % of base)
32 : 71379.dasm (1.69 % of base)
30 : 105749.dasm (0.39 % of base)
28 : 237159.dasm (2.90 % of base)
Top file improvements (bytes):
-66 : 222931.dasm (-2.86 % of base)
-66 : 222947.dasm (-2.86 % of base)
-64 : 189956.dasm (-0.29 % of base)
-58 : 206285.dasm (-4.26 % of base)
-54 : 34707.dasm (-1.03 % of base)
-54 : 196586.dasm (-3.96 % of base)
-42 : 47966.dasm (-2.03 % of base)
-42 : 72429.dasm (-1.77 % of base)
-40 : 35034.dasm (-1.28 % of base)
-40 : 170334.dasm (-5.70 % of base)
-36 : 269762.dasm (-1.44 % of base)
-34 : 33588.dasm (-4.34 % of base)
-34 : 189967.dasm (-3.00 % of base)
-32 : 94759.dasm (-1.05 % of base)
-32 : 222924.dasm (-0.71 % of base)
-32 : 222940.dasm (-0.71 % of base)
-28 : 28472.dasm (-0.74 % of base)
-26 : 222925.dasm (-0.39 % of base)
-26 : 91189.dasm (-0.61 % of base)
-26 : 222941.dasm (-0.39 % of base)
62 total files with Code Size differences (31 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
278 (4.12 % of base) : 6590.dasm - System.Text.Ascii+WideningLoader:EqualAndAscii512(byref,byref):ubyte (FullOpts)
200 (4.79 % of base) : 222932.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
200 (4.79 % of base) : 222948.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
100 (1.84 % of base) : 95697.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
60 (3.66 % of base) : 887.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
54 (19.01 % 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 (1.02 % of base) : 28550.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
50 (2.59 % of base) : 189564.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
50 (5.03 % of base) : 10479.dasm - System.Collections.Generic.Dictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryInsert(System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte):ubyte:this (FullOpts)
46 (1.44 % 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)
44 (1.82 % of base) : 98929.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodCompiler:CreateExplicitInterfaceImplementationStubs(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol):this (FullOpts)
42 (0.58 % of base) : 65266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
40 (4.73 % 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)
40 (4.73 % 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)
38 (3.84 % of base) : 209200.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeNodeActionsByKind|1(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],ubyte):this (FullOpts)
38 (1.09 % of base) : 117523.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
36 (1.22 % 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)
32 (1.69 % of base) : 71379.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLog:ProcessExtendedData(Microsoft.Diagnostics.Tracing.TraceEvent,ushort,Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts):ubyte:this (FullOpts)
30 (0.39 % of base) : 105749.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
28 (2.90 % of base) : 237159.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
Top method improvements (bytes):
-66 (-2.86 % of base) : 222931.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector128`1[ubyte],byref,System.Runtime.Intrinsics.Vector128`1[ubyte]) (FullOpts)
-66 (-2.86 % of base) : 222947.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector128`1[ubyte],byref,System.Runtime.Intrinsics.Vector128`1[ubyte]) (FullOpts)
-64 (-0.29 % 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)
-58 (-4.26 % of base) : 206285.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryInsert(System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte):ubyte:this (FullOpts)
-54 (-1.03 % of base) : 34707.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalOperatorCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-54 (-3.96 % 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)
-42 (-2.03 % of base) : 47966.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-42 (-1.77 % of base) : 72429.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData:GetPayloadValueAt(byref,int,int):System.Object:this (FullOpts)
-40 (-1.28 % of base) : 35034.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-40 (-5.70 % 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)
-36 (-1.44 % of base) : 269762.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadTo(byref,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],ubyte):ubyte:this (FullOpts)
-34 (-4.34 % of base) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-34 (-3.00 % of base) : 189967.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-32 (-1.05 % of base) : 94759.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol (FullOpts)
-32 (-0.71 % of base) : 222924.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
-32 (-0.71 % of base) : 222940.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
-28 (-0.74 % of base) : 28472.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
-26 (-0.61 % of base) : 91189.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayInitializerList(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundArrayInitialization:this (FullOpts)
-26 (-0.39 % of base) : 222925.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector512`1[ubyte],byref,System.Runtime.Intrinsics.Vector512`1[ubyte]) (FullOpts)
-26 (-0.39 % of base) : 222941.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector512`1[ubyte],byref,System.Runtime.Intrinsics.Vector512`1[ubyte]) (FullOpts)
Top method regressions (percentages):
54 (19.01 % 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)
14 (8.75 % of base) : 221533.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.Nullable`1[int]],System.__Canon,int,byref):ubyte (FullOpts)
20 (5.43 % of base) : 129495.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
50 (5.03 % of base) : 10479.dasm - System.Collections.Generic.Dictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryInsert(System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte):ubyte:this (FullOpts)
200 (4.79 % of base) : 222932.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
200 (4.79 % of base) : 222948.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector256`1[ubyte],byref,System.Runtime.Intrinsics.Vector256`1[ubyte]) (FullOpts)
22 (4.74 % of base) : 156773.dasm - Xunit.Sdk.CollectionTracker`1[System.__Canon]:FormatIndexedMismatch(System.ReadOnlySpan`1[System.__Canon],System.Nullable`1[int],byref,int):System.String (FullOpts)
40 (4.73 % 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)
40 (4.73 % 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)
8 (4.44 % of base) : 105414.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[long](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,long,ubyte],long,byref):int:this (FullOpts)
14 (4.40 % of base) : 245736.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
8 (4.21 % of base) : 105413.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.Numerics.Vector`1[float]](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float],byref):int:this (FullOpts)
278 (4.12 % of base) : 6590.dasm - System.Text.Ascii+WideningLoader:EqualAndAscii512(byref,byref):ubyte (FullOpts)
8 (3.85 % of base) : 47663.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:CheckForSpaceDifference(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref,byref):ubyte (FullOpts)
38 (3.84 % of base) : 209200.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeNodeActionsByKind|1(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],ubyte):this (FullOpts)
8 (3.74 % of base) : 254746.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
60 (3.66 % of base) : 887.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
6 (3.66 % of base) : 254752.dasm - Microsoft.Build.Collections.ArrayDictionary`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte: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)
-40 (-5.70 % 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)
-58 (-4.26 % of base) : 206285.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryInsert(System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte):ubyte:this (FullOpts)
-54 (-3.96 % 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)
-22 (-3.45 % of base) : 226202.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[long,System.Nullable`1[int]]:Remove(long,byref):ubyte:this (FullOpts)
-34 (-3.00 % of base) : 189967.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-66 (-2.86 % of base) : 222931.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMaxMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector128`1[ubyte],byref,System.Runtime.Intrinsics.Vector128`1[ubyte]) (FullOpts)
-66 (-2.86 % of base) : 222947.dasm - System.Numerics.Tensors.TensorPrimitives+IndexOfMinMagnitudeOperator`1[ubyte]:Invoke(byref,System.Runtime.Intrinsics.Vector128`1[ubyte],byref,System.Runtime.Intrinsics.Vector128`1[ubyte]) (FullOpts)
-24 (-2.77 % of base) : 138268.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteMemberElementsIf(System.Xml.Serialization.ReflectionXmlSerializationReader+Member[],System.Xml.Serialization.ReflectionXmlSerializationReader+Member,System.Xml.Serialization.UnknownNodeAction,System.Xml.Serialization.XmlSerializationReader+Fixup,System.Xml.Serialization.ReflectionXmlSerializationReader+CheckTypeSource):this (FullOpts)
-20 (-2.48 % of base) : 235819.dasm - System.IO.Packaging.ContentType:GetLengthOfParameterValue(System.ReadOnlySpan`1[ushort],int):int (FullOpts)
-12 (-2.13 % of base) : 175074.dasm - System.IPv6AddressHelper:InternalIsValid(uint,int,byref,ubyte):ubyte (FullOpts)
-42 (-2.03 % of base) : 47966.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-22 (-2.03 % of base) : 201400.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteSemanticModelActions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.SemanticModelAnalyzerAction],Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.SemanticModel,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],ubyte,System.Threading.CancellationToken):this (FullOpts)
-4 (-2.00 % of base) : 211567.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-2 (-1.92 % of base) : 196022.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[long,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[long,System.Nullable`1[int]],long,byref):ubyte:this (FullOpts)
-42 (-1.77 % of base) : 72429.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData:GetPayloadValueAt(byref,int,int):System.Object:this (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)
-22 (-1.71 % of base) : 114109.dasm - Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter:UseTwicePropertyAccess(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedLocal]):Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter+Result (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: 17138332 (overridden on cmd)
Total bytes of diff: 17143104 (overridden on cmd)
Total bytes of delta: 4772 (0.03 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 6850.dasm (2.68 % of base)
60 : 15731.dasm (2.68 % of base)
58 : 28729.dasm (3.67 % of base)
54 : 18280.dasm (2.43 % of base)
54 : 25803.dasm (2.43 % of base)
54 : 25955.dasm (2.43 % of base)
54 : 34120.dasm (2.43 % of base)
54 : 25139.dasm (2.43 % of base)
50 : 11667.dasm (8.71 % of base)
50 : 18543.dasm (8.68 % of base)
50 : 26342.dasm (8.71 % of base)
50 : 17229.dasm (8.68 % of base)
50 : 19425.dasm (8.71 % of base)
50 : 30226.dasm (8.68 % of base)
50 : 8584.dasm (8.71 % of base)
50 : 10282.dasm (8.68 % of base)
48 : 22819.dasm (2.17 % of base)
48 : 31088.dasm (2.17 % of base)
48 : 31114.dasm (2.17 % of base)
48 : 33367.dasm (2.17 % of base)
Top file improvements (bytes):
-200 : 1680.dasm (-2.84 % of base)
-20 : 3427.dasm (-1.83 % of base)
-12 : 31657.dasm (-3.31 % of base)
-12 : 4185.dasm (-3.31 % of base)
-12 : 13337.dasm (-3.31 % of base)
-12 : 5201.dasm (-3.31 % of base)
-12 : 7114.dasm (-3.31 % of base)
-12 : 11025.dasm (-3.31 % of base)
-12 : 19450.dasm (-3.31 % of base)
-12 : 25483.dasm (-3.31 % of base)
-12 : 30128.dasm (-3.31 % of base)
-12 : 33856.dasm (-3.31 % of base)
-12 : 9006.dasm (-3.31 % of base)
-12 : 11899.dasm (-3.31 % of base)
-12 : 12683.dasm (-3.31 % of base)
-10 : 5533.dasm (-2.73 % of base)
-10 : 26541.dasm (-2.73 % of base)
-10 : 21385.dasm (-2.73 % of base)
-10 : 4726.dasm (-2.73 % of base)
-10 : 14737.dasm (-2.73 % of base)
73 total files with Code Size differences (21 improved, 52 regressed), 20 unchanged.
Top method regressions (bytes):
60 (2.68 % of base) : 6850.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
60 (2.68 % of base) : 15731.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
58 (3.67 % of base) : 28729.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
54 (2.43 % of base) : 18280.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
54 (2.43 % of base) : 25803.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
54 (2.43 % of base) : 25955.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
54 (2.43 % of base) : 34120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
54 (2.43 % of base) : 25139.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
50 (8.71 % of base) : 11667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 18543.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 26342.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 17229.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 19425.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 30226.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 8584.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 10282.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
48 (2.17 % of base) : 22819.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
48 (2.17 % of base) : 31088.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
48 (2.17 % of base) : 31114.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
48 (2.17 % of base) : 33367.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
Top method improvements (bytes):
-200 (-2.84 % of base) : 1680.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
-20 (-1.83 % of base) : 3427.dasm - System.Reflection.Associates:AssignAssociates(int,System.RuntimeType,System.RuntimeType):System.Reflection.RuntimeMethodInfo (Instrumented Tier1)
-12 (-3.31 % of base) : 31657.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 4185.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 13337.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 5201.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 7114.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 11025.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 19450.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 25483.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 30128.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 33856.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 9006.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 11899.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 12683.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 5533.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 26541.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 21385.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 4726.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 14737.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
Top method regressions (percentages):
50 (8.71 % of base) : 11667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 26342.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 19425.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.71 % of base) : 8584.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 18543.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 17229.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 30226.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
50 (8.68 % of base) : 10282.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
8 (4.94 % of base) : 1638.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier0-FullOpts)
2 (4.17 % of base) : 5154.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 6853.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 10277.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 11033.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 12141.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 17453.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 19413.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 19841.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 20033.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 28188.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
2 (4.17 % of base) : 7086.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
Top method improvements (percentages):
-12 (-3.31 % of base) : 31657.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 4185.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 13337.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 5201.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 7114.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 11025.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 19450.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 25483.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 30128.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 33856.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 9006.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 11899.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-12 (-3.31 % of base) : 12683.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-200 (-2.84 % of base) : 1680.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
-10 (-2.73 % of base) : 5533.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 26541.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 21385.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 4726.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 14737.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-10 (-2.73 % of base) : 7289.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):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: 93857406 (overridden on cmd)
Total bytes of diff: 93858362 (overridden on cmd)
Total bytes of delta: 956 (0.00 % of base)
diff is an improvement.
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)
78 : 275460.dasm (5.34 % of base)
64 : 292700.dasm (5.29 % of base)
60 : 275554.dasm (3.99 % of base)
60 : 292695.dasm (5.31 % of base)
60 : 292265.dasm (4.46 % of base)
60 : 292599.dasm (4.75 % of base)
58 : 292683.dasm (3.39 % of base)
56 : 275435.dasm (3.85 % of base)
56 : 275555.dasm (2.86 % of base)
56 : 275439.dasm (3.80 % of base)
56 : 292255.dasm (2.40 % of base)
54 : 101742.dasm (19.01 % of base)
48 : 275552.dasm (3.24 % of base)
46 : 292574.dasm (4.22 % of base)
46 : 275553.dasm (3.04 % of base)
42 : 278628.dasm (2.72 % of base)
42 : 58517.dasm (2.38 % of base)
42 : 6018.dasm (0.58 % of base)
Top file improvements (bytes):
-104 : 292562.dasm (-7.47 % of base)
-94 : 120801.dasm (-1.76 % of base)
-92 : 292563.dasm (-6.57 % of base)
-88 : 292564.dasm (-6.40 % of base)
-76 : 273004.dasm (-4.74 % of base)
-72 : 292566.dasm (-4.97 % of base)
-62 : 282716.dasm (-5.51 % of base)
-62 : 59754.dasm (-0.28 % of base)
-62 : 275579.dasm (-4.34 % of base)
-60 : 292707.dasm (-1.94 % of base)
-56 : 20131.dasm (-2.60 % of base)
-56 : 273003.dasm (-3.50 % of base)
-52 : 292731.dasm (-2.21 % of base)
-50 : 275583.dasm (-1.81 % of base)
-48 : 275419.dasm (-1.86 % of base)
-48 : 292565.dasm (-5.23 % of base)
-42 : 22544.dasm (-2.49 % of base)
-42 : 282908.dasm (-0.91 % of base)
-42 : 56295.dasm (-1.35 % of base)
-40 : 194615.dasm (-5.70 % 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)
78 (5.34 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (5.29 % of base) : 292700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33042_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 (4.75 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_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 (3.39 % of base) : 292683.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33019_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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.85 % of base) : 275435.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex859_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (3.80 % of base) : 275439.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex860_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
56 (2.86 % of base) : 275555.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex950_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
54 (19.01 % 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)
48 (3.24 % of base) : 275552.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex941_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
46 (4.22 % of base) : 292574.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32649_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
46 (3.04 % of base) : 275553.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex944_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
42 (0.58 % of base) : 6018.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
42 (2.38 % of base) : 58517.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
42 (2.72 % of base) : 278628.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1553_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-104 (-7.47 % of base) : 292562.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32608_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-94 (-1.76 % of base) : 120801.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-92 (-6.57 % of base) : 292563.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32612_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-6.40 % of base) : 292564.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32616_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)
-72 (-4.97 % of base) : 292566.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32625_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-62 (-0.28 % 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)
-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)
-60 (-1.94 % of base) : 292707.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33049_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-2.60 % of base) : 20131.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:VisitList[System.__Canon](Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]):Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]: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 (-2.21 % of base) : 292731.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33084_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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 (-5.23 % of base) : 292565.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32620_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 (-1.35 % of base) : 56295.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|448_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-42 (-2.49 % of base) : 22544.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-42 (-0.91 % of base) : 282908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29113_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-40 (-5.70 % 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)
Top method regressions (percentages):
54 (19.01 % 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)
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)
78 (5.34 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_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)
64 (5.29 % of base) : 292700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33042_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (5.10 % of base) : 9571.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[ubyte,int],int]:TryInsert(System.ValueTuple`2[ubyte,int],int,ubyte):ubyte:this (FullOpts)
8 (4.94 % of base) : 467.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
60 (4.75 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (4.73 % 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)
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)
36 (4.22 % of base) : 8126.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager:IsDiagnosticAnalyzerSuppressed(Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.CompilationOptions,System.Func`2[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,ubyte],int,System.Func`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,ubyte],System.Func`2[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DiagnosticDescriptor]],System.Func`2[Microsoft.CodeAnalysis.Diagnostics.DiagnosticSuppressor,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SuppressionDescriptor]],System.Threading.CancellationToken):ubyte (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)
-104 (-7.47 % of base) : 292562.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32608_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-92 (-6.57 % of base) : 292563.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32612_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-6.40 % of base) : 292564.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32616_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-40 (-5.70 % 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)
-30 (-5.45 % of base) : 52286.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
-48 (-5.23 % of base) : 292565.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32620_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-72 (-4.97 % of base) : 292566.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32625_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)
-24 (-4.46 % of base) : 44938.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte: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)
-36 (-4.20 % of base) : 17957.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:GetFields(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref,byref) (FullOpts)
-56 (-3.50 % of base) : 273003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex432_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 13598268 (overridden on cmd)
Total bytes of diff: 13598624 (overridden on cmd)
Total bytes of delta: 356 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
102 : 25398.dasm (2.24 % of base)
90 : 17073.dasm (2.40 % of base)
84 : 17123.dasm (2.23 % of base)
64 : 988.dasm (0.71 % of base)
60 : 1829.dasm (0.54 % of base)
54 : 23827.dasm (0.74 % of base)
46 : 2238.dasm (0.63 % of base)
42 : 2139.dasm (2.42 % of base)
34 : 19206.dasm (3.20 % of base)
34 : 23405.dasm (3.94 % of base)
32 : 16591.dasm (1.78 % of base)
32 : 17197.dasm (0.68 % of base)
28 : 21321.dasm (3.27 % of base)
26 : 7606.dasm (3.18 % of base)
22 : 2043.dasm (12.22 % of base)
22 : 20382.dasm (4.20 % of base)
20 : 31163.dasm (2.67 % of base)
18 : 1712.dasm (0.09 % of base)
16 : 24237.dasm (1.43 % of base)
14 : 2147.dasm (0.69 % of base)
Top file improvements (bytes):
-182 : 17071.dasm (-3.74 % of base)
-54 : 21736.dasm (-3.31 % of base)
-42 : 1725.dasm (-0.49 % of base)
-42 : 28261.dasm (-1.35 % of base)
-34 : 29538.dasm (-4.02 % of base)
-30 : 13565.dasm (-1.87 % of base)
-24 : 34381.dasm (-2.80 % of base)
-24 : 23110.dasm (-1.31 % of base)
-24 : 34384.dasm (-2.80 % of base)
-24 : 34385.dasm (-2.80 % of base)
-18 : 17072.dasm (-0.77 % of base)
-18 : 16946.dasm (-1.09 % of base)
-18 : 4096.dasm (-1.64 % of base)
-16 : 26238.dasm (-0.30 % of base)
-14 : 34331.dasm (-0.37 % of base)
-14 : 28248.dasm (-0.44 % of base)
-12 : 2166.dasm (-1.99 % of base)
-12 : 8912.dasm (-0.82 % of base)
-10 : 32199.dasm (-0.25 % of base)
-8 : 24256.dasm (-0.52 % of base)
54 total files with Code Size differences (26 improved, 28 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)
90 (2.40 % of base) : 17073.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
84 (2.23 % of base) : 17123.dasm - SixLabors.ImageSharp.Formats.Gif.LzwDecoder:DecodePixels(int,SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte]):this (FullOpts)
64 (0.71 % of base) : 988.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (FullOpts)
60 (0.54 % of base) : 1829.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Sphere,BepuPhysics.Collidables.SphereWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.SphereCapsuleDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Sphere,BepuPhysics.Collidables.SphereWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.SphereCapsuleDistanceTester]](uint,byref,byref,uint,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
54 (0.74 % of base) : 23827.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
46 (0.63 % of base) : 2238.dasm - BepuPhysics.Collidables.ConvexHull:RayTest(byref,byref,byref,byref,byref):ubyte:this (FullOpts)
42 (2.42 % of base) : 2139.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
34 (3.94 % 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)
34 (3.20 % of base) : 19206.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
32 (0.68 % of base) : 17197.dasm - SixLabors.ImageSharp.Advanced.ParallelRowIterator:IterateRowIntervals[SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor`1+AffineOperation`1[SixLabors.ImageSharp.PixelFormats.Rgba32,SixLabors.ImageSharp.Processing.Processors.Transforms.BicubicResampler],System.Numerics.Vector4](SixLabors.ImageSharp.Rectangle,byref,byref) (FullOpts)
32 (1.78 % of base) : 16591.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (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)
26 (3.18 % of base) : 7606.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:TryInsert(FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte],ubyte):ubyte:this (FullOpts)
22 (12.22 % of base) : 2043.dasm - BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
22 (4.20 % of base) : 20382.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
20 (2.67 % of base) : 31163.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
18 (0.09 % of base) : 1712.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
16 (1.43 % of base) : 24237.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Conversions,Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundReturnStatement,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]],System.Collections.Immutable.ImmutableDictionary`2+Builder[Microsoft.CodeAnalysis.CSharp.BoundExpression,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder,ubyte):this (FullOpts)
14 (0.69 % of base) : 2147.dasm - BepuPhysics.CollisionDetection.NarrowPhase`1[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]:UpdateConstraint[int,BepuPhysics.Constraints.Contact.Contact1OneBody,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.EmptyCollisionCache,BepuPhysics.CollisionDetection.ConstraintCache1](int,byref,int,byref,byref,byref,int):this (FullOpts)
Top method improvements (bytes):
-182 (-3.74 % of base) : 17071.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
-54 (-3.31 % of base) : 21736.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-42 (-0.49 % of base) : 1725.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:ReduceWithoutComputingDepths(byref,System.Numerics.Vector`1[int],int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
-42 (-1.35 % of base) : 28261.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-34 (-4.02 % of base) : 29538.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:GetFields(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref,byref) (FullOpts)
-30 (-1.87 % of base) : 13565.dasm - System.Text.UnicodeEncoding:GetCharCount(uint,int,System.Text.DecoderNLS):int:this (FullOpts)
-24 (-1.31 % of base) : 23110.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (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 (-0.77 % of base) : 17072.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveAC(byref,byref):this (FullOpts)
-18 (-1.09 % of base) : 16946.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.ErrorDither:SixLabors.ImageSharp.Processing.Processors.Dithering.IDither.ApplyPaletteDither[SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1+DitherProcessor[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
-18 (-1.64 % of base) : 4096.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,System.__Canon],ubyte,ubyte):this (FullOpts)
-16 (-0.30 % of base) : 26238.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
-14 (-0.44 % of base) : 28248.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNode|449_5(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte,byref):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)
-12 (-1.99 % of base) : 2166.dasm - BepuPhysics.BatchCompressor:ApplyCompression(int,byref,byref):this (FullOpts)
-12 (-0.82 % of base) : 8912.dasm - FSharp.Compiler.CheckExpressions:TcTypeApp(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+CheckConstraints,FSharp.Compiler.NameResolution+ItemOccurence,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+EntityRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynType]):System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-10 (-0.25 % of base) : 32199.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-8 (-0.46 % of base) : 14029.dasm - FSharp.Compiler.CheckExpressions:BuildFieldMap[System.__Canon](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],FSharp.Compiler.Text.Range):System.Tuple`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
22 (12.22 % of base) : 2043.dasm - BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
8 (4.94 % of base) : 787.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
22 (4.20 % of base) : 20382.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
34 (3.94 % 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)
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)
34 (3.20 % of base) : 19206.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
26 (3.18 % of base) : 7606.dasm - System.Collections.Generic.Dictionary`2[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:TryInsert(FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte],ubyte):ubyte:this (FullOpts)
20 (2.67 % of base) : 31163.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
42 (2.42 % of base) : 2139.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
90 (2.40 % of base) : 17073.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):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)
84 (2.23 % of base) : 17123.dasm - SixLabors.ImageSharp.Formats.Gif.LzwDecoder:DecodePixels(int,SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte]):this (FullOpts)
32 (1.78 % of base) : 16591.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
8 (1.75 % of base) : 29196.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:FindSurprisingSignExtensionBits(Microsoft.CodeAnalysis.CSharp.BoundExpression):ulong (FullOpts)
12 (1.72 % of base) : 30709.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactPointerInference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):ubyte:this (FullOpts)
6 (1.56 % of base) : 26427.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (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)
16 (1.43 % of base) : 24237.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Conversions,Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundReturnStatement,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]],System.Collections.Immutable.ImmutableDictionary`2+Builder[Microsoft.CodeAnalysis.CSharp.BoundExpression,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder,ubyte):this (FullOpts)
8 (1.19 % 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)
10 (1.17 % of base) : 19494.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-34 (-4.02 % of base) : 29538.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState+ReturnInferenceCacheKey:GetFields(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref,byref) (FullOpts)
-182 (-3.74 % of base) : 17071.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
-54 (-3.31 % of base) : 21736.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken: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)
-12 (-1.99 % of base) : 2166.dasm - BepuPhysics.BatchCompressor:ApplyCompression(int,byref,byref):this (FullOpts)
-30 (-1.87 % of base) : 13565.dasm - System.Text.UnicodeEncoding:GetCharCount(uint,int,System.Text.DecoderNLS):int:this (FullOpts)
-18 (-1.64 % of base) : 4096.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,System.__Canon],ubyte,ubyte):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)
-42 (-1.35 % of base) : 28261.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-24 (-1.31 % of base) : 23110.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
-4 (-1.19 % of base) : 6850.dasm - FSharp.Compiler.CompilerImports+TcImports:ccuHasType(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String):ubyte (FullOpts)
-18 (-1.09 % of base) : 16946.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.ErrorDither:SixLabors.ImageSharp.Processing.Processors.Dithering.IDither.ApplyPaletteDither[SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1+DitherProcessor[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (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)
-12 (-0.82 % of base) : 8912.dasm - FSharp.Compiler.CheckExpressions:TcTypeApp(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+CheckConstraints,FSharp.Compiler.NameResolution+ItemOccurence,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+EntityRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynType]):System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-18 (-0.77 % of base) : 17072.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveAC(byref,byref):this (FullOpts)
-2 (-0.66 % of base) : 18714.dasm - Microsoft.ML.Data.VBuffer`1[float]:GetItemOrDefault(int,byref):this (FullOpts)
-6 (-0.61 % 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)
-8 (-0.52 % 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)
windows x86
Diffs are based on 1,624,674 contexts (327,626 MinOpts, 1,297,048 FullOpts).
MISSED contexts: base: 4,647 (0.29%), diff: 5,061 (0.31%)
Overall (+30,611 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
11,289,347 |
-2,396 |
benchmarks.run_pgo.windows.x86.checked.mch |
33,171,940 |
+14,944 |
benchmarks.run_tiered.windows.x86.checked.mch |
14,107,190 |
-2,025 |
coreclr_tests.run.windows.x86.checked.mch |
215,326,611 |
+14,575 |
libraries.crossgen2.windows.x86.checked.mch |
35,943,892 |
+445 |
libraries.pmi.windows.x86.checked.mch |
51,244,221 |
-6 |
libraries_tests.run.windows.x86.Release.mch |
14,891,910 |
+6,253 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
109,390,907 |
-1,044 |
realworld.run.windows.x86.checked.mch |
11,794,549 |
-135 |
FullOpts (+30,611 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
11,288,869 |
-2,396 |
benchmarks.run_pgo.windows.x86.checked.mch |
27,049,992 |
+14,944 |
benchmarks.run_tiered.windows.x86.checked.mch |
7,252,553 |
-2,025 |
coreclr_tests.run.windows.x86.checked.mch |
93,065,587 |
+14,575 |
libraries.crossgen2.windows.x86.checked.mch |
35,942,832 |
+445 |
libraries.pmi.windows.x86.checked.mch |
51,148,988 |
-6 |
libraries_tests.run.windows.x86.Release.mch |
9,401,715 |
+6,253 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
100,438,134 |
-1,044 |
realworld.run.windows.x86.checked.mch |
11,498,835 |
-135 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-11 (-7.64%) : 4906.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
; ============================================================
-11 (-7.64%) : 18556.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
; ============================================================
-19 (-4.19%) : 14366.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (FullOpts)
@@ -12,38 +12,38 @@
; V01 arg1 [V01,T07] ( 8, 12 ) int -> [ebp-0x10] single-def
; V02 arg2 [V02,T12] ( 4, 2.50) int -> [ebp+0x08] single-def
; V03 loc0 [V03,T00] ( 21, 29 ) int -> [ebp-0x14]
-; V04 loc1 [V04,T01] ( 20, 27.50) int -> [ebp-0x18]
-; V05 loc2 [V05,T04] ( 8, 21.50) int -> [ebp-0x1C]
+; V04 loc1 [V04,T01] ( 20, 28 ) int -> registers
+; V05 loc2 [V05,T04] ( 8, 21.50) int -> [ebp-0x18]
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
-; V07 loc4 [V07,T11] ( 5, 2.50) int -> [ebp-0x20] spill-single-def
+; V07 loc4 [V07,T09] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def
;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op <System.Numerics.Vector`1[ushort]>
;* V10 loc7 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 loc8 [V11 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ushort]>
;* V12 loc9 [V12 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ushort]>
;* V13 loc10 [V13 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ubyte]>
-; V14 loc11 [V14,T08] ( 2, 4.50) int -> [ebp-0x24] spill-single-def
+; V14 loc11 [V14,T08] ( 2, 4.50) int -> [ebp-0x20] spill-single-def
;* V15 tmp0 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V16 tmp1 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V19 tmp4 [V19,T02] ( 3, 24 ) byref -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V19 tmp4 [V19,T02] ( 3, 24 ) byref -> [ebp-0x24] spill-single-def "Inlining Arg"
;* V20 tmp5 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp6 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V22 tmp7 [V22,T03] ( 3, 24 ) byref -> ebx "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp9 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp10 [V25,T09] ( 3, 3 ) byref -> ecx single-def "Inlining Arg"
+; V25 tmp10 [V25,T10] ( 3, 3 ) byref -> ecx single-def "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp12 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp13 [V28,T10] ( 3, 3 ) byref -> ecx "Inlining Arg"
+; V28 tmp13 [V28,T11] ( 3, 3 ) byref -> ecx "Inlining Arg"
;* V29 tmp14 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp15 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 cse0 [V32,T05] ( 4, 16 ) int -> ecx "CSE - moderate"
; V33 cse1 [V33,T13] ( 3, 1.50) int -> ecx "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 24
G_M6479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -51,7 +51,7 @@ G_M6479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 28
+ sub esp, 24
mov esi, ecx
mov edi, edx
mov ebx, dword ptr [ebp+0x08]
@@ -69,9 +69,9 @@ G_M6479_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
or ebx, ecx
test ebx, 0xD1FFAB1E
mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x1C], ecx
+ mov dword ptr [ebp-0x18], ecx
mov ebx, edx
- jne G_M6479_IG17
+ jne G_M6479_IG19
mov ebx, dword ptr [ebp+0x08]
push ebx
mov ecx, esi
@@ -96,11 +96,11 @@ G_M6479_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M6479_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x14]
sub ebx, eax
- mov dword ptr [ebp-0x20], ebx
+ mov dword ptr [ebp-0x1C], ebx
cmp ebx, 4
- jb G_M6479_IG16
+ jb G_M6479_IG18
lea edx, [eax+ebx-0x04]
- mov dword ptr [ebp-0x24], edx
+ mov dword ptr [ebp-0x20], edx
mov dword ptr [ebp-0x10], edi
;; size=27 bbWeight=0.50 PerfScore 3.25
G_M6479_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
@@ -108,14 +108,14 @@ G_M6479_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ecx, eax
mov ebx, dword ptr [esi+2*ecx]
mov edx, dword ptr [esi+2*ecx+0x04]
- mov dword ptr [ebp-0x1C], edx
+ mov dword ptr [ebp-0x18], edx
mov edi, ebx
or edi, edx
test edi, 0xD1FFAB1E
- jne G_M6479_IG18
+ jne G_M6479_IG20
mov edi, dword ptr [ebp-0x10]
add ecx, edi
- mov bword ptr [ebp-0x28], ecx
+ mov bword ptr [ebp-0x24], ecx
; GC ptr vars +{V19}
test ebx, 0xD1FFAB1E
je SHORT G_M6479_IG08
@@ -129,14 +129,14 @@ G_M6479_IG07: ; bbWeight=2, gcVars=00000004 {V19}, gcrefRegs=00000000 {},
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00
G_M6479_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, bword ptr [ebp-0x28]
+ mov ecx, bword ptr [ebp-0x24]
; byrRegs +[ecx]
mov byte ptr [ecx], bl
shr ebx, 16
mov byte ptr [ecx+0x01], bl
mov eax, dword ptr [ebp-0x14]
lea ebx, [edi+eax+0x02]
- test dword ptr [ebp-0x1C], 0xD1FFAB1E
+ test dword ptr [ebp-0x18], 0xD1FFAB1E
je SHORT G_M6479_IG10
;; size=27 bbWeight=4 PerfScore 34.00
G_M6479_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
@@ -150,44 +150,46 @@ G_M6479_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00
G_M6479_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
- mov edx, dword ptr [ebp-0x1C]
+ mov edx, dword ptr [ebp-0x18]
mov byte ptr [ebx], dl
shr edx, 16
mov byte ptr [ebx+0x01], dl
mov eax, dword ptr [ebp-0x14]
add eax, 4
- mov ebx, dword ptr [ebp-0x24]
+ mov ebx, dword ptr [ebp-0x20]
; byrRegs -[ebx]
cmp eax, ebx
- jbe SHORT G_M6479_IG15
+ jbe SHORT G_M6479_IG17
;; size=24 bbWeight=4 PerfScore 28.00
-G_M6479_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, dword ptr [ebp-0x20]
+G_M6479_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x1C]
test bl, 2
- je SHORT G_M6479_IG12
+ je SHORT G_M6479_IG13
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M6479_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
mov edx, dword ptr [esi+2*ecx]
test edx, 0xD1FFAB1E
- jne SHORT G_M6479_IG19
+ jne SHORT G_M6479_IG16
add ecx, edi
mov byte ptr [ecx], dl
shr edx, 16
mov byte ptr [ecx+0x01], dl
add eax, 2
- ;; size=34 bbWeight=0.50 PerfScore 4.38
-G_M6479_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=26 bbWeight=0.50 PerfScore 3.25
+G_M6479_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test bl, 1
- je SHORT G_M6479_IG14
+ je SHORT G_M6479_IG15
movzx edx, word ptr [esi+2*eax]
mov ebx, edx
cmp ebx, 255
- ja SHORT G_M6479_IG14
+ ja SHORT G_M6479_IG15
;; size=19 bbWeight=0.50 PerfScore 2.38
-G_M6479_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M6479_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov byte ptr [edi+eax], bl
inc eax
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M6479_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M6479_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -195,66 +197,59 @@ G_M6479_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M6479_IG15: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6479_IG16: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], edi
+ mov ebx, edx
+ jmp SHORT G_M6479_IG22
+ ;; size=10 bbWeight=0.25 PerfScore 1.06
+G_M6479_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], edi
jmp G_M6479_IG06
;; size=8 bbWeight=2 PerfScore 6.00
-G_M6479_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M6479_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M6479_IG11
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M6479_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M6479_IG19: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], edi
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M6479_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M6479_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test ebx, 0xD1FFAB1E
jne SHORT G_M6479_IG22
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M6479_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [ebp-0x10]
mov eax, dword ptr [ebp-0x14]
lea ecx, [edi+eax]
mov byte ptr [ecx], bl
shr ebx, 16
mov byte ptr [ecx+0x01], bl
- mov edx, dword ptr [ebp-0x1C]
+ mov edx, dword ptr [ebp-0x18]
mov ebx, edx
add eax, 2
mov dword ptr [ebp-0x14], eax
- mov edx, ebx
- mov eax, dword ptr [ebp-0x14]
- ;; size=41 bbWeight=0.50 PerfScore 5.00
-G_M6479_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], edx
- test edx, 0xD1FFAB1E
- mov dword ptr [ebp-0x14], eax
- jne SHORT G_M6479_IG21
+ mov dword ptr [ebp-0x10], edi
+ ;; size=31 bbWeight=0.50 PerfScore 4.25
+G_M6479_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ test ebx, 0xD1FFAB1E
+ jne SHORT G_M6479_IG23
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov edx, dword ptr [ebp-0x18]
- ;; size=33 bbWeight=0.50 PerfScore 3.88
-G_M6479_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], edx
- mov ecx, edx
+ ;; size=24 bbWeight=0.50 PerfScore 2.38
+G_M6479_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, ebx
call [System.Text.Latin1Utility:FirstCharInUInt32IsLatin1(uint):ubyte]
test eax, eax
mov eax, dword ptr [ebp-0x14]
- je SHORT G_M6479_IG14
- mov ebx, dword ptr [ebp-0x18]
...
+16 (+6.13%) : 2010.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
@@ -10,37 +10,37 @@
;
; V00 this [V00,T02] ( 6, 6.50) ref -> esi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T04] ( 7, 6.50) ref -> edi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T20] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T11] ( 3, 3 ) ref -> ebx class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T20] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T11] ( 3, 3 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V04 loc1 [V04,T10] ( 3, 3.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc4 [V07,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
-; V08 loc5 [V08,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc4 [V07,T07] ( 3, 6 ) int -> ebx
+; V08 loc5 [V08,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;* V09 tmp0 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T05] ( 3, 8 ) int -> eax "VirtualCall with runtime lookup"
-; V12 tmp3 [V12,T15] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V11 tmp2 [V11,T05] ( 3, 8 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V12 tmp3 [V12,T15] ( 3, 2 ) int -> ebx "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V15 tmp6 [V15,T16] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V15 tmp6 [V15,T16] ( 3, 2 ) int -> ebx "VirtualCall with runtime lookup"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> edx "argument with side effect"
+; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> ecx "argument with side effect"
; V22 cse0 [V22,T17] ( 2, 2 ) int -> edx "CSE - moderate"
; V23 cse1 [V23,T18] ( 2, 2 ) int -> registers "CSE - moderate"
; V24 rat0 [V24,T14] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V25 rat1 [V25,T13] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V25 rat1 [V25,T13] ( 3, 2.80) int -> ebx "fgMakeTemp is creating a new local variable"
;* V26 rat2 [V26,T09] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V27 rat3 [V27,T19] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V28 rat4 [V28,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T03] ( 3, 8.80) int -> edx "Spilling to split statement for tree"
-; V30 rat6 [V30,T01] ( 3, 11.20) int -> eax "fgMakeTemp is creating a new local variable"
+; V29 rat5 [V29,T03] ( 3, 8.80) int -> ecx "Spilling to split statement for tree"
+; V30 rat6 [V30,T01] ( 3, 11.20) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
@@ -57,150 +57,166 @@ G_M44884_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[esi]
test edi, edi
je G_M44884_IG19
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, gword ptr [ebx+0x0C]
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V03}
+ mov edx, gword ptr [eax+0x0C]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
cmp byte ptr [esi+0x0D], 0
jne SHORT G_M44884_IG07
- ;; size=23 bbWeight=1 PerfScore 10.25
-G_M44884_IG03: ; bbWeight=0.50, gcVars=00000400 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
+ ;; size=26 bbWeight=1 PerfScore 11.25
+G_M44884_IG03: ; bbWeight=0.50, gcVars=00000C00 {V03 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x20]
- test edx, edx
+ mov ebx, dword ptr [ecx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x20]
+ test ebx, ebx
je SHORT G_M44884_IG05
;; size=17 bbWeight=0.50 PerfScore 5.12
-G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
+G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M44884_IG06
- ;; size=5 bbWeight=0.40 PerfScore 1.20
-G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
+ ; gcrRegs -[edx]
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=16 bbWeight=0.10 PerfScore 0.33
-G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
+ mov ebx, eax
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ ;; size=15 bbWeight=0.10 PerfScore 0.25
+G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
- ; gcrRegs -[eax]
+ mov eax, ebx
nop
call [eax]
; gcrRegs -[ecx edx]
+ mov ebx, eax
jmp SHORT G_M44884_IG08
- ;; size=14 bbWeight=0.50 PerfScore 3.38
-G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
+G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x0C]<unknown method>
+ mov ebx, dword ptr [edi]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, eax
+ mov ebx, eax
;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- mov dword ptr [ebp-0x10], ecx
- mov ebx, gword ptr [ebx+0x10]
- mov gword ptr [ebp-0x1C], ebx
+G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x10]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V17}
- mov edx, dword ptr [ebx+0x04]
- mov ebx, edx
- ; gcrRegs -[ebx]
- mov eax, ecx
+ mov edx, dword ptr [ecx+0x04]
+ mov ecx, edx
+ ; gcrRegs -[ecx]
+ mov eax, ebx
+ ; gcrRegs -[eax]
xor edx, edx
- div edx:eax, ebx
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov ebx, gword ptr [ebx+4*edx+0x08]
- test ebx, ebx
- je SHORT G_M44884_IG15
- ;; size=33 bbWeight=1 PerfScore 36.25
-G_M44884_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V17}
- cmp ecx, dword ptr [ebx+0x10]
- jne SHORT G_M44884_IG14
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M44884_IG10: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi]
- mov eax, dword ptr [edx+0x24]
- mov eax, dword ptr [eax]
- mov eax, dword ptr [eax+0x24]
+ div edx:eax, ecx
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M44884_IG15
+ ;; size=31 bbWeight=1 PerfScore 36.00
+G_M44884_IG09: ; bbWeight=4, gcVars=00000400 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V03 V17}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V08}
+ cmp ebx, dword ptr [eax+0x10]
+ jne SHORT G_M44884_IG14
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M44884_IG10: ; bbWeight=2, gcVars=00000401 {V04 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x24]
+ test edx, edx
je SHORT G_M44884_IG12
;; size=14 bbWeight=2 PerfScore 18.50
-G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
jmp SHORT G_M44884_IG13
- ;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
+ ;; size=5 bbWeight=1.60 PerfScore 4.80
+G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=12 bbWeight=0.40 PerfScore 0.60
-G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.40 PerfScore 0.90
+G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[ecx]
push edi
; gcr arg push 0
+ mov edx, ecx
+ ; gcrRegs +[edx]
mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M44884_IG17
...
+16 (+6.13%) : 19234.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
@@ -10,37 +10,37 @@
;
; V00 this [V00,T02] ( 6, 6.50) ref -> esi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T04] ( 7, 6.50) ref -> edi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T20] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T11] ( 3, 3 ) ref -> ebx class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T20] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T11] ( 3, 3 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V04 loc1 [V04,T10] ( 3, 3.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc4 [V07,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
-; V08 loc5 [V08,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc4 [V07,T07] ( 3, 6 ) int -> ebx
+; V08 loc5 [V08,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;* V09 tmp0 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T05] ( 3, 8 ) int -> eax "VirtualCall with runtime lookup"
-; V12 tmp3 [V12,T15] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V11 tmp2 [V11,T05] ( 3, 8 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V12 tmp3 [V12,T15] ( 3, 2 ) int -> ebx "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V15 tmp6 [V15,T16] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V15 tmp6 [V15,T16] ( 3, 2 ) int -> ebx "VirtualCall with runtime lookup"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> edx "argument with side effect"
+; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> ecx "argument with side effect"
; V22 cse0 [V22,T17] ( 2, 2 ) int -> edx "CSE - moderate"
; V23 cse1 [V23,T18] ( 2, 2 ) int -> registers "CSE - moderate"
; V24 rat0 [V24,T14] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V25 rat1 [V25,T13] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V25 rat1 [V25,T13] ( 3, 2.80) int -> ebx "fgMakeTemp is creating a new local variable"
;* V26 rat2 [V26,T09] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V27 rat3 [V27,T19] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V28 rat4 [V28,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T03] ( 3, 8.80) int -> edx "Spilling to split statement for tree"
-; V30 rat6 [V30,T01] ( 3, 11.20) int -> eax "fgMakeTemp is creating a new local variable"
+; V29 rat5 [V29,T03] ( 3, 8.80) int -> ecx "Spilling to split statement for tree"
+; V30 rat6 [V30,T01] ( 3, 11.20) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
@@ -57,150 +57,166 @@ G_M44884_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[esi]
test edi, edi
je G_M44884_IG19
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, gword ptr [ebx+0x0C]
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V03}
+ mov edx, gword ptr [eax+0x0C]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
cmp byte ptr [esi+0x0D], 0
jne SHORT G_M44884_IG07
- ;; size=23 bbWeight=1 PerfScore 10.25
-G_M44884_IG03: ; bbWeight=0.50, gcVars=00000400 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
+ ;; size=26 bbWeight=1 PerfScore 11.25
+G_M44884_IG03: ; bbWeight=0.50, gcVars=00000C00 {V03 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x20]
- test edx, edx
+ mov ebx, dword ptr [ecx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x20]
+ test ebx, ebx
je SHORT G_M44884_IG05
;; size=17 bbWeight=0.50 PerfScore 5.12
-G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
+G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M44884_IG06
- ;; size=5 bbWeight=0.40 PerfScore 1.20
-G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
+ ; gcrRegs -[edx]
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=16 bbWeight=0.10 PerfScore 0.33
-G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
+ mov ebx, eax
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ ;; size=15 bbWeight=0.10 PerfScore 0.25
+G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
- ; gcrRegs -[eax]
+ mov eax, ebx
nop
call [eax]
; gcrRegs -[ecx edx]
+ mov ebx, eax
jmp SHORT G_M44884_IG08
- ;; size=14 bbWeight=0.50 PerfScore 3.38
-G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
+G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x0C]<unknown method>
+ mov ebx, dword ptr [edi]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, eax
+ mov ebx, eax
;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- mov dword ptr [ebp-0x10], ecx
- mov ebx, gword ptr [ebx+0x10]
- mov gword ptr [ebp-0x1C], ebx
+G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x10]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V17}
- mov edx, dword ptr [ebx+0x04]
- mov ebx, edx
- ; gcrRegs -[ebx]
- mov eax, ecx
+ mov edx, dword ptr [ecx+0x04]
+ mov ecx, edx
+ ; gcrRegs -[ecx]
+ mov eax, ebx
+ ; gcrRegs -[eax]
xor edx, edx
- div edx:eax, ebx
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov ebx, gword ptr [ebx+4*edx+0x08]
- test ebx, ebx
- je SHORT G_M44884_IG15
- ;; size=33 bbWeight=1 PerfScore 36.25
-G_M44884_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V17}
- cmp ecx, dword ptr [ebx+0x10]
- jne SHORT G_M44884_IG14
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M44884_IG10: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi]
- mov eax, dword ptr [edx+0x24]
- mov eax, dword ptr [eax]
- mov eax, dword ptr [eax+0x24]
+ div edx:eax, ecx
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M44884_IG15
+ ;; size=31 bbWeight=1 PerfScore 36.00
+G_M44884_IG09: ; bbWeight=4, gcVars=00000400 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V03 V17}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V08}
+ cmp ebx, dword ptr [eax+0x10]
+ jne SHORT G_M44884_IG14
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M44884_IG10: ; bbWeight=2, gcVars=00000401 {V04 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x24]
+ test edx, edx
je SHORT G_M44884_IG12
;; size=14 bbWeight=2 PerfScore 18.50
-G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
jmp SHORT G_M44884_IG13
- ;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
+ ;; size=5 bbWeight=1.60 PerfScore 4.80
+G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=12 bbWeight=0.40 PerfScore 0.60
-G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.40 PerfScore 0.90
+G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[ecx]
push edi
; gcr arg push 0
+ mov edx, ecx
+ ; gcrRegs +[edx]
mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M44884_IG17
...
+24 (+6.17%) : 20990.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
@@ -8,48 +8,48 @@
; 0 inlinees with PGO data; 10 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 5, 7.50) ref -> esi class-hnd single-def <System.Security.Cryptography.OidCollection>
-; V01 arg1 [V01,T21] ( 4, 3 ) byref -> [ebp-0x28] single-def
-; V02 loc0 [V02,T11] ( 5, 13 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def <<unknown class>>
+; V00 arg0 [V00,T13] ( 5, 7.50) ref -> esi class-hnd single-def <System.Security.Cryptography.OidCollection>
+; V01 arg1 [V01,T21] ( 4, 3.50) byref -> [ebp-0x30] single-def
+; V02 loc0 [V02,T11] ( 5, 13 ) ref -> [ebp-0x34] class-hnd exact spill-single-def <<unknown class>>
; V03 loc1 [V03,T00] ( 9, 28.50) int -> [ebp-0x10]
-; V04 loc2 [V04,T13] ( 4, 9 ) int -> ecx
-; V05 loc3 [V05,T26] ( 3, 1.50) ref -> [ebp-0x30] class-hnd exact spill-single-def <System.Security.Cryptography.X509Certificates.SafeLocalAllocHandle>
-; V06 loc4 [V06,T22] ( 3, 5 ) int -> [ebp-0x14] spill-single-def
-; V07 loc5 [V07,T03] ( 6, 20.50) int -> [ebp-0x18]
+; V04 loc2 [V04,T12] ( 4, 10 ) int -> ecx
+; V05 loc3 [V05,T26] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def <System.Security.Cryptography.X509Certificates.SafeLocalAllocHandle>
+; V06 loc4 [V06,T20] ( 3, 6 ) int -> [ebp-0x14] spill-single-def
+; V07 loc5 [V07,T03] ( 6, 21 ) int -> [ebp-0x18]
;* V08 loc6 [V08,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
-; V09 loc7 [V09,T05] ( 5, 16.50) int -> edx
+; V09 loc7 [V09,T06] ( 5, 17 ) int -> edx
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V11 loc9 [V11,T04] ( 6, 20.50) int -> [ebp-0x1C]
+; V11 loc9 [V11,T04] ( 6, 21 ) int -> [ebp-0x1C]
; V12 loc10 [V12,T01] ( 7, 24 ) ref -> esi class-hnd exact <System.String>
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp0 [V14,T07] ( 2, 16 ) ref -> edi class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V15 tmp1 [V15,T08] ( 2, 16 ) ref -> ebx class-hnd exact "impAppendStmt" <<unknown class>>
+; V14 tmp0 [V14,T08] ( 2, 16 ) ref -> edi class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
+; V15 tmp1 [V15,T09] ( 2, 16 ) ref -> ebx class-hnd exact "impAppendStmt" <<unknown class>>
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V17 tmp3 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V19 tmp5 [V19,T06] ( 3, 16 ) int -> edi "Inlining Arg"
+; V19 tmp5 [V19,T07] ( 3, 16 ) int -> edi "Inlining Arg"
;* V20 tmp6 [V20,T23] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Oid>
;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp10 [V24,T18] ( 2, 8 ) int -> edi "Inlining Arg"
-; V25 tmp11 [V25,T16] ( 2, 8 ) byref -> ecx "Inlining Arg"
+; V24 tmp10 [V24,T18] ( 2, 8 ) int -> [ebp-0x20] spill-single-def "Inlining Arg"
+; V25 tmp11 [V25,T16] ( 2, 8 ) byref -> [ebp-0x3C] spill-single-def "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp14 [V28,T09] ( 2, 16 ) int -> ecx "Inlining Arg"
+; V28 tmp14 [V28,T10] ( 2, 16 ) int -> ecx "Inlining Arg"
; V29 tmp15 [V29,T17] ( 2, 8 ) byref -> edi "field V16._reference (fldOffset=0x0)" P-INDEP
; V30 tmp16 [V30,T19] ( 2, 8 ) int -> ecx "field V16._length (fldOffset=0x4)" P-INDEP
-; V31 tmp17 [V31,T14] ( 3, 8 ) byref -> [ebp-0x34] "field V17._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp18 [V32,T15] ( 3, 8 ) int -> [ebp-0x20] "field V17._length (fldOffset=0x4)" P-INDEP
-; V33 tmp19 [V33,T24] ( 2, 4 ) byref -> ecx "field V22._reference (fldOffset=0x0)" P-INDEP
-; V34 tmp20 [V34,T25] ( 2, 4 ) int -> edi "field V22._length (fldOffset=0x4)" P-INDEP
+; V31 tmp17 [V31,T14] ( 3, 8 ) byref -> [ebp-0x40] "field V17._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp18 [V32,T15] ( 3, 8 ) int -> [ebp-0x24] "field V17._length (fldOffset=0x4)" P-INDEP
+; V33 tmp19 [V33,T24] ( 2, 4 ) byref -> [ebp-0x44] spill-single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+; V34 tmp20 [V34,T25] ( 2, 4 ) int -> [ebp-0x28] spill-single-def "field V22._length (fldOffset=0x4)" P-INDEP
;* V35 tmp21 [V35 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
; V37 tmp23 [V37,T02] ( 3, 24 ) ref -> edi "arr expr"
-; V38 cse0 [V38,T20] ( 4, 5.50) int -> ebx "CSE - conservative"
-; V39 cse1 [V39,T10] ( 10, 15.50) int -> [ebp-0x24] spill-single-def "CSE - moderate"
+; V38 cse0 [V38,T22] ( 4, 5.50) int -> ebx "CSE - conservative"
+; V39 cse1 [V39,T05] ( 10, 18 ) int -> [ebp-0x2C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M16564_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -57,7 +57,7 @@ G_M16564_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 40
+ sub esp, 56
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -96,13 +96,13 @@ G_M16564_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V02}
xor ecx, ecx
mov edx, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x24], edx
+ mov dword ptr [ebp-0x2C], edx
test edx, edx
- mov bword ptr [ebp-0x28], edi
+ mov bword ptr [ebp-0x30], edi
; GC ptr vars +{V01}
jle G_M16564_IG17
;; size=34 bbWeight=0.50 PerfScore 4.00
@@ -123,18 +123,18 @@ G_M16564_IG07: ; bbWeight=4, gcVars=00200800 {V01 V02}, gcrefRegs=0000004
; gcrRegs -[edi]
; byrRegs -[edx]
inc ecx
- mov edi, dword ptr [ebp-0x24]
+ mov edi, dword ptr [ebp-0x2C]
cmp edi, ecx
jg SHORT G_M16564_IG16
;; size=46 bbWeight=4 PerfScore 64.00
-G_M16564_IG08: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M16564_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
imul ecx, edi, 4
jo G_M16564_IG23
xor edx, edx
test edi, edi
jle SHORT G_M16564_IG15
- ;; size=15 bbWeight=0.50 PerfScore 2.25
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M16564_IG09: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov esi, gword ptr [eax+4*edx+0x08]
; gcrRegs +[esi]
@@ -148,13 +148,13 @@ G_M16564_IG09: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000
cmp edi, edx
jg SHORT G_M16564_IG14
;; size=29 bbWeight=4 PerfScore 32.00
-G_M16564_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M16564_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
call [System.Security.Cryptography.X509Certificates.SafeLocalAllocHandle:Create(int):System.Security.Cryptography.X509Certificates.SafeLocalAllocHandle]
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
- mov gword ptr [ebp-0x30], esi
+ mov gword ptr [ebp-0x38], esi
; GC ptr vars +{V05}
mov ebx, dword ptr [esi+0x08]
mov dword ptr [ebp-0x14], ebx
@@ -163,10 +163,10 @@ G_M16564_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
xor edx, edx
test edi, edi
jle SHORT G_M16564_IG13
- ;; size=26 bbWeight=0.50 PerfScore 4.62
+ ;; size=26 bbWeight=1 PerfScore 9.25
G_M16564_IG11: ; bbWeight=4, gcVars=04200800 {V01 V02 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
- mov ecx, gword ptr [ebp-0x2C]
+ mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]
mov esi, gword ptr [ecx+4*edx+0x08]
; gcrRegs +[esi]
@@ -181,35 +181,35 @@ G_M16564_IG12: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs -[ecx]
xor ecx, ecx
; byrRegs +[ecx]
- xor edi, edi
- mov bword ptr [ebp-0x34], ecx
+ mov bword ptr [ebp-0x40], ecx
; GC ptr vars +{V31}
- mov dword ptr [ebp-0x20], edi
+ xor ecx, ecx
+ ; byrRegs -[ecx]
+ mov dword ptr [ebp-0x24], ecx
jmp SHORT G_M16564_IG19
;; size=12 bbWeight=2 PerfScore 9.00
-G_M16564_IG13: ; bbWeight=0.25, gcVars=04200000 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M16564_IG13: ; bbWeight=0.50, gcVars=04200000 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx esi]
- ; byrRegs -[ecx]
; GC ptr vars -{V02 V31}
- mov ebx, dword ptr [ebp-0x24]
+ mov ebx, dword ptr [ebp-0x2C]
jmp SHORT G_M16564_IG20
- ;; size=5 bbWeight=0.25 PerfScore 0.75
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
G_M16564_IG14: ; bbWeight=2, gcVars=00200800 {V01 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V05} +{V02 V11}
- mov eax, gword ptr [ebp-0x2C]
+ mov eax, gword ptr [ebp-0x34]
; gcrRegs +[eax]
jmp SHORT G_M16564_IG09
;; size=5 bbWeight=2 PerfScore 6.00
-G_M16564_IG15: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M16564_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M16564_IG10
- ;; size=2 bbWeight=0.25 PerfScore 0.50
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M16564_IG16: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
jmp G_M16564_IG07
;; size=5 bbWeight=2 PerfScore 4.00
G_M16564_IG17: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- mov edi, dword ptr [ebp-0x24]
+ mov edi, dword ptr [ebp-0x2C]
jmp SHORT G_M16564_IG08
;; size=5 bbWeight=0.25 PerfScore 0.75
G_M16564_IG18: ; bbWeight=2, gcVars=04200800 {V01 V02 V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
@@ -217,19 +217,34 @@ G_M16564_IG18: ; bbWeight=2, gcVars=04200800 {V01 V02 V05}, gcrefRegs=000
; GC ptr vars -{V11} +{V05}
lea ecx, bword ptr [esi+0x08]
; byrRegs +[ecx]
- mov edi, dword ptr [esi+0x04]
- mov bword ptr [ebp-0x34], ecx
- ; GC ptr vars +{V31}
- mov dword ptr [ebp-0x20], edi
- ;; size=12 bbWeight=2 PerfScore 9.00
-G_M16564_IG19: ; bbWeight=4, gcVars=04204800 {V01 V02 V05 V31}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov bword ptr [ebp-0x3C], ecx
+ ; GC ptr vars +{V25}
+ mov ecx, dword ptr [esi+0x04]
; byrRegs -[ecx]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, bword ptr [ebp-0x3C]
+ ; byrRegs +[ecx]
+ mov bword ptr [ebp-0x44], ecx
+ ; GC ptr vars +{V33}
+ mov ecx, dword ptr [ebp-0x20]
+ ; byrRegs -[ecx]
+ mov dword ptr [ebp-0x28], ecx
+ mov ecx, bword ptr [ebp-0x44]
+ ; byrRegs +[ecx]
+ mov bword ptr [ebp-0x40], ecx
+ ; GC ptr vars +{V31}
+ mov ecx, dword ptr [ebp-0x28]
+ ; byrRegs -[ecx]
+ mov dword ptr [ebp-0x24], ecx
+ ;; size=36 bbWeight=2 PerfScore 25.00
+G_M16564_IG19: ; bbWeight=4, gcVars=04204800 {V01 V02 V05 V31}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V25 V33}
mov ecx, dword ptr [esi+0x04]
mov dword ptr [ebp-0x18], eax
mov edi, eax
; byrRegs +[edi]
- push dword ptr [ebp-0x20]
- push bword ptr [ebp-0x34]
+ push dword ptr [ebp-0x24]
+ push bword ptr [ebp-0x40]
; byr arg push 1
push ecx
push edi
@@ -250,28 +265,28 @@ G_M16564_IG19: ; bbWeight=4, gcVars=04204800 {V01 V02 V05 V31}, gcrefRegs
mov esi, dword ptr [ebp-0x1C]
; gcrRegs -[esi]
inc esi
- mov ebx, dword ptr [ebp-0x24]
+ mov ebx, dword ptr [ebp-0x2C]
cmp ebx, esi
mov eax, edi
mov edx, esi
jg SHORT G_M16564_IG22
;; size=58 bbWeight=4 PerfScore 98.00
-G_M16564_IG20: ; bbWeight=0.50, gcVars=04200000 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
...
benchmarks.run_pgo.windows.x86.checked.mch
-15 (-8.52%) : 33271.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -28,7 +28,7 @@
;
; Lcl frame size = 12
-G_M35959_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M35959_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -76,38 +76,28 @@ G_M35959_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [eax+0x08]
cmp esi, 1
- jbe SHORT G_M35959_IG08
+ jbe SHORT G_M35959_IG06
;; size=11 bbWeight=4 PerfScore 21.00
G_M35959_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax]
test edx, edx
- je SHORT G_M35959_IG07
+ je SHORT G_M35959_IG08
inc ecx
add ebx, ecx
mov esi, bword ptr [ebp-0x18]
; byrRegs +[esi]
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
- jl SHORT G_M35959_IG03
- ;; size=18 bbWeight=8 PerfScore 56.00
-G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[esi]
+ jge SHORT G_M35959_IG08
+ jmp SHORT G_M35959_IG03
+ ;; size=20 bbWeight=8 PerfScore 72.00
+G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+ ; byrRegs -[esi] +[eax]
; GC ptr vars -{V06}
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M35959_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M35959_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp edx, dword ptr [eax]
- jne SHORT G_M35959_IG11
+ jne SHORT G_M35959_IG08
cmp esi, 1
- jne SHORT G_M35959_IG10
+ jne SHORT G_M35959_IG08
mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, gword ptr [ebp+0x08]
@@ -117,7 +107,7 @@ G_M35959_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
; gcrRegs -[edx]
; byrRegs -[eax ecx]
;; size=20 bbWeight=1 PerfScore 8.25
-G_M35959_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -125,29 +115,19 @@ G_M35959_IG09: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35959_IG10: ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35959_IG08: ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V00 V09}
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M35959_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M35959_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
- ; GC ptr vars -{V00 V09}
push gword ptr [ebp+0x08]
; gcr arg push 0
- mov ecx, eax
+ mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, dword ptr [ebp-0x10]
+ ; GC ptr vars -{V00 V09}
call [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
- ; byrRegs -[eax ecx]
+ ; byrRegs -[ecx]
; gcr arg pop 1
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M35959_IG13: ; bbWeight=0, epilog, nogc, extend
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -156,6 +136,6 @@ G_M35959_IG13: ; bbWeight=0, epilog, nogc, extend
ret 4
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 15, PerfScore 183.75, instruction count 71, allocated bytes for code 176 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================
-15 (-8.52%) : 5168.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -28,7 +28,7 @@
;
; Lcl frame size = 12
-G_M35959_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M35959_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -76,38 +76,28 @@ G_M35959_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [eax+0x08]
cmp esi, 1
- jbe SHORT G_M35959_IG08
+ jbe SHORT G_M35959_IG06
;; size=11 bbWeight=4 PerfScore 21.00
G_M35959_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax]
test edx, edx
- je SHORT G_M35959_IG07
+ je SHORT G_M35959_IG08
inc ecx
add ebx, ecx
mov esi, bword ptr [ebp-0x18]
; byrRegs +[esi]
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
- jl SHORT G_M35959_IG03
- ;; size=18 bbWeight=8 PerfScore 56.00
-G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[esi]
+ jge SHORT G_M35959_IG08
+ jmp SHORT G_M35959_IG03
+ ;; size=20 bbWeight=8 PerfScore 72.00
+G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+ ; byrRegs -[esi] +[eax]
; GC ptr vars -{V06}
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M35959_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M35959_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp edx, dword ptr [eax]
- jne SHORT G_M35959_IG11
+ jne SHORT G_M35959_IG08
cmp esi, 1
- jne SHORT G_M35959_IG10
+ jne SHORT G_M35959_IG08
mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, gword ptr [ebp+0x08]
@@ -117,7 +107,7 @@ G_M35959_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
; gcrRegs -[edx]
; byrRegs -[eax ecx]
;; size=20 bbWeight=1 PerfScore 8.25
-G_M35959_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -125,29 +115,19 @@ G_M35959_IG09: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35959_IG10: ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35959_IG08: ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V00 V09}
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- jmp SHORT G_M35959_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M35959_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x14]
- ; byrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M35959_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
- ; GC ptr vars -{V00 V09}
push gword ptr [ebp+0x08]
; gcr arg push 0
- mov ecx, eax
+ mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, dword ptr [ebp-0x10]
+ ; GC ptr vars -{V00 V09}
call [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
- ; byrRegs -[eax ecx]
+ ; byrRegs -[ecx]
; gcr arg pop 1
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M35959_IG13: ; bbWeight=0, epilog, nogc, extend
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -156,6 +136,6 @@ G_M35959_IG13: ; bbWeight=0, epilog, nogc, extend
ret 4
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 15, PerfScore 183.75, instruction count 71, allocated bytes for code 176 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================
-11 (-7.64%) : 49401.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
; ============================================================
+25 (+7.76%) : 45578.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 62
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 62
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 4.85) byref -> esi this single-def
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T01] ( 7, 6.11) byref -> esi this single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon>
; V03 TypeCtx [V03,T12] ( 4, 1.57) int -> ecx single-def
-; V04 loc0 [V04,T07] ( 4, 3.29) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V04 loc0 [V04,T08] ( 4, 3.29) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T13] ( 3, 1.44) int -> eax
; V06 loc2 [V06,T10] ( 3, 2.13) 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, 2.13) 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,T07] ( 4, 3.39) 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,T14] ( 4, 1.42) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T06] ( 4, 3.55) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T08] ( 6, 2.14) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T06] ( 4, 3.55) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T09] ( 6, 2.14) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 13.14) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 7.10) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
+; V13 tmp7 [V13,T02] ( 6, 7.10) ref -> edi class-hnd "Inline stloc first use temp" <System.__Canon>
; V14 tmp8 [V14,T04] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 5, 3.73) int -> ebx "CSE - moderate"
+; V15 cse0 [V15,T05] ( 5, 3.73) int -> [ebp-0x18] spill-single-def "CSE - moderate"
; V16 rat0 [V16,T15] ( 3, 1.42) int -> edx "runtime lookup"
; V17 rat1 [V17,T11] ( 3, 1.99) 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,10 +36,10 @@ 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]
@@ -49,10 +49,10 @@ G_M35195_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000000 {}
mov edx, gword ptr [esi]
; gcrRegs +[edx]
test edx, edx
- je G_M35195_IG15
+ je G_M35195_IG17
;; size=10 bbWeight=1 PerfScore 3.25
G_M35195_IG03: ; bbWeight=0.65, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
- mov edi, gword ptr [ebp-0x18]
+ mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi]
mov eax, dword ptr [edx+0x0C]
lea eax, [2*eax+0x02]
@@ -101,78 +101,88 @@ G_M35195_IG07: ; bbWeight=0.35, gcrefRegs=00000080 {edi}, byrefRegs=00000
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
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V08}
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M35195_IG20
+ je G_M35195_IG22
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax
+ mov gword ptr [ebp-0x24], eax
; GC ptr vars +{V10}
mov edx, gword ptr [ecx+0x08]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x24], edx
+ mov gword ptr [ebp-0x28], edx
; GC ptr vars +{V11}
xor ecx, ecx
; gcrRegs -[ecx]
- mov ebx, dword ptr [eax+0x04]
- ; gcrRegs -[ebx]
- test ebx, ebx
- jle G_M35195_IG20
- ;; size=60 bbWeight=0.35 PerfScore 6.65
-G_M35195_IG08: ; bbWeight=0.18, gcVars=00000340 {V08 V10 V11}, gcrefRegs=00000085 {eax edx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- test edx, edx
- je SHORT G_M35195_IG13
- cmp dword ptr [edx+0x04], ebx
- jl SHORT G_M35195_IG17
- ;; size=9 bbWeight=0.18 PerfScore 0.93
-G_M35195_IG09: ; bbWeight=2.81, gcrefRegs=00000081 {eax edi}, byrefRegs=00000040 {esi}, byref, isz
+ mov edx, dword ptr [eax+0x04]
; gcrRegs -[edx]
- mov edx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x18], edx
test edx, edx
+ jle G_M35195_IG22
+ ;; size=63 bbWeight=0.35 PerfScore 7.01
+G_M35195_IG08: ; bbWeight=0.18, gcVars=000002C0 {V08 V10 V11}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[ebx]
+ cmp gword ptr [ebp-0x28], 0
+ mov gword ptr [ebp-0x1C], edi
+ ; GC ptr vars +{V01}
+ je SHORT G_M35195_IG15
+ mov edi, gword ptr [ebp-0x28]
+ cmp dword ptr [edi+0x04], edx
+ jl SHORT G_M35195_IG13
+ ;; size=17 bbWeight=0.18 PerfScore 1.60
+G_M35195_IG09: ; bbWeight=2.81, gcVars=000002C8 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi]
+ mov edi, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edi]
+ test edi, edi
je SHORT G_M35195_IG11
;; size=8 bbWeight=2.81 PerfScore 9.13
-G_M35195_IG10: ; bbWeight=1.41, gcrefRegs=00000084 {edx edi}, byrefRegs=00000040 {esi}, byref
+G_M35195_IG10: ; bbWeight=1.41, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[eax]
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- mov edi, gword ptr [ebp-0x24]
+ mov ebx, gword ptr [ebp-0x28]
+ ; gcrRegs +[ebx]
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edi+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
+ mov edx, edi
+ ; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx edi]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x14]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=28 bbWeight=1.41 PerfScore 15.46
-G_M35195_IG11: ; bbWeight=2.81, gcVars=00000340 {V08 V10 V11}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V01}
+ ;; size=24 bbWeight=1.41 PerfScore 13.00
+G_M35195_IG11: ; bbWeight=2.81, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; gcrRegs -[ebx]
inc ecx
- cmp ebx, ecx
- mov eax, gword ptr [ebp-0x20]
+ mov edx, dword ptr [ebp-0x18]
+ cmp edx, ecx
+ mov eax, gword ptr [ebp-0x24]
; gcrRegs +[eax]
jg SHORT G_M35195_IG09
- ;; size=8 bbWeight=2.81 PerfScore 7.03
-G_M35195_IG12: ; bbWeight=0.16, gcVars=00000200 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ;; size=11 bbWeight=2.81 PerfScore 9.84
+G_M35195_IG12: ; bbWeight=1.61, gcVars=00000088 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars -{V08 V10 V11}
- jmp SHORT G_M35195_IG20
- ;; size=2 bbWeight=0.16 PerfScore 0.33
-G_M35195_IG13: ; bbWeight=0.09, gcVars=00000340 {V08 V10 V11}, gcrefRegs=00000085 {eax edx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[eax edx]
- ; GC ptr vars +{V06 V08 V10 V11}
- jmp SHORT G_M35195_IG17
- ;; size=2 bbWeight=0.09 PerfScore 0.18
+ ; GC ptr vars -{V10 V11}
+ mov ebx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ebx]
+ mov edi, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M35195_IG22
+ ;; size=8 bbWeight=1.61 PerfScore 6.45
+G_M35195_IG13: ; bbWeight=0.09, gcVars=000002C8 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[ebx edi] +[eax]
+ ; GC ptr vars +{V06 V09 V10 V11}
+ mov edx, dword ptr [ebp-0x18]
+ jmp SHORT G_M35195_IG15
+ ;; size=5 bbWeight=0.09 PerfScore 0.27
G_M35195_IG14: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars -{V06 V08 V10 V11}
+ ; gcrRegs -[eax] +[edi]
+ ; GC ptr vars -{V01 V06 V08 V09 V10 V11}
push ecx
mov ecx, esi
; byrRegs +[ecx]
@@ -181,10 +191,23 @@ G_M35195_IG14: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000080 {e
; byrRegs -[ecx]
jmp G_M35195_IG04
;; size=16 bbWeight=0.15 PerfScore 0.94
-G_M35195_IG15: ; bbWeight=0.35, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars +{V01 V03}
- mov edi, gword ptr [ebp-0x18]
+G_M35195_IG15: ; bbWeight=0.03, gcVars=000002C8 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[eax]
+ ; GC ptr vars +{V01 V03 V06 V08 V09 V10 V11}
+ mov edi, gword ptr [eax+4*ecx+0x08]
+ ; gcrRegs +[edi]
+ test edi, edi
+ je SHORT G_M35195_IG20
+ ;; size=8 bbWeight=0.03 PerfScore 0.09
+G_M35195_IG16: ; bbWeight=0.01, gcrefRegs=00000081 {eax edi}, byrefRegs=00000040 {esi}, byref, isz
+ mov ebx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M35195_IG19
+ ;; size=5 bbWeight=0.01 PerfScore 0.04
+G_M35195_IG17: ; bbWeight=0.35, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; gcrRegs -[eax ebx edi]
+ ; GC ptr vars -{V03 V06 V08 V09 V10 V11}
+ mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
@@ -192,64 +215,62 @@ G_M35195_IG15: ; bbWeight=0.35, gcVars=00000008 {V01}, gcrefRegs=00000000
test edx, edx
je G_M35195_IG06
;; size=19 bbWeight=0.35 PerfScore 2.93
-G_M35195_IG16: ; bbWeight=0.28, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V01 V03}
+G_M35195_IG18: ; bbWeight=0.28, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars -{V01}
jmp G_M35195_IG07
;; size=5 bbWeight=0.28 PerfScore 0.57
-G_M35195_IG17: ; bbWeight=0.03, gcVars=00000340 {V08 V10 V11}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[eax]
- ; GC ptr vars +{V06 V08 V09 V10 V11}
- mov edx, gword ptr [eax+4*ecx+0x08]
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M35195_IG19
- ;; size=8 bbWeight=0.03 PerfScore 0.09
-G_M35195_IG18: ; bbWeight=0.01, gcrefRegs=00000084 {edx edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[eax]
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- mov edi, gword ptr [ebp-0x24]
...
+32 (+8.74%) : 43153.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
@@ -8,34 +8,34 @@
; 8 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 9, 43.50) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
-; V01 arg1 [V01,T11] ( 8, 5.25) ref -> edi class-hnd single-def <System.String>
-; V02 arg2 [V02,T16] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
+; V00 this [V00,T03] ( 9, 44 ) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
+; V01 arg1 [V01,T11] ( 8, 5.75) ref -> [ebp-0x18] class-hnd single-def <System.String>
+; V02 arg2 [V02,T15] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
; V03 loc0 [V03,T07] ( 6, 20.50) int -> [ebp-0x10]
-; V04 loc1 [V04,T04] ( 7, 37 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.String>
+; V04 loc1 [V04,T04] ( 7, 38 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.String>
;* V05 loc2 [V05,T10] ( 0, 0 ) ubyte -> zero-ref
; V06 loc3 [V06,T02] ( 7, 88 ) int -> [ebp-0x14]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V08 tmp0 [V08,T12] ( 6, 5 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
-; V09 tmp1 [V09,T15] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
+; V09 tmp1 [V09,T16] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
; V10 tmp2 [V10,T14] ( 2, 2 ) byref -> ecx single-def "impAppendStmt"
;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp8 [V16,T00] ( 5, 96 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V16 tmp8 [V16,T00] ( 5, 96 ) ref -> ebx class-hnd exact "Inlining Arg" <System.String>
; V17 tmp9 [V17,T08] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V18 tmp10 [V18,T05] ( 2, 32 ) byref -> ecx "impAppendStmt"
+; V18 tmp10 [V18,T05] ( 2, 32 ) byref -> ebx "impAppendStmt"
;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp13 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp16 [V24,T06] ( 3, 24 ) ref -> eax "arr expr"
-; V25 tmp17 [V25,T01] ( 3, 96 ) ref -> ecx "arr expr"
+; V24 tmp16 [V24,T06] ( 3, 24 ) ref -> edx "arr expr"
+; V25 tmp17 [V25,T01] ( 3, 96 ) ref -> ebx "arr expr"
;* V26 cse0 [V26,T13] ( 0, 0 ) int -> zero-ref multi-def "CSE - moderate"
-; V27 cse1 [V27,T09] ( 3, 16 ) int -> [ebp-0x18] "CSE - moderate"
+; V27 cse1 [V27,T09] ( 3, 16 ) int -> edi "CSE - moderate"
;
; Lcl frame size = 16
@@ -50,12 +50,14 @@ G_M55749_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=13 bbWeight=1 PerfScore 5.00
-G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], 0
jne SHORT G_M55749_IG09
;; size=6 bbWeight=1 PerfScore 4.00
-G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -65,14 +67,14 @@ G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
cmp eax, edi
je SHORT G_M55749_IG07
;; size=17 bbWeight=0.50 PerfScore 2.38
-G_M55749_IG04: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG04: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
je SHORT G_M55749_IG06
mov edx, dword ptr [eax+0x04]
cmp edx, dword ptr [edi+0x04]
jne SHORT G_M55749_IG06
;; size=12 bbWeight=0.25 PerfScore 1.81
-G_M55749_IG05: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG05: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
mov edx, dword ptr [eax+0x04]
@@ -86,19 +88,19 @@ G_M55749_IG05: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
test eax, eax
jne SHORT G_M55749_IG07
;; size=22 bbWeight=0.50 PerfScore 4.25
-G_M55749_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M55749_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
push edi
; gcr arg push 0
- push gword ptr [ebp+0x08]
+ push ebx
; gcr arg push 1
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[ecx edx esi edi]
+ ; gcrRegs -[ecx edx ebx esi edi]
; gcr arg pop 2
- ;; size=17 bbWeight=0.50 PerfScore 2.75
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
G_M55749_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
@@ -111,158 +113,200 @@ G_M55749_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55749_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi edi]
- xor ebx, ebx
+G_M55749_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[ebx esi edi]
+ xor eax, eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M55749_IG25
+ je G_M55749_IG30
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M55749_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [D1FFAB1EH]
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 0
- jle G_M55749_IG20
- ;; size=15 bbWeight=0.50 PerfScore 3.00
-G_M55749_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp ebx, dword ptr [eax+0x04]
- jae G_M55749_IG24
- mov edx, gword ptr [eax+4*ebx+0x08]
+G_M55749_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [D1FFAB1EH]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
- ; GC ptr vars +{V04}
- mov eax, dword ptr [esi+0x18]
- ; gcrRegs -[eax]
- dec eax
- cmp eax, dword ptr [esi+0x2C]
- jl G_M55749_IG22
- ;; size=34 bbWeight=4 PerfScore 61.00
-G_M55749_IG12: ; bbWeight=16, gcVars=00000010 {V04}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, gword ptr [esi+0x04]
+ cmp dword ptr [edx+0x04], 0
+ jle G_M55749_IG25
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M55749_IG11: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ mov edx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edx]
+ cmp eax, dword ptr [edx+0x04]
+ jae G_M55749_IG29
+ mov dword ptr [ebp-0x10], eax
+ mov ecx, gword ptr [edx+4*eax+0x08]
; gcrRegs +[ecx]
- cmp eax, dword ptr [ecx+0x04]
- jae G_M55749_IG24
- mov ecx, gword ptr [ecx+4*eax+0x08]
- mov ecx, gword ptr [ecx+0x04]
- cmp ecx, edx
- je SHORT G_M55749_IG18
- ;; size=23 bbWeight=16 PerfScore 180.00
-G_M55749_IG13: ; bbWeight=4, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x1C], ecx
+ ; GC ptr vars +{V04}
+ mov edx, dword ptr [esi+0x18]
+ ; gcrRegs -[edx]
+ dec edx
+ cmp edx, dword ptr [esi+0x2C]
+ jl SHORT G_M55749_IG22
+ ;; size=34 bbWeight=4 PerfScore 65.00
+G_M55749_IG12: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ mov gword ptr [ebp+0x08], ebx
+ ;; size=3 bbWeight=2 PerfScore 2.00
+G_M55749_IG13: ; bbWeight=16, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp edx, dword ptr [ebx+0x04]
+ jae G_M55749_IG29
+ mov dword ptr [ebp-0x14], edx
+ mov ebx, gword ptr [ebx+4*edx+0x08]
+ mov ebx, gword ptr [ebx+0x04]
+ cmp ebx, ecx
+ je SHORT G_M55749_IG23
+ ;; size=26 bbWeight=16 PerfScore 196.00
+G_M55749_IG14: ; bbWeight=4, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M55749_IG21
test ecx, ecx
- je SHORT G_M55749_IG15
- jmp SHORT G_M55749_IG17
- ;; size=6 bbWeight=4 PerfScore 13.00
-G_M55749_IG14: ; bbWeight=8, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x10], ebx
- add ecx, 8
+ mov gword ptr [ebp-0x18], edi
+ ; GC ptr vars +{V01}
+ je SHORT G_M55749_IG20
+ mov edi, dword ptr [ebx+0x04]
+ ; gcrRegs -[edi]
+ cmp edi, dword ptr [ecx+0x04]
+ jne SHORT G_M55749_IG19
+ ;; size=19 bbWeight=4 PerfScore 38.00
+G_M55749_IG15: ; bbWeight=8, gcVars=00000810 {V01 V04}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ add ebx, 8
+ ; gcrRegs -[ebx]
+ ; byrRegs +[ebx]
+ add edi, edi
+ push edi
+ lea edx, bword ptr [ecx+0x08]
+ ; byrRegs +[edx]
+ mov ecx, ebx
; gcrRegs -[ecx]
; byrRegs +[ecx]
- mov ebx, dword ptr [ebp-0x18]
- add ebx, ebx
- push ebx
- add edx, 8
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx ebx]
test eax, eax
- mov eax, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x1C]
- ; gcrRegs +[edx]
- mov ebx, dword ptr [ebp-0x10]
jne SHORT G_M55749_IG18
- ;; size=37 bbWeight=8 PerfScore 96.00
-G_M55749_IG15: ; bbWeight=16, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, dword ptr [esi+0x2C]
- jge SHORT G_M55749_IG12
- ;; size=6 bbWeight=16 PerfScore 68.00
-G_M55749_IG16: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M55749_IG22
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M55749_IG17: ; bbWeight=4, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=21 bbWeight=8 PerfScore 52.00
+G_M55749_IG16: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, dword ptr [ebp-0x14]
+ dec edi
+ cmp edi, dword ptr [esi+0x2C]
+ mov edx, edi
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
...
+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.05) 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.36) 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
-11 (-7.64%) : 9336.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
; ============================================================
-11 (-7.64%) : 24576.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
; ============================================================
-19 (-4.19%) : 53230.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (Tier0-FullOpts)
@@ -12,38 +12,38 @@
; V01 arg1 [V01,T07] ( 8, 12 ) int -> [ebp-0x10] single-def
; V02 arg2 [V02,T12] ( 4, 2.50) int -> [ebp+0x08] single-def
; V03 loc0 [V03,T00] ( 21, 29 ) int -> [ebp-0x14]
-; V04 loc1 [V04,T01] ( 20, 27.50) int -> [ebp-0x18]
-; V05 loc2 [V05,T04] ( 8, 21.50) int -> [ebp-0x1C]
+; V04 loc1 [V04,T01] ( 20, 28 ) int -> registers
+; V05 loc2 [V05,T04] ( 8, 21.50) int -> [ebp-0x18]
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
-; V07 loc4 [V07,T11] ( 5, 2.50) int -> [ebp-0x20] spill-single-def
+; V07 loc4 [V07,T09] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def
;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op <System.Numerics.Vector`1[ushort]>
;* V10 loc7 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 loc8 [V11 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ushort]>
;* V12 loc9 [V12 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ushort]>
;* V13 loc10 [V13 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[ubyte]>
-; V14 loc11 [V14,T08] ( 2, 4.50) int -> [ebp-0x24] spill-single-def
+; V14 loc11 [V14,T08] ( 2, 4.50) int -> [ebp-0x20] spill-single-def
;* V15 tmp0 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V16 tmp1 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp2 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V19 tmp4 [V19,T02] ( 3, 24 ) byref -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V19 tmp4 [V19,T02] ( 3, 24 ) byref -> [ebp-0x24] spill-single-def "Inlining Arg"
;* V20 tmp5 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp6 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V22 tmp7 [V22,T03] ( 3, 24 ) byref -> ebx "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp9 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp10 [V25,T09] ( 3, 3 ) byref -> ecx single-def "Inlining Arg"
+; V25 tmp10 [V25,T10] ( 3, 3 ) byref -> ecx single-def "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp12 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp13 [V28,T10] ( 3, 3 ) byref -> ecx "Inlining Arg"
+; V28 tmp13 [V28,T11] ( 3, 3 ) byref -> ecx "Inlining Arg"
;* V29 tmp14 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp15 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 cse0 [V32,T05] ( 4, 16 ) int -> ecx "CSE - moderate"
; V33 cse1 [V33,T13] ( 3, 1.50) int -> ecx "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 24
G_M6479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -51,7 +51,7 @@ G_M6479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 28
+ sub esp, 24
mov esi, ecx
mov edi, edx
mov ebx, dword ptr [ebp+0x08]
@@ -69,9 +69,9 @@ G_M6479_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
or ebx, ecx
test ebx, 0xD1FFAB1E
mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x1C], ecx
+ mov dword ptr [ebp-0x18], ecx
mov ebx, edx
- jne G_M6479_IG17
+ jne G_M6479_IG19
mov ebx, dword ptr [ebp+0x08]
push ebx
mov ecx, esi
@@ -96,11 +96,11 @@ G_M6479_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M6479_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x14]
sub ebx, eax
- mov dword ptr [ebp-0x20], ebx
+ mov dword ptr [ebp-0x1C], ebx
cmp ebx, 4
- jb G_M6479_IG16
+ jb G_M6479_IG18
lea edx, [eax+ebx-0x04]
- mov dword ptr [ebp-0x24], edx
+ mov dword ptr [ebp-0x20], edx
mov dword ptr [ebp-0x10], edi
;; size=27 bbWeight=0.50 PerfScore 3.25
G_M6479_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
@@ -108,14 +108,14 @@ G_M6479_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ecx, eax
mov ebx, dword ptr [esi+2*ecx]
mov edx, dword ptr [esi+2*ecx+0x04]
- mov dword ptr [ebp-0x1C], edx
+ mov dword ptr [ebp-0x18], edx
mov edi, ebx
or edi, edx
test edi, 0xD1FFAB1E
- jne G_M6479_IG18
+ jne G_M6479_IG20
mov edi, dword ptr [ebp-0x10]
add ecx, edi
- mov bword ptr [ebp-0x28], ecx
+ mov bword ptr [ebp-0x24], ecx
; GC ptr vars +{V19}
test ebx, 0xD1FFAB1E
je SHORT G_M6479_IG08
@@ -129,14 +129,14 @@ G_M6479_IG07: ; bbWeight=2, gcVars=00000004 {V19}, gcrefRegs=00000000 {},
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00
G_M6479_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, bword ptr [ebp-0x28]
+ mov ecx, bword ptr [ebp-0x24]
; byrRegs +[ecx]
mov byte ptr [ecx], bl
shr ebx, 16
mov byte ptr [ecx+0x01], bl
mov eax, dword ptr [ebp-0x14]
lea ebx, [edi+eax+0x02]
- test dword ptr [ebp-0x1C], 0xD1FFAB1E
+ test dword ptr [ebp-0x18], 0xD1FFAB1E
je SHORT G_M6479_IG10
;; size=27 bbWeight=4 PerfScore 34.00
G_M6479_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
@@ -150,44 +150,46 @@ G_M6479_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00
G_M6479_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
- mov edx, dword ptr [ebp-0x1C]
+ mov edx, dword ptr [ebp-0x18]
mov byte ptr [ebx], dl
shr edx, 16
mov byte ptr [ebx+0x01], dl
mov eax, dword ptr [ebp-0x14]
add eax, 4
- mov ebx, dword ptr [ebp-0x24]
+ mov ebx, dword ptr [ebp-0x20]
; byrRegs -[ebx]
cmp eax, ebx
- jbe SHORT G_M6479_IG15
+ jbe SHORT G_M6479_IG17
;; size=24 bbWeight=4 PerfScore 28.00
-G_M6479_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, dword ptr [ebp-0x20]
+G_M6479_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x1C]
test bl, 2
- je SHORT G_M6479_IG12
+ je SHORT G_M6479_IG13
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M6479_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
mov edx, dword ptr [esi+2*ecx]
test edx, 0xD1FFAB1E
- jne SHORT G_M6479_IG19
+ jne SHORT G_M6479_IG16
add ecx, edi
mov byte ptr [ecx], dl
shr edx, 16
mov byte ptr [ecx+0x01], dl
add eax, 2
- ;; size=34 bbWeight=0.50 PerfScore 4.38
-G_M6479_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=26 bbWeight=0.50 PerfScore 3.25
+G_M6479_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test bl, 1
- je SHORT G_M6479_IG14
+ je SHORT G_M6479_IG15
movzx edx, word ptr [esi+2*eax]
mov ebx, edx
cmp ebx, 255
- ja SHORT G_M6479_IG14
+ ja SHORT G_M6479_IG15
;; size=19 bbWeight=0.50 PerfScore 2.38
-G_M6479_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M6479_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov byte ptr [edi+eax], bl
inc eax
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M6479_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M6479_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -195,66 +197,59 @@ G_M6479_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M6479_IG15: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6479_IG16: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], edi
+ mov ebx, edx
+ jmp SHORT G_M6479_IG22
+ ;; size=10 bbWeight=0.25 PerfScore 1.06
+G_M6479_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], edi
jmp G_M6479_IG06
;; size=8 bbWeight=2 PerfScore 6.00
-G_M6479_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M6479_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M6479_IG11
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M6479_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M6479_IG19: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], edi
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M6479_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M6479_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test ebx, 0xD1FFAB1E
jne SHORT G_M6479_IG22
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M6479_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [ebp-0x10]
mov eax, dword ptr [ebp-0x14]
lea ecx, [edi+eax]
mov byte ptr [ecx], bl
shr ebx, 16
mov byte ptr [ecx+0x01], bl
- mov edx, dword ptr [ebp-0x1C]
+ mov edx, dword ptr [ebp-0x18]
mov ebx, edx
add eax, 2
mov dword ptr [ebp-0x14], eax
- mov edx, ebx
- mov eax, dword ptr [ebp-0x14]
- ;; size=41 bbWeight=0.50 PerfScore 5.00
-G_M6479_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], edx
- test edx, 0xD1FFAB1E
- mov dword ptr [ebp-0x14], eax
- jne SHORT G_M6479_IG21
+ mov dword ptr [ebp-0x10], edi
+ ;; size=31 bbWeight=0.50 PerfScore 4.25
+G_M6479_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ test ebx, 0xD1FFAB1E
+ jne SHORT G_M6479_IG23
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov edx, dword ptr [ebp-0x18]
- ;; size=33 bbWeight=0.50 PerfScore 3.88
-G_M6479_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], edx
- mov ecx, edx
+ ;; size=24 bbWeight=0.50 PerfScore 2.38
+G_M6479_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, ebx
call [System.Text.Latin1Utility:FirstCharInUInt32IsLatin1(uint):ubyte]
test eax, eax
mov eax, dword ptr [ebp-0x14]
- je SHORT G_M6479_IG14
- mov ebx, dword ptr [ebp-0x18]
...
+20 (+5.97%) : 35819.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 9, 43.50) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
-; V01 arg1 [V01,T11] ( 8, 5.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V02 arg2 [V02,T15] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
-; V03 loc0 [V03,T09] ( 6, 20.50) int -> ebx
-; V04 loc1 [V04,T04] ( 7, 45 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.String>
-;* V05 loc2 [V05,T10] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc3 [V06,T02] ( 7, 88 ) int -> [ebp-0x10]
+; V00 this [V00,T03] ( 9, 44 ) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
+; V01 arg1 [V01,T10] ( 8, 6 ) ref -> [ebp-0x18] class-hnd single-def <System.String>
+; V02 arg2 [V02,T15] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
+; V03 loc0 [V03,T09] ( 6, 20.50) int -> [ebp-0x10]
+; V04 loc1 [V04,T04] ( 7, 46 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.String>
+;* V05 loc2 [V05,T11] ( 0, 0 ) ubyte -> zero-ref
+; V06 loc3 [V06,T02] ( 7, 88 ) int -> [ebp-0x14]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V08 tmp0 [V08,T12] ( 6, 6 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
; V09 tmp1 [V09,T13] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
@@ -24,16 +24,16 @@
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp8 [V16,T00] ( 5,112 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V16 tmp8 [V16,T00] ( 5,112 ) ref -> ebx class-hnd exact "Inlining Arg" <System.String>
; V17 tmp9 [V17,T05] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V18 tmp10 [V18,T06] ( 2, 32 ) byref -> [ebp-0x1C] spill-single-def "impAppendStmt"
+; V18 tmp10 [V18,T06] ( 2, 32 ) byref -> ebx "impAppendStmt"
;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp13 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V24 tmp16 [V24,T07] ( 3, 24 ) ref -> edx "arr expr"
-; V25 tmp17 [V25,T01] ( 3, 96 ) ref -> edx "arr expr"
+; V25 tmp17 [V25,T01] ( 3, 96 ) ref -> ebx "arr expr"
;* V26 cse0 [V26,T16] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V27 cse1 [V27,T08] ( 3, 24 ) int -> edi "CSE - moderate"
;
@@ -50,12 +50,14 @@ G_M55749_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=13 bbWeight=1 PerfScore 5.00
-G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], 0
jne SHORT G_M55749_IG07
;; size=6 bbWeight=1 PerfScore 4.00
-G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -82,19 +84,19 @@ G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
test eax, eax
jne SHORT G_M55749_IG05
;; size=51 bbWeight=0.50 PerfScore 10.25
-G_M55749_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M55749_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
push edi
; gcr arg push 0
- push gword ptr [ebp+0x08]
+ push ebx
; gcr arg push 1
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[ecx edx esi edi]
+ ; gcrRegs -[ecx edx ebx esi edi]
; gcr arg pop 2
- ;; size=17 bbWeight=0.50 PerfScore 2.75
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
G_M55749_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
@@ -107,154 +109,169 @@ G_M55749_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55749_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi edi]
- xor ebx, ebx
+G_M55749_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[ebx esi edi]
+ xor eax, eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M55749_IG21
+ je G_M55749_IG23
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M55749_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M55749_IG08: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, gword ptr [D1FFAB1EH]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], 0
- jle G_M55749_IG16
+ jle G_M55749_IG18
;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M55749_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
- cmp ebx, dword ptr [edx+0x04]
- jae G_M55749_IG20
- mov eax, gword ptr [edx+4*ebx+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ cmp eax, dword ptr [edx+0x04]
+ jae G_M55749_IG22
+ mov dword ptr [ebp-0x10], eax
+ mov ecx, gword ptr [edx+4*eax+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V04}
- mov ecx, dword ptr [esi+0x18]
- dec ecx
- cmp ecx, dword ptr [esi+0x2C]
- jl SHORT G_M55749_IG18
- ;; size=31 bbWeight=4 PerfScore 61.00
-G_M55749_IG10: ; bbWeight=16, gcVars=00000010 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, dword ptr [esi+0x18]
; gcrRegs -[edx]
- mov edx, gword ptr [esi+0x04]
- ; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
- jae G_M55749_IG20
- mov dword ptr [ebp-0x10], ecx
- mov edx, gword ptr [edx+4*ecx+0x08]
- mov edx, gword ptr [edx+0x04]
- cmp edx, eax
- je SHORT G_M55749_IG15
+ dec edx
+ cmp edx, dword ptr [esi+0x2C]
+ jl SHORT G_M55749_IG16
+ ;; size=34 bbWeight=4 PerfScore 65.00
+G_M55749_IG10: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ mov gword ptr [ebp+0x08], ebx
+ ;; size=3 bbWeight=2 PerfScore 2.00
+G_M55749_IG11: ; bbWeight=16, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp edx, dword ptr [ebx+0x04]
+ jae G_M55749_IG22
+ mov dword ptr [ebp-0x14], edx
+ mov ebx, gword ptr [ebx+4*edx+0x08]
+ mov ebx, gword ptr [ebx+0x04]
+ cmp ebx, ecx
+ je SHORT G_M55749_IG17
;; size=26 bbWeight=16 PerfScore 196.00
-G_M55749_IG11: ; bbWeight=8, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz
- test edx, edx
- je SHORT G_M55749_IG12
- test eax, eax
- je SHORT G_M55749_IG12
- mov gword ptr [ebp-0x14], edi
+G_M55749_IG12: ; bbWeight=8, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M55749_IG13
+ test ecx, ecx
+ je SHORT G_M55749_IG13
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V01}
- mov edi, dword ptr [edx+0x04]
+ mov edi, dword ptr [ebx+0x04]
; gcrRegs -[edi]
- cmp edi, dword ptr [eax+0x04]
- jne SHORT G_M55749_IG14
- add edx, 8
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x1C], edx
- ; GC ptr vars +{V18}
+ cmp edi, dword ptr [ecx+0x04]
+ jne SHORT G_M55749_IG15
+ add ebx, 8
+ ; gcrRegs -[ebx]
+ ; byrRegs +[ebx]
add edi, edi
push edi
- lea edx, bword ptr [eax+0x08]
- mov ecx, bword ptr [ebp-0x1C]
+ lea edx, bword ptr [ecx+0x08]
+ ; byrRegs +[edx]
+ mov ecx, ebx
+ ; gcrRegs -[ecx]
; byrRegs +[ecx]
- ; GC ptr vars -{V18}
call [<unknown method>]
- ; gcrRegs -[eax]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx ebx]
test eax, eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- mov edi, gword ptr [ebp-0x14]
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi]
- jne SHORT G_M55749_IG15
- ;; size=50 bbWeight=8 PerfScore 158.00
-G_M55749_IG12: ; bbWeight=16, gcVars=00000010 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M55749_IG17
+ ;; size=46 bbWeight=8 PerfScore 144.00
+G_M55749_IG13: ; bbWeight=16, gcVars=00000010 {V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V01}
- mov ecx, dword ptr [ebp-0x10]
- dec ecx
- cmp ecx, dword ptr [esi+0x2C]
- jge SHORT G_M55749_IG10
+ mov edx, dword ptr [ebp-0x14]
+ dec edx
+ cmp edx, dword ptr [esi+0x2C]
+ jge SHORT G_M55749_IG11
;; size=9 bbWeight=16 PerfScore 84.00
-G_M55749_IG13: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M55749_IG18
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M55749_IG14: ; bbWeight=4, gcVars=00000810 {V01 V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
- ; GC ptr vars +{V01}
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jmp SHORT G_M55749_IG12
+G_M55749_IG14: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M55749_IG20
;; size=5 bbWeight=4 PerfScore 12.00
-G_M55749_IG15: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01 V04}
- inc ebx
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], ebx
+G_M55749_IG15: ; bbWeight=4, gcVars=00000410 {V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ebx edi]
+ ; GC ptr vars +{V01 V10}
+ mov edi, gword ptr [ebp-0x18]
+ ; gcrRegs +[edi]
...
+16 (+6.13%) : 6124.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
@@ -10,37 +10,37 @@
;
; V00 this [V00,T02] ( 6, 6.50) ref -> esi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T04] ( 7, 6.50) ref -> edi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T20] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T11] ( 3, 3 ) ref -> ebx class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T20] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T11] ( 3, 3 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V04 loc1 [V04,T10] ( 3, 3.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc4 [V07,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
-; V08 loc5 [V08,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc4 [V07,T07] ( 3, 6 ) int -> ebx
+; V08 loc5 [V08,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;* V09 tmp0 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T05] ( 3, 8 ) int -> eax "VirtualCall with runtime lookup"
-; V12 tmp3 [V12,T15] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V11 tmp2 [V11,T05] ( 3, 8 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V12 tmp3 [V12,T15] ( 3, 2 ) int -> ebx "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V15 tmp6 [V15,T16] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V15 tmp6 [V15,T16] ( 3, 2 ) int -> ebx "VirtualCall with runtime lookup"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> edx "argument with side effect"
+; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> ecx "argument with side effect"
; V22 cse0 [V22,T17] ( 2, 2 ) int -> edx "CSE - moderate"
; V23 cse1 [V23,T18] ( 2, 2 ) int -> registers "CSE - moderate"
; V24 rat0 [V24,T14] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V25 rat1 [V25,T13] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V25 rat1 [V25,T13] ( 3, 2.80) int -> ebx "fgMakeTemp is creating a new local variable"
;* V26 rat2 [V26,T09] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V27 rat3 [V27,T19] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V28 rat4 [V28,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T03] ( 3, 8.80) int -> edx "Spilling to split statement for tree"
-; V30 rat6 [V30,T01] ( 3, 11.20) int -> eax "fgMakeTemp is creating a new local variable"
+; V29 rat5 [V29,T03] ( 3, 8.80) int -> ecx "Spilling to split statement for tree"
+; V30 rat6 [V30,T01] ( 3, 11.20) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
@@ -57,150 +57,166 @@ G_M44884_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[esi]
test edi, edi
je G_M44884_IG19
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, gword ptr [ebx+0x0C]
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V03}
+ mov edx, gword ptr [eax+0x0C]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
cmp byte ptr [esi+0x0D], 0
jne SHORT G_M44884_IG07
- ;; size=23 bbWeight=1 PerfScore 10.25
-G_M44884_IG03: ; bbWeight=0.50, gcVars=00000400 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
+ ;; size=26 bbWeight=1 PerfScore 11.25
+G_M44884_IG03: ; bbWeight=0.50, gcVars=00000C00 {V03 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x20]
- test edx, edx
+ mov ebx, dword ptr [ecx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x20]
+ test ebx, ebx
je SHORT G_M44884_IG05
;; size=17 bbWeight=0.50 PerfScore 5.12
-G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
+G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M44884_IG06
- ;; size=5 bbWeight=0.40 PerfScore 1.20
-G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
+ ; gcrRegs -[edx]
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=16 bbWeight=0.10 PerfScore 0.33
-G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
+ mov ebx, eax
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ ;; size=15 bbWeight=0.10 PerfScore 0.25
+G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
- ; gcrRegs -[eax]
+ mov eax, ebx
nop
call [eax]
; gcrRegs -[ecx edx]
+ mov ebx, eax
jmp SHORT G_M44884_IG08
- ;; size=14 bbWeight=0.50 PerfScore 3.38
-G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
+G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x0C]<unknown method>
+ mov ebx, dword ptr [edi]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, eax
+ mov ebx, eax
;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- mov dword ptr [ebp-0x10], ecx
- mov ebx, gword ptr [ebx+0x10]
- mov gword ptr [ebp-0x1C], ebx
+G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x10]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V17}
- mov edx, dword ptr [ebx+0x04]
- mov ebx, edx
- ; gcrRegs -[ebx]
- mov eax, ecx
+ mov edx, dword ptr [ecx+0x04]
+ mov ecx, edx
+ ; gcrRegs -[ecx]
+ mov eax, ebx
+ ; gcrRegs -[eax]
xor edx, edx
- div edx:eax, ebx
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov ebx, gword ptr [ebx+4*edx+0x08]
- test ebx, ebx
- je SHORT G_M44884_IG15
- ;; size=33 bbWeight=1 PerfScore 36.25
-G_M44884_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V17}
- cmp ecx, dword ptr [ebx+0x10]
- jne SHORT G_M44884_IG14
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M44884_IG10: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi]
- mov eax, dword ptr [edx+0x24]
- mov eax, dword ptr [eax]
- mov eax, dword ptr [eax+0x24]
+ div edx:eax, ecx
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M44884_IG15
+ ;; size=31 bbWeight=1 PerfScore 36.00
+G_M44884_IG09: ; bbWeight=4, gcVars=00000400 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V03 V17}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V08}
+ cmp ebx, dword ptr [eax+0x10]
+ jne SHORT G_M44884_IG14
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M44884_IG10: ; bbWeight=2, gcVars=00000401 {V04 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x24]
+ test edx, edx
je SHORT G_M44884_IG12
;; size=14 bbWeight=2 PerfScore 18.50
-G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
jmp SHORT G_M44884_IG13
- ;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
+ ;; size=5 bbWeight=1.60 PerfScore 4.80
+G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=12 bbWeight=0.40 PerfScore 0.60
-G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.40 PerfScore 0.90
+G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[ecx]
push edi
; gcr arg push 0
+ mov edx, ecx
+ ; gcrRegs +[edx]
mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M44884_IG17
...
+16 (+6.13%) : 22540.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
@@ -10,37 +10,37 @@
;
; V00 this [V00,T02] ( 6, 6.50) ref -> esi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T04] ( 7, 6.50) ref -> edi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T20] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T11] ( 3, 3 ) ref -> ebx class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T20] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T11] ( 3, 3 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V04 loc1 [V04,T10] ( 3, 3.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc4 [V07,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
-; V08 loc5 [V08,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc4 [V07,T07] ( 3, 6 ) int -> ebx
+; V08 loc5 [V08,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
;* V09 tmp0 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T05] ( 3, 8 ) int -> eax "VirtualCall with runtime lookup"
-; V12 tmp3 [V12,T15] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V11 tmp2 [V11,T05] ( 3, 8 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V12 tmp3 [V12,T15] ( 3, 2 ) int -> ebx "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V15 tmp6 [V15,T16] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V15 tmp6 [V15,T16] ( 3, 2 ) int -> ebx "VirtualCall with runtime lookup"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> edx "argument with side effect"
+; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> ecx "argument with side effect"
; V22 cse0 [V22,T17] ( 2, 2 ) int -> edx "CSE - moderate"
; V23 cse1 [V23,T18] ( 2, 2 ) int -> registers "CSE - moderate"
; V24 rat0 [V24,T14] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V25 rat1 [V25,T13] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V25 rat1 [V25,T13] ( 3, 2.80) int -> ebx "fgMakeTemp is creating a new local variable"
;* V26 rat2 [V26,T09] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V27 rat3 [V27,T19] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V28 rat4 [V28,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T03] ( 3, 8.80) int -> edx "Spilling to split statement for tree"
-; V30 rat6 [V30,T01] ( 3, 11.20) int -> eax "fgMakeTemp is creating a new local variable"
+; V29 rat5 [V29,T03] ( 3, 8.80) int -> ecx "Spilling to split statement for tree"
+; V30 rat6 [V30,T01] ( 3, 11.20) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M44884_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
@@ -57,150 +57,166 @@ G_M44884_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[esi]
test edi, edi
je G_M44884_IG19
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, gword ptr [ebx+0x0C]
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V03}
+ mov edx, gword ptr [eax+0x0C]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
cmp byte ptr [esi+0x0D], 0
jne SHORT G_M44884_IG07
- ;; size=23 bbWeight=1 PerfScore 10.25
-G_M44884_IG03: ; bbWeight=0.50, gcVars=00000400 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
+ ;; size=26 bbWeight=1 PerfScore 11.25
+G_M44884_IG03: ; bbWeight=0.50, gcVars=00000C00 {V03 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x20]
- test edx, edx
+ mov ebx, dword ptr [ecx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x20]
+ test ebx, ebx
je SHORT G_M44884_IG05
;; size=17 bbWeight=0.50 PerfScore 5.12
-G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
+G_M44884_IG04: ; bbWeight=0.40, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M44884_IG06
- ;; size=5 bbWeight=0.40 PerfScore 1.20
-G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M44884_IG05: ; bbWeight=0.10, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
+ ; gcrRegs -[edx]
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=16 bbWeight=0.10 PerfScore 0.33
-G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
+ mov ebx, eax
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ ;; size=15 bbWeight=0.10 PerfScore 0.25
+G_M44884_IG06: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
- ; gcrRegs -[eax]
+ mov eax, ebx
nop
call [eax]
; gcrRegs -[ecx edx]
+ mov ebx, eax
jmp SHORT G_M44884_IG08
- ;; size=14 bbWeight=0.50 PerfScore 3.38
-G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
+G_M44884_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x0C]<unknown method>
+ mov ebx, dword ptr [edi]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, eax
+ mov ebx, eax
;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- mov dword ptr [ebp-0x10], ecx
- mov ebx, gword ptr [ebx+0x10]
- mov gword ptr [ebp-0x1C], ebx
+G_M44884_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x10]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V17}
- mov edx, dword ptr [ebx+0x04]
- mov ebx, edx
- ; gcrRegs -[ebx]
- mov eax, ecx
+ mov edx, dword ptr [ecx+0x04]
+ mov ecx, edx
+ ; gcrRegs -[ecx]
+ mov eax, ebx
+ ; gcrRegs -[eax]
xor edx, edx
- div edx:eax, ebx
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov ebx, gword ptr [ebx+4*edx+0x08]
- test ebx, ebx
- je SHORT G_M44884_IG15
- ;; size=33 bbWeight=1 PerfScore 36.25
-G_M44884_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V17}
- cmp ecx, dword ptr [ebx+0x10]
- jne SHORT G_M44884_IG14
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M44884_IG10: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi]
- mov eax, dword ptr [edx+0x24]
- mov eax, dword ptr [eax]
- mov eax, dword ptr [eax+0x24]
+ div edx:eax, ecx
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M44884_IG15
+ ;; size=31 bbWeight=1 PerfScore 36.00
+G_M44884_IG09: ; bbWeight=4, gcVars=00000400 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V03 V17}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V08}
+ cmp ebx, dword ptr [eax+0x10]
+ jne SHORT G_M44884_IG14
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M44884_IG10: ; bbWeight=2, gcVars=00000401 {V04 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x24]
+ test edx, edx
je SHORT G_M44884_IG12
;; size=14 bbWeight=2 PerfScore 18.50
-G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M44884_IG11: ; bbWeight=1.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
jmp SHORT G_M44884_IG13
- ;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
+ ;; size=5 bbWeight=1.60 PerfScore 4.80
+G_M44884_IG12: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=12 bbWeight=0.40 PerfScore 0.60
-G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.40 PerfScore 0.90
+G_M44884_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[ecx]
push edi
; gcr arg push 0
+ mov edx, ecx
+ ; gcrRegs +[edx]
mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M44884_IG17
...
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,T07] ( 10, 9.50) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T09] ( 6, 5.50) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T01] ( 19, 20.54) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T28] ( 5, 3.50) int -> esi single-def
+; V04 loc1 [V04,T02] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T31] ( 3, 3 ) int -> edi single-def
+; V06 loc3 [V06,T03] ( 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,T29] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 4 ) 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, 4 ) 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,T30] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 4 ) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T10] ( 3, 6 ) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T11] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 4 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 4 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T04] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T12] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T13] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 4 ) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T05] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T14] ( 3, 6 ) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T15] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 4 ) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T06] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T16] ( 3, 6 ) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T17] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T08] ( 15, 10.12) 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,223 +53,215 @@ 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=0000000000000200 {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, 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 PerfScore 2.00
+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, 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 PerfScore 87.25
+G_M29033_IG08: ; bbWeight=1, 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,T07] ( 10, 9.50) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T09] ( 6, 5.50) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T01] ( 19, 20.54) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T28] ( 5, 3.50) int -> esi single-def
+; V04 loc1 [V04,T02] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T31] ( 3, 3 ) int -> edi single-def
+; V06 loc3 [V06,T03] ( 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,T29] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 4 ) 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, 4 ) 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,T30] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 4 ) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T10] ( 3, 6 ) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T11] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 4 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 4 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T04] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T12] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T13] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 4 ) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T05] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T14] ( 3, 6 ) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T15] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 4 ) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T06] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T16] ( 3, 6 ) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T17] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T08] ( 15, 10.12) 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,223 +53,215 @@ 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=0000000000000200 {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, 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 PerfScore 2.00
+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, 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 PerfScore 87.25
+G_M29033_IG08: ; bbWeight=1, 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,T07] ( 10, 9.50) ref -> ecx class-hnd single-def <int[,][,][,][,]>
+; V01 arg1 [V01,T09] ( 6, 5.50) ref -> [ebp-0x18] class-hnd single-def <ushort[]>
+; V02 arg2 [V02,T01] ( 19, 20.54) ref -> eax class-hnd single-def <int[]>
+; V03 loc0 [V03,T28] ( 5, 3.50) int -> esi single-def
+; V04 loc1 [V04,T02] ( 10, 17.04) int -> edx
+; V05 loc2 [V05,T31] ( 3, 3 ) int -> edi single-def
+; V06 loc3 [V06,T03] ( 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,T29] ( 3, 3 ) byref -> edx single-def "dup spill"
+; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> esi "dup spill"
+; V10 tmp3 [V10,T18] ( 2, 4 ) 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, 4 ) 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,T30] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V15 tmp8 [V15,T20] ( 2, 4 ) int -> edx "MD array shared temp"
+; V16 tmp9 [V16,T21] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V17 tmp10 [V17,T10] ( 3, 6 ) int -> edx "MD array shared temp"
+; V18 tmp11 [V18,T11] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V19 tmp12 [V19,T22] ( 2, 4 ) int -> [ebp-0x10] spill-single-def "MD array shared temp"
+; V20 tmp13 [V20,T23] ( 2, 4 ) int -> [ebp-0x14] spill-single-def "MD array shared temp"
+; V21 tmp14 [V21,T04] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V22 tmp15 [V22,T12] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V23 tmp16 [V23,T13] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V24 tmp17 [V24,T24] ( 2, 4 ) int -> esi "MD array shared temp"
+; V25 tmp18 [V25,T25] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V26 tmp19 [V26,T05] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V27 tmp20 [V27,T14] ( 3, 6 ) int -> esi "MD array shared temp"
+; V28 tmp21 [V28,T15] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V29 tmp22 [V29,T26] ( 2, 4 ) int -> esi "MD array shared temp"
+; V30 tmp23 [V30,T27] ( 2, 4 ) int -> ebx "MD array shared temp"
+; V31 tmp24 [V31,T06] ( 7, 14 ) ref -> edx single-def "MD array shared temp"
+; V32 tmp25 [V32,T16] ( 3, 6 ) int -> esi "MD array shared temp"
+; V33 tmp26 [V33,T17] ( 3, 6 ) int -> ebx "MD array shared temp"
+; V34 cse0 [V34,T08] ( 15, 10.12) 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,223 +53,215 @@ 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=0000000000000200 {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, 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 PerfScore 2.00
+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, 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 PerfScore 87.25
+G_M29033_IG08: ; bbWeight=1, 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]
...
+20 (+12.42%) : 376685.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4.99) int -> eax single-def
-; V01 arg1 [V01,T03] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) int -> eax single-def
+; V01 arg1 [V01,T04] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 tmp0 [V03,T08] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
-; V04 tmp1 [V04,T09] ( 4, 3 ) int -> ebx "Inline return value spill temp"
-; V05 tmp2 [V05,T07] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
-; V06 tmp3 [V06,T01] ( 3, 6.65) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
-; V08 tmp5 [V08,T02] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
-; V09 tmp6 [V09,T04] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
-; V10 tmp7 [V10,T05] ( 5, 5.29) int -> esi "Inline stloc first use temp"
+; V03 tmp0 [V03,T09] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
+; V04 tmp1 [V04,T00] ( 4,102.99) int -> registers "Inline return value spill temp"
+; V05 tmp2 [V05,T08] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T02] ( 3, 6.65) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T07] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
+; V10 tmp7 [V10,T06] ( 5, 5.29) int -> esi "Inline stloc first use temp"
; V11 tmp8 [V11,T11] ( 2, 2.65) int -> ebx "Inline stloc first use temp"
; V12 tmp9 [V12,T10] ( 3, 2.98) int -> ebx "Inline stloc first use temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -56,7 +56,7 @@ G_M20817_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000
shr ebx, cl
xor ecx, ecx
;; size=36 bbWeight=1 PerfScore 13.50
-G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M20817_IG03: ; bbWeight=1.32, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x10], ebx
lea edx, [ebx+0x01]
@@ -68,47 +68,30 @@ G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=0000
mov ebx, dword ptr [edx+0x04]
and esi, -2
cmp ebx, edi
- jne SHORT G_M20817_IG08
+ jne SHORT G_M20817_IG06
;; size=24 bbWeight=1.32 PerfScore 10.58
G_M20817_IG04: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
mov ebx, eax
xor ebx, dword ptr [edx+0x08]
cmp ebx, 1
- ja SHORT G_M20817_IG08
+ ja SHORT G_M20817_IG06
;; size=10 bbWeight=0.99 PerfScore 4.46
-G_M20817_IG05: ; bbWeight=0.99, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
+G_M20817_IG05: ; bbWeight=0.99, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
; GC ptr vars -{V05}
cmp esi, dword ptr [edx]
- jne SHORT G_M20817_IG10
- ;; size=4 bbWeight=0.99 PerfScore 3.97
-G_M20817_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx]
- cmp ebx, 1
- je SHORT G_M20817_IG11
- test ebx, ebx
- je SHORT G_M20817_IG13
- mov ecx, eax
+ jne SHORT G_M20817_IG09
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- ; GC ptr vars -{V01}
- call <unknown method>
- ; gcrRegs -[edx] +[eax]
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M20817_IG07: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M20817_IG08: ; bbWeight=0.33, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars +{V01 V03 V05 V07}
+ ; byrRegs -[edx]
+ jmp SHORT G_M20817_IG08
+ ;; size=9 bbWeight=0.99 PerfScore 6.94
+G_M20817_IG06: ; bbWeight=0.33, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars +{V05 V08}
test esi, esi
- je SHORT G_M20817_IG10
+ je SHORT G_M20817_IG09
;; size=4 bbWeight=0.33 PerfScore 0.41
-G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20817_IG07: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ecx
mov ebx, ecx
add ebx, dword ptr [ebp-0x10]
@@ -117,18 +100,52 @@ G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
jl SHORT G_M20817_IG03
- ;; size=17 bbWeight=1.32 PerfScore 10.26
-G_M20817_IG10: ; bbWeight=0.01, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x14], edx
+ jmp SHORT G_M20817_IG09
+ ;; size=25 bbWeight=1.32 PerfScore 15.56
+G_M20817_IG08: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
- ; GC ptr vars -{V03 V05 V07}
- mov ebx, 2
- jmp SHORT G_M20817_IG06
- ;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M20817_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V01 V05 V08}
+ mov gword ptr [ebp-0x14], edx
+ ; GC ptr vars +{V01}
+ mov edx, ebx
+ ; gcrRegs -[edx]
+ jmp SHORT G_M20817_IG10
+ ;; size=7 bbWeight=0.99 PerfScore 3.22
+G_M20817_IG09: ; bbWeight=100, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, 2
+ ;; size=5 bbWeight=100 PerfScore 25.00
+G_M20817_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, 1
+ je SHORT G_M20817_IG12
+ test edx, edx
+ je SHORT G_M20817_IG14
+ mov ecx, eax
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
+ call <unknown method>
+ ; gcrRegs -[edx] +[eax]
+ ;; size=19 bbWeight=1 PerfScore 4.75
+G_M20817_IG11: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M20817_IG12: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V01 V04}
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov eax, edx
; gcrRegs +[eax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M20817_IG13: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -136,13 +153,13 @@ G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0 PerfScore 0.00
-G_M20817_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01}
+G_M20817_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V01 V04}
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M20817_IG15: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -151,6 +168,6 @@ G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 11, PerfScore 56.21, instruction count 72, allocated bytes for code 161 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 181, prolog size 11, PerfScore 92.69, instruction count 80, allocated bytes for code 181 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
; ============================================================
+20 (+12.42%) : 355043.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4.99) int -> eax single-def
-; V01 arg1 [V01,T03] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) int -> eax single-def
+; V01 arg1 [V01,T04] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 tmp0 [V03,T08] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
-; V04 tmp1 [V04,T09] ( 4, 3 ) int -> ebx "Inline return value spill temp"
-; V05 tmp2 [V05,T07] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
-; V06 tmp3 [V06,T01] ( 3, 6.65) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
-; V08 tmp5 [V08,T02] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
-; V09 tmp6 [V09,T04] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
-; V10 tmp7 [V10,T05] ( 5, 5.29) int -> esi "Inline stloc first use temp"
+; V03 tmp0 [V03,T09] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
+; V04 tmp1 [V04,T00] ( 4,102.99) int -> registers "Inline return value spill temp"
+; V05 tmp2 [V05,T08] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T02] ( 3, 6.65) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T07] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
+; V10 tmp7 [V10,T06] ( 5, 5.29) int -> esi "Inline stloc first use temp"
; V11 tmp8 [V11,T11] ( 2, 2.65) int -> ebx "Inline stloc first use temp"
; V12 tmp9 [V12,T10] ( 3, 2.98) int -> ebx "Inline stloc first use temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -56,7 +56,7 @@ G_M20817_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000
shr ebx, cl
xor ecx, ecx
;; size=36 bbWeight=1 PerfScore 13.50
-G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M20817_IG03: ; bbWeight=1.32, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x10], ebx
lea edx, [ebx+0x01]
@@ -68,47 +68,30 @@ G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=0000
mov ebx, dword ptr [edx+0x04]
and esi, -2
cmp ebx, edi
- jne SHORT G_M20817_IG08
+ jne SHORT G_M20817_IG06
;; size=24 bbWeight=1.32 PerfScore 10.58
G_M20817_IG04: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
mov ebx, eax
xor ebx, dword ptr [edx+0x08]
cmp ebx, 1
- ja SHORT G_M20817_IG08
+ ja SHORT G_M20817_IG06
;; size=10 bbWeight=0.99 PerfScore 4.46
-G_M20817_IG05: ; bbWeight=0.99, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
+G_M20817_IG05: ; bbWeight=0.99, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
; GC ptr vars -{V05}
cmp esi, dword ptr [edx]
- jne SHORT G_M20817_IG10
- ;; size=4 bbWeight=0.99 PerfScore 3.97
-G_M20817_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx]
- cmp ebx, 1
- je SHORT G_M20817_IG11
- test ebx, ebx
- je SHORT G_M20817_IG13
- mov ecx, eax
+ jne SHORT G_M20817_IG09
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- ; GC ptr vars -{V01}
- call <unknown method>
- ; gcrRegs -[edx] +[eax]
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M20817_IG07: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M20817_IG08: ; bbWeight=0.33, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars +{V01 V03 V05 V07}
+ ; byrRegs -[edx]
+ jmp SHORT G_M20817_IG08
+ ;; size=9 bbWeight=0.99 PerfScore 6.94
+G_M20817_IG06: ; bbWeight=0.33, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars +{V05 V08}
test esi, esi
- je SHORT G_M20817_IG10
+ je SHORT G_M20817_IG09
;; size=4 bbWeight=0.33 PerfScore 0.41
-G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20817_IG07: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ecx
mov ebx, ecx
add ebx, dword ptr [ebp-0x10]
@@ -117,18 +100,52 @@ G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
jl SHORT G_M20817_IG03
- ;; size=17 bbWeight=1.32 PerfScore 10.26
-G_M20817_IG10: ; bbWeight=0.01, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x14], edx
+ jmp SHORT G_M20817_IG09
+ ;; size=25 bbWeight=1.32 PerfScore 15.56
+G_M20817_IG08: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
- ; GC ptr vars -{V03 V05 V07}
- mov ebx, 2
- jmp SHORT G_M20817_IG06
- ;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M20817_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V01 V05 V08}
+ mov gword ptr [ebp-0x14], edx
+ ; GC ptr vars +{V01}
+ mov edx, ebx
+ ; gcrRegs -[edx]
+ jmp SHORT G_M20817_IG10
+ ;; size=7 bbWeight=0.99 PerfScore 3.22
+G_M20817_IG09: ; bbWeight=100, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, 2
+ ;; size=5 bbWeight=100 PerfScore 25.00
+G_M20817_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, 1
+ je SHORT G_M20817_IG12
+ test edx, edx
+ je SHORT G_M20817_IG14
+ mov ecx, eax
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
+ call <unknown method>
+ ; gcrRegs -[edx] +[eax]
+ ;; size=19 bbWeight=1 PerfScore 4.75
+G_M20817_IG11: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M20817_IG12: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V01 V04}
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov eax, edx
; gcrRegs +[eax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M20817_IG13: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -136,13 +153,13 @@ G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0 PerfScore 0.00
-G_M20817_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01}
+G_M20817_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V01 V04}
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M20817_IG15: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -151,6 +168,6 @@ G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 11, PerfScore 56.21, instruction count 72, allocated bytes for code 161 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 181, prolog size 11, PerfScore 92.69, instruction count 80, allocated bytes for code 181 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
; ============================================================
+42 (+17.87%) : 168864.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
@@ -8,7 +8,7 @@
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 8, 9 ) ref -> esi class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T03] ( 8, 9.50) ref -> [ebp-0x14] class-hnd single-def <System.Type[]>
;* V01 loc0 [V01,T08] ( 0, 0 ) ubyte -> zero-ref
; V02 loc1 [V02,T07] ( 3, 1.50) ref -> eax class-hnd <System.Type>
; V03 loc2 [V03,T02] ( 5, 16.50) int -> ebx
@@ -22,9 +22,11 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V13 cse0 [V13,T00] ( 6, 20 ) int -> [ebp-0x10] spill-single-def "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 8 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V14 cse1 [V14,T04] ( 7, 9.50) int -> edi "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x1C]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,22 +34,25 @@ G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp edi, 17
- jg G_M39211_IG14
- ;; size=15 bbWeight=1 PerfScore 4.25
+ jg G_M39211_IG20
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M39211_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
test edi, edi
- jle SHORT G_M39211_IG06
+ jle SHORT G_M39211_IG07
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
@@ -55,35 +60,49 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [eax]
mov dword ptr [ebp-0x10], edx
cmp edx, 0xD1FFAB1E
- jne SHORT G_M39211_IG07
- ;; size=20 bbWeight=4 PerfScore 29.00
-G_M39211_IG05: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M39211_IG08
+ ;; size=23 bbWeight=4 PerfScore 33.00
+G_M39211_IG05: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, eax
; gcrRegs +[ecx]
call <unknown method>
; gcrRegs -[eax ecx]
cmp eax, 16
- je G_M39211_IG14
- jmp SHORT G_M39211_IG08
- ;; size=18 bbWeight=2 PerfScore 9.00
-G_M39211_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je SHORT G_M39211_IG06
+ jmp SHORT G_M39211_IG09
+ ;; size=14 bbWeight=2 PerfScore 9.00
+G_M39211_IG06: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V04}
- mov edi, dword ptr [ebp-0x14]
- jmp SHORT G_M39211_IG12
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp G_M39211_IG20
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M39211_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M39211_IG16
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M39211_IG07: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
+G_M39211_IG08: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi] +[eax]
; GC ptr vars +{V01 V04}
mov ecx, eax
; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x1C], ecx
mov edx, dword ptr [ebp-0x10]
- mov edi, dword ptr [edx+0x38]
- call [edi+0x0C]<unknown method>
+ mov ecx, dword ptr [edx+0x38]
+ ; gcrRegs -[ecx]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov esi, dword ptr [ebp-0x20]
+ call [esi+0x0C]<unknown method>
; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M39211_IG14
- ;; size=15 bbWeight=2 PerfScore 15.00
-G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M39211_IG13
+ ;; size=27 bbWeight=2 PerfScore 23.00
+G_M39211_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
@@ -91,22 +110,40 @@ G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [edx+0x14]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG12
mov eax, dword ptr [ebp-0x10]
cmp eax, 0xD1FFAB1E
- jne SHORT G_M39211_IG10
+ jne SHORT G_M39211_IG14
;; size=26 bbWeight=4 PerfScore 42.00
-G_M39211_IG09: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG10: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
; GC ptr vars -{V01 V04}
call <unknown method>
; gcrRegs -[ecx]
cmp eax, 15
- je SHORT G_M39211_IG14
- jmp SHORT G_M39211_IG11
+ je SHORT G_M39211_IG11
+ jmp SHORT G_M39211_IG15
;; size=15 bbWeight=1.98 PerfScore 10.39
-G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M39211_IG11: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M39211_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M39211_IG14: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
; GC ptr vars +{V01 V04}
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
@@ -115,20 +152,24 @@ G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {e
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG19
;; size=13 bbWeight=2 PerfScore 14.50
-G_M39211_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M39211_IG13
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jg SHORT G_M39211_IG18
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M39211_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [edi-0x01]
cmp ecx, edi
- jae SHORT G_M39211_IG18
+ jae SHORT G_M39211_IG24
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
cmp gword ptr [esi+4*edi+0x04], 0xD1FFAB1E
- jne SHORT G_M39211_IG16
+ jne SHORT G_M39211_IG22
+ ;; size=20 bbWeight=1 PerfScore 6.75
+G_M39211_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
@@ -138,19 +179,28 @@ G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M39211_IG17
- ;; size=40 bbWeight=0.50 PerfScore 7.25
-G_M39211_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M39211_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.38
+G_M39211_IG18: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V00 V03}
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
jmp G_M39211_IG04
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M39211_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M39211_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M39211_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V03}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M39211_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -158,14 +208,14 @@ G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
...
libraries.crossgen2.windows.x86.checked.mch
-16 (-10.88%) : 266492.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[System.Canon,System.Canon],System.__Canon,int,byref):ubyte (FullOpts)
@@ -12,11 +12,11 @@
; V00 arg0 [V00,T03] ( 4, 4 ) ref -> ecx class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T04] ( 3, 4 ) ref -> esi class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T05] ( 2, 5 ) int -> edi single-def
-; V03 arg3 [V03,T11] ( 2, 1 ) byref -> [ebp+0x0C] single-def
-; V04 TypeCtx [V04,T08] ( 2, 3 ) int -> ebx single-def
-; V05 loc0 [V05,T07] ( 2, 3 ) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>>
+; V03 arg3 [V03,T11] ( 2, 1.50) byref -> [ebp+0x0C] single-def
+; V04 TypeCtx [V04,T08] ( 2, 3 ) int -> [ebp+0x08] single-def
+; V05 loc0 [V05,T07] ( 2, 3 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
-; V07 loc2 [V07,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
+; V07 loc2 [V07,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
; V08 loc3 [V08,T02] ( 2, 8 ) int -> eax "VirtualCall with runtime lookup"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,System.__Canon]>
; V10 tmp2 [V10,T06] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
@@ -25,9 +25,9 @@
;* V13 tmp5 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V14 tmp6 [V14,T01] ( 2, 8 ) ref -> edx "argument with side effect"
; V15 cse0 [V15,T09] ( 2, 2 ) int -> edx "CSE - moderate"
-; V16 cse1 [V16,T10] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V16 cse1 [V16,T10] ( 2, 2 ) int -> registers "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -35,74 +35,67 @@ G_M3988_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 8
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [ebp+0x10]
- mov ebx, dword ptr [ebp+0x08]
- ;; size=23 bbWeight=1 PerfScore 9.75
+ ;; size=20 bbWeight=1 PerfScore 8.75
G_M3988_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- mov edx, gword ptr [ecx+0x0C]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x18], edx
+ mov eax, gword ptr [ecx+0x0C]
+ ; gcrRegs +[eax]
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V05}
mov ecx, gword ptr [ecx+0x10]
- mov eax, dword ptr [ecx+0x04]
- mov dword ptr [ebp-0x14], eax
+ mov edx, dword ptr [ecx+0x04]
+ mov ebx, edx
mov eax, edi
- xor edx, edx
- ; gcrRegs -[edx]
- div edx:eax, dword ptr [ebp-0x14]
- mov eax, gword ptr [ecx+4*edx+0x08]
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M3988_IG06
- ;; size=30 bbWeight=1 PerfScore 36.75
-G_M3988_IG03: ; bbWeight=4, gcVars=00000080 {V05}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov gword ptr [ebp-0x1C], eax
- ; GC ptr vars +{V07}
- cmp edi, dword ptr [eax+0x10]
- jne SHORT G_M3988_IG05
- ;; size=8 bbWeight=4 PerfScore 20.00
-G_M3988_IG04: ; bbWeight=2, gcVars=00000081 {V05 V07}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov ecx, ebx
+ xor edx, edx
+ div edx:eax, ebx
+ mov ebx, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[ebx]
+ test ebx, ebx
+ je SHORT G_M3988_IG06
+ ;; size=28 bbWeight=1 PerfScore 36.00
+G_M3988_IG03: ; bbWeight=4, gcVars=00000080 {V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ cmp edi, dword ptr [ebx+0x10]
+ jne SHORT G_M3988_IG05
+ ;; size=5 bbWeight=4 PerfScore 16.00
+G_M3988_IG04: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [ebp+0x08]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- mov edx, gword ptr [ecx+0x04]
+ mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
push esi
; gcr arg push 0
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x14]
+ ; gcrRegs +[ecx]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M3988_IG08
- ;; size=27 bbWeight=2 PerfScore 25.50
-G_M3988_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [ebp-0x1C]
- ; gcrRegs +[eax]
- mov eax, gword ptr [eax+0x0C]
- test eax, eax
+ ;; size=25 bbWeight=2 PerfScore 25.00
+G_M3988_IG05: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebx+0x0C]
+ test ebx, ebx
jne SHORT G_M3988_IG03
- ;; size=10 bbWeight=4 PerfScore 17.00
-G_M3988_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax esi]
- ; GC ptr vars -{V05 V07}
+ ;; size=7 bbWeight=4 PerfScore 13.00
+G_M3988_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ebx esi]
+ ; GC ptr vars -{V05}
xor eax, eax
; gcrRegs +[eax]
mov esi, bword ptr [ebp+0x0C]
; byrRegs +[esi]
mov gword ptr [esi], eax
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3988_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M3988_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax]
; byrRegs -[esi]
lea esp, [ebp-0x0C]
@@ -111,22 +104,20 @@ G_M3988_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop edi
pop ebp
ret 12
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M3988_IG08: ; bbWeight=0.50, gcVars=00000001 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V00 V07}
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M3988_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[ebx]
mov esi, bword ptr [ebp+0x0C]
; byrRegs +[esi]
- mov eax, gword ptr [ebp-0x1C]
+ mov eax, gword ptr [ebx+0x08]
; gcrRegs +[eax]
- mov eax, gword ptr [eax+0x08]
mov edx, esi
; byrRegs +[edx]
- ; GC ptr vars -{V00 V07}
call [CORINFO_HELP_CHECKED_ASSIGN_REF_EAX]
- ; gcrRegs -[eax]
+ ; gcrRegs -[eax ebx]
; byrRegs -[edx esi]
mov eax, 1
- ;; size=22 bbWeight=0.50 PerfScore 3.75
+ ;; size=19 bbWeight=0.50 PerfScore 3.25
G_M3988_IG09: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -136,6 +127,6 @@ G_M3988_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret 12
;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 147, prolog size 23, PerfScore 118.38, instruction count 60, allocated bytes for code 147 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
+; Total bytes of code 131, prolog size 20, PerfScore 111.00, instruction count 55, allocated bytes for code 131 (MethodHash=b15bf06b) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
; ============================================================
-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, 5.50) 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, 2.50) 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, 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 PerfScore 2.00
+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, 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 PerfScore 5.25
+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 148.97, 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, 5.50) 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, 2.50) 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, 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 PerfScore 2.00
+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, 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 PerfScore 5.25
+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 151.97, 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)
; ============================================================
+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[]>
+; V00 this [V00,T05] ( 3, 3 ) ref -> [ebp-0x18] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T02] ( 5, 7 ) 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,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>
-; 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"
+; V04 arg4 [V04,T07] ( 2, 2 ) int -> [ebp+0x0C] single-def
+; V05 arg5 [V05,T08] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V06 loc0 [V06,T00] ( 16, 23.58) int -> [ebp-0x10]
+; V07 tmp0 [V07,T01] ( 4, 16 ) ref -> ebx "argument with side effect"
+; V08 cse0 [V08,T03] ( 7, 7.54) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 12
@@ -31,158 +31,168 @@ G_M60484_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
- mov ebx, gword ptr [ebp+0x14]
- ; gcrRegs +[ebx]
+ mov eax, gword ptr [ebp+0x14]
+ ; gcrRegs +[eax]
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=00000020 {V00}, gcrefRegs=000000C1 {eax esi edi}, 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 ebx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ebx]
+ 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
+ je SHORT G_M60484_IG09
test edx, edx
- jl SHORT G_M60484_IG07
+ jl SHORT G_M60484_IG08
cmp dword ptr [edi+0x04], ecx
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], ebx
; GC ptr vars +{V00}
- jl SHORT G_M60484_IG06
+ jl SHORT G_M60484_IG07
;; 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=00000020 {V00}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ebx]
+ mov gword ptr [ebp+0x14], eax
+ mov ebx, gword ptr [eax+4*edx+0x08]
+ ; gcrRegs +[ebx]
mov dword ptr [ebp-0x10], edx
push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ mov edx, ebx
; 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 ebx]
test eax, eax
- jne SHORT G_M60484_IG15
- mov edx, dword ptr [ebp-0x10]
- inc edx
+ jne G_M60484_IG16
+ mov ebx, dword ptr [ebp-0x10]
+ inc ebx
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, ebx
+ mov edx, ebx
+ jg SHORT G_M60484_IG06
+ ;; size=47 bbWeight=3.96 PerfScore 69.30
+G_M60484_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
+ mov ebx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M60484_IG13
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M60484_IG06: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx] +[edi]
+ 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=000000C1 {eax esi edi}, 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 +[ebx]
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], ebx
; 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], ebx
; 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=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi]
; 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=00000020 {V00}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ebx] +[eax edi]
+ ; GC ptr vars +{V00 V05}
cmp edx, ecx
- jae SHORT G_M60484_IG17
- mov eax, gword ptr [ebx+4*edx+0x08]
- ; gcrRegs +[eax]
+ jae SHORT G_M60484_IG18
+ mov gword ptr [ebp+0x14], eax
+ mov ebx, gword ptr [eax+4*edx+0x08]
+ ; gcrRegs +[ebx]
cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M60484_IG17
+ jae SHORT G_M60484_IG18
mov dword ptr [ebp-0x10], edx
push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ mov edx, ebx
; 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 ebx]
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 ebx, dword ptr [ebp-0x10]
+ inc ebx
+ cmp dword ptr [ebp-0x14], ebx
+ mov edx, ebx
+ 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 edi]
+ mov ebx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ebx]
;; 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, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V05}
push gword ptr [ebp+0x08]
push dword ptr [ebp+0x0C]
- mov ecx, eax
+ mov ecx, ebx
; 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 ebx esi]
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 PerfScore 6.50
+G_M60484_IG14: ; bbWeight=1, 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 PerfScore 4.50
+G_M60484_IG15: ; bbWeight=0.02, gcVars=00000020 {V00}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[eax esi edi]
+ ; GC ptr vars +{V00 V05}
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
- ; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V00 V06}
+G_M60484_IG16: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax esi edi]
+ ; GC ptr vars -{V00 V05}
mov eax, dword ptr [ebp-0x10]
...
+23 (+9.91%) : 269293.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
@@ -9,22 +9,22 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 9, 43.50) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
-; V01 arg1 [V01,T09] ( 6, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V02 arg2 [V02,T12] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
-; V03 loc0 [V03,T06] ( 6, 20.50) int -> ebx
-; V04 loc1 [V04,T05] ( 4, 21 ) ref -> [ebp-0x18] class-hnd spill-single-def <System.String>
+; V00 this [V00,T03] ( 9, 44 ) ref -> esi this class-hnd single-def <System.Xml.XmlBaseWriter+NamespaceManager>
+; V01 arg1 [V01,T09] ( 6, 5 ) ref -> [ebp-0x14] class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <System.Xml.XmlDictionaryString>
+; V03 loc0 [V03,T06] ( 6, 20.50) int -> [ebp-0x10]
+; V04 loc1 [V04,T05] ( 4, 22 ) ref -> [ebp-0x18] class-hnd spill-single-def <System.String>
;* V05 loc2 [V05,T08] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc3 [V06,T01] ( 7, 88 ) int -> [ebp-0x10]
+; V06 loc3 [V06,T01] ( 7, 88 ) int -> ebx
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V08 tmp0 [V08,T04] ( 3, 24 ) ref -> ecx "arr expr"
; V09 tmp1 [V09,T00] ( 3, 96 ) ref -> edi "arr expr"
; V10 tmp2 [V10,T02] ( 2, 64 ) ref -> edi "argument with side effect"
; V11 tmp3 [V11,T11] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V12 cse0 [V12,T07] ( 4, 9 ) byref -> [ebp-0x1C] spill-single-def "CSE - moderate"
-; V13 cse1 [V13,T10] ( 4, 2 ) ref -> ebx "CSE - moderate"
+; V13 cse1 [V13,T10] ( 4, 2 ) ref -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M55749_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,26 +32,30 @@ G_M55749_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=13 bbWeight=1 PerfScore 5.00
-G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M55749_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], 0
jne SHORT G_M55749_IG06
;; size=6 bbWeight=1 PerfScore 4.00
-G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [(reloc)] ; const ptr
- mov ebx, gword ptr [edx]
- ; gcrRegs +[ebx]
- mov edx, ebx
+ mov eax, gword ptr [edx]
+ ; gcrRegs +[eax]
+ mov gword ptr [ebp-0x20], eax
+ ; GC ptr vars +{V13}
+ mov edx, eax
; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
- ; gcrRegs -[ecx edx] +[eax]
+ ; gcrRegs -[ecx edx]
mov ecx, eax
; gcrRegs +[ecx]
mov edx, edi
@@ -62,20 +66,20 @@ G_M55749_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
je SHORT G_M55749_IG04
push edi
; gcr arg push 0
- push gword ptr [ebp+0x08]
+ push ebx
; gcr arg push 1
- mov edx, ebx
+ mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
- ; gcrRegs -[ecx edx esi edi]
+ ; gcrRegs -[ecx edx ebx esi edi]
; gcr arg pop 2
- ;; size=46 bbWeight=0.50 PerfScore 8.88
-G_M55749_IG04: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- mov eax, ebx
+ ;; size=48 bbWeight=0.50 PerfScore 9.75
+G_M55749_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ ;; size=3 bbWeight=0.50 PerfScore 0.50
G_M55749_IG05: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -84,9 +88,11 @@ G_M55749_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55749_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax ebx] +[esi edi]
- xor ebx, ebx
+G_M55749_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ebx esi edi]
+ ; GC ptr vars -{V13}
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[eax]
mov bword ptr [ebp-0x1C], eax
@@ -94,88 +100,89 @@ G_M55749_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov ecx, gword ptr [eax+0x78]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
+ mov gword ptr [ebp+0x08], ebx
jle SHORT G_M55749_IG12
- ;; size=20 bbWeight=0.50 PerfScore 5.12
+ ;; size=26 bbWeight=0.50 PerfScore 6.12
G_M55749_IG07: ; bbWeight=4, gcVars=00000080 {V12}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000001 {eax}, gcvars, byref, isz
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx ebx]
mov ecx, gword ptr [eax+0x78]
; gcrRegs +[ecx]
- cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M55749_IG16
- mov edx, gword ptr [ecx+4*ebx+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x18], edx
+ mov edx, dword ptr [ebp-0x10]
+ cmp edx, dword ptr [ecx+0x04]
+ jae G_M55749_IG16
+ mov dword ptr [ebp-0x10], edx
+ mov ecx, gword ptr [ecx+4*edx+0x08]
+ mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V04}
- mov ecx, dword ptr [esi+0x18]
- ; gcrRegs -[ecx]
- dec ecx
- cmp ecx, dword ptr [esi+0x2C]
+ mov ebx, dword ptr [esi+0x18]
+ dec ebx
+ cmp ebx, dword ptr [esi+0x2C]
jl SHORT G_M55749_IG14
- ;; size=24 bbWeight=4 PerfScore 61.00
-G_M55749_IG08: ; bbWeight=2, gcVars=000000A0 {V04 V12}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=34 bbWeight=4 PerfScore 69.00
+G_M55749_IG08: ; bbWeight=2, gcVars=000000A0 {V04 V12}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx]
; byrRegs -[eax]
mov gword ptr [ebp-0x14], edi
; GC ptr vars +{V01}
;; size=3 bbWeight=2 PerfScore 2.00
-G_M55749_IG09: ; bbWeight=16, gcVars=000002A0 {V01 V04 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M55749_IG09: ; bbWeight=16, gcVars=000002A0 {V01 V04 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edi]
mov edi, gword ptr [esi+0x04]
; gcrRegs +[edi]
- cmp ecx, dword ptr [edi+0x04]
+ cmp ebx, dword ptr [edi+0x04]
jae SHORT G_M55749_IG16
- mov dword ptr [ebp-0x10], ecx
- mov edi, gword ptr [edi+4*ecx+0x08]
+ mov edi, gword ptr [edi+4*ebx+0x08]
mov edi, gword ptr [edi+0x04]
mov ecx, edi
; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx edi]
test eax, eax
jne SHORT G_M55749_IG11
- mov edi, dword ptr [ebp-0x10]
- dec edi
- cmp edi, dword ptr [esi+0x2C]
- mov ecx, edi
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
+ dec ebx
+ cmp ebx, dword ptr [esi+0x2C]
jge SHORT G_M55749_IG09
- ;; size=44 bbWeight=16 PerfScore 352.00
-G_M55749_IG10: ; bbWeight=2, gcVars=00000220 {V01 V04}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=36 bbWeight=16 PerfScore 316.00
+G_M55749_IG10: ; bbWeight=4, gcVars=00000220 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V12}
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
jmp SHORT G_M55749_IG14
- ;; size=5 bbWeight=2 PerfScore 6.00
+ ;; size=5 bbWeight=4 PerfScore 12.00
G_M55749_IG11: ; bbWeight=4, gcVars=00000280 {V01 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx edi]
+ ; gcrRegs -[edi]
; GC ptr vars -{V04} +{V12}
+ mov ebx, dword ptr [ebp-0x10]
inc ebx
mov eax, bword ptr [ebp-0x1C]
; byrRegs +[eax]
mov ecx, gword ptr [eax+0x78]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], ebx
+ mov dword ptr [ebp-0x10], ebx
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
jg SHORT G_M55749_IG07
- ;; size=15 bbWeight=4 PerfScore 33.00
-G_M55749_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=21 bbWeight=4 PerfScore 41.00
+G_M55749_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx esi edi]
; byrRegs -[eax]
; GC ptr vars -{V01 V12}
xor eax, eax
; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55749_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M55749_IG13: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55749_IG14: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx esi edi]
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M55749_IG14: ; bbWeight=1, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[esi edi]
; GC ptr vars +{V04 V05}
push edi
; gcr arg push 0
@@ -183,20 +190,22 @@ G_M55749_IG14: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=000000C4
; gcr arg push 1
mov ecx, esi
; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx esi edi]
; gcr arg pop 2
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
- ;; size=15 bbWeight=0.50 PerfScore 3.12
-G_M55749_IG15: ; bbWeight=0.50, epilog, nogc, extend
...
+20 (+18.87%) : 109838.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T05] ( 3, 4 ) ref -> edi class-hnd single-def <System.Xml.XmlAttribute>
; V01 arg1 [V01,T02] ( 5, 9 ) ref -> esi class-hnd single-def <System.Xml.XmlAttributeCollection>
-; V02 arg2 [V02,T07] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T01] ( 6, 11 ) int -> ebx
-; V04 tmp0 [V04,T03] ( 4, 10 ) int -> eax "Inline return value spill temp"
+; V02 arg2 [V02,T07] ( 2, 1.50) byref -> ebx single-def
+; V03 loc0 [V03,T01] ( 6, 11 ) int -> [ebp-0x10]
+; V04 tmp0 [V04,T03] ( 4, 10 ) int -> edx "Inline return value spill temp"
; V05 tmp1 [V05,T00] ( 2, 16 ) byref -> ecx "Inlining Arg"
; V06 tmp2 [V06,T06] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>>
; V07 cse0 [V07,T04] ( 3, 10 ) ref -> ecx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -26,31 +26,38 @@ G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
- ;; size=10 bbWeight=1 PerfScore 4.75
-G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, bword ptr [ebp+0x08]
+ ; byrRegs +[ebx]
+ ;; size=14 bbWeight=1 PerfScore 6.75
+G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
test esi, esi
je SHORT G_M25105_IG10
;; size=4 bbWeight=1 PerfScore 1.25
-G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- xor ebx, ebx
+G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
jmp SHORT G_M25105_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
cmp eax, edi
je SHORT G_M25105_IG12
- inc ebx
- ;; size=15 bbWeight=2 PerfScore 10.00
-G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
; gcrRegs -[eax]
+ inc eax
+ mov dword ptr [ebp-0x10], eax
+ ;; size=24 bbWeight=2 PerfScore 16.00
+G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
lea ecx, bword ptr [esi+0x08]
; byrRegs +[ecx]
mov ecx, gword ptr [ecx]
@@ -59,12 +66,12 @@ G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
test ecx, ecx
jne SHORT G_M25105_IG07
;; size=9 bbWeight=4 PerfScore 15.00
-G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs -[ecx]
- xor eax, eax
+ xor edx, edx
jmp SHORT G_M25105_IG09
;; size=4 bbWeight=2 PerfScore 4.50
-G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[ecx]
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
; gcrRegs -[ecx] +[eax]
@@ -74,44 +81,46 @@ G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx]
+ mov edx, eax
jmp SHORT G_M25105_IG09
- ;; size=20 bbWeight=2 PerfScore 19.00
-G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov eax, 1
+ ;; size=22 bbWeight=2 PerfScore 19.50
+G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+ mov edx, 1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, eax
+G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ cmp eax, edx
jl SHORT G_M25105_IG04
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25105_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 9.00
+G_M25105_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
; gcrRegs -[esi edi]
xor eax, eax
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], eax
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; byrRegs -[esi]
+ mov dword ptr [ebx], eax
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M25105_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; byrRegs -[ebx]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], ebx
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
+ ; byrRegs +[ebx]
+ mov esi, dword ptr [ebp-0x10]
+ mov dword ptr [ebx], esi
mov eax, 1
;; size=10 bbWeight=0.50 PerfScore 1.12
G_M25105_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 106, prolog size 6, PerfScore 67.38, instruction count 48, allocated bytes for code 106 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
+; Total bytes of code 126, prolog size 7, PerfScore 83.25, instruction count 57, allocated bytes for code 126 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
; ============================================================
libraries.pmi.windows.x86.checked.mch
-15 (-10.49%) : 147798.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary2+Node[System.__Canon,System.Nullable
1[int]],System.__Canon,byref):ubyte:this (FullOpts)
@@ -11,15 +11,15 @@
; V00 this [V00,T06] ( 4, 10 ) ref -> edi this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T00] ( 9, 23.50) ref -> esi class-hnd <Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
; V02 arg2 [V02,T07] ( 1, 4 ) ref -> ebx class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T08] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V03 arg3 [V03,T08] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x10] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T03] ( 3, 16 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V06 tmp2 [V06,T03] ( 3, 16 ) int -> eax "VirtualCall with runtime lookup"
; V07 tmp3 [V07,T05] ( 2, 16 ) ref -> ecx "argument with side effect"
; V08 rat0 [V08,T02] ( 3, 17.60) int -> ecx "Spilling to split statement for tree"
-; V09 rat1 [V09,T01] ( 3, 22.40) int -> edx "fgMakeTemp is creating a new local variable"
+; V09 rat1 [V09,T01] ( 3, 22.40) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M38973_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -27,47 +27,44 @@ G_M38973_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x0C]
; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=14 bbWeight=1 PerfScore 6.75
G_M38973_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
je SHORT G_M38973_IG07
;; size=4 bbWeight=1 PerfScore 1.25
G_M38973_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov edx, gword ptr [esi+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x10], edx
; GC ptr vars +{V04}
mov ecx, dword ptr [edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x0C]
- test edx, edx
+ mov eax, dword ptr [ecx+0x24]
+ mov eax, dword ptr [eax]
+ mov eax, dword ptr [eax+0x0C]
+ test eax, eax
je SHORT G_M38973_IG05
;; size=20 bbWeight=4 PerfScore 49.00
G_M38973_IG04: ; bbWeight=3.20, gcVars=00000010 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], edx
+ ; gcrRegs -[edx]
jmp SHORT G_M38973_IG06
- ;; size=5 bbWeight=3.20 PerfScore 9.60
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
G_M38973_IG05: ; bbWeight=0.80, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov dword ptr [ebp-0x10], eax
- ;; size=13 bbWeight=0.80 PerfScore 1.80
+ ;; size=10 bbWeight=0.80 PerfScore 1.00
G_M38973_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x10]
mov edx, ebx
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x10]
nop
; GC ptr vars -{V04}
call [eax]
@@ -84,24 +81,24 @@ G_M38973_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs +[esi]
test esi, esi
jne SHORT G_M38973_IG03
- ;; size=36 bbWeight=4 PerfScore 70.00
-G_M38973_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=33 bbWeight=4 PerfScore 66.00
+G_M38973_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ebx esi]
xor eax, eax
mov ebx, bword ptr [ebp+0x08]
; byrRegs +[ebx]
mov dword ptr [ebx], eax
mov dword ptr [ebx+0x04], eax
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38973_IG08: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=10 bbWeight=1 PerfScore 3.25
+G_M38973_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[ebx]
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M38973_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov ebx, bword ptr [ebp+0x08]
@@ -113,14 +110,14 @@ G_M38973_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov eax, 1
;; size=19 bbWeight=0.50 PerfScore 3.62
G_M38973_IG10: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 143, prolog size 9, PerfScore 147.40, instruction count 61, allocated bytes for code 143 (MethodHash=fb2b67c2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (FullOpts)
+; Total bytes of code 128, prolog size 7, PerfScore 144.03, instruction count 58, allocated bytes for code 128 (MethodHash=fb2b67c2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (FullOpts)
; ============================================================
-15 (-10.49%) : 109223.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary2+Node[System.__Canon,System.Nullable
1[int]],System.__Canon,byref):ubyte:this (FullOpts)
@@ -11,15 +11,15 @@
; V00 this [V00,T06] ( 4, 10 ) ref -> edi this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T00] ( 9, 23.50) ref -> esi class-hnd <Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]]>
; V02 arg2 [V02,T07] ( 1, 4 ) ref -> ebx class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T08] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V03 arg3 [V03,T08] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x10] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T03] ( 3, 16 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V06 tmp2 [V06,T03] ( 3, 16 ) int -> eax "VirtualCall with runtime lookup"
; V07 tmp3 [V07,T05] ( 2, 16 ) ref -> ecx "argument with side effect"
; V08 rat0 [V08,T02] ( 3, 17.60) int -> ecx "Spilling to split statement for tree"
-; V09 rat1 [V09,T01] ( 3, 22.40) int -> edx "fgMakeTemp is creating a new local variable"
+; V09 rat1 [V09,T01] ( 3, 22.40) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M38973_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -27,47 +27,44 @@ G_M38973_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x0C]
; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=14 bbWeight=1 PerfScore 6.75
G_M38973_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
je SHORT G_M38973_IG07
;; size=4 bbWeight=1 PerfScore 1.25
G_M38973_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov edx, gword ptr [esi+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x10], edx
; GC ptr vars +{V04}
mov ecx, dword ptr [edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x0C]
- test edx, edx
+ mov eax, dword ptr [ecx+0x24]
+ mov eax, dword ptr [eax]
+ mov eax, dword ptr [eax+0x0C]
+ test eax, eax
je SHORT G_M38973_IG05
;; size=20 bbWeight=4 PerfScore 49.00
G_M38973_IG04: ; bbWeight=3.20, gcVars=00000010 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], edx
+ ; gcrRegs -[edx]
jmp SHORT G_M38973_IG06
- ;; size=5 bbWeight=3.20 PerfScore 9.60
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
G_M38973_IG05: ; bbWeight=0.80, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov dword ptr [ebp-0x10], eax
- ;; size=13 bbWeight=0.80 PerfScore 1.80
+ ;; size=10 bbWeight=0.80 PerfScore 1.00
G_M38973_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x10]
mov edx, ebx
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x10]
nop
; GC ptr vars -{V04}
call [eax]
@@ -84,24 +81,24 @@ G_M38973_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs +[esi]
test esi, esi
jne SHORT G_M38973_IG03
- ;; size=36 bbWeight=4 PerfScore 70.00
-G_M38973_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=33 bbWeight=4 PerfScore 66.00
+G_M38973_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ebx esi]
xor eax, eax
mov ebx, bword ptr [ebp+0x08]
; byrRegs +[ebx]
mov dword ptr [ebx], eax
mov dword ptr [ebx+0x04], eax
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38973_IG08: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=10 bbWeight=1 PerfScore 3.25
+G_M38973_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[ebx]
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M38973_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov ebx, bword ptr [ebp+0x08]
@@ -113,14 +110,14 @@ G_M38973_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov eax, 1
;; size=19 bbWeight=0.50 PerfScore 3.62
G_M38973_IG10: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 143, prolog size 9, PerfScore 147.40, instruction count 61, allocated bytes for code 143 (MethodHash=fb2b67c2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (FullOpts)
+; Total bytes of code 128, prolog size 7, PerfScore 144.03, instruction count 58, allocated bytes for code 128 (MethodHash=fb2b67c2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (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, 19 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=7 bbWeight=1 PerfScore 4.00
+G_M34838_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M34838_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=7 bbWeight=1 PerfScore 4.00
-; 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 42.42, instruction count 32, allocated bytes for code 58 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
+28 (+10.00%) : 35408.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:IsCompliantType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte:this (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
; V00 this [V00,T05] ( 4, 6.50) ref -> edi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker>
-; V01 arg1 [V01,T04] ( 10, 7 ) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V02 arg2 [V02,T09] ( 2, 4.50) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V01 arg1 [V01,T04] ( 10, 7.50) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V02 arg2 [V02,T09] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V03 loc0 [V03,T11] ( 6, 4 ) byte -> eax single-def
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
@@ -18,35 +18,35 @@
;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations[]>
-; V10 tmp3 [V10,T06] ( 3, 8 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 tmp3 [V10,T06] ( 3, 8 ) ref -> [ebp-0x1C] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <<unknown class>>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
; V13 tmp6 [V13,T02] ( 4, 12.50) int -> ecx "Inline stloc first use temp"
-; V14 tmp7 [V14,T15] ( 2, 2 ) int -> eax "Single return block return value"
-; V15 tmp8 [V15,T10] ( 2, 4.50) ref -> [ebp-0x18] spill-single-def "field V04._array (fldOffset=0x0)" P-INDEP
-; V16 tmp9 [V16,T01] ( 4, 12.50) int -> ebx "field V04._index (fldOffset=0x4)" P-INDEP
+; V14 tmp7 [V14,T12] ( 2, 4 ) int -> eax "Single return block return value"
+; V15 tmp8 [V15,T10] ( 2, 4.50) ref -> [ebp-0x20] spill-single-def "field V04._array (fldOffset=0x0)" P-INDEP
+; V16 tmp9 [V16,T01] ( 4, 12.50) int -> [ebp-0x10] "field V04._index (fldOffset=0x4)" P-INDEP
; V17 tmp10 [V17,T16] ( 3, 1.50) ref -> eax "field V05.array (fldOffset=0x0)" P-INDEP
-; V18 tmp11 [V18,T07] ( 2, 6 ) ref -> eax "field V06.DefaultType (fldOffset=0x0)" P-INDEP
+; V18 tmp11 [V18,T07] ( 2, 6 ) ref -> ebx "field V06.DefaultType (fldOffset=0x0)" P-INDEP
; V19 tmp12 [V19,T03] ( 4, 12 ) ref -> ecx "field V06._extensions (fldOffset=0x4)" P-INDEP
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "field V06.DefaultNullableAnnotation (fldOffset=0x8)" P-INDEP
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
; V22 tmp15 [V22,T17] ( 2, 1 ) ref -> eax single-def "field V08._array (fldOffset=0x0)" P-INDEP
;* V23 tmp16 [V23,T18] ( 0, 0 ) int -> zero-ref single-def "field V08._index (fldOffset=0x4)" P-INDEP
-; V24 tmp17 [V24,T14] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V24 tmp17 [V24,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V25 tmp18 [V25,T00] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V26 cse0 [V26,T13] ( 3, 2.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
-; V27 cse1 [V27,T08] ( 3, 5 ) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
-; V28 rat0 [V28,T12] ( 3, 3 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V26 cse0 [V26,T14] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V27 cse1 [V27,T08] ( 3, 5 ) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
+; V28 rat0 [V28,T13] ( 3, 3 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
-G_M21911_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M21911_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
@@ -57,7 +57,7 @@ G_M21911_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x5C]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
cmp eax, 16
@@ -65,7 +65,7 @@ G_M21911_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
;; size=18 bbWeight=1 PerfScore 9.50
G_M21911_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 9
- je G_M21911_IG14
+ je G_M21911_IG16
add eax, -12
cmp eax, 4
ja SHORT G_M21911_IG05
@@ -77,14 +77,14 @@ G_M21911_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
;; size=36 bbWeight=0.50 PerfScore 4.25
G_M21911_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp eax, 22
- je G_M21911_IG14
+ je G_M21911_IG16
cmp eax, 36
- je G_M21911_IG14
+ je G_M21911_IG16
;; size=18 bbWeight=0.50 PerfScore 1.25
G_M21911_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
- mov eax, dword ptr [ebp-0x10]
+ mov eax, dword ptr [ebp-0x14]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx]
cmp eax, 6
@@ -115,7 +115,7 @@ G_M21911_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov ecx, eax
call [Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:IsTrue(int):ubyte]
test eax, eax
- je SHORT G_M21911_IG14
+ je G_M21911_IG16
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
@@ -123,84 +123,111 @@ G_M21911_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
call [eax+0x18]<unknown method>
; gcrRegs -[ecx] +[eax]
mov edx, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x14], edx
- mov gword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V15}
xor ecx, ecx
- xor ebx, ebx
+ xor eax, eax
+ ; gcrRegs -[eax]
+ mov dword ptr [ebp-0x10], eax
test edx, edx
- jle SHORT G_M21911_IG12
- ;; size=64 bbWeight=0.50 PerfScore 14.12
-G_M21911_IG08: ; bbWeight=4, gcVars=00000400 {V15}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jle SHORT G_M21911_IG10
+ ;; size=71 bbWeight=0.50 PerfScore 14.62
+G_M21911_IG08: ; bbWeight=4, gcVars=00000400 {V15}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
lea ecx, [ecx+2*ecx]
- lea ecx, bword ptr [eax+4*ecx+0x08]
+ mov ebx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ebx]
+ lea ecx, bword ptr [ebx+4*ecx+0x08]
; byrRegs +[ecx]
- mov eax, gword ptr [ecx]
+ mov ebx, gword ptr [ecx]
mov ecx, gword ptr [ecx+0x04]
; gcrRegs +[ecx]
; byrRegs -[ecx]
test ecx, ecx
- jne SHORT G_M21911_IG10
- ;; size=16 bbWeight=4 PerfScore 27.00
+ jne SHORT G_M21911_IG11
+ ;; size=19 bbWeight=4 PerfScore 31.00
G_M21911_IG09: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax ecx]
- xor eax, eax
- ; gcrRegs +[eax]
- jmp SHORT G_M21911_IG11
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M21911_IG10: ; bbWeight=2, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx ebx]
+ xor ecx, ecx
; gcrRegs +[ecx]
- mov edx, eax
+ mov gword ptr [ebp-0x1C], ecx
+ ; GC ptr vars +{V10}
+ jmp SHORT G_M21911_IG12
+ ;; size=7 bbWeight=2 PerfScore 6.50
+G_M21911_IG10: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx edi]
+ ; GC ptr vars -{V10 V15}
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M21911_IG13
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M21911_IG11: ; bbWeight=2, gcVars=00000400 {V15}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[ecx edi]
+ ; GC ptr vars +{V10 V15}
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, dword ptr [ecx]
- ; gcrRegs -[eax]
- mov eax, dword ptr [eax+0x2C]
- call [eax+0x14]<unknown method>
+ mov ebx, dword ptr [ecx]
+ ; gcrRegs -[ebx]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x14]<unknown method>
; gcrRegs -[ecx edx] +[eax]
- ;; size=10 bbWeight=2 PerfScore 14.50
-G_M21911_IG11: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- push gword ptr [ebp+0x08]
+ mov gword ptr [ebp-0x1C], eax
+ ;; size=13 bbWeight=2 PerfScore 16.50
+G_M21911_IG12: ; bbWeight=4, gcVars=00000440 {V10 V15}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp+0x08]
+ ; gcrRegs +[ebx]
+ push ebx
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, eax
+ mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
+ ; GC ptr vars -{V10}
call [Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:IsCompliantType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte:this]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
- je SHORT G_M21911_IG14
- lea ecx, [ebx+0x01]
- mov ebx, ecx
- mov edx, dword ptr [ebp-0x14]
- cmp edx, ebx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jg SHORT G_M21911_IG08
- ;; size=32 bbWeight=4 PerfScore 39.00
-G_M21911_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ je SHORT G_M21911_IG16
+ mov ecx, dword ptr [ebp-0x10]
+ inc ecx
+ mov edx, ecx
+ mov eax, dword ptr [ebp-0x18]
+ cmp eax, edx
+ mov dword ptr [ebp-0x10], edx
+ jg SHORT G_M21911_IG15
+ ;; size=35 bbWeight=4 PerfScore 49.00
+G_M21911_IG13: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V15}
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp+0x08]
+ mov edx, ebx
; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx ebx esi]
test eax, eax
sete al
movzx eax, al
- ;; size=19 bbWeight=0.50 PerfScore 2.88
-G_M21911_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=18 bbWeight=1 PerfScore 5.00
+G_M21911_IG14: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M21911_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M21911_IG15: ; bbWeight=2, gcVars=00000400 {V15}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ebx esi edi]
+ ; GC ptr vars +{V10 V15}
+ mov gword ptr [ebp+0x08], ebx
+ jmp SHORT G_M21911_IG08
+ ;; size=5 bbWeight=2 PerfScore 6.00
...
+21 (+11.17%) : 144826.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue:TryGetValue(System.String,byref):ubyte:this (FullOpts)
@@ -10,15 +10,15 @@
;
; V00 this [V00,T14] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue>
; V01 arg1 [V01,T06] ( 6, 9.67) ref -> esi class-hnd single-def <System.String>
-; V02 arg2 [V02,T18] ( 2, 1 ) byref -> [ebp+0x08] single-def
+; V02 arg2 [V02,T17] ( 2, 2 ) byref -> [ebp+0x08] single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
;* V05 loc2 [V05,T19] ( 0, 0 ) ubyte -> zero-ref
-; V06 tmp0 [V06,T12] ( 3, 6 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V06 tmp0 [V06,T12] ( 3, 6 ) ref -> ebx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-; V08 tmp2 [V08,T03] ( 5, 19.33) ref -> ecx class-hnd "Inlining Arg" <System.__Canon>
+; V08 tmp2 [V08,T03] ( 5, 19.33) ref -> [ebp-0x30] class-hnd "Inlining Arg" <System.__Canon>
; V09 tmp3 [V09,T15] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp4 [V10,T10] ( 2, 8 ) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
+; V10 tmp4 [V10,T10] ( 2, 8 ) byref -> [ebp-0x34] spill-single-def "impAppendStmt"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -27,24 +27,24 @@
;* V16 tmp10 [V16,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V04.key (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T16] ( 2, 2.50) ref -> [ebp-0x30] "field V04.value (fldOffset=0x4)" P-INDEP
-; V20 tmp14 [V20,T04] ( 4, 16.26) ref -> edi single-def "V03.[000..004)"
+; V19 tmp13 [V19,T16] ( 2, 3.00) ref -> [ebp-0x38] "field V04.value (fldOffset=0x4)" P-INDEP
+; V20 tmp14 [V20,T04] ( 4, 16.26) ref -> ebx single-def "V03.[000..004)"
; V21 tmp15 [V21,T00] ( 6, 18.04) int -> [ebp-0x24] "V03.[004..008)"
-; V22 tmp16 [V22,T09] ( 2, 9 ) int -> ebx single-def "V03.[008..012)"
-; V23 tmp17 [V23,T07] ( 2, 5.26) ref -> ecx "V03.[012..016)"
+; V22 tmp16 [V22,T09] ( 2, 9 ) int -> [ebp-0x28] spill-single-def "V03.[008..012)"
+; V23 tmp17 [V23,T07] ( 2, 5.26) ref -> edi "V03.[012..016)"
; V24 tmp18 [V24,T08] ( 2, 5.26) ref -> eax "V03.[016..020)"
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[000..004)"
;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref single-def "V07.[004..008)"
-; V27 tmp21 [V27,T17] ( 2, 2 ) int -> ebx single-def "V07.[008..012)"
+; V27 tmp21 [V27,T18] ( 2, 2 ) int -> ecx single-def "V07.[008..012)"
;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[012..016)"
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[016..020)"
; V30 tmp24 [V30,T01] ( 3, 19.56) byref -> eax "Spilling address for field-by-field copy"
; V31 tmp25 [V31,T02] ( 3, 19.56) 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, 8 ) int -> eax "CSE - moderate"
-; V34 cse1 [V34,T13] ( 3, 5.66) int -> [ebp-0x28] "CSE - moderate"
+; V34 cse1 [V34,T13] ( 3, 5.66) int -> [ebp-0x2C] "CSE - moderate"
;
-; Lcl frame size = 36
+; Lcl frame size = 44
G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -52,7 +52,7 @@ G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 36
+ sub esp, 44
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -63,80 +63,93 @@ G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=25 bbWeight=1 PerfScore 9.00
G_M33453_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- mov edi, gword ptr [ecx+0x04]
- ; gcrRegs +[edi]
- mov ebx, dword ptr [edi+0x0C]
+ mov ebx, gword ptr [ecx+0x04]
+ ; gcrRegs +[ebx]
+ mov ecx, dword ptr [ebx+0x0C]
+ ; gcrRegs -[ecx]
xor edx, edx
+ mov dword ptr [ebp-0x28], ecx
jmp SHORT G_M33453_IG08
- ;; size=10 bbWeight=1 PerfScore 6.25
-G_M33453_IG03: ; bbWeight=2.00, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[eax]
- cmp esi, ecx
+ ;; size=13 bbWeight=1 PerfScore 7.25
+G_M33453_IG03: ; bbWeight=2.00, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[eax edi]
+ cmp esi, edi
je SHORT G_M33453_IG11
;; size=4 bbWeight=2.00 PerfScore 2.50
-G_M33453_IG04: ; bbWeight=1.83, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33453_IG04: ; bbWeight=1.83, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
+ mov gword ptr [ebp-0x30], edi
+ ; GC ptr vars +{V08}
+ mov ecx, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x24]
je SHORT G_M33453_IG08
- ;; size=7 bbWeight=1.83 PerfScore 4.12
-G_M33453_IG05: ; bbWeight=1.83, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- test ecx, ecx
- mov gword ptr [ebp-0x30], eax
+ ;; size=13 bbWeight=1.83 PerfScore 7.79
+G_M33453_IG05: ; bbWeight=1.83, gcVars=00000008 {V08}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi]
+ mov edi, gword ptr [ebp-0x30]
+ ; gcrRegs +[edi]
+ test edi, edi
+ mov gword ptr [ebp-0x30], edi
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V19}
je SHORT G_M33453_IG08
- ;; size=7 bbWeight=1.83 PerfScore 4.12
-G_M33453_IG06: ; bbWeight=1.83, gcVars=00010000 {V19}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, dword ptr [esi+0x04]
- cmp eax, dword ptr [ecx+0x04]
- mov dword ptr [ebp-0x28], eax
+ ;; size=13 bbWeight=1.83 PerfScore 7.79
+G_M33453_IG06: ; bbWeight=1.83, gcVars=00010008 {V08 V19}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edi]
+ mov edi, dword ptr [esi+0x04]
+ mov eax, gword ptr [ebp-0x30]
+ ; gcrRegs +[eax]
+ cmp edi, dword ptr [eax+0x04]
+ mov dword ptr [ebp-0x2C], edi
jne SHORT G_M33453_IG08
- ;; size=11 bbWeight=1.83 PerfScore 12.83
-G_M33453_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=1.83 PerfScore 14.66
+G_M33453_IG07: ; bbWeight=2, gcVars=00010000 {V19}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V08}
mov dword ptr [ebp-0x24], edx
- lea eax, bword ptr [esi+0x08]
- ; byrRegs +[eax]
- mov bword ptr [ebp-0x2C], eax
+ lea edi, bword ptr [esi+0x08]
+ ; byrRegs +[edi]
+ mov bword ptr [ebp-0x34], edi
; GC ptr vars +{V10}
- mov eax, dword ptr [ebp-0x28]
- ; byrRegs -[eax]
- add eax, eax
- push eax
- lea edx, bword ptr [ecx+0x08]
+ mov edi, dword ptr [ebp-0x2C]
+ ; byrRegs -[edi]
+ add edi, edi
+ push edi
+ lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
- mov ecx, bword ptr [ebp-0x2C]
- ; gcrRegs -[ecx]
+ mov ecx, bword ptr [ebp-0x34]
; byrRegs +[ecx]
; GC ptr vars -{V10}
call [<unknown method>]
+ ; gcrRegs -[eax]
; byrRegs -[ecx edx]
test eax, eax
- mov eax, gword ptr [ebp-0x30]
+ mov eax, gword ptr [ebp-0x38]
; gcrRegs +[eax]
+ mov ecx, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x24]
jne SHORT G_M33453_IG11
- ;; size=37 bbWeight=2 PerfScore 25.00
-G_M33453_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=40 bbWeight=2 PerfScore 27.00
+G_M33453_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
; GC ptr vars -{V19}
- cmp ebx, dword ptr [edi+0x0C]
+ cmp ecx, dword ptr [ebx+0x0C]
jne SHORT G_M33453_IG16
;; size=5 bbWeight=8 PerfScore 32.00
-G_M33453_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [edi+0x08]
+G_M33453_IG09: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebx+0x08]
cmp edx, eax
jae SHORT G_M33453_IG13
;; size=7 bbWeight=4 PerfScore 13.00
-G_M33453_IG10: ; bbWeight=3.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [edi+0x04]
+G_M33453_IG10: ; bbWeight=3.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebx+0x04]
; gcrRegs +[eax]
cmp edx, dword ptr [eax+0x04]
jae SHORT G_M33453_IG15
lea eax, bword ptr [eax+8*edx+0x08]
; gcrRegs -[eax]
; byrRegs +[eax]
- mov ecx, gword ptr [eax]
- ; gcrRegs +[ecx]
+ mov edi, gword ptr [eax]
+ ; gcrRegs +[edi]
mov eax, gword ptr [eax+0x04]
; gcrRegs +[eax]
; byrRegs -[eax]
@@ -144,40 +157,40 @@ G_M33453_IG10: ; bbWeight=3.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M33453_IG03
;; size=23 bbWeight=3.26 PerfScore 46.45
-G_M33453_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx esi edi]
+G_M33453_IG11: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx esi edi]
mov edx, bword ptr [ebp+0x08]
; byrRegs +[edx]
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
mov eax, 1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M33453_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 2.25
+G_M33453_IG12: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M33453_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M33453_IG13: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
; gcrRegs +[eax]
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov gword ptr [esi], eax
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M33453_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov edi, bword ptr [ebp+0x08]
+ ; byrRegs +[edi]
+ mov gword ptr [edi], eax
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M33453_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax]
- ; byrRegs -[esi]
+ ; byrRegs -[edi]
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=10 bbWeight=1 PerfScore 4.50
G_M33453_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
@@ -186,6 +199,6 @@ G_M33453_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
...
+18 (+17.14%) : 168340.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T05] ( 3, 4 ) ref -> edi class-hnd single-def <System.Xml.XmlAttribute>
; V01 arg1 [V01,T02] ( 5, 9 ) ref -> esi class-hnd single-def <System.Xml.XmlAttributeCollection>
-; V02 arg2 [V02,T07] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T01] ( 6, 11 ) int -> ebx
-; V04 tmp0 [V04,T03] ( 4, 10 ) int -> eax "Inline return value spill temp"
+; V02 arg2 [V02,T07] ( 2, 1.50) byref -> ebx single-def
+; V03 loc0 [V03,T01] ( 6, 11 ) int -> [ebp-0x10]
+; V04 tmp0 [V04,T03] ( 4, 10 ) int -> ecx "Inline return value spill temp"
; V05 tmp1 [V05,T00] ( 2, 16 ) byref -> edx "Inlining Arg"
; V06 tmp2 [V06,T06] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>>
; V07 cse0 [V07,T04] ( 3, 10 ) ref -> edx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -25,31 +25,38 @@ G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
- ;; size=10 bbWeight=1 PerfScore 4.75
-G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, bword ptr [ebp+0x08]
+ ; byrRegs +[ebx]
+ ;; size=14 bbWeight=1 PerfScore 6.75
+G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
test esi, esi
je SHORT G_M25105_IG10
;; size=4 bbWeight=1 PerfScore 1.25
-G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- xor ebx, ebx
+G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
jmp SHORT G_M25105_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
cmp eax, edi
je SHORT G_M25105_IG12
- inc ebx
- ;; size=15 bbWeight=2 PerfScore 10.00
-G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
; gcrRegs -[eax]
+ inc eax
+ mov dword ptr [ebp-0x10], eax
+ ;; size=24 bbWeight=2 PerfScore 16.00
+G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
lea edx, bword ptr [esi+0x08]
; byrRegs +[edx]
mov edx, gword ptr [edx]
@@ -58,58 +65,59 @@ G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
test edx, edx
jne SHORT G_M25105_IG07
;; size=9 bbWeight=4 PerfScore 15.00
-G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs -[edx]
- xor eax, eax
+ xor ecx, ecx
jmp SHORT G_M25105_IG09
;; size=4 bbWeight=2 PerfScore 4.50
-G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax
je SHORT G_M25105_IG08
- mov eax, dword ptr [eax+0x08]
- ; gcrRegs -[eax]
+ mov ecx, dword ptr [eax+0x08]
jmp SHORT G_M25105_IG09
;; size=19 bbWeight=2 PerfScore 13.00
-G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov eax, 1
+G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs -[eax]
+ mov ecx, 1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, eax
+G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ cmp eax, ecx
jl SHORT G_M25105_IG04
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25105_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 9.00
+G_M25105_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
; gcrRegs -[esi edi]
xor eax, eax
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], eax
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; byrRegs -[esi]
+ mov dword ptr [ebx], eax
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M25105_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; byrRegs -[ebx]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], ebx
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
+ ; byrRegs +[ebx]
+ mov esi, dword ptr [ebp-0x10]
+ mov dword ptr [ebx], esi
mov eax, 1
;; size=10 bbWeight=0.50 PerfScore 1.12
G_M25105_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 105, prolog size 6, PerfScore 61.38, instruction count 48, allocated bytes for code 105 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
+; Total bytes of code 123, prolog size 7, PerfScore 76.75, instruction count 56, allocated bytes for code 123 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-11 (-7.64%) : 6832.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
@@ -7,17 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 10, 4.50) ref -> [ebp-0x10] this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
+; V00 this [V00,T03] ( 10, 5.50) ref -> ecx this class-hnd single-def <Newtonsoft.Json.JsonTextReader>
; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T07] ( 2, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 2, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T02] ( 7, 21.50) int -> edx
-; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> ecx "arr expr"
-; V05 tmp1 [V05,T01] ( 3, 24 ) int -> edi "index expr"
-; V06 cse0 [V06,T05] ( 5, 6 ) int -> ebx hoist multi-def "CSE - moderate"
-; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
-; V08 cse2 [V08,T04] ( 4, 6.50) int -> esi "CSE - moderate"
+; V04 tmp0 [V04,T00] ( 3, 24 ) ref -> edi "arr expr"
+; V05 tmp1 [V05,T01] ( 3, 24 ) int -> eax "index expr"
+; V06 cse0 [V06,T04] ( 5, 7 ) int -> ebx hoist multi-def "CSE - moderate"
+; V07 cse1 [V07,T08] ( 2, 4.50) ref -> [ebp-0x10] spill-single-def hoist "CSE - moderate"
+; V08 cse2 [V08,T05] ( 4, 7 ) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M64114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,89 +25,80 @@ G_M64114_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_M64114_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test dl, dl
je SHORT G_M64114_IG11
xor edx, edx
+ mov gword ptr [ebp+0x08], eax
mov esi, dword ptr [eax+0x04]
test esi, esi
- jle SHORT G_M64114_IG07
- ;; size=13 bbWeight=1 PerfScore 4.75
-G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M64114_IG05
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M64114_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edi, gword ptr [ecx+0x4C]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x10], edi
; GC ptr vars +{V07}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
mov ebx, dword ptr [ecx+0x5C]
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M64114_IG04: ; bbWeight=4, gcVars=00000108 {V00 V07}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- lea edi, [ebx+edx]
- ; gcrRegs -[edi]
- cmp edi, dword ptr [ecx+0x04]
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M64114_IG04: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ lea eax, [ebx+edx]
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M64114_IG10
- movzx ecx, word ptr [ecx+2*edi+0x08]
- ; gcrRegs -[ecx]
- cmp cx, word ptr [eax+2*edx+0x08]
+ movzx eax, word ptr [edi+2*eax+0x08]
+ mov edi, gword ptr [ebp+0x08]
+ cmp ax, word ptr [edi+2*edx+0x08]
jne SHORT G_M64114_IG08
inc edx
cmp esi, edx
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- jg SHORT G_M64114_IG04
- ;; size=30 bbWeight=4 PerfScore 53.00
-G_M64114_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ mov gword ptr [ebp+0x08], edi
+ jg SHORT G_M64114_IG07
+ ;; size=31 bbWeight=4 PerfScore 56.00
+G_M64114_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
; GC ptr vars -{V07}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov ebx, dword ptr [ecx+0x5C]
add ebx, esi
mov dword ptr [ecx+0x5C], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG06: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M64114_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M64114_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V00}
- jmp SHORT G_M64114_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M64114_IG08: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M64114_IG07: ; bbWeight=2, gcVars=00000100 {V07}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V08}
+ mov edi, gword ptr [ebp-0x10]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M64114_IG04
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M64114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars -{V07 V08}
lea eax, [ebx+edx]
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
mov dword ptr [ecx+0x5C], eax
xor eax, eax
- ;; size=11 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M64114_IG09: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M64114_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
@@ -123,6 +114,6 @@ G_M64114_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
int3
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 12, PerfScore 75.88, instruction count 58, allocated bytes for code 144 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 133, prolog size 10, PerfScore 87.62, instruction count 56, allocated bytes for code 133 (MethodHash=1c3a058d) for method Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
; ============================================================
-35 (-7.61%) : 47995.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
@@ -9,9 +9,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 13, 7.48) int -> esi single-def
-; V01 loc0 [V01,T01] ( 34,108.98) int -> edi
-; V02 loc1 [V02,T00] ( 22,207.50) int -> ebx
+; V00 arg0 [V00,T03] ( 13, 7.48) int -> esi single-def
+; V01 loc0 [V01,T01] ( 33,557.98) int -> edi
+; V02 loc1 [V02,T00] ( 20,607.50) int -> ebx
;* V03 loc2 [V03 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc4 [V05 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[ushort]>
@@ -35,8 +35,8 @@
;* V23 tmp1 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp2 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp3 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp4 [V26,T04] ( 8, 4 ) int -> eax "Single return block return value"
-; V27 rat0 [V27,T03] ( 3, 6 ) int -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V26 tmp4 [V26,T02] ( 8,104 ) int -> eax "Single return block return value"
+; V27 rat0 [V27,T04] ( 3, 6 ) int -> ebx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
@@ -53,7 +53,7 @@ G_M50473_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor edi, edi
mov ebx, 0xD1FFAB1E
test esi, 1
- jne G_M50473_IG12
+ jne G_M50473_IG21
mov ebx, esi
neg ebx
mov ecx, ebx
@@ -62,7 +62,7 @@ G_M50473_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sar ebx, 1
and ebx, 7
cmp ebx, 4
- jge G_M50473_IG27
+ jge G_M50473_IG20
;; size=44 bbWeight=1 PerfScore 5.25
G_M50473_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
@@ -72,9 +72,9 @@ G_M50473_IG04: ; bbWeight=0.98, gcrefRegs=00000000 {}, byrefRegs=00000000
cmp word ptr [esi+2*edi], 0
jne SHORT G_M50473_IG07
;; size=7 bbWeight=0.98 PerfScore 3.92
-G_M50473_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG05: ; bbWeight=50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi
- ;; size=2 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=50 PerfScore 12.50
G_M50473_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
vzeroupper
pop ebx
@@ -89,16 +89,18 @@ G_M50473_IG07: ; bbWeight=50, gcVars=00000000 {}, gcrefRegs=00000000 {},
test ebx, ebx
jg SHORT G_M50473_IG04
;; size=6 bbWeight=50 PerfScore 87.50
-G_M50473_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M50473_IG08: ; bbWeight=200, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp edi, 0xD1FFAB1E
- jge G_M50473_IG23
+ jge G_M50473_IG26
+ ;; size=12 bbWeight=200 PerfScore 250.00
+G_M50473_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi
neg ecx
add ecx, 0xD1FFAB1E
cmp ecx, 8
- jge SHORT G_M50473_IG10
- ;; size=27 bbWeight=1 PerfScore 3.25
-G_M50473_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jge SHORT G_M50473_IG11
+ ;; size=15 bbWeight=1 PerfScore 2.00
+G_M50473_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -106,42 +108,35 @@ G_M50473_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=4 PerfScore 14.00
-G_M50473_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M50473_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [esi+2*edi]
test cl, 31
- je SHORT G_M50473_IG14
+ je SHORT G_M50473_IG13
;; size=8 bbWeight=1 PerfScore 1.75
-G_M50473_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M50473_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vpcmpeqw xmm0, xmm0, xmmword ptr [esi+2*edi]
vpmovmskb ecx, xmm0
test ecx, ecx
- je G_M50473_IG28
+ je G_M50473_IG30
xor eax, eax
tzcnt eax, ecx
shr eax, 1
add eax, edi
jmp SHORT G_M50473_IG06
;; size=33 bbWeight=0.50 PerfScore 5.79
-G_M50473_IG12: ; bbWeight=50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- cmp ebx, 4
- jge G_M50473_IG27
- ;; size=9 bbWeight=50 PerfScore 62.50
-G_M50473_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M50473_IG03
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M50473_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, edi
neg ebx
add ebx, 0xD1FFAB1E
and ebx, -16
- jle G_M50473_IG29
- ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M50473_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M50473_IG18
+ ;; size=15 bbWeight=0.50 PerfScore 1.00
+G_M50473_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 16
- jge SHORT G_M50473_IG17
+ jge SHORT G_M50473_IG16
;; size=5 bbWeight=1 PerfScore 1.25
-G_M50473_IG16: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG15: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -149,85 +144,89 @@ G_M50473_IG16: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=16 PerfScore 56.00
-G_M50473_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M50473_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vxorps ymm0, ymm0, ymm0
vpcmpeqw ymm0, ymm0, ymmword ptr [esi+2*edi]
vpmovmskb eax, ymm0
test eax, eax
- jne SHORT G_M50473_IG20
+ jne SHORT G_M50473_IG23
;; size=17 bbWeight=1 PerfScore 7.58
-G_M50473_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
add edi, 16
add ebx, -16
test ebx, ebx
- jle G_M50473_IG29
- ;; size=14 bbWeight=0.50 PerfScore 0.88
-G_M50473_IG19: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M50473_IG15
- ;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M50473_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M50473_IG14
+ ;; size=10 bbWeight=0.50 PerfScore 0.88
+G_M50473_IG18: ; bbWeight=200, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, edi
+ neg ebx
+ add ebx, 0xD1FFAB1E
+ and ebx, -8
+ jg G_M50473_IG31
+ ;; size=19 bbWeight=200 PerfScore 400.00
+G_M50473_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp edi, 0xD1FFAB1E
+ jge SHORT G_M50473_IG26
+ jmp SHORT G_M50473_IG25
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M50473_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp word ptr [esi+2*edi], 0
+ je G_M50473_IG05
+ cmp word ptr [esi+2*edi+0x02], 0
+ je SHORT G_M50473_IG29
+ cmp word ptr [esi+2*edi+0x04], 0
+ je SHORT G_M50473_IG28
+ cmp word ptr [esi+2*edi+0x06], 0
+ je SHORT G_M50473_IG27
+ add edi, 4
+ add ebx, -4
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M50473_IG21: ; bbWeight=50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, 4
+ jge SHORT G_M50473_IG20
+ ;; size=5 bbWeight=50 PerfScore 62.50
+G_M50473_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp G_M50473_IG03
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M50473_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, edi
jmp G_M50473_IG06
;; size=13 bbWeight=0.50 PerfScore 2.38
-G_M50473_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, edi
jmp G_M50473_IG06
;; size=13 bbWeight=0 PerfScore 0.00
-G_M50473_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 0xD1FFAB1E
- jge SHORT G_M50473_IG23
+G_M50473_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, edi
neg ebx
add ebx, 0xD1FFAB1E
- jmp G_M50473_IG12
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M50473_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M50473_IG21
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M50473_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.SpanHelpers:ThrowMustBeNullTerminatedString()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M50473_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG27: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [edi+0x03]
jmp G_M50473_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M50473_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG28: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [edi+0x02]
jmp G_M50473_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M50473_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG29: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [edi+0x01]
jmp G_M50473_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M50473_IG27: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp word ptr [esi+2*edi], 0
- je G_M50473_IG05
- cmp word ptr [esi+2*edi+0x02], 0
- je SHORT G_M50473_IG26
- cmp word ptr [esi+2*edi+0x04], 0
- je SHORT G_M50473_IG25
- cmp word ptr [esi+2*edi+0x06], 0
- je SHORT G_M50473_IG24
- add edi, 4
- add ebx, -4
- jmp G_M50473_IG12
- ;; size=46 bbWeight=0 PerfScore 0.00
-G_M50473_IG28: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50473_IG30: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
add edi, 8
- mov ebx, edi
- neg ebx
...
-12 (-6.45%) : 20820.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
@@ -9,61 +9,61 @@
; 4 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 8, 8 ) ref -> esi class-hnd single-def <System.String>
+; V00 arg0 [V00,T04] ( 8, 8 ) ref -> esi class-hnd single-def <System.String>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 tmp0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp5 [V07,T12] ( 2, 4 ) int -> edx "Inlining Arg"
-; V08 tmp6 [V08,T10] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
+; V07 tmp5 [V07,T13] ( 2, 4 ) int -> edx "Inlining Arg"
+; V08 tmp6 [V08,T11] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V11 tmp9 [V11,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp9 [V11,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp12 [V14,T06] ( 5, 5 ) int -> ecx "Inline stloc first use temp"
+; V14 tmp12 [V14,T08] ( 5, 5 ) int -> ecx "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp17 [V19,T13] ( 2, 4 ) int -> ebx "Inlining Arg"
-; V20 tmp18 [V20,T11] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
+; V19 tmp17 [V19,T14] ( 2, 4 ) int -> ebx "Inlining Arg"
+; V20 tmp18 [V20,T12] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp21 [V23,T09] ( 4, 4 ) int -> eax "Inline return value spill temp"
+; V23 tmp21 [V23,T01] ( 4, 53 ) int -> edx "Inline return value spill temp"
;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp23 [V25,T01] ( 4, 18 ) int -> eax "Inline stloc first use temp"
-; V26 tmp24 [V26,T00] ( 12, 29 ) int -> ecx "Inline stloc first use temp"
-; V27 tmp25 [V27,T14] ( 2, 4 ) int -> ecx "dup spill"
+; V25 tmp23 [V25,T03] ( 4, 18 ) int -> eax "Inline stloc first use temp"
+; V26 tmp24 [V26,T00] ( 12, 78 ) int -> ecx "Inline stloc first use temp"
+; V27 tmp25 [V27,T15] ( 2, 4 ) int -> ecx "dup spill"
;* V28 tmp26 [V28,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V29 tmp27 [V29,T04] ( 3, 5.79) ushort -> edx "Inlining Arg"
+; V29 tmp27 [V29,T06] ( 3, 5.79) ushort -> edx "Inlining Arg"
;* V30 tmp28 [V30,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T05] ( 3, 5.79) ushort -> edi "Inlining Arg"
+; V31 tmp29 [V31,T07] ( 3, 5.79) ushort -> edi "Inlining Arg"
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x4)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V36 tmp34 [V36,T17] ( 2, 2 ) byref -> eax single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T15] ( 3, 3 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
-; V38 tmp36 [V38,T18] ( 2, 2 ) byref -> eax single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V36 tmp34 [V36,T18] ( 2, 2 ) byref -> eax single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T16] ( 3, 3 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
+; V38 tmp36 [V38,T19] ( 2, 2 ) byref -> eax single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V39 tmp37 [V39,T23] ( 2, 2 ) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V44 tmp42 [V44,T19] ( 2, 2 ) byref -> eax single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp43 [V45,T16] ( 3, 3 ) int -> edx "field V13._length (fldOffset=0x4)" P-INDEP
-; V46 tmp44 [V46,T20] ( 2, 2 ) byref -> edi "field V16._reference (fldOffset=0x0)" P-INDEP
+; V44 tmp42 [V44,T20] ( 2, 2 ) byref -> eax single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp43 [V45,T17] ( 3, 3 ) int -> edx "field V13._length (fldOffset=0x4)" P-INDEP
+; V46 tmp44 [V46,T21] ( 2, 2 ) byref -> edi "field V16._reference (fldOffset=0x0)" P-INDEP
; V47 tmp45 [V47,T24] ( 2, 2 ) int -> ebx "field V16._length (fldOffset=0x4)" P-INDEP
-; V48 tmp46 [V48,T21] ( 2, 2 ) byref -> edi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp46 [V48,T22] ( 2, 2 ) byref -> edi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
; V49 tmp47 [V49,T25] ( 2, 2 ) int -> ebx "field V17._length (fldOffset=0x4)" P-INDEP
;* V50 tmp48 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp49 [V51 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
-; V52 tmp50 [V52,T08] ( 4, 4 ) byref -> [ebp-0x10] spill-single-def "field V24._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp51 [V53,T07] ( 5, 5 ) int -> ebx "field V24._length (fldOffset=0x4)" P-INDEP
-; V54 cse0 [V54,T03] ( 3, 6 ) int -> edx "CSE - moderate"
+; V52 tmp50 [V52,T10] ( 4, 4 ) byref -> [ebp-0x10] spill-single-def "field V24._reference (fldOffset=0x0)" P-INDEP
+; V53 tmp51 [V53,T09] ( 5, 5 ) int -> ebx "field V24._length (fldOffset=0x4)" P-INDEP
+; V54 cse0 [V54,T05] ( 3, 6 ) int -> edx "CSE - moderate"
;
; Lcl frame size = 4
@@ -77,76 +77,47 @@ G_M25805_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=9 bbWeight=1 PerfScore 5.50
-G_M25805_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M25805_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M25805_IG15
+ je SHORT G_M25805_IG04
lea eax, bword ptr [esi+0x08]
; byrRegs +[eax]
mov edx, dword ptr [esi+0x04]
test edx, edx
- je G_M25805_IG15
+ je SHORT G_M25805_IG04
xor ecx, ecx
test edx, edx
- jle G_M25805_IG15
- ;; size=32 bbWeight=1 PerfScore 6.50
+ jle SHORT G_M25805_IG04
+ ;; size=20 bbWeight=1 PerfScore 6.50
G_M25805_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
cmp word ptr [eax+2*ecx], 32
- jne SHORT G_M25805_IG14
+ jne SHORT G_M25805_IG12
inc ecx
cmp ecx, edx
jl SHORT G_M25805_IG03
- jmp SHORT G_M25805_IG15
- ;; size=14 bbWeight=1 PerfScore 7.50
-G_M25805_IG04: ; bbWeight=8, gcVars=00000100 {V52}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; byrRegs -[eax] +[edi]
- ; GC ptr vars +{V08 V52}
- cmp ecx, eax
- jle SHORT G_M25805_IG08
- ;; size=4 bbWeight=8 PerfScore 10.00
-G_M25805_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- dec ecx
- cmp ecx, ebx
- jae SHORT G_M25805_IG17
- movzx edx, word ptr [edi+2*ecx]
- cmp edx, 92
- je SHORT G_M25805_IG08
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M25805_IG06: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- cmp edx, 47
- jne SHORT G_M25805_IG04
- jmp SHORT G_M25805_IG08
- ;; size=7 bbWeight=0.89 PerfScore 2.91
-G_M25805_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[edi]
- mov ecx, edx
- mov edi, bword ptr [ebp-0x10]
- ; byrRegs +[edi]
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M25805_IG08: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- cmp ecx, eax
- jle SHORT G_M25805_IG11
- ;; size=4 bbWeight=8 PerfScore 10.00
-G_M25805_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- lea edx, [ecx-0x01]
- cmp edx, ebx
- jae SHORT G_M25805_IG17
- movzx edi, word ptr [edi+2*ecx-0x02]
- ; byrRegs -[edi]
- cmp edi, 92
- je SHORT G_M25805_IG07
- ;; size=17 bbWeight=1 PerfScore 5.00
-G_M25805_IG10: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 47
- je SHORT G_M25805_IG07
- ;; size=5 bbWeight=0.89 PerfScore 1.12
-G_M25805_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V08 V52}
- mov eax, ecx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M25805_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- jl SHORT G_M25805_IG15
- push eax
+ ;; size=12 bbWeight=1 PerfScore 5.50
+G_M25805_IG04: ; bbWeight=50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ ; byrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=50 PerfScore 12.50
+G_M25805_IG05: ; bbWeight=50, epilog, nogc, extend
+ pop ecx
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=6 bbWeight=50 PerfScore 175.00
+G_M25805_IG06: ; bbWeight=50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[esi]
+ mov edx, ecx
+ ;; size=2 bbWeight=50 PerfScore 12.50
+G_M25805_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test edx, edx
+ jl SHORT G_M25805_IG04
+ push edx
mov ecx, esi
; gcrRegs +[ecx]
xor edx, edx
@@ -157,7 +128,7 @@ G_M25805_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx]
;; size=23 bbWeight=1 PerfScore 9.00
-G_M25805_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M25805_IG08: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -165,8 +136,29 @@ G_M25805_IG13: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=6 bbWeight=1 PerfScore 3.50
-G_M25805_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M25805_IG09: ; bbWeight=8, gcVars=00000400 {V52}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
+ ; byrRegs +[edi]
+ ; GC ptr vars +{V52}
+ cmp ecx, eax
+ jle SHORT G_M25805_IG14
+ ;; size=4 bbWeight=8 PerfScore 10.00
+G_M25805_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ dec ecx
+ cmp ecx, ebx
+ jae SHORT G_M25805_IG17
+ movzx edx, word ptr [edi+2*ecx]
+ cmp edx, 92
+ je SHORT G_M25805_IG14
+ ;; size=14 bbWeight=1 PerfScore 4.75
+G_M25805_IG11: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ cmp edx, 47
+ jne SHORT G_M25805_IG09
+ jmp SHORT G_M25805_IG14
+ ;; size=7 bbWeight=0.89 PerfScore 2.91
+G_M25805_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[edi]
+ ; GC ptr vars -{V52}
lea edi, bword ptr [esi+0x08]
; byrRegs +[edi]
mov ebx, dword ptr [esi+0x04]
@@ -179,31 +171,41 @@ G_M25805_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}
; gcr arg pop 1
mov ecx, ebx
cmp ecx, eax
- jg SHORT G_M25805_IG04
- mov eax, -1
- jmp SHORT G_M25805_IG12
+ jg SHORT G_M25805_IG09
+ mov edx, -1
+ jmp SHORT G_M25805_IG07
;; size=30 bbWeight=1 PerfScore 12.25
-G_M25805_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
+G_M25805_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[edi]
- ; GC ptr vars -{V52}
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
...
+20 (+12.42%) : 3398.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4.99) int -> eax single-def
-; V01 arg1 [V01,T03] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) int -> eax single-def
+; V01 arg1 [V01,T04] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 tmp0 [V03,T08] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
-; V04 tmp1 [V04,T09] ( 4, 3 ) int -> ebx "Inline return value spill temp"
-; V05 tmp2 [V05,T07] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
-; V06 tmp3 [V06,T01] ( 3, 6.65) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
-; V08 tmp5 [V08,T02] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
-; V09 tmp6 [V09,T04] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
-; V10 tmp7 [V10,T05] ( 5, 5.29) int -> esi "Inline stloc first use temp"
+; V03 tmp0 [V03,T09] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
+; V04 tmp1 [V04,T00] ( 4,102.99) int -> registers "Inline return value spill temp"
+; V05 tmp2 [V05,T08] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T02] ( 3, 6.65) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T07] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
+; V10 tmp7 [V10,T06] ( 5, 5.29) int -> esi "Inline stloc first use temp"
; V11 tmp8 [V11,T11] ( 2, 2.65) int -> ebx "Inline stloc first use temp"
; V12 tmp9 [V12,T10] ( 3, 2.98) int -> ebx "Inline stloc first use temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -56,7 +56,7 @@ G_M20817_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000
shr ebx, cl
xor ecx, ecx
;; size=36 bbWeight=1 PerfScore 13.50
-G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M20817_IG03: ; bbWeight=1.32, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x10], ebx
lea edx, [ebx+0x01]
@@ -68,47 +68,30 @@ G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=0000
mov ebx, dword ptr [edx+0x04]
and esi, -2
cmp ebx, edi
- jne SHORT G_M20817_IG08
+ jne SHORT G_M20817_IG06
;; size=24 bbWeight=1.32 PerfScore 10.58
G_M20817_IG04: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
mov ebx, eax
xor ebx, dword ptr [edx+0x08]
cmp ebx, 1
- ja SHORT G_M20817_IG08
+ ja SHORT G_M20817_IG06
;; size=10 bbWeight=0.99 PerfScore 4.46
-G_M20817_IG05: ; bbWeight=0.99, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
+G_M20817_IG05: ; bbWeight=0.99, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
; GC ptr vars -{V05}
cmp esi, dword ptr [edx]
- jne SHORT G_M20817_IG10
- ;; size=4 bbWeight=0.99 PerfScore 3.97
-G_M20817_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx]
- cmp ebx, 1
- je SHORT G_M20817_IG11
- test ebx, ebx
- je SHORT G_M20817_IG13
- mov ecx, eax
+ jne SHORT G_M20817_IG09
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- ; GC ptr vars -{V01}
- call <unknown method>
- ; gcrRegs -[edx] +[eax]
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M20817_IG07: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M20817_IG08: ; bbWeight=0.33, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars +{V01 V03 V05 V07}
+ ; byrRegs -[edx]
+ jmp SHORT G_M20817_IG08
+ ;; size=9 bbWeight=0.99 PerfScore 6.94
+G_M20817_IG06: ; bbWeight=0.33, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars +{V05 V08}
test esi, esi
- je SHORT G_M20817_IG10
+ je SHORT G_M20817_IG09
;; size=4 bbWeight=0.33 PerfScore 0.41
-G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20817_IG07: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ecx
mov ebx, ecx
add ebx, dword ptr [ebp-0x10]
@@ -117,18 +100,52 @@ G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
jl SHORT G_M20817_IG03
- ;; size=17 bbWeight=1.32 PerfScore 10.26
-G_M20817_IG10: ; bbWeight=0.01, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x14], edx
+ jmp SHORT G_M20817_IG09
+ ;; size=25 bbWeight=1.32 PerfScore 15.56
+G_M20817_IG08: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
- ; GC ptr vars -{V03 V05 V07}
- mov ebx, 2
- jmp SHORT G_M20817_IG06
- ;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M20817_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V01 V05 V08}
+ mov gword ptr [ebp-0x14], edx
+ ; GC ptr vars +{V01}
+ mov edx, ebx
+ ; gcrRegs -[edx]
+ jmp SHORT G_M20817_IG10
+ ;; size=7 bbWeight=0.99 PerfScore 3.22
+G_M20817_IG09: ; bbWeight=100, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, 2
+ ;; size=5 bbWeight=100 PerfScore 25.00
+G_M20817_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, 1
+ je SHORT G_M20817_IG12
+ test edx, edx
+ je SHORT G_M20817_IG14
+ mov ecx, eax
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
+ call <unknown method>
+ ; gcrRegs -[edx] +[eax]
+ ;; size=19 bbWeight=1 PerfScore 4.75
+G_M20817_IG11: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M20817_IG12: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V01 V04}
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov eax, edx
; gcrRegs +[eax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M20817_IG13: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -136,13 +153,13 @@ G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0 PerfScore 0.00
-G_M20817_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01}
+G_M20817_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V01 V04}
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M20817_IG15: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -151,6 +168,6 @@ G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 11, PerfScore 56.21, instruction count 72, allocated bytes for code 161 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 181, prolog size 11, PerfScore 92.69, instruction count 80, allocated bytes for code 181 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
; ============================================================
+20 (+12.42%) : 30207.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4.99) int -> eax single-def
-; V01 arg1 [V01,T03] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) int -> eax single-def
+; V01 arg1 [V01,T04] ( 5, 4 ) ref -> [ebp-0x14] class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 tmp0 [V03,T08] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
-; V04 tmp1 [V04,T09] ( 4, 3 ) int -> ebx "Inline return value spill temp"
-; V05 tmp2 [V05,T07] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
-; V06 tmp3 [V06,T01] ( 3, 6.65) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
-; V08 tmp5 [V08,T02] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
-; V09 tmp6 [V09,T04] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
-; V10 tmp7 [V10,T05] ( 5, 5.29) int -> esi "Inline stloc first use temp"
+; V03 tmp0 [V03,T09] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <int[]>
+; V04 tmp1 [V04,T00] ( 4,102.99) int -> registers "Inline return value spill temp"
+; V05 tmp2 [V05,T08] ( 4, 4.65) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T02] ( 3, 6.65) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T07] ( 4, 4.97) int -> [ebp-0x10] "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 5, 6.30) int -> ecx "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 5, 5.95) byref -> edx "Inline stloc first use temp"
+; V10 tmp7 [V10,T06] ( 5, 5.29) int -> esi "Inline stloc first use temp"
; V11 tmp8 [V11,T11] ( 2, 2.65) int -> ebx "Inline stloc first use temp"
; V12 tmp9 [V12,T10] ( 3, 2.98) int -> ebx "Inline stloc first use temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -56,7 +56,7 @@ G_M20817_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000
shr ebx, cl
xor ecx, ecx
;; size=36 bbWeight=1 PerfScore 13.50
-G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M20817_IG03: ; bbWeight=1.32, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x10], ebx
lea edx, [ebx+0x01]
@@ -68,47 +68,30 @@ G_M20817_IG03: ; bbWeight=1.32, gcVars=00000088 {V01 V05}, gcrefRegs=0000
mov ebx, dword ptr [edx+0x04]
and esi, -2
cmp ebx, edi
- jne SHORT G_M20817_IG08
+ jne SHORT G_M20817_IG06
;; size=24 bbWeight=1.32 PerfScore 10.58
G_M20817_IG04: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
mov ebx, eax
xor ebx, dword ptr [edx+0x08]
cmp ebx, 1
- ja SHORT G_M20817_IG08
+ ja SHORT G_M20817_IG06
;; size=10 bbWeight=0.99 PerfScore 4.46
-G_M20817_IG05: ; bbWeight=0.99, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
+G_M20817_IG05: ; bbWeight=0.99, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, gcvars, byref, isz
; GC ptr vars -{V05}
cmp esi, dword ptr [edx]
- jne SHORT G_M20817_IG10
- ;; size=4 bbWeight=0.99 PerfScore 3.97
-G_M20817_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx]
- cmp ebx, 1
- je SHORT G_M20817_IG11
- test ebx, ebx
- je SHORT G_M20817_IG13
- mov ecx, eax
+ jne SHORT G_M20817_IG09
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- ; GC ptr vars -{V01}
- call <unknown method>
- ; gcrRegs -[edx] +[eax]
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M20817_IG07: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M20817_IG08: ; bbWeight=0.33, gcVars=00000088 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars +{V01 V03 V05 V07}
+ ; byrRegs -[edx]
+ jmp SHORT G_M20817_IG08
+ ;; size=9 bbWeight=0.99 PerfScore 6.94
+G_M20817_IG06: ; bbWeight=0.33, gcVars=00000110 {V01 V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars +{V05 V08}
test esi, esi
- je SHORT G_M20817_IG10
+ je SHORT G_M20817_IG09
;; size=4 bbWeight=0.33 PerfScore 0.41
-G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20817_IG07: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ecx
mov ebx, ecx
add ebx, dword ptr [ebp-0x10]
@@ -117,18 +100,52 @@ G_M20817_IG09: ; bbWeight=1.32, gcrefRegs=00000000 {}, byrefRegs=00000000
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
jl SHORT G_M20817_IG03
- ;; size=17 bbWeight=1.32 PerfScore 10.26
-G_M20817_IG10: ; bbWeight=0.01, gcVars=00000008 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x14], edx
+ jmp SHORT G_M20817_IG09
+ ;; size=25 bbWeight=1.32 PerfScore 15.56
+G_M20817_IG08: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
- ; GC ptr vars -{V03 V05 V07}
- mov ebx, 2
- jmp SHORT G_M20817_IG06
- ;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M20817_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V01 V05 V08}
+ mov gword ptr [ebp-0x14], edx
+ ; GC ptr vars +{V01}
+ mov edx, ebx
+ ; gcrRegs -[edx]
+ jmp SHORT G_M20817_IG10
+ ;; size=7 bbWeight=0.99 PerfScore 3.22
+G_M20817_IG09: ; bbWeight=100, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, 2
+ ;; size=5 bbWeight=100 PerfScore 25.00
+G_M20817_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp edx, 1
+ je SHORT G_M20817_IG12
+ test edx, edx
+ je SHORT G_M20817_IG14
+ mov ecx, eax
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
+ call <unknown method>
+ ; gcrRegs -[edx] +[eax]
+ ;; size=19 bbWeight=1 PerfScore 4.75
+G_M20817_IG11: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M20817_IG12: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V01 V04}
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
+ mov eax, edx
; gcrRegs +[eax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M20817_IG13: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -136,13 +153,13 @@ G_M20817_IG12: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0 PerfScore 0.00
-G_M20817_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01}
+G_M20817_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars -{V01 V04}
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M20817_IG15: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -151,6 +168,6 @@ G_M20817_IG14: ; bbWeight=0, epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 11, PerfScore 56.21, instruction count 72, allocated bytes for code 161 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 181, prolog size 11, PerfScore 92.69, instruction count 80, allocated bytes for code 181 (MethodHash=5919aeae) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
; ============================================================
+42 (+17.87%) : 7786.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 8, 9 ) ref -> esi class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T03] ( 8, 9.50) ref -> [ebp-0x14] class-hnd single-def <System.Type[]>
;* V01 loc0 [V01,T08] ( 0, 0 ) ubyte -> zero-ref
; V02 loc1 [V02,T07] ( 3, 1.50) ref -> eax class-hnd <System.Type>
; V03 loc2 [V03,T02] ( 5, 16.50) int -> ebx
@@ -22,9 +22,11 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V13 cse0 [V13,T00] ( 6, 20 ) int -> [ebp-0x10] spill-single-def "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 8 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V14 cse1 [V14,T04] ( 7, 9.50) int -> edi "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x1C]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,22 +34,25 @@ G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp edi, 17
- jg G_M39211_IG14
- ;; size=15 bbWeight=1 PerfScore 4.25
+ jg G_M39211_IG20
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M39211_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
test edi, edi
- jle SHORT G_M39211_IG06
+ jle SHORT G_M39211_IG07
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
@@ -55,35 +60,49 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [eax]
mov dword ptr [ebp-0x10], edx
cmp edx, 0xD1FFAB1E
- jne SHORT G_M39211_IG07
- ;; size=20 bbWeight=4 PerfScore 29.00
-G_M39211_IG05: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M39211_IG08
+ ;; size=23 bbWeight=4 PerfScore 33.00
+G_M39211_IG05: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, eax
; gcrRegs +[ecx]
call <unknown method>
; gcrRegs -[eax ecx]
cmp eax, 16
- je G_M39211_IG14
- jmp SHORT G_M39211_IG08
- ;; size=18 bbWeight=2 PerfScore 9.00
-G_M39211_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je SHORT G_M39211_IG06
+ jmp SHORT G_M39211_IG09
+ ;; size=14 bbWeight=2 PerfScore 9.00
+G_M39211_IG06: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V04}
- mov edi, dword ptr [ebp-0x14]
- jmp SHORT G_M39211_IG12
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp G_M39211_IG20
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M39211_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M39211_IG16
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M39211_IG07: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
+G_M39211_IG08: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi] +[eax]
; GC ptr vars +{V01 V04}
mov ecx, eax
; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x1C], ecx
mov edx, dword ptr [ebp-0x10]
- mov edi, dword ptr [edx+0x38]
- call [edi+0x0C]<unknown method>
+ mov ecx, dword ptr [edx+0x38]
+ ; gcrRegs -[ecx]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov esi, dword ptr [ebp-0x20]
+ call [esi+0x0C]<unknown method>
; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M39211_IG14
- ;; size=15 bbWeight=2 PerfScore 15.00
-G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M39211_IG13
+ ;; size=27 bbWeight=2 PerfScore 23.00
+G_M39211_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
@@ -91,22 +110,40 @@ G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [edx+0x14]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG12
mov eax, dword ptr [ebp-0x10]
cmp eax, 0xD1FFAB1E
- jne SHORT G_M39211_IG10
+ jne SHORT G_M39211_IG14
;; size=26 bbWeight=4 PerfScore 42.00
-G_M39211_IG09: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG10: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
; GC ptr vars -{V01 V04}
call <unknown method>
; gcrRegs -[ecx]
cmp eax, 15
- je SHORT G_M39211_IG14
- jmp SHORT G_M39211_IG11
+ je SHORT G_M39211_IG11
+ jmp SHORT G_M39211_IG15
;; size=15 bbWeight=1.98 PerfScore 10.39
-G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M39211_IG11: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M39211_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M39211_IG14: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
; GC ptr vars +{V01 V04}
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
@@ -115,20 +152,24 @@ G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {e
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG19
;; size=13 bbWeight=2 PerfScore 14.50
-G_M39211_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M39211_IG13
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jg SHORT G_M39211_IG18
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M39211_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [edi-0x01]
cmp ecx, edi
- jae SHORT G_M39211_IG18
+ jae SHORT G_M39211_IG24
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
cmp gword ptr [esi+4*edi+0x04], 0xD1FFAB1E
- jne SHORT G_M39211_IG16
+ jne SHORT G_M39211_IG22
+ ;; size=20 bbWeight=1 PerfScore 6.75
+G_M39211_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
@@ -138,19 +179,28 @@ G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M39211_IG17
- ;; size=40 bbWeight=0.50 PerfScore 7.25
-G_M39211_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M39211_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.38
+G_M39211_IG18: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V00 V03}
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
jmp G_M39211_IG04
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M39211_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M39211_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M39211_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V03}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M39211_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -158,14 +208,14 @@ G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
...
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, 12 ) 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=4, 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=4 PerfScore 8.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, 12 ) 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=4, 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=4 PerfScore 8.00
+G_M38308_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
...
-27 (-10.42%) : 171754.dasm - System.Buffers.Text.Tests.Base64TestHelper:InitializeBytes(System.Span`1[ubyte],int) (FullOpts)
@@ -8,37 +8,37 @@
; 2 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T14] ( 2, 5.00) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 arg1 [V01,T12] ( 3, 3 ) int -> esi single-def
-; V02 loc0 [V02,T13] ( 2, 5.00) ref -> [ebp-0x2C] class-hnd exact spill-single-def <System.Random>
-; V03 loc1 [V03,T02] ( 5, 17.00) int -> esi
+; V00 arg0 [V00,T15] ( 2, 5.00) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V01 arg1 [V01,T13] ( 3, 3 ) int -> esi single-def
+; V02 loc0 [V02,T14] ( 2, 5.00) ref -> [ebp-0x24] class-hnd exact spill-single-def <System.Random>
+; V03 loc1 [V03,T02] ( 5, 17.00) int -> [ebp-0x10]
; V04 tmp0 [V04,T09] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Random>
-; V05 tmp1 [V05,T03] ( 2, 16.00) byref -> [ebp-0x30] spill-single-def "impAppendStmt"
+; V05 tmp1 [V05,T03] ( 2, 16.00) byref -> [ebp-0x28] spill-single-def "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V07 tmp3 [V07,T04] ( 4, 10.00) int -> registers "guarded devirt return temp"
-; V08 tmp4 [V08,T01] ( 5, 21.96) ref -> eax "guarded devirt arg temp"
-; V09 tmp5 [V09,T05] ( 9, 9.18) ref -> eax class-hnd exact "guarded devirt this exact temp" <System.Random+XoshiroImpl>
-; V10 tmp6 [V10 ] ( 1, 1.02) long -> [ebp-0x14] multireg-ret must-init "Inline stloc first use temp"
-;* V11 tmp7 [V11,T15] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V07 tmp3 [V07,T04] ( 4, 12.98) int -> registers "guarded devirt return temp"
+; V08 tmp4 [V08,T01] ( 5, 27.92) ref -> eax "guarded devirt arg temp"
+; V09 tmp5 [V09,T05] ( 9, 36 ) ref -> eax class-hnd exact "guarded devirt this exact temp" <System.Random+XoshiroImpl>
+; V10 tmp6 [V10 ] ( 1, 4 ) long -> [ebp-0x18] multireg-ret must-init "Inline stloc first use temp"
+;* V11 tmp7 [V11,T16] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12,T20] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp9 [V13,T11] ( 5, 5.10) int -> [ebp-0x18] "Inline stloc first use temp"
-; V14 tmp10 [V14,T06] ( 7, 7.14) int -> ebx "Inline stloc first use temp"
-; V15 tmp11 [V15,T07] ( 7, 7.14) int -> edx "Inline stloc first use temp"
-; V16 tmp12 [V16,T08] ( 7, 7.14) int -> [ebp-0x1C] "Inline stloc first use temp"
-; V17 tmp13 [V17,T16] ( 2, 2.04) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp"
-; V18 tmp14 [V18,T17] ( 2, 2.04) int -> [ebp-0x24] spill-single-def "Inline stloc first use temp"
+; V13 tmp9 [V13,T11] ( 5, 20 ) int -> edx "Inline stloc first use temp"
+; V14 tmp10 [V14,T06] ( 7, 28 ) int -> ebx "Inline stloc first use temp"
+; V15 tmp11 [V15,T07] ( 7, 28 ) int -> edi "Inline stloc first use temp"
+; V16 tmp12 [V16,T08] ( 7, 28 ) int -> ecx "Inline stloc first use temp"
+; V17 tmp13 [V17,T17] ( 2, 8 ) int -> [ebp-0x1C] spill-single-def "Inline stloc first use temp"
+; V18 tmp14 [V18,T18] ( 2, 8 ) int -> esi "Inline stloc first use temp"
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V25 tmp21 [V25,T10] ( 3, 6.00) int -> [ebp-0x28] spill-single-def "V00.[004..008)"
-; V26 rat0 [V26,T18] ( 1, 1.02) int -> eax "field V10.lo (fldOffset=0x0)" P-INDEP
-; V27 rat1 [V27,T19] ( 2, 2.04) int -> ebx "field V10.hi (fldOffset=0x4)" P-INDEP
+; V25 tmp21 [V25,T10] ( 3, 6.00) int -> [ebp-0x20] spill-single-def "V00.[004..008)"
+; V26 rat0 [V26,T19] ( 1, 4 ) int -> eax "field V10.lo (fldOffset=0x0)" P-INDEP
+; V27 rat1 [V27,T12] ( 2, 8 ) int -> ebx "field V10.hi (fldOffset=0x4)" P-INDEP
; V28 rat2 [V28,T00] ( 3, 24.00) int -> eax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 36
+; Lcl frame size = 28
G_M3593_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -46,15 +46,15 @@ G_M3593_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 36
+ sub esp, 28
xor eax, eax
+ mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x10], eax
mov esi, ecx
;; size=19 bbWeight=1 PerfScore 7.00
G_M3593_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x28], edi
+ mov dword ptr [ebp-0x20], edi
mov ecx, 0xD1FFAB1E ; System.Random
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -65,62 +65,53 @@ G_M3593_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov edx, esi
call [System.Random:.ctor(int):this]
; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V02}
xor esi, esi
test edi, edi
jle G_M3593_IG06
;; size=41 bbWeight=1 PerfScore 9.50
-G_M3593_IG03: ; bbWeight=4.00, gcVars=00002000 {V02}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3593_IG03: ; bbWeight=4.00, gcVars=00004000 {V02}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+ mov dword ptr [ebp-0x10], esi
mov ecx, esi
add ecx, bword ptr [ebp+0x08]
; byrRegs +[ecx]
- mov bword ptr [ebp-0x30], ecx
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V05}
mov eax, gword ptr [ebx+0x04]
; gcrRegs +[eax]
cmp dword ptr [eax], 0xD1FFAB1E
jne G_M3593_IG07
- ;; size=23 bbWeight=4.00 PerfScore 37.00
-G_M3593_IG04: ; bbWeight=1.02, gcVars=00002008 {V02 V05}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=26 bbWeight=4.00 PerfScore 41.00
+G_M3593_IG04: ; bbWeight=4, gcVars=00004008 {V02 V05}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx]
; byrRegs -[ecx]
mov edx, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x18], edx
mov ebx, dword ptr [eax+0x08]
- mov edx, dword ptr [eax+0x0C]
- mov edi, dword ptr [eax+0x10]
- mov dword ptr [ebp-0x1C], edi
- lea edi, [ebx+4*ebx]
- rol edi, 7
- lea edi, [edi+8*edi]
- mov dword ptr [ebp-0x20], edi
- mov edi, ebx
- shl edi, 9
- mov dword ptr [ebp-0x24], edi
- xor edx, dword ptr [ebp-0x18]
- mov edi, dword ptr [ebp-0x1C]
- xor edi, ebx
- xor ebx, edx
- mov dword ptr [ebp-0x1C], edi
- xor edi, dword ptr [ebp-0x18]
- mov dword ptr [ebp-0x18], edi
- xor edx, dword ptr [ebp-0x24]
- mov edi, dword ptr [ebp-0x1C]
- rol edi, 11
- mov dword ptr [ebp-0x1C], edi
- mov edi, dword ptr [ebp-0x18]
- mov dword ptr [eax+0x04], edi
+ mov edi, dword ptr [eax+0x0C]
+ mov ecx, dword ptr [eax+0x10]
+ lea esi, [ebx+4*ebx]
+ rol esi, 7
+ lea esi, [esi+8*esi]
+ mov dword ptr [ebp-0x1C], esi
+ mov esi, ebx
+ shl esi, 9
+ xor edi, edx
+ xor ecx, ebx
+ xor ebx, edi
+ xor edx, ecx
+ xor edi, esi
+ rol ecx, 11
+ mov dword ptr [eax+0x04], edx
mov dword ptr [eax+0x08], ebx
- mov dword ptr [eax+0x0C], edx
- mov edi, dword ptr [ebp-0x1C]
- mov dword ptr [eax+0x10], edi
+ mov dword ptr [eax+0x0C], edi
+ mov dword ptr [eax+0x10], ecx
mov eax, 256
; gcrRegs -[eax]
- mov edi, dword ptr [ebp-0x20]
- mul edx:eax, edi
+ mov esi, dword ptr [ebp-0x1C]
+ mul edx:eax, esi
mov ebx, edx
- ;; size=99 bbWeight=1.02 PerfScore 37.49
+ ;; size=66 bbWeight=4 PerfScore 86.00
G_M3593_IG05: ; bbWeight=4.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, ebx
mov edx, eax
@@ -132,16 +123,17 @@ G_M3593_IG05: ; bbWeight=4.00, gcrefRegs=00000000 {}, byrefRegs=00000000
push 0
push 256
call [<unknown method>]
- mov ecx, bword ptr [ebp-0x30]
+ mov ecx, bword ptr [ebp-0x28]
; byrRegs +[ecx]
mov byte ptr [ecx], bl
+ mov esi, dword ptr [ebp-0x10]
inc esi
- mov edi, dword ptr [ebp-0x28]
+ mov edi, dword ptr [ebp-0x20]
cmp esi, edi
- mov ebx, gword ptr [ebp-0x2C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
jl G_M3593_IG03
- ;; size=46 bbWeight=4.00 PerfScore 62.00
+ ;; size=49 bbWeight=4.00 PerfScore 66.00
G_M3593_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[ebx]
; byrRegs -[ecx]
@@ -153,9 +145,9 @@ G_M3593_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M3593_IG07: ; bbWeight=0.98, gcVars=00002008 {V02 V05}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3593_IG07: ; bbWeight=0.98, gcVars=00004008 {V02 V05}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax]
- ; GC ptr vars +{V02 V03 V05 V13}
+ ; GC ptr vars +{V02 V03 V05 V14}
push 256
mov ecx, eax
; gcrRegs +[ecx]
@@ -169,6 +161,6 @@ G_M3593_IG07: ; bbWeight=0.98, gcVars=00002008 {V02 V05}, gcrefRegs=00000
jmp SHORT G_M3593_IG05
;; size=21 bbWeight=0.98 PerfScore 10.54
-; Total bytes of code 259, prolog size 19, PerfScore 168.02, instruction count 93, allocated bytes for code 259 (MethodHash=72abf1f6) for method System.Buffers.Text.Tests.Base64TestHelper:InitializeBytes(System.Span`1[ubyte],int) (FullOpts)
+; Total bytes of code 232, prolog size 19, PerfScore 224.54, instruction count 85, allocated bytes for code 232 (MethodHash=72abf1f6) for method System.Buffers.Text.Tests.Base64TestHelper:InitializeBytes(System.Span`1[ubyte],int) (FullOpts)
; ============================================================
+18 (+17.14%) : 198836.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T05] ( 3, 4 ) ref -> edi class-hnd single-def <System.Xml.XmlAttribute>
; V01 arg1 [V01,T02] ( 5, 9 ) ref -> esi class-hnd single-def <System.Xml.XmlAttributeCollection>
-; V02 arg2 [V02,T07] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T01] ( 6, 11 ) int -> ebx
-; V04 tmp0 [V04,T03] ( 4, 10 ) int -> eax "Inline return value spill temp"
+; V02 arg2 [V02,T07] ( 2, 1.50) byref -> ebx single-def
+; V03 loc0 [V03,T01] ( 6, 11 ) int -> [ebp-0x10]
+; V04 tmp0 [V04,T03] ( 4, 10 ) int -> ecx "Inline return value spill temp"
; V05 tmp1 [V05,T00] ( 2, 16 ) byref -> edx "Inlining Arg"
; V06 tmp2 [V06,T06] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>>
; V07 cse0 [V07,T04] ( 3, 10 ) ref -> edx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -25,31 +25,38 @@ G_M25105_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
- ;; size=10 bbWeight=1 PerfScore 4.75
-G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, bword ptr [ebp+0x08]
+ ; byrRegs +[ebx]
+ ;; size=14 bbWeight=1 PerfScore 6.75
+G_M25105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
test esi, esi
je SHORT G_M25105_IG10
;; size=4 bbWeight=1 PerfScore 1.25
-G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- xor ebx, ebx
+G_M25105_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
jmp SHORT G_M25105_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M25105_IG04: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
cmp eax, edi
je SHORT G_M25105_IG12
- inc ebx
- ;; size=15 bbWeight=2 PerfScore 10.00
-G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
; gcrRegs -[eax]
+ inc eax
+ mov dword ptr [ebp-0x10], eax
+ ;; size=24 bbWeight=2 PerfScore 16.00
+G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
lea edx, bword ptr [esi+0x08]
; byrRegs +[edx]
mov edx, gword ptr [edx]
@@ -58,58 +65,59 @@ G_M25105_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
test edx, edx
jne SHORT G_M25105_IG07
;; size=9 bbWeight=4 PerfScore 15.00
-G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs -[edx]
- xor eax, eax
+ xor ecx, ecx
jmp SHORT G_M25105_IG09
;; size=4 bbWeight=2 PerfScore 4.50
-G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M25105_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax
je SHORT G_M25105_IG08
- mov eax, dword ptr [eax+0x08]
- ; gcrRegs -[eax]
+ mov ecx, dword ptr [eax+0x08]
jmp SHORT G_M25105_IG09
;; size=19 bbWeight=2 PerfScore 13.00
-G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov eax, 1
+G_M25105_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs -[eax]
+ mov ecx, 1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, eax
+G_M25105_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ cmp eax, ecx
jl SHORT G_M25105_IG04
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25105_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 9.00
+G_M25105_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
; gcrRegs -[esi edi]
xor eax, eax
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], eax
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M25105_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; byrRegs -[esi]
+ mov dword ptr [ebx], eax
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M25105_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; byrRegs -[ebx]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov dword ptr [esi], ebx
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M25105_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
+ ; byrRegs +[ebx]
+ mov esi, dword ptr [ebp-0x10]
+ mov dword ptr [ebx], esi
mov eax, 1
;; size=10 bbWeight=0.50 PerfScore 1.12
G_M25105_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 105, prolog size 6, PerfScore 61.38, instruction count 48, allocated bytes for code 105 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
+; Total bytes of code 123, prolog size 7, PerfScore 76.75, instruction count 56, allocated bytes for code 123 (MethodHash=8a1b9dee) for method System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
; ============================================================
+42 (+17.87%) : 40694.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
@@ -8,7 +8,7 @@
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 8, 9 ) ref -> esi class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T03] ( 8, 9.50) ref -> [ebp-0x14] class-hnd single-def <System.Type[]>
;* V01 loc0 [V01,T08] ( 0, 0 ) ubyte -> zero-ref
; V02 loc1 [V02,T07] ( 3, 1.50) ref -> eax class-hnd <System.Type>
; V03 loc2 [V03,T02] ( 5, 16.50) int -> ebx
@@ -22,9 +22,11 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V13 cse0 [V13,T00] ( 6, 20 ) int -> [ebp-0x10] spill-single-def "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 8 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V14 cse1 [V14,T04] ( 7, 9.50) int -> edi "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x1C]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,22 +34,25 @@ G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp edi, 17
- jg G_M39211_IG14
- ;; size=15 bbWeight=1 PerfScore 4.25
+ jg G_M39211_IG20
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M39211_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
test edi, edi
- jle SHORT G_M39211_IG06
+ jle SHORT G_M39211_IG07
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
@@ -55,35 +60,49 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [eax]
mov dword ptr [ebp-0x10], edx
cmp edx, 0xD1FFAB1E
- jne SHORT G_M39211_IG07
- ;; size=20 bbWeight=4 PerfScore 29.00
-G_M39211_IG05: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M39211_IG08
+ ;; size=23 bbWeight=4 PerfScore 33.00
+G_M39211_IG05: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, eax
; gcrRegs +[ecx]
call <unknown method>
; gcrRegs -[eax ecx]
cmp eax, 16
- je G_M39211_IG14
- jmp SHORT G_M39211_IG08
- ;; size=18 bbWeight=2 PerfScore 9.00
-G_M39211_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je SHORT G_M39211_IG06
+ jmp SHORT G_M39211_IG09
+ ;; size=14 bbWeight=2 PerfScore 9.00
+G_M39211_IG06: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V04}
- mov edi, dword ptr [ebp-0x14]
- jmp SHORT G_M39211_IG12
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp G_M39211_IG20
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M39211_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M39211_IG16
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M39211_IG07: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
+G_M39211_IG08: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi] +[eax]
; GC ptr vars +{V01 V04}
mov ecx, eax
; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x1C], ecx
mov edx, dword ptr [ebp-0x10]
- mov edi, dword ptr [edx+0x38]
- call [edi+0x0C]<unknown method>
+ mov ecx, dword ptr [edx+0x38]
+ ; gcrRegs -[ecx]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov esi, dword ptr [ebp-0x20]
+ call [esi+0x0C]<unknown method>
; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M39211_IG14
- ;; size=15 bbWeight=2 PerfScore 15.00
-G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M39211_IG13
+ ;; size=27 bbWeight=2 PerfScore 23.00
+G_M39211_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
@@ -91,22 +110,40 @@ G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [edx+0x14]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG12
mov eax, dword ptr [ebp-0x10]
cmp eax, 0xD1FFAB1E
- jne SHORT G_M39211_IG10
+ jne SHORT G_M39211_IG14
;; size=26 bbWeight=4 PerfScore 42.00
-G_M39211_IG09: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG10: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
; GC ptr vars -{V01 V04}
call <unknown method>
; gcrRegs -[ecx]
cmp eax, 15
- je SHORT G_M39211_IG14
- jmp SHORT G_M39211_IG11
+ je SHORT G_M39211_IG11
+ jmp SHORT G_M39211_IG15
;; size=15 bbWeight=1.98 PerfScore 10.39
-G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M39211_IG11: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M39211_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M39211_IG14: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
; GC ptr vars +{V01 V04}
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
@@ -115,20 +152,24 @@ G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {e
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG19
;; size=13 bbWeight=2 PerfScore 14.50
-G_M39211_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M39211_IG13
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jg SHORT G_M39211_IG18
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M39211_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [edi-0x01]
cmp ecx, edi
- jae SHORT G_M39211_IG18
+ jae SHORT G_M39211_IG24
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
cmp gword ptr [esi+4*edi+0x04], 0xD1FFAB1E
- jne SHORT G_M39211_IG16
+ jne SHORT G_M39211_IG22
+ ;; size=20 bbWeight=1 PerfScore 6.75
+G_M39211_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
@@ -138,19 +179,28 @@ G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M39211_IG17
- ;; size=40 bbWeight=0.50 PerfScore 7.25
-G_M39211_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M39211_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.38
+G_M39211_IG18: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V00 V03}
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
jmp G_M39211_IG04
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M39211_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M39211_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M39211_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V03}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M39211_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -158,14 +208,14 @@ G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
...
+42 (+17.87%) : 49111.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
@@ -8,7 +8,7 @@
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 8, 9 ) ref -> esi class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T03] ( 8, 9.50) ref -> [ebp-0x14] class-hnd single-def <System.Type[]>
;* V01 loc0 [V01,T08] ( 0, 0 ) ubyte -> zero-ref
; V02 loc1 [V02,T07] ( 3, 1.50) ref -> eax class-hnd <System.Type>
; V03 loc2 [V03,T02] ( 5, 16.50) int -> ebx
@@ -22,9 +22,11 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V13 cse0 [V13,T00] ( 6, 20 ) int -> [ebp-0x10] spill-single-def "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 8 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V14 cse1 [V14,T04] ( 7, 9.50) int -> edi "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x1C]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,22 +34,25 @@ G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp edi, 17
- jg G_M39211_IG14
- ;; size=15 bbWeight=1 PerfScore 4.25
+ jg G_M39211_IG20
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M39211_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
test edi, edi
- jle SHORT G_M39211_IG06
+ jle SHORT G_M39211_IG07
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
@@ -55,35 +60,49 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [eax]
mov dword ptr [ebp-0x10], edx
cmp edx, 0xD1FFAB1E
- jne SHORT G_M39211_IG07
- ;; size=20 bbWeight=4 PerfScore 29.00
-G_M39211_IG05: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M39211_IG08
+ ;; size=23 bbWeight=4 PerfScore 33.00
+G_M39211_IG05: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, eax
; gcrRegs +[ecx]
call <unknown method>
; gcrRegs -[eax ecx]
cmp eax, 16
- je G_M39211_IG14
- jmp SHORT G_M39211_IG08
- ;; size=18 bbWeight=2 PerfScore 9.00
-G_M39211_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ je SHORT G_M39211_IG06
+ jmp SHORT G_M39211_IG09
+ ;; size=14 bbWeight=2 PerfScore 9.00
+G_M39211_IG06: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V04}
- mov edi, dword ptr [ebp-0x14]
- jmp SHORT G_M39211_IG12
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp G_M39211_IG20
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M39211_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M39211_IG16
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M39211_IG07: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
+G_M39211_IG08: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi] +[eax]
; GC ptr vars +{V01 V04}
mov ecx, eax
; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x1C], ecx
mov edx, dword ptr [ebp-0x10]
- mov edi, dword ptr [edx+0x38]
- call [edi+0x0C]<unknown method>
+ mov ecx, dword ptr [edx+0x38]
+ ; gcrRegs -[ecx]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov esi, dword ptr [ebp-0x20]
+ call [esi+0x0C]<unknown method>
; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M39211_IG14
- ;; size=15 bbWeight=2 PerfScore 15.00
-G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M39211_IG13
+ ;; size=27 bbWeight=2 PerfScore 23.00
+G_M39211_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
@@ -91,22 +110,40 @@ G_M39211_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [edx+0x14]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG12
mov eax, dword ptr [ebp-0x10]
cmp eax, 0xD1FFAB1E
- jne SHORT G_M39211_IG10
+ jne SHORT G_M39211_IG14
;; size=26 bbWeight=4 PerfScore 42.00
-G_M39211_IG09: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG10: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
; GC ptr vars -{V01 V04}
call <unknown method>
; gcrRegs -[ecx]
cmp eax, 15
- je SHORT G_M39211_IG14
- jmp SHORT G_M39211_IG11
+ je SHORT G_M39211_IG11
+ jmp SHORT G_M39211_IG15
;; size=15 bbWeight=1.98 PerfScore 10.39
-G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M39211_IG11: ; bbWeight=0.99, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M39211_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG20
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M39211_IG14: ; bbWeight=2, gcVars=0000000A {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
; GC ptr vars +{V01 V04}
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
@@ -115,20 +152,24 @@ G_M39211_IG10: ; bbWeight=2, gcVars=00000002 {V04}, gcrefRegs=00000040 {e
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG14
+ jne SHORT G_M39211_IG19
;; size=13 bbWeight=2 PerfScore 14.50
-G_M39211_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M39211_IG13
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jg SHORT G_M39211_IG18
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M39211_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [edi-0x01]
cmp ecx, edi
- jae SHORT G_M39211_IG18
+ jae SHORT G_M39211_IG24
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
cmp gword ptr [esi+4*edi+0x04], 0xD1FFAB1E
- jne SHORT G_M39211_IG16
+ jne SHORT G_M39211_IG22
+ ;; size=20 bbWeight=1 PerfScore 6.75
+G_M39211_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
@@ -138,19 +179,28 @@ G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M39211_IG17
- ;; size=40 bbWeight=0.50 PerfScore 7.25
-G_M39211_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M39211_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.38
+G_M39211_IG18: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V00 V03}
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
jmp G_M39211_IG04
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M39211_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M39211_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M39211_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V03}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M39211_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -158,14 +208,14 @@ G_M39211_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
...
realworld.run.windows.x86.checked.mch
-15 (-11.03%) : 28805.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,ubyte]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary
2+Node[System.Canon,ubyte],System.Canon,byref):ubyte:this (FullOpts)
@@ -11,15 +11,15 @@
; V00 this [V00,T06] ( 4, 10 ) ref -> edi this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]>
; V01 arg1 [V01,T00] ( 9, 23.50) ref -> esi class-hnd <Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,ubyte]>
; V02 arg2 [V02,T07] ( 1, 4 ) ref -> ebx class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T08] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V03 arg3 [V03,T08] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V04 tmp0 [V04,T04] ( 2, 16 ) ref -> [ebp-0x10] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T03] ( 3, 16 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V06 tmp2 [V06,T03] ( 3, 16 ) int -> eax "VirtualCall with runtime lookup"
; V07 tmp3 [V07,T05] ( 2, 16 ) ref -> ecx "argument with side effect"
; V08 rat0 [V08,T02] ( 3, 17.60) int -> ecx "Spilling to split statement for tree"
-; V09 rat1 [V09,T01] ( 3, 22.40) int -> edx "fgMakeTemp is creating a new local variable"
+; V09 rat1 [V09,T01] ( 3, 22.40) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M41821_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -27,47 +27,44 @@ G_M41821_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x0C]
; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=14 bbWeight=1 PerfScore 6.75
G_M41821_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
je SHORT G_M41821_IG07
;; size=4 bbWeight=1 PerfScore 1.25
G_M41821_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov edx, gword ptr [esi+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x10], edx
; GC ptr vars +{V04}
mov ecx, dword ptr [edi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x18]
- test edx, edx
+ mov eax, dword ptr [ecx+0x24]
+ mov eax, dword ptr [eax]
+ mov eax, dword ptr [eax+0x18]
+ test eax, eax
je SHORT G_M41821_IG05
;; size=20 bbWeight=4 PerfScore 49.00
G_M41821_IG04: ; bbWeight=3.20, gcVars=00000010 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], edx
+ ; gcrRegs -[edx]
jmp SHORT G_M41821_IG06
- ;; size=5 bbWeight=3.20 PerfScore 9.60
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
G_M41821_IG05: ; bbWeight=0.80, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov dword ptr [ebp-0x10], eax
- ;; size=13 bbWeight=0.80 PerfScore 1.80
+ ;; size=10 bbWeight=0.80 PerfScore 1.00
G_M41821_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x10]
mov edx, ebx
; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x10]
nop
; GC ptr vars -{V04}
call [eax]
@@ -84,22 +81,22 @@ G_M41821_IG06: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs +[esi]
test esi, esi
jne SHORT G_M41821_IG03
- ;; size=36 bbWeight=4 PerfScore 70.00
-G_M41821_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=33 bbWeight=4 PerfScore 66.00
+G_M41821_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ebx esi]
mov ebx, bword ptr [ebp+0x08]
; byrRegs +[ebx]
mov byte ptr [ebx], 0
xor eax, eax
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M41821_IG08: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M41821_IG08: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M41821_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
; byrRegs -[ebx]
@@ -110,14 +107,14 @@ G_M41821_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov eax, 1
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M41821_IG10: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 136, prolog size 9, PerfScore 145.40, instruction count 58, allocated bytes for code 136 (MethodHash=b8655ca2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,ubyte],System.__Canon,byref):ubyte:this (FullOpts)
+; Total bytes of code 121, prolog size 7, PerfScore 141.53, instruction count 55, allocated bytes for code 121 (MethodHash=b8655ca2) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,ubyte],System.__Canon,byref):ubyte:this (FullOpts)
; ============================================================
-32 (-8.74%) : 21324.dasm - System.Number:g_ProcessChunk|114(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
@@ -9,42 +9,42 @@
; Final local variable assignments
;
; V00 arg0 [V00,T20] ( 2, 2 ) struct ( 8) [ebp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T11] ( 3, 4 ) byref -> [ebp-0x2C] single-def
-; V02 arg2 [V02,T06] ( 7, 7.50) byref -> esi single-def
-; V03 arg3 [V03,T16] ( 4, 3 ) byref -> [ebp+0x08] single-def
+; V01 arg1 [V01,T11] ( 3, 4 ) byref -> [ebp-0x28] single-def
+; V02 arg2 [V02,T06] ( 7, 8 ) byref -> esi single-def
+; V03 arg3 [V03,T15] ( 4, 4 ) byref -> [ebp+0x08] single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V06 loc2 [V06,T22] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T03] ( 6, 13.50) int -> [ebp-0x10]
-; V08 loc4 [V08,T02] ( 6, 15.50) int -> [ebp-0x14]
-; V09 loc5 [V09,T07] ( 4, 9.50) int -> [ebp-0x18]
-; V10 loc6 [V10,T00] ( 6, 21 ) int -> edi
-; V11 loc7 [V11,T04] ( 3, 12 ) ushort -> ebx
+; V07 loc3 [V07,T03] ( 6, 14 ) int -> [ebp-0x10]
+; V08 loc4 [V08,T02] ( 6, 16 ) int -> [ebp-0x14]
+; V09 loc5 [V09,T07] ( 4, 10 ) int -> [ebp-0x18]
+; V10 loc6 [V10,T00] ( 6, 21 ) int -> ebx
+; V11 loc7 [V11,T04] ( 3, 12 ) ushort -> edx
;* V12 loc8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V13 loc9 [V13,T01] ( 6, 20.50) int -> [ebp-0x1C]
-; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> [ebp-0x20]
+; V13 loc9 [V13,T01] ( 6, 20.50) int -> edx
+; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> [ebp-0x1C]
; V15 tmp0 [V15,T17] ( 3, 3 ) int -> ecx "Inline return value spill temp"
; V16 tmp1 [V16,T12] ( 3, 6 ) int -> ecx "Inlining Arg"
-; V17 tmp2 [V17,T15] ( 4, 4 ) int -> ebx "Inline return value spill temp"
+; V17 tmp2 [V17,T16] ( 4, 4 ) int -> edi "Inline return value spill temp"
;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp5 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V21 tmp6 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp7 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V23 tmp8 [V23,T18] ( 3, 3 ) int -> edi "Inlining Arg"
-; V24 tmp9 [V24,T19] ( 2, 2 ) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
+; V23 tmp8 [V23,T18] ( 3, 3 ) int -> ebx "Inlining Arg"
+; V24 tmp9 [V24,T19] ( 2, 2 ) byref -> [ebp-0x2C] spill-single-def "Inlining Arg"
;* V25 tmp10 [V25 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp11 [V26,T10] ( 5, 7 ) int -> [ebp-0x24] spill-single-def "field V05._length (fldOffset=0x4)" P-INDEP
-; V27 tmp12 [V27,T14] ( 2, 4.50) byref -> [ebp-0x34] single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp13 [V28,T08] ( 4, 9 ) int -> edi "field V12._length (fldOffset=0x4)" P-INDEP
+; V26 tmp11 [V26,T10] ( 5, 7 ) int -> [ebp-0x20] spill-single-def "field V05._length (fldOffset=0x4)" P-INDEP
+; V27 tmp12 [V27,T14] ( 2, 4.50) byref -> edi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp13 [V28,T08] ( 4, 9 ) int -> ebx "field V12._length (fldOffset=0x4)" P-INDEP
;* V29 tmp14 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp15 [V30,T21] ( 2, 2 ) int -> ebx "field V19._length (fldOffset=0x4)" P-INDEP
-; V31 tmp16 [V31,T23] ( 2, 1 ) byref -> ebx single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp17 [V32,T24] ( 2, 1 ) int -> edi "field V22._length (fldOffset=0x4)" P-INDEP
-; V33 tmp18 [V33,T13] ( 3, 5.50) byref -> [ebp-0x38] spill-single-def "V00.[000..004)"
-; V34 tmp19 [V34,T09] ( 6, 8.50) int -> [ebp-0x28] spill-single-def "V00.[004..008)"
+; V30 tmp15 [V30,T21] ( 2, 2 ) int -> edi "field V19._length (fldOffset=0x4)" P-INDEP
+; V31 tmp16 [V31,T23] ( 2, 1 ) byref -> edi single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp17 [V32,T24] ( 2, 1 ) int -> ebx "field V22._length (fldOffset=0x4)" P-INDEP
+; V33 tmp18 [V33,T13] ( 3, 5.50) byref -> [ebp-0x30] spill-single-def "V00.[000..004)"
+; V34 tmp19 [V34,T09] ( 6, 8.50) int -> [ebp-0x24] spill-single-def "V00.[004..008)"
;
-; Lcl frame size = 44
+; Lcl frame size = 36
G_M21779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -52,193 +52,174 @@ G_M21779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 44
- mov bword ptr [ebp-0x2C], ecx
+ sub esp, 36
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V01}
mov esi, edx
; byrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M21779_IG02: ; bbWeight=1, gcVars=00000800 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ mov ebx, bword ptr [ebp+0x08]
+ ; byrRegs +[ebx]
+ ;; size=17 bbWeight=1 PerfScore 6.75
+G_M21779_IG02: ; bbWeight=1, gcVars=00000800 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
mov eax, bword ptr [ebp+0x0C]
; byrRegs +[eax]
- mov bword ptr [ebp-0x38], eax
+ mov bword ptr [ebp-0x30], eax
; GC ptr vars +{V33}
mov edx, dword ptr [ebp+0x10]
- mov dword ptr [ebp-0x28], edx
+ mov dword ptr [ebp-0x24], edx
mov ecx, dword ptr [esi+0x04]
sub ecx, dword ptr [esi+0x08]
- xor ebx, ebx
+ xor edi, edi
test ecx, ecx
- cmovl ecx, ebx
+ cmovl ecx, edi
cmp ecx, edx
- mov ebx, edx
- cmovle ebx, ecx
- cmp ebx, edx
- ja G_M21779_IG18
- mov ecx, ebx
+ mov edi, edx
+ cmovle edi, ecx
+ cmp edi, edx
+ ja G_M21779_IG17
+ mov ecx, edi
not ecx
shr ecx, 31
call [<unknown method>]
; byrRegs -[eax]
- mov dword ptr [ebp-0x24], ebx
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- mov edx, dword ptr [eax]
- mov bword ptr [ebp+0x08], eax
- mov ecx, dword ptr [eax+0x04]
- mov eax, dword ptr [esi+0x08]
- ; byrRegs -[eax]
- xor edi, edi
- test ebx, ebx
+ mov dword ptr [ebp-0x20], edi
+ mov eax, dword ptr [ebx]
+ mov bword ptr [ebp+0x08], ebx
+ mov ecx, dword ptr [ebx+0x04]
+ mov edx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x18], edx
+ xor ebx, ebx
+ ; byrRegs -[ebx]
+ test edi, edi
jle SHORT G_M21779_IG07
;; size=76 bbWeight=1 PerfScore 26.25
G_M21779_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- cmp edi, dword ptr [ebp-0x28]
- jae G_M21779_IG17
- mov ebx, bword ptr [ebp-0x38]
- ; byrRegs +[ebx]
- movzx ebx, byte ptr [ebx+edi]
- ; byrRegs -[ebx]
- test ebx, ebx
+ cmp ebx, dword ptr [ebp-0x24]
+ jae G_M21779_IG16
+ mov edi, bword ptr [ebp-0x30]
+ ; byrRegs +[edi]
+ movzx edx, byte ptr [edi+ebx]
+ test edx, edx
je SHORT G_M21779_IG08
- lea edx, [edx+4*edx]
- lea edx, [ebx+2*edx-0x30]
- mov ebx, edx
+ lea eax, [eax+4*eax]
+ lea eax, [edx+2*eax-0x30]
inc ecx
- inc eax
- mov dword ptr [ebp-0x18], eax
+ mov edx, dword ptr [ebp-0x18]
+ inc edx
+ mov dword ptr [ebp-0x18], edx
cmp ecx, 9
jne SHORT G_M21779_IG05
- ;; size=39 bbWeight=4 PerfScore 47.00
+ ;; size=40 bbWeight=4 PerfScore 50.00
G_M21779_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
- push ebx
+ ; byrRegs -[edi]
+ push eax
push esi
; byr arg push 1
- mov ecx, bword ptr [ebp-0x2C]
+ mov ecx, bword ptr [ebp-0x28]
; byrRegs +[ecx]
mov edx, 0xD1FFAB1E
call [<unknown method>]
; byrRegs -[ecx]
; gcr arg pop 1
- xor ebx, ebx
- mov dword ptr [ebp-0x10], ebx
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
xor ecx, ecx
mov dword ptr [ebp-0x14], ecx
- mov ebx, dword ptr [ebp-0x10]
- ;; size=29 bbWeight=2 PerfScore 19.50
+ mov eax, dword ptr [ebp-0x10]
+ mov ecx, dword ptr [ebp-0x14]
+ ;; size=32 bbWeight=2 PerfScore 21.50
G_M21779_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- inc edi
- mov edx, dword ptr [ebp-0x24]
- cmp edi, edx
- mov edx, ebx
- mov eax, dword ptr [ebp-0x18]
+ inc ebx
+ mov edi, dword ptr [ebp-0x20]
+ cmp ebx, edi
jl SHORT G_M21779_IG03
- ;; size=13 bbWeight=4 PerfScore 15.00
-G_M21779_IG06: ; bbWeight=0.50, gcVars=00002000 {V33}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ;; size=8 bbWeight=4 PerfScore 10.00
+G_M21779_IG06: ; bbWeight=1, gcVars=00002000 {V33}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
mov dword ptr [ebp-0x14], ecx
- mov dword ptr [ebp-0x10], edx
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x10], eax
jmp SHORT G_M21779_IG10
- ;; size=11 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 4.00
G_M21779_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
mov dword ptr [ebp-0x14], ecx
- mov dword ptr [ebp-0x10], edx
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x10], eax
jmp SHORT G_M21779_IG10
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M21779_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M21779_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
; GC ptr vars -{V33}
mov ebx, bword ptr [ebp+0x08]
; byrRegs +[ebx]
- mov dword ptr [ebx], edx
+ mov dword ptr [ebx], eax
mov dword ptr [ebx+0x04], ecx
- mov dword ptr [esi+0x08], eax
+ mov ebx, dword ptr [ebp-0x18]
+ ; byrRegs -[ebx]
+ mov dword ptr [esi+0x08], ebx
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M21779_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=19 bbWeight=1 PerfScore 5.25
+G_M21779_IG09: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 12
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=10 bbWeight=1 PerfScore 4.50
G_M21779_IG10: ; bbWeight=0.50, gcVars=00002000 {V33}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; byrRegs -[ebx]
; GC ptr vars +{V13 V33}
- mov ebx, dword ptr [ebp-0x24]
- mov edi, ebx
- add edi, bword ptr [ebp-0x38]
- ; byrRegs +[edi]
- mov bword ptr [ebp-0x30], edi
...
-18 (-6.52%) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
@@ -8,15 +8,15 @@
; 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]
+; V00 arg0 [V00,T08] ( 4, 7 ) ref -> [ebp-0x1C] class-hnd single-def <System.String>
+; V01 loc0 [V01,T04] ( 8, 40 ) ref -> edi class-hnd exact single-def <uint[]>
+; V02 loc1 [V02,T06] ( 6, 17 ) int -> [ebp-0x10]
; V03 loc2 [V03,T05] ( 7, 21 ) int -> [ebp-0x14]
-; V04 loc3 [V04,T03] ( 11, 38 ) int -> ecx
+; V04 loc3 [V04,T03] ( 11, 40 ) 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,T07] ( 2, 16 ) 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"
@@ -47,7 +47,7 @@ G_M43253_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [esi+0x04]
mov dword ptr [ebp-0x18], 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
@@ -56,7 +56,7 @@ G_M43253_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
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
@@ -74,8 +74,8 @@ G_M43253_IG06: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000
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=12 bbWeight=2 PerfScore 9.00
G_M43253_IG07: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 28
jle SHORT G_M43253_IG08
@@ -101,18 +101,18 @@ G_M43253_IG11: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
G_M43253_IG12: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx-0x01]
cmp esi, 29
- jae G_M43253_IG22
+ jae SHORT G_M43253_IG22
imul ebx, dword ptr [edi+4*edx+0x04], 31
add ebx, ecx
mov dword ptr [edi+4*edx+0x08], ebx
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
+ ;; size=25 bbWeight=15.84 PerfScore 150.48
+G_M43253_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [ebp-0x10]
jmp SHORT G_M43253_IG15
- ;; size=5 bbWeight=2 PerfScore 6.00
+ ;; size=5 bbWeight=4 PerfScore 12.00
G_M43253_IG14: ; bbWeight=0.16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx-0x01]
cmp esi, 29
@@ -126,11 +126,13 @@ 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=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [edi+0x08], ecx
inc ebx
cmp ebx, 4
- jl SHORT G_M43253_IG20
+ jl SHORT G_M43253_IG18
+ ;; size=9 bbWeight=4 PerfScore 10.00
+G_M43253_IG16: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], eax
mov ecx, edi
; gcrRegs +[ecx]
@@ -138,23 +140,21 @@ G_M43253_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000
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]
;; 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]
cmp edx, eax
- mov ebx, dword ptr [ebp-0x10]
mov esi, gword ptr [ebp-0x1C]
; 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=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
; GC ptr vars -{V00}
mov ecx, edi
@@ -162,24 +162,16 @@ G_M43253_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {e
xor edx, edx
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
+ ;; size=10 bbWeight=1 PerfScore 3.50
+G_M43253_IG20: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
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
+ ;; size=8 bbWeight=1 PerfScore 3.50
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 +185,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 258, prolog size 11, PerfScore 274.45, instruction count 101, allocated bytes for code 258 (MethodHash=ca42570a) for method System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
; ============================================================
+16 (+6.25%) : 2944.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,int]:TryGetValue(System.Canon,byref):ubyte:this (FullOpts)
@@ -10,37 +10,37 @@
;
; V00 this [V00,T02] ( 6, 6.50) ref -> esi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,int]>
; V01 arg1 [V01,T04] ( 7, 6.50) ref -> edi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T20] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T11] ( 3, 3 ) ref -> ebx class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,int]>
+; V02 arg2 [V02,T20] ( 2, 1.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T11] ( 3, 3 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,int]>
; V04 loc1 [V04,T10] ( 3, 3.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,int]>
-; V07 loc4 [V07,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
-; V08 loc5 [V08,T00] ( 8, 20.50) ref -> ebx class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,int]>
+; V07 loc4 [V07,T07] ( 3, 6 ) int -> ebx
+; V08 loc5 [V08,T00] ( 8, 20.50) ref -> [ebp-0x1C] class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,int]>
;* V09 tmp0 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T05] ( 3, 8 ) int -> eax "VirtualCall with runtime lookup"
-; V12 tmp3 [V12,T15] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V11 tmp2 [V11,T05] ( 3, 8 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V12 tmp3 [V12,T15] ( 3, 2 ) int -> ebx "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V15 tmp6 [V15,T16] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V15 tmp6 [V15,T16] ( 3, 2 ) int -> ebx "VirtualCall with runtime lookup"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.__Canon,int]>
-; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> edx "argument with side effect"
+; V21 tmp12 [V21,T06] ( 2, 8 ) ref -> ecx "argument with side effect"
; V22 cse0 [V22,T17] ( 2, 2 ) int -> edx "CSE - moderate"
; V23 cse1 [V23,T18] ( 2, 2 ) int -> registers "CSE - moderate"
; V24 rat0 [V24,T14] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V25 rat1 [V25,T13] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V25 rat1 [V25,T13] ( 3, 2.80) int -> ebx "fgMakeTemp is creating a new local variable"
;* V26 rat2 [V26,T09] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V27 rat3 [V27,T19] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V28 rat4 [V28,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T03] ( 3, 8.80) int -> edx "Spilling to split statement for tree"
-; V30 rat6 [V30,T01] ( 3, 11.20) int -> eax "fgMakeTemp is creating a new local variable"
+; V29 rat5 [V29,T03] ( 3, 8.80) int -> ecx "Spilling to split statement for tree"
+; V30 rat6 [V30,T01] ( 3, 11.20) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M61025_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M61025_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
@@ -57,143 +57,160 @@ G_M61025_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[esi]
test edi, edi
je G_M61025_IG19
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, gword ptr [ebx+0x0C]
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V03}
+ mov edx, gword ptr [eax+0x0C]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
cmp byte ptr [esi+0x0D], 0
jne SHORT G_M61025_IG07
- ;; size=23 bbWeight=1 PerfScore 10.25
-G_M61025_IG03: ; bbWeight=0.50, gcVars=00000400 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
+ ;; size=26 bbWeight=1 PerfScore 11.25
+G_M61025_IG03: ; bbWeight=0.50, gcVars=00000C00 {V03 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x24]
- test edx, edx
+ mov ebx, dword ptr [ecx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx+0x24]
+ test ebx, ebx
je SHORT G_M61025_IG05
;; size=17 bbWeight=0.50 PerfScore 5.12
-G_M61025_IG04: ; bbWeight=0.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
+G_M61025_IG04: ; bbWeight=0.40, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M61025_IG06
- ;; size=5 bbWeight=0.40 PerfScore 1.20
-G_M61025_IG05: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M61025_IG05: ; bbWeight=0.10, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
+ ; gcrRegs -[edx]
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=16 bbWeight=0.10 PerfScore 0.33
-G_M61025_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
+ mov ebx, eax
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ ;; size=15 bbWeight=0.10 PerfScore 0.25
+G_M61025_IG06: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ebp-0x14]
- ; gcrRegs -[eax]
+ mov eax, ebx
nop
call [eax]
; gcrRegs -[ecx edx]
+ mov ebx, eax
jmp SHORT G_M61025_IG08
- ;; size=14 bbWeight=0.50 PerfScore 3.38
-G_M61025_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
+G_M61025_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x0C]<unknown method>
+ mov ebx, dword ptr [edi]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx]
- mov ecx, eax
+ mov ebx, eax
;; size=12 bbWeight=0.50 PerfScore 3.75
-G_M61025_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- mov dword ptr [ebp-0x10], ecx
- mov ebx, gword ptr [ebx+0x10]
- mov gword ptr [ebp-0x1C], ebx
+G_M61025_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x10]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V17}
- mov edx, dword ptr [ebx+0x04]
- mov ebx, edx
- ; gcrRegs -[ebx]
- mov eax, ecx
+ mov edx, dword ptr [ecx+0x04]
+ mov ecx, edx
+ ; gcrRegs -[ecx]
+ mov eax, ebx
+ ; gcrRegs -[eax]
xor edx, edx
- div edx:eax, ebx
- mov ebx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ebx]
- mov ebx, gword ptr [ebx+4*edx+0x08]
- test ebx, ebx
- je SHORT G_M61025_IG15
- ;; size=33 bbWeight=1 PerfScore 36.25
-G_M61025_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V17}
- cmp ecx, dword ptr [ebx+0x10]
- jne SHORT G_M61025_IG14
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M61025_IG10: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi]
- mov eax, dword ptr [edx+0x24]
- mov eax, dword ptr [eax]
- mov eax, dword ptr [eax+0x20]
+ div edx:eax, ecx
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+4*edx+0x08]
+ ; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M61025_IG15
+ ;; size=31 bbWeight=1 PerfScore 36.00
+G_M61025_IG09: ; bbWeight=4, gcVars=00000400 {V04}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V03 V17}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V08}
+ cmp ebx, dword ptr [eax+0x10]
+ jne SHORT G_M61025_IG14
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M61025_IG10: ; bbWeight=2, gcVars=00000401 {V04 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x20]
+ test edx, edx
je SHORT G_M61025_IG12
;; size=14 bbWeight=2 PerfScore 18.50
-G_M61025_IG11: ; bbWeight=1.60, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M61025_IG11: ; bbWeight=1.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
jmp SHORT G_M61025_IG13
- ;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M61025_IG12: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
+ ;; size=5 bbWeight=1.60 PerfScore 4.80
+G_M61025_IG12: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=12 bbWeight=0.40 PerfScore 0.60
-G_M61025_IG13: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.40 PerfScore 0.90
+G_M61025_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[ecx]
push edi
; gcr arg push 0
+ mov edx, ecx
+ ; gcrRegs +[edx]
mov ecx, gword ptr [ebp-0x18]
- ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
; gcrRegs -[ecx edx]
; gcr arg pop 1
test eax, eax
jne SHORT G_M61025_IG17
...
+45 (+6.90%) : 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)
@@ -27,7 +27,7 @@
;* 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,T07] ( 4, 3.50) 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]>
@@ -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
vmovdqu ymmword ptr [ebp-0x74], ymm4
@@ -123,7 +123,7 @@ G_M47889_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 20
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M47889_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+G_M47889_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs +[ebx esi]
; byrRegs +[edi]
mov bword ptr [ebp+0x18], edi
@@ -198,107 +198,123 @@ 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
- jle SHORT G_M47889_IG13
- ;; size=177 bbWeight=0.50 PerfScore 57.67
-G_M47889_IG07: ; 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_IG12
- 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_IG14
- ;; size=18 bbWeight=0.25 PerfScore 2.06
+ jle G_M47889_IG15
+ ;; size=184 bbWeight=0.50 PerfScore 57.67
+G_M47889_IG07: ; bbWeight=0.25, gcVars=00000320 {V04 V37 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp gword ptr [ebp-0x88], 0
+ je G_M47889_IG14
+ 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_IG13
+ ;; size=27 bbWeight=0.25 PerfScore 2.50
G_M47889_IG08: ; 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_IG10
- ;; size=16 bbWeight=3.96 PerfScore 22.77
+ ;; size=18 bbWeight=3.96 PerfScore 23.76
G_M47889_IG09: ; 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_IG10
+ jne SHORT G_M47889_IG12
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_IG10: ; 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_IG08
- ;; size=12 bbWeight=3.96 PerfScore 20.79
-G_M47889_IG11: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=3.96 PerfScore 17.82
+G_M47889_IG11: ; bbWeight=1, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V41}
- jmp SHORT G_M47889_IG17
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M47889_IG12: ; 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_IG14
+ ; GC ptr vars -{V37 V41}
+ jmp G_M47889_IG19
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M47889_IG12: ; bbWeight=0.99, gcVars=00000320 {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_IG10
+ ;; size=8 bbWeight=0.99 PerfScore 2.97
+G_M47889_IG13: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, gword ptr [ebp-0x84]
+ jmp SHORT G_M47889_IG16
+ ;; size=8 bbWeight=0.12 PerfScore 0.38
+G_M47889_IG14: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M47889_IG16
;; size=2 bbWeight=0.12 PerfScore 0.25
-G_M47889_IG13: ; bbWeight=0.25, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47889_IG15: ; bbWeight=0.25, gcVars=00000020 {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_IG21
+ jmp G_M47889_IG24
;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M47889_IG14: ; bbWeight=0.04, gcVars=00000120 {V04 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47889_IG16: ; bbWeight=0.04, gcVars=00000320 {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_IG16
- ;; size=16 bbWeight=0.04 PerfScore 0.23
-G_M47889_IG15: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M47889_IG18
+ ;; size=18 bbWeight=0.04 PerfScore 0.24
+G_M47889_IG17: ; 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_IG24
+ jae G_M47889_IG27
mov dword ptr [ebp-0x64], eax
lea edx, [eax+2*eax]
shl edx, 2
@@ -321,25 +337,28 @@ G_M47889_IG15: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M47889_IG16
+ jne SHORT G_M47889_IG18
+ xor ecx, ecx
xor eax, eax
mov dword ptr [ebp-0x60], eax
- ;; size=76 bbWeight=0.02 PerfScore 0.57
-G_M47889_IG16: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=78 bbWeight=0.02 PerfScore 0.57
+G_M47889_IG18: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x64]
inc edx
mov ecx, dword ptr [ebp-0x5C]
cmp edx, ecx
- mov dword ptr [ebp-0x64], edx
- jl SHORT G_M47889_IG14
- ;; size=14 bbWeight=0.04 PerfScore 0.18
-G_M47889_IG17: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov eax, edx
+ jl SHORT G_M47889_IG16
+ ;; size=13 bbWeight=0.04 PerfScore 0.15
+G_M47889_IG19: ; bbWeight=1, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
...
+22 (+12.87%) : 35637.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
@@ -8,16 +8,16 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 8, 9 ) ref -> esi class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T04] ( 8, 9.50) ref -> [ebp-0x14] class-hnd single-def <System.Type[]>
;* V01 loc0 [V01,T07] ( 0, 0 ) ubyte -> zero-ref
; V02 loc1 [V02,T06] ( 3, 1.50) ref -> eax class-hnd <System.Type>
; V03 loc2 [V03,T01] ( 5, 16.50) int -> ebx
; V04 loc3 [V04,T00] ( 5, 20 ) ref -> [ebp-0x18] class-hnd spill-single-def <System.Type>
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Type>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref
-; V07 cse0 [V07,T02] ( 3, 12 ) int -> edi "CSE - aggressive"
+; V07 cse0 [V07,T02] ( 3, 12 ) int -> esi "CSE - aggressive"
; V08 cse1 [V08,T03] ( 3, 12 ) int -> [ebp-0x10] spill-single-def "CSE - aggressive"
-; V09 cse2 [V09,T05] ( 7, 8 ) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V09 cse2 [V09,T05] ( 7, 9.50) int -> edi "CSE - aggressive"
;
; Lcl frame size = 12
@@ -31,18 +31,19 @@ G_M39211_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
-G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp edi, 17
- jg SHORT G_M39211_IG08
- ;; size=11 bbWeight=1 PerfScore 4.25
+ jg G_M39211_IG12
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M39211_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
test edi, edi
- jle SHORT G_M39211_IG07
+ jle SHORT G_M39211_IG11
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
mov eax, gword ptr [esi+4*ebx+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
@@ -51,11 +52,12 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[ecx]
mov edx, dword ptr [eax]
mov dword ptr [ebp-0x10], edx
- mov edi, dword ptr [edx+0x38]
- call [edi+0x0C]<unknown method>
+ mov esi, dword ptr [edx+0x38]
+ ; gcrRegs -[esi]
+ call [esi+0x0C]<unknown method>
; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M39211_IG08
+ jne SHORT G_M39211_IG10
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x10]
@@ -63,25 +65,28 @@ G_M39211_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [eax+0x14]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M39211_IG08
+ jne SHORT G_M39211_IG09
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
- ; GC ptr vars -{V04}
- call [edi+0x10]<unknown method>
+ ; GC ptr vars -{V00 V04}
+ call [esi+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
jne SHORT G_M39211_IG08
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M39211_IG06
+ jg SHORT G_M39211_IG07
;; size=58 bbWeight=4 PerfScore 114.00
-G_M39211_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39211_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [edi-0x01]
cmp ecx, edi
- jae SHORT G_M39211_IG12
+ jae SHORT G_M39211_IG16
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
cmp gword ptr [esi+4*edi+0x04], 0xD1FFAB1E
- jne SHORT G_M39211_IG10
+ jne SHORT G_M39211_IG14
+ ;; size=20 bbWeight=1 PerfScore 6.75
+G_M39211_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
@@ -91,23 +96,47 @@ G_M39211_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M39211_IG11
- ;; size=40 bbWeight=0.50 PerfScore 7.25
-G_M39211_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M39211_IG15
+ ;; size=23 bbWeight=0.50 PerfScore 4.38
+G_M39211_IG07: ; bbWeight=2, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ ; GC ptr vars +{V00 V04}
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
jmp SHORT G_M39211_IG04
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M39211_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp-0x14]
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ mov esi, gword ptr [ebp-0x14]
+ ; gcrRegs +[esi]
+ jmp SHORT G_M39211_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M39211_IG11: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00 V04}
+ mov gword ptr [ebp-0x14], esi
+ ; GC ptr vars +{V00}
jmp SHORT G_M39211_IG05
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M39211_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M39211_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; GC ptr vars -{V00}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M39211_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -115,14 +144,14 @@ G_M39211_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M39211_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M39211_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -130,12 +159,12 @@ G_M39211_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M39211_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M39211_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 171, prolog size 9, PerfScore 142.50, instruction count 69, allocated bytes for code 171 (MethodHash=16b566d4) for method System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
+; Total bytes of code 193, prolog size 9, PerfScore 165.38, instruction count 76, allocated bytes for code 193 (MethodHash=16b566d4) for method System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
; ============================================================
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x86.checked.mch |
1,654 |
670 |
165 |
819 |
-4,836 |
+2,440 |
benchmarks.run_pgo.windows.x86.checked.mch |
3,633 |
1,864 |
1,389 |
380 |
-4,150 |
+19,094 |
benchmarks.run_tiered.windows.x86.checked.mch |
1,594 |
643 |
155 |
796 |
-4,340 |
+2,315 |
coreclr_tests.run.windows.x86.checked.mch |
4,876 |
853 |
1,665 |
2,358 |
-12,520 |
+27,095 |
libraries.crossgen2.windows.x86.checked.mch |
992 |
198 |
246 |
548 |
-2,859 |
+3,304 |
libraries.pmi.windows.x86.checked.mch |
1,693 |
461 |
471 |
761 |
-6,498 |
+6,492 |
libraries_tests.run.windows.x86.Release.mch |
1,394 |
530 |
461 |
403 |
-4,594 |
+10,847 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
2,224 |
696 |
662 |
866 |
-11,640 |
+10,596 |
realworld.run.windows.x86.checked.mch |
492 |
120 |
150 |
222 |
-2,978 |
+2,843 |
|
18,552 |
6,035 |
5,364 |
7,153 |
-54,415 |
+85,026 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
38,780 |
6 |
38,774 |
96 (0.25%) |
115 (0.30%) |
benchmarks.run_pgo.windows.x86.checked.mch |
83,943 |
41,585 |
42,358 |
1,426 (1.67%) |
1,490 (1.74%) |
benchmarks.run_tiered.windows.x86.checked.mch |
73,523 |
45,417 |
28,106 |
84 (0.11%) |
106 (0.14%) |
coreclr_tests.run.windows.x86.checked.mch |
406,422 |
186,921 |
219,501 |
148 (0.04%) |
200 (0.05%) |
libraries.crossgen2.windows.x86.checked.mch |
272,941 |
15 |
272,926 |
32 (0.01%) |
83 (0.03%) |
libraries.pmi.windows.x86.checked.mch |
320,404 |
6 |
320,398 |
90 (0.03%) |
174 (0.05%) |
libraries_tests.run.windows.x86.Release.mch |
49,260 |
31,248 |
18,012 |
360 (0.73%) |
366 (0.74%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
341,593 |
22,425 |
319,168 |
2,388 (0.69%) |
2,475 (0.72%) |
realworld.run.windows.x86.checked.mch |
37,808 |
3 |
37,805 |
23 (0.06%) |
52 (0.14%) |
|
1,624,674 |
327,626 |
1,297,048 |
4,647 (0.29%) |
5,061 (0.31%) |
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: 11289347 (overridden on cmd)
Total bytes of diff: 11286951 (overridden on cmd)
Total bytes of delta: -2396 (-0.02 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
181 : 29841.dasm (11.52 % of base)
95 : 28134.dasm (5.49 % of base)
94 : 34105.dasm (3.61 % of base)
94 : 31570.dasm (3.62 % of base)
85 : 4744.dasm (8.64 % of base)
73 : 36068.dasm (7.41 % of base)
46 : 29718.dasm (3.30 % of base)
45 : 28723.dasm (1.70 % of base)
42 : 6477.dasm (3.72 % of base)
38 : 22727.dasm (4.61 % of base)
38 : 3529.dasm (4.61 % of base)
35 : 18134.dasm (0.70 % of base)
35 : 28754.dasm (3.65 % of base)
35 : 4643.dasm (0.70 % of base)
31 : 14453.dasm (4.72 % of base)
31 : 43.dasm (4.72 % of base)
27 : 24995.dasm (1.18 % of base)
27 : 9916.dasm (1.18 % of base)
26 : 714.dasm (1.84 % of base)
26 : 15125.dasm (1.84 % of base)
Top file improvements (bytes):
-200 : 22021.dasm (-10.68 % of base)
-200 : 25857.dasm (-10.68 % of base)
-120 : 20039.dasm (-2.86 % of base)
-120 : 8072.dasm (-2.86 % of base)
-106 : 14079.dasm (-0.82 % of base)
-106 : 38021.dasm (-0.82 % of base)
-71 : 16998.dasm (-0.81 % of base)
-71 : 4188.dasm (-0.81 % of base)
-48 : 4123.dasm (-1.97 % of base)
-48 : 30877.dasm (-1.97 % of base)
-41 : 29035.dasm (-0.92 % of base)
-34 : 28730.dasm (-1.60 % of base)
-32 : 11964.dasm (-0.95 % of base)
-32 : 22287.dasm (-0.95 % of base)
-31 : 34151.dasm (-1.83 % of base)
-31 : 8676.dasm (-1.83 % of base)
-29 : 30781.dasm (-1.58 % of base)
-29 : 3784.dasm (-1.58 % of base)
-27 : 14457.dasm (-1.59 % of base)
-27 : 47.dasm (-1.59 % of base)
72 total files with Code Size differences (40 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
181 (11.52 % of base) : 29841.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
95 (5.49 % of base) : 28134.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
94 (3.61 % 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)
94 (3.62 % 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)
85 (8.64 % of base) : 4744.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
73 (7.41 % of base) : 36068.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
46 (3.30 % of base) : 29718.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RealizeBlocks():this (FullOpts)
45 (1.70 % of base) : 28723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
42 (3.72 % of base) : 6477.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
38 (4.61 % of base) : 22727.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
38 (4.61 % of base) : 3529.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
35 (3.65 % of base) : 28754.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.SourceLocation:this (FullOpts)
35 (0.70 % of base) : 18134.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
35 (0.70 % of base) : 4643.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte: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)
27 (1.18 % of base) : 24995.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (FullOpts)
27 (1.18 % of base) : 9916.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (FullOpts)
26 (1.84 % of base) : 714.dasm - System.Text.UnicodeEncoding:GetByteCount(uint,int,System.Text.EncoderNLS):int:this (FullOpts)
26 (1.84 % of base) : 15125.dasm - System.Text.UnicodeEncoding:GetByteCount(uint,int,System.Text.EncoderNLS):int:this (FullOpts)
Top method improvements (bytes):
-200 (-10.68 % of base) : 22021.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-200 (-10.68 % of base) : 25857.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-120 (-2.86 % of base) : 20039.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (FullOpts)
-120 (-2.86 % of base) : 8072.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (FullOpts)
-106 (-0.82 % of base) : 14079.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-106 (-0.82 % of base) : 38021.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-71 (-0.81 % of base) : 16998.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-71 (-0.81 % of base) : 4188.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-48 (-1.97 % of base) : 4123.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:BuildDeserialize(System.Type,Utf8Json.Internal.Emit.MetaType,System.Reflection.Emit.ILGenerator,System.Func`3[int,Utf8Json.Internal.Emit.MetaMember,ubyte],ubyte,int) (FullOpts)
-48 (-1.97 % of base) : 30877.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:BuildDeserialize(System.Type,Utf8Json.Internal.Emit.MetaType,System.Reflection.Emit.ILGenerator,System.Func`3[int,Utf8Json.Internal.Emit.MetaMember,ubyte],ubyte,int) (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)
-34 (-1.60 % of base) : 28730.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:PostDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short,Microsoft.CodeAnalysis.WellKnownAttributeData):this (FullOpts)
-32 (-0.95 % of base) : 11964.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
-32 (-0.95 % of base) : 22287.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
-31 (-1.83 % of base) : 34151.dasm - System.Enum:FormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint):System.String (FullOpts)
-31 (-1.83 % of base) : 8676.dasm - System.Enum:FormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint):System.String (FullOpts)
-29 (-1.58 % of base) : 30781.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
-29 (-1.58 % of base) : 3784.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
-27 (-1.59 % of base) : 14457.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
-27 (-1.59 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
Top method regressions (percentages):
181 (11.52 % of base) : 29841.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
85 (8.64 % of base) : 4744.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
73 (7.41 % of base) : 36068.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
24 (6.17 % of base) : 20990.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
16 (6.13 % of base) : 19234.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
16 (6.13 % of base) : 2010.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
95 (5.49 % of base) : 28134.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
24 (5.44 % of base) : 5391.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
17 (5.04 % of base) : 23088.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):ubyte:this (FullOpts)
17 (5.04 % of base) : 27199.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):ubyte:this (FullOpts)
22 (4.73 % of base) : 35343.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
22 (4.73 % of base) : 4232.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)
38 (4.61 % of base) : 22727.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
38 (4.61 % of base) : 3529.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (FullOpts)
19 (4.41 % of base) : 10658.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
19 (4.41 % of base) : 19543.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
14 (4.27 % of base) : 17221.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],int,byref):ubyte (FullOpts)
42 (3.72 % of base) : 6477.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
Top method improvements (percentages):
-200 (-10.68 % of base) : 22021.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-200 (-10.68 % of base) : 25857.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-11 (-7.64 % of base) : 4906.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-11 (-7.64 % of base) : 18556.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-19 (-4.19 % of base) : 14366.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (FullOpts)
-19 (-4.19 % of base) : 22320.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (FullOpts)
-15 (-4.13 % of base) : 12895.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2822_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-15 (-4.13 % of base) : 13499.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5889_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-10 (-3.52 % of base) : 14747.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (FullOpts)
-10 (-3.52 % of base) : 336.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (FullOpts)
-11 (-3.42 % of base) : 12167.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex44_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-10 (-3.39 % of base) : 8561.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-10 (-3.39 % of base) : 17971.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
-11 (-3.37 % of base) : 12195.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex103_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.37 % of base) : 12209.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex120_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 12765.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2256_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 12878.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2765_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 13390.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5225_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 13423.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5410_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 13430.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5439_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 33171940 (overridden on cmd)
Total bytes of diff: 33186884 (overridden on cmd)
Total bytes of delta: 14944 (0.05 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
93 : 59860.dasm (3.51 % of base)
81 : 50694.dasm (5.21 % of base)
81 : 68210.dasm (8.12 % of base)
79 : 45159.dasm (13.10 % of base)
77 : 65088.dasm (12.77 % of base)
74 : 21042.dasm (12.42 % of base)
74 : 58340.dasm (4.16 % of base)
71 : 71504.dasm (7.06 % of base)
59 : 42393.dasm (4.07 % of base)
59 : 62826.dasm (4.07 % of base)
58 : 83443.dasm (3.78 % of base)
53 : 68344.dasm (2.39 % of base)
50 : 19589.dasm (6.02 % of base)
32 : 43153.dasm (8.74 % of base)
30 : 82128.dasm (1.67 % of base)
30 : 85416.dasm (1.67 % of base)
30 : 82760.dasm (1.67 % of base)
30 : 63032.dasm (9.90 % of base)
30 : 83648.dasm (1.67 % of base)
30 : 84200.dasm (1.67 % of base)
Top file improvements (bytes):
-71 : 15711.dasm (-0.81 % of base)
-71 : 36088.dasm (-0.81 % of base)
-49 : 63075.dasm (-4.05 % of base)
-48 : 62623.dasm (-1.97 % of base)
-32 : 23804.dasm (-0.94 % of base)
-32 : 42185.dasm (-0.94 % of base)
-29 : 75491.dasm (-1.80 % of base)
-28 : 12675.dasm (-4.43 % of base)
-27 : 21614.dasm (-1.76 % of base)
-27 : 28970.dasm (-1.79 % of base)
-27 : 58567.dasm (-1.77 % of base)
-27 : 64601.dasm (-1.76 % of base)
-27 : 76147.dasm (-1.79 % of base)
-27 : 79607.dasm (-1.76 % of base)
-27 : 68473.dasm (-1.79 % of base)
-27 : 83306.dasm (-1.76 % of base)
-27 : 45477.dasm (-1.77 % of base)
-27 : 53087.dasm (-1.76 % of base)
-27 : 74961.dasm (-1.79 % of base)
-27 : 84906.dasm (-1.79 % of base)
76 total files with Code Size differences (42 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
93 (3.51 % 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)
81 (8.12 % of base) : 68210.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
81 (5.21 % of base) : 50694.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
79 (13.10 % of base) : 45159.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
77 (12.77 % of base) : 65088.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
74 (4.16 % of base) : 58340.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (Tier0-FullOpts)
74 (12.42 % of base) : 21042.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
71 (7.06 % of base) : 71504.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
59 (4.07 % of base) : 42393.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
59 (4.07 % of base) : 62826.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
58 (3.78 % of base) : 83443.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
53 (2.39 % of base) : 68344.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier0-FullOpts)
50 (6.02 % of base) : 19589.dasm - System.Number:NumberToFloatingPointBits[double](byref):ulong (Tier1)
32 (8.74 % of base) : 43153.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
30 (9.90 % of base) : 63032.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
30 (1.67 % of base) : 82128.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
30 (1.67 % of base) : 85416.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
30 (1.67 % of base) : 82760.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
30 (1.67 % of base) : 83648.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
30 (1.67 % of base) : 84200.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
Top method improvements (bytes):
-71 (-0.81 % of base) : 15711.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-71 (-0.81 % of base) : 36088.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-49 (-4.05 % of base) : 63075.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-48 (-1.97 % of base) : 62623.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:BuildDeserialize(System.Type,Utf8Json.Internal.Emit.MetaType,System.Reflection.Emit.ILGenerator,System.Func`3[int,Utf8Json.Internal.Emit.MetaMember,ubyte],ubyte,int) (Tier0-FullOpts)
-32 (-0.94 % of base) : 23804.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0-FullOpts)
-32 (-0.94 % of base) : 42185.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0-FullOpts)
-29 (-1.80 % of base) : 75491.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-28 (-4.43 % of base) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-27 (-1.76 % of base) : 21614.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.79 % of base) : 28970.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.77 % of base) : 58567.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.76 % of base) : 64601.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.79 % of base) : 76147.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.76 % of base) : 79607.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.79 % of base) : 68473.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.76 % of base) : 83306.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.77 % of base) : 45477.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.76 % of base) : 53087.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.79 % of base) : 74961.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
-27 (-1.79 % of base) : 84906.dasm - System.Reflection.CustomAttribute:FilterCustomAttributeRecord(System.Reflection.MetadataToken,byref,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,ubyte,byref,byref,byref,byref):ubyte (Tier1)
Top method regressions (percentages):
79 (13.10 % of base) : 45159.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
77 (12.77 % of base) : 65088.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
74 (12.42 % of base) : 21042.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle: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)
32 (8.74 % of base) : 43153.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
81 (8.12 % of base) : 68210.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (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)
23 (7.59 % of base) : 24496.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
71 (7.06 % of base) : 71504.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
16 (6.13 % of base) : 35205.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
16 (6.13 % of base) : 2237.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
12 (6.03 % of base) : 26916.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
50 (6.02 % of base) : 19589.dasm - System.Number:NumberToFloatingPointBits[double](byref):ulong (Tier1)
11 (5.98 % of base) : 40910.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
11 (5.98 % of base) : 48000.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
11 (5.98 % of base) : 59064.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
11 (5.98 % of base) : 80417.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
11 (5.98 % of base) : 12849.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
11 (5.98 % of base) : 14095.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
10 (5.75 % of base) : 23154.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-15 (-8.52 % of base) : 5168.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
-15 (-8.52 % of base) : 33271.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
-11 (-7.64 % of base) : 17082.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
-11 (-7.64 % of base) : 49401.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
-22 (-7.05 % of base) : 13508.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 38457.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 5726.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 65699.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 4663.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 13315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 34227.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 36712.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 5246.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 72133.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-22 (-7.05 % of base) : 73919.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-16 (-5.16 % of base) : 40315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-16 (-5.16 % of base) : 48762.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-16 (-5.16 % of base) : 52072.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-16 (-5.16 % of base) : 78701.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
-26 (-5.07 % of base) : 58503.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
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: 14107190 (overridden on cmd)
Total bytes of diff: 14105165 (overridden on cmd)
Total bytes of delta: -2025 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
178 : 61496.dasm (11.32 % of base)
95 : 57844.dasm (5.50 % of base)
94 : 64891.dasm (3.62 % of base)
94 : 67371.dasm (3.61 % of base)
85 : 9760.dasm (8.64 % of base)
73 : 31844.dasm (7.41 % of base)
46 : 61235.dasm (3.30 % of base)
45 : 58922.dasm (1.70 % of base)
35 : 58963.dasm (3.63 % of base)
35 : 9044.dasm (0.70 % of base)
35 : 34096.dasm (0.70 % of base)
31 : 17454.dasm (4.72 % of base)
31 : 95.dasm (4.72 % of base)
27 : 16812.dasm (3.38 % of base)
27 : 28975.dasm (3.38 % of base)
27 : 36485.dasm (1.18 % of base)
27 : 55769.dasm (1.18 % of base)
26 : 1999.dasm (1.84 % of base)
26 : 19214.dasm (1.84 % of base)
25 : 56028.dasm (1.52 % of base)
Top file improvements (bytes):
-200 : 44450.dasm (-10.68 % of base)
-120 : 49511.dasm (-2.86 % of base)
-120 : 21404.dasm (-2.86 % of base)
-106 : 41308.dasm (-0.82 % of base)
-71 : 5319.dasm (-0.81 % of base)
-71 : 28289.dasm (-0.81 % of base)
-49 : 64345.dasm (-4.05 % of base)
-48 : 39313.dasm (-1.97 % of base)
-48 : 5197.dasm (-1.97 % of base)
-38 : 59850.dasm (-0.85 % of base)
-34 : 58927.dasm (-1.60 % of base)
-32 : 42002.dasm (-0.95 % of base)
-32 : 51697.dasm (-0.95 % of base)
-27 : 100.dasm (-1.59 % of base)
-27 : 17459.dasm (-1.59 % of base)
-24 : 71464.dasm (-0.87 % of base)
-23 : 4236.dasm (-2.30 % of base)
-23 : 21191.dasm (-2.30 % of base)
-23 : 53302.dasm (-2.13 % of base)
-21 : 35153.dasm (-0.32 % of base)
73 total files with Code Size differences (41 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
178 (11.32 % of base) : 61496.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (Tier0-FullOpts)
95 (5.50 % of base) : 57844.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (Tier0-FullOpts)
94 (3.62 % 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)
94 (3.61 % 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)
85 (8.64 % of base) : 9760.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
73 (7.41 % of base) : 31844.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
46 (3.30 % of base) : 61235.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RealizeBlocks():this (Tier0-FullOpts)
45 (1.70 % of base) : 58922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
35 (3.63 % of base) : 58963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.SourceLocation:this (Tier0-FullOpts)
35 (0.70 % of base) : 9044.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
35 (0.70 % of base) : 34096.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (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 (3.38 % of base) : 16812.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (Tier0-FullOpts)
27 (3.38 % of base) : 28975.dasm - System.Collections.Generic.Dictionary`2[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:TryInsert(System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int,ubyte):ubyte:this (Tier0-FullOpts)
27 (1.18 % of base) : 36485.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (Tier0-FullOpts)
27 (1.18 % of base) : 55769.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (Tier0-FullOpts)
26 (1.84 % of base) : 1999.dasm - System.Text.UnicodeEncoding:GetByteCount(uint,int,System.Text.EncoderNLS):int:this (Tier0-FullOpts)
26 (1.84 % of base) : 19214.dasm - System.Text.UnicodeEncoding:GetByteCount(uint,int,System.Text.EncoderNLS):int:this (Tier0-FullOpts)
25 (1.52 % of base) : 56028.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (Tier1)
Top method improvements (bytes):
-200 (-10.68 % of base) : 44450.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-120 (-2.86 % of base) : 49511.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
-120 (-2.86 % of base) : 21404.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
-106 (-0.82 % of base) : 41308.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-71 (-0.81 % of base) : 5319.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-71 (-0.81 % of base) : 28289.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-49 (-4.05 % of base) : 64345.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-48 (-1.97 % of base) : 39313.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:BuildDeserialize(System.Type,Utf8Json.Internal.Emit.MetaType,System.Reflection.Emit.ILGenerator,System.Func`3[int,Utf8Json.Internal.Emit.MetaMember,ubyte],ubyte,int) (Tier0-FullOpts)
-48 (-1.97 % of base) : 5197.dasm - Utf8Json.Resolvers.Internal.DynamicObjectTypeBuilder:BuildDeserialize(System.Type,Utf8Json.Internal.Emit.MetaType,System.Reflection.Emit.ILGenerator,System.Func`3[int,Utf8Json.Internal.Emit.MetaMember,ubyte],ubyte,int) (Tier0-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)
-34 (-1.60 % of base) : 58927.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:PostDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short,Microsoft.CodeAnalysis.WellKnownAttributeData):this (Tier0-FullOpts)
-32 (-0.95 % of base) : 42002.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0-FullOpts)
-32 (-0.95 % of base) : 51697.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0-FullOpts)
-27 (-1.59 % of base) : 100.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-27 (-1.59 % of base) : 17459.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-24 (-0.87 % of base) : 71464.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-23 (-2.13 % of base) : 53302.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
-23 (-2.30 % of base) : 4236.dasm - System.Text.RegularExpressions.RegexNode:ComputeMinLength():int:this (Tier0-FullOpts)
-23 (-2.30 % of base) : 21191.dasm - System.Text.RegularExpressions.RegexNode:ComputeMinLength():int:this (Tier0-FullOpts)
-21 (-0.32 % of base) : 35153.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (Tier0-FullOpts)
Top method regressions (percentages):
178 (11.32 % of base) : 61496.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (Tier0-FullOpts)
85 (8.64 % of base) : 9760.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
73 (7.41 % of base) : 31844.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier0-FullOpts)
16 (6.13 % of base) : 22540.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
16 (6.13 % of base) : 6124.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
20 (5.97 % of base) : 35819.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
20 (5.97 % of base) : 50005.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (Tier0-FullOpts)
95 (5.50 % of base) : 57844.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (Tier0-FullOpts)
24 (5.44 % of base) : 26850.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (Tier0-FullOpts)
24 (5.44 % of base) : 11181.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (Tier0-FullOpts)
17 (5.04 % of base) : 45649.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):ubyte:this (Tier0-FullOpts)
17 (5.04 % of base) : 54259.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):ubyte:this (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)
35 (3.63 % of base) : 58963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.SourceLocation:this (Tier0-FullOpts)
94 (3.62 % 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)
94 (3.61 % 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)
5 (3.50 % of base) : 56340.dasm - Roslyn.Utilities.StringTable:AddSharedEntry(int,System.String):this (Tier0-FullOpts)
12 (3.47 % of base) : 58233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (Tier0-FullOpts)
22 (3.44 % of base) : 15807.dasm - System.Decimal+DecCalc:InternalRound(byref,uint,int) (Tier0-FullOpts)
Top method improvements (percentages):
-200 (-10.68 % of base) : 44450.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
-11 (-7.64 % of base) : 24576.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
-11 (-7.64 % of base) : 9336.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
-19 (-4.19 % of base) : 53230.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (Tier0-FullOpts)
-19 (-4.19 % of base) : 41256.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (Tier0-FullOpts)
-15 (-4.13 % of base) : 43193.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2822_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-15 (-4.13 % of base) : 43797.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5889_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-49 (-4.05 % of base) : 64345.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-10 (-3.52 % of base) : 821.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (Tier0-FullOpts)
-10 (-3.52 % of base) : 18168.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (Tier0-FullOpts)
-11 (-3.42 % of base) : 42465.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex44_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-10 (-3.39 % of base) : 24359.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-10 (-3.39 % of base) : 49392.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
-11 (-3.37 % of base) : 42493.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex103_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.37 % of base) : 42507.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex120_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 43063.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2256_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 43176.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2765_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 43688.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5225_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 43721.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5410_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-3.36 % of base) : 44310.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8852_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 215326611 (overridden on cmd)
Total bytes of diff: 215341186 (overridden on cmd)
Total bytes of delta: 14575 (0.01 % of base)
diff is a regression.
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)
180 : 190386.dasm (11.27 % of base)
97 : 160618.dasm (7.69 % of base)
97 : 160634.dasm (7.69 % of base)
95 : 188572.dasm (5.48 % of base)
88 : 405055.dasm (4.05 % of base)
83 : 113804.dasm (7.28 % of base)
83 : 115053.dasm (7.28 % of base)
83 : 113819.dasm (7.28 % of base)
83 : 115067.dasm (7.28 % of base)
81 : 356100.dasm (3.77 % of base)
79 : 120647.dasm (6.85 % of base)
77 : 306146.dasm (10.68 % of base)
77 : 340553.dasm (5.98 % of base)
77 : 334586.dasm (6.64 % of base)
77 : 334567.dasm (6.64 % of base)
77 : 403682.dasm (10.68 % of base)
Top file improvements (bytes):
-141 : 189269.dasm (-2.39 % of base)
-136 : 70996.dasm (-7.77 % of base)
-136 : 70911.dasm (-7.78 % of base)
-119 : 161558.dasm (-8.96 % of base)
-119 : 164009.dasm (-9.29 % of base)
-119 : 161527.dasm (-8.96 % of base)
-119 : 164057.dasm (-9.29 % of base)
-104 : 125219.dasm (-6.86 % of base)
-104 : 128007.dasm (-6.86 % of base)
-104 : 122060.dasm (-6.86 % of base)
-104 : 125134.dasm (-6.86 % of base)
-104 : 122145.dasm (-6.86 % of base)
-104 : 127922.dasm (-6.86 % of base)
-103 : 121223.dasm (-6.90 % of base)
-103 : 121271.dasm (-6.90 % of base)
-69 : 124458.dasm (-5.22 % of base)
-69 : 122077.dasm (-5.21 % of base)
-69 : 127246.dasm (-5.22 % of base)
-69 : 121383.dasm (-5.22 % of base)
-69 : 125151.dasm (-5.21 % of base)
63 total files with Code Size differences (30 improved, 33 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)
180 (11.27 % of base) : 190386.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):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)
95 (5.48 % of base) : 188572.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
88 (4.05 % of base) : 405055.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier1)
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)
81 (3.77 % of base) : 356100.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier1)
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)
Top method improvements (bytes):
-141 (-2.39 % of base) : 189269.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]: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)
-69 (-5.22 % of base) : 121383.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
-69 (-5.21 % of base) : 122077.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicSByte30:ValidateResult(byte[],byte[],byte[],byte[],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.21 % of base) : 125151.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicSByte30:ValidateResult(byte[],byte[],byte[],byte[],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)
Top method regressions (percentages):
67 (24.45 % of base) : 240294.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
42 (17.87 % of base) : 168864.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (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)
20 (12.42 % of base) : 376685.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
20 (12.42 % of base) : 355043.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
19 (11.95 % of base) : 366140.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
180 (11.27 % of base) : 190386.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (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)
40 (9.22 % of base) : 361982.dasm - System.Decimal+DecCalc:Div128By96(byref,byref):uint (Instrumented Tier1)
40 (9.22 % of base) : 358115.dasm - System.Decimal+DecCalc:Div128By96(byref,byref):uint (Instrumented Tier1)
16 (9.09 % of base) : 398435.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
30 (8.55 % of base) : 193693.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
16 (8.25 % of base) : 308714.dasm - R2RTest.TestExclusionMap:TryGetIssue(System.String[],byref):ubyte:this (FullOpts)
49 (8.14 % of base) : 346351.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
49 (8.14 % of base) : 341271.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
49 (8.14 % of base) : 344249.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
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) : 236395.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (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) : 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)
-44 (-5.70 % of base) : 20233.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser:CheckForDynamicManifest(Microsoft.Diagnostics.Tracing.TraceEvent):ubyte: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)
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: 35943892 (overridden on cmd)
Total bytes of diff: 35944337 (overridden on cmd)
Total bytes of delta: 445 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
133 : 2226.dasm (1.70 % of base)
116 : 32179.dasm (3.09 % of base)
102 : 22842.dasm (9.59 % of base)
98 : 113230.dasm (4.53 % of base)
96 : 172295.dasm (3.26 % of base)
92 : 168866.dasm (3.65 % of base)
90 : 169517.dasm (7.85 % of base)
72 : 113389.dasm (9.97 % of base)
70 : 72595.dasm (9.89 % of base)
64 : 152903.dasm (3.79 % of base)
60 : 264278.dasm (3.21 % of base)
58 : 55521.dasm (1.39 % of base)
56 : 261657.dasm (3.00 % of base)
52 : 176171.dasm (3.79 % of base)
49 : 100884.dasm (0.94 % of base)
49 : 63928.dasm (0.94 % of base)
48 : 21106.dasm (1.59 % of base)
41 : 16966.dasm (4.10 % of base)
31 : 114184.dasm (1.61 % of base)
30 : 162820.dasm (0.60 % of base)
Top file improvements (bytes):
-114 : 149320.dasm (-3.51 % of base)
-101 : 169518.dasm (-2.71 % of base)
-66 : 40577.dasm (-5.03 % of base)
-66 : 80663.dasm (-5.03 % of base)
-63 : 66395.dasm (-12.00 % of base)
-54 : 23304.dasm (-8.40 % of base)
-54 : 49585.dasm (-3.92 % of base)
-52 : 149867.dasm (-3.79 % of base)
-47 : 180793.dasm (-8.29 % of base)
-47 : 139137.dasm (-8.29 % of base)
-45 : 169530.dasm (-3.22 % of base)
-42 : 72664.dasm (-6.43 % of base)
-40 : 65250.dasm (-0.91 % of base)
-39 : 213369.dasm (-5.30 % of base)
-38 : 37064.dasm (-5.92 % of base)
-38 : 172532.dasm (-1.74 % of base)
-38 : 77715.dasm (-5.92 % of base)
-36 : 64804.dasm (-6.57 % of base)
-36 : 101750.dasm (-6.57 % of base)
-34 : 15477.dasm (-1.77 % of base)
68 total files with Code Size differences (32 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
133 (1.70 % 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)
116 (3.09 % of base) : 32179.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
102 (9.59 % of base) : 22842.dasm - System.Number+BigInteger:DivRem(byref,byref,byref,byref) (FullOpts)
98 (4.53 % of base) : 113230.dasm - System.Xml.Xsl.XPathConvert+BigNumber:DblToRgbFast(double,ubyte[],byref,byref):ubyte (FullOpts)
96 (3.26 % of base) : 172295.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+IntoClauseBinder:BindIntoSelector(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],System.Collections.Generic.HashSet`1[System.String],Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax],ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
92 (3.65 % of base) : 168866.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)
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)
72 (9.97 % of base) : 113389.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteMemberElementsIf(System.Xml.Serialization.ReflectionXmlSerializationReader+Member[],System.Xml.Serialization.ReflectionXmlSerializationReader+Member,System.Xml.Serialization.UnknownNodeAction,System.Xml.Serialization.XmlSerializationReader+Fixup,System.Xml.Serialization.ReflectionXmlSerializationReader+CheckTypeSource):this (FullOpts)
70 (9.89 % of base) : 72595.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)
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)
60 (3.21 % of base) : 264278.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
58 (1.39 % of base) : 55521.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
56 (3.00 % of base) : 261657.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
52 (3.79 % of base) : 176171.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (FullOpts)
49 (0.94 % of base) : 100884.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
49 (0.94 % of base) : 63928.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
48 (1.59 % of base) : 21106.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,int,uint,uint,System.Object[]):ubyte:this (FullOpts)
41 (4.10 % of base) : 16966.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
31 (1.61 % of base) : 114184.dasm - System.Xml.Xsl.Xslt.XsltInput:GetAttributes(System.Xml.Xsl.Xslt.XsltInput+XsltAttribute[]):System.Xml.Xsl.Xslt.XsltInput+ContextInfo:this (FullOpts)
30 (0.60 % of base) : 162820.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
Top method improvements (bytes):
-114 (-3.51 % of base) : 149320.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
-101 (-2.71 % of base) : 169518.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
-66 (-5.03 % of base) : 40577.dasm - Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter:HoistExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.StateMachineFieldSymbol],byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-66 (-5.03 % of base) : 80663.dasm - Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter:HoistExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.StateMachineFieldSymbol],byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-63 (-12.00 % of base) : 66395.dasm - System.Data.ColumnTypeConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
-54 (-3.92 % of base) : 49585.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddSkippedSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.GreenNode,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-54 (-8.40 % of base) : 23304.dasm - System.Reflection.CustomAttributeEncodedArgument:ParseNamedArgs(byref,System.Reflection.CustomAttributeNamedParameter[],System.Reflection.RuntimeModule) (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)
-47 (-8.29 % of base) : 180793.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-47 (-8.29 % of base) : 139137.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-45 (-3.22 % 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)
-42 (-6.43 % of base) : 72664.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:ReportOverloadResolutionFailure(System.String,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],System.Object[],System.String[],System.Type[],System.String,int,Microsoft.VisualBasic.CompilerServices.OverloadResolution+ArgumentDetector,Microsoft.VisualBasic.CompilerServices.OverloadResolution+CandidateProperty):System.Exception (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 (-5.30 % of base) : 213369.dasm - System.Reflection.Emit.TypeBuilderImpl:GetInterfaceMap(System.Type):System.Reflection.InterfaceMapping: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)
-38 (-1.74 % of base) : 172532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-36 (-6.57 % of base) : 64804.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
-36 (-6.57 % of base) : 101750.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
-34 (-1.77 % of base) : 15477.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
Top method regressions (percentages):
20 (18.87 % of base) : 109838.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
72 (9.97 % of base) : 113389.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteMemberElementsIf(System.Xml.Serialization.ReflectionXmlSerializationReader+Member[],System.Xml.Serialization.ReflectionXmlSerializationReader+Member,System.Xml.Serialization.UnknownNodeAction,System.Xml.Serialization.XmlSerializationReader+Fixup,System.Xml.Serialization.ReflectionXmlSerializationReader+CheckTypeSource):this (FullOpts)
23 (9.91 % of base) : 269293.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
70 (9.89 % of base) : 72595.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)
102 (9.59 % of base) : 22842.dasm - System.Number+BigInteger:DivRem(byref,byref,byref,byref) (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)
17 (8.54 % of base) : 266387.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte: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)
9 (7.83 % of base) : 110589.dasm - System.Xml.Xsl.XsltOld.ReaderOutput:FindAttribute(System.String,byref):ubyte:this (FullOpts)
16 (7.24 % of base) : 233082.dasm - System.Diagnostics.SharedPerformanceCounter:StringEquals(System.String,int):ubyte:this (FullOpts)
10 (6.90 % of base) : 22294.dasm - System.Globalization.TimeSpanParse+StringParser:ParseInt(int,byref,byref):ubyte:this (FullOpts)
19 (5.94 % of base) : 3397.dasm - System.Random+XoshiroImpl:NextBytes(System.Span`1[ubyte]):this (FullOpts)
21 (5.85 % of base) : 235802.dasm - Interop+HttpApi:GetChunks(int,int,byref,byref,ubyte[],int,int):uint (FullOpts)
26 (5.62 % of base) : 181268.dasm - Microsoft.CodeAnalysis.Text.CompositeText:CombineSegments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Text.SourceText],int) (FullOpts)
21 (5.24 % 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)
21 (5.24 % 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)
10 (4.90 % of base) : 221133.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
21 (4.76 % of base) : 149527.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsValidLabelForGoto(Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
98 (4.53 % of base) : 113230.dasm - System.Xml.Xsl.XPathConvert+BigNumber:DblToRgbFast(double,ubyte[],byref,byref):ubyte (FullOpts)
21 (4.37 % of base) : 227209.dasm - System.Collections.Generic.SegmentedDictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-63 (-12.00 % of base) : 66395.dasm - System.Data.ColumnTypeConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
-16 (-10.88 % of base) : 266492.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (FullOpts)
-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)
-54 (-8.40 % of base) : 23304.dasm - System.Reflection.CustomAttributeEncodedArgument:ParseNamedArgs(byref,System.Reflection.CustomAttributeNamedParameter[],System.Reflection.RuntimeModule) (FullOpts)
-47 (-8.29 % of base) : 180793.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-47 (-8.29 % of base) : 139137.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-11 (-7.53 % of base) : 239163.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-23 (-7.17 % of base) : 268790.dasm - System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson:GetJsonMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-36 (-6.57 % of base) : 64804.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
-36 (-6.57 % of base) : 101750.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
-42 (-6.43 % of base) : 72664.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:ReportOverloadResolutionFailure(System.String,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],System.Object[],System.String[],System.Type[],System.String,int,Microsoft.VisualBasic.CompilerServices.OverloadResolution+ArgumentDetector,Microsoft.VisualBasic.CompilerServices.OverloadResolution+CandidateProperty):System.Exception (FullOpts)
-12 (-6.42 % of base) : 69173.dasm - System.Data.Common.SqlBytesStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-12 (-6.42 % of base) : 69003.dasm - System.Data.Common.SqlCharsStorage:Aggregate(int[],int):System.Object: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)
-12 (-5.19 % of base) : 258654.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
-24 (-5.14 % of base) : 16929.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (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: 51244221 (overridden on cmd)
Total bytes of diff: 51244215 (overridden on cmd)
Total bytes of delta: -6 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
120 : 67077.dasm (7.64 % of base)
105 : 60101.dasm (6.63 % of base)
98 : 100602.dasm (2.08 % of base)
95 : 32478.dasm (5.47 % of base)
95 : 81016.dasm (1.59 % of base)
90 : 84683.dasm (3.90 % of base)
87 : 77006.dasm (2.02 % of base)
77 : 172052.dasm (2.46 % of base)
76 : 68548.dasm (10.94 % of base)
74 : 70752.dasm (0.76 % of base)
61 : 114347.dasm (2.84 % of base)
61 : 152739.dasm (2.84 % of base)
60 : 195786.dasm (2.97 % of base)
60 : 195794.dasm (3.21 % of base)
60 : 195770.dasm (2.97 % of base)
60 : 195778.dasm (2.97 % of base)
58 : 271325.dasm (4.51 % of base)
57 : 167541.dasm (16.81 % of base)
51 : 303943.dasm (4.44 % of base)
51 : 77044.dasm (3.22 % of base)
Top file improvements (bytes):
-141 : 60161.dasm (-2.46 % of base)
-140 : 176358.dasm (-5.52 % of base)
-102 : 225891.dasm (-3.74 % of base)
-97 : 30333.dasm (-2.73 % of base)
-83 : 74650.dasm (-2.17 % of base)
-80 : 31638.dasm (-3.71 % of base)
-78 : 286825.dasm (-1.17 % of base)
-77 : 84792.dasm (-3.50 % of base)
-76 : 36886.dasm (-2.88 % of base)
-71 : 225260.dasm (-7.97 % of base)
-71 : 208981.dasm (-7.97 % of base)
-70 : 35403.dasm (-2.64 % of base)
-69 : 100611.dasm (-3.38 % of base)
-69 : 74649.dasm (-3.24 % of base)
-67 : 252764.dasm (-2.69 % of base)
-56 : 195483.dasm (-2.10 % of base)
-55 : 308622.dasm (-3.58 % of base)
-54 : 112501.dasm (-6.03 % of base)
-54 : 100590.dasm (-1.83 % of base)
-54 : 150905.dasm (-6.04 % of base)
80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
120 (7.64 % of base) : 67077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetExternAliasesAndDiagnostics>g__buildExternAliases|7_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.ExternAliasDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AliasAndExternAliasDirective] (FullOpts)
105 (6.63 % of base) : 60101.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
98 (2.08 % of base) : 100602.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
95 (5.47 % of base) : 32478.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]: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)
90 (3.90 % of base) : 84683.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:ReportUnusedImports(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
87 (2.02 % of base) : 77006.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:PassArguments(Microsoft.CodeAnalysis.SyntaxNode,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.BitVector]:this (FullOpts)
77 (2.46 % of base) : 172052.dasm - System.Xml.Xsl.XPathConvert+BigNumber:DblToRgbFast(double,ubyte[],byref,byref):ubyte (FullOpts)
76 (10.94 % of base) : 68548.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)
74 (0.76 % of base) : 70752.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
61 (2.84 % of base) : 114347.dasm - Microsoft.CodeAnalysis.Text.ChangedText:GetLinesCore():Microsoft.CodeAnalysis.Text.TextLineCollection:this (FullOpts)
61 (2.84 % of base) : 152739.dasm - Microsoft.CodeAnalysis.Text.ChangedText:GetLinesCore():Microsoft.CodeAnalysis.Text.TextLineCollection:this (FullOpts)
60 (2.97 % of base) : 195770.dasm - Internal.TypeSystem.Ecma.MetadataExtensions+<GetDecodedCustomAttributes>d__1:MoveNext():ubyte:this (FullOpts)
60 (2.97 % of base) : 195778.dasm - Internal.TypeSystem.Ecma.MetadataExtensions+<GetDecodedCustomAttributes>d__3:MoveNext():ubyte:this (FullOpts)
60 (2.97 % of base) : 195786.dasm - Internal.TypeSystem.Ecma.MetadataExtensions+<GetDecodedCustomAttributes>d__5:MoveNext():ubyte:this (FullOpts)
60 (3.21 % of base) : 195794.dasm - Internal.TypeSystem.Ecma.MetadataExtensions+<GetDecodedCustomAttributes>d__6:MoveNext():ubyte:this (FullOpts)
58 (4.51 % of base) : 271325.dasm - System.Numerics.BigInteger:op_RightShift(System.Numerics.BigInteger,int):System.Numerics.BigInteger (FullOpts)
57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
51 (3.22 % of base) : 77044.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
51 (4.44 % of base) : 303943.dasm - System.Buffers.SequenceReader`1[long]:TryReadToInternal(byref,long,ubyte,int):ubyte:this (FullOpts)
Top method improvements (bytes):
-141 (-2.46 % of base) : 60161.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
-140 (-5.52 % of base) : 176358.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,ubyte,ubyte,System.String):System.Object:this (FullOpts)
-102 (-3.74 % of base) : 225891.dasm - System.Configuration.MgmtConfigurationRecord:CopyConfigDefinitionsRecursive(System.Configuration.ConfigDefinitionUpdates,System.Configuration.XmlUtil,System.Configuration.XmlUtilWriter,ubyte,System.Configuration.LocationUpdates,System.Configuration.SectionUpdates,ubyte,System.String,int,int):ubyte:this (FullOpts)
-97 (-2.73 % of base) : 30333.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
-83 (-2.17 % of base) : 74650.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-80 (-3.71 % of base) : 31638.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__tryHandleRecursivePattern|4_7(byref,byref):System.String (FullOpts)
-78 (-1.17 % of base) : 286825.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-77 (-3.50 % of base) : 84792.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetExtensionAttributeConstructor(byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol:this (FullOpts)
-76 (-2.88 % of base) : 36886.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-71 (-7.97 % of base) : 225260.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (FullOpts)
-71 (-7.97 % of base) : 208981.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (FullOpts)
-70 (-2.64 % of base) : 35403.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckSymbolDistinctness(Microsoft.CodeAnalysis.CSharp.Symbol,System.String,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]):this (FullOpts)
-69 (-3.38 % 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)
-69 (-3.24 % of base) : 74649.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-67 (-2.69 % of base) : 252764.dasm - System.Net.Http.QPack.QPackDecoder:DecodeInternal(System.ReadOnlySpan`1[ubyte],System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-56 (-2.10 % of base) : 195483.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeImpl(ubyte):Internal.TypeSystem.TypeDesc:this (FullOpts)
-55 (-3.58 % of base) : 308622.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-54 (-6.03 % of base) : 112501.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-54 (-6.04 % of base) : 150905.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-54 (-1.83 % of base) : 100590.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
Top method regressions (percentages):
18 (17.14 % of base) : 168340.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):ubyte (FullOpts)
57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
21 (11.17 % of base) : 144826.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue:TryGetValue(System.String,byref):ubyte:this (FullOpts)
76 (10.94 % of base) : 68548.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)
28 (10.00 % of base) : 35408.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:IsCompliantType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte:this (FullOpts)
47 (9.40 % of base) : 151015.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetTriviaThatContainsPosition(byref,int):Microsoft.CodeAnalysis.SyntaxTrivia (FullOpts)
47 (9.40 % of base) : 112612.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetTriviaThatContainsPosition(byref,int):Microsoft.CodeAnalysis.SyntaxTrivia (FullOpts)
14 (8.86 % of base) : 173366.dasm - System.Xml.Xsl.XsltOld.ReaderOutput:FindAttribute(System.String,byref):ubyte:this (FullOpts)
30 (8.55 % of base) : 263134.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
36 (8.45 % of base) : 250655.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
16 (8.33 % of base) : 126391.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses:FindAndRemove(long,int,byref):Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses+ILToNativeMap:this (FullOpts)
16 (8.25 % of base) : 208204.dasm - R2RTest.TestExclusionMap:TryGetIssue(System.String[],byref):ubyte:this (FullOpts)
36 (8.24 % of base) : 149858.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
36 (8.24 % of base) : 111396.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
120 (7.64 % of base) : 67077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetExternAliasesAndDiagnostics>g__buildExternAliases|7_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.ExternAliasDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AliasAndExternAliasDirective] (FullOpts)
30 (7.32 % of base) : 174267.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
17 (6.91 % of base) : 74652.dasm - System.Data.ProviderBase.SchemaMapping:AddRelation(System.Data.DataColumn,System.Data.DataColumn):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)
105 (6.63 % of base) : 60101.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
12 (6.52 % of base) : 272671.dasm - System.Security.AccessControl.ObjectSecurity:get_AuditRulesModified():ubyte:this (FullOpts)
Top method improvements (percentages):
-50 (-13.12 % of base) : 31936.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[ubyte](System.Collections.Immutable.ImmutableArray`1[ubyte],System.Func`2[ubyte,ubyte],System.Func`3[ubyte,ubyte,int]):System.Nullable`1[int] (FullOpts)
-15 (-10.49 % of base) : 147798.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (FullOpts)
-15 (-10.49 % of base) : 109223.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):ubyte:this (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)
-21 (-8.43 % of base) : 173365.dasm - System.Xml.Xsl.XsltOld.ReaderOutput:FindAttribute(System.String,System.String,byref):ubyte:this (FullOpts)
-6 (-8.33 % of base) : 2849.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.33 % of base) : 310864.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-47 (-8.32 % of base) : 152123.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-47 (-8.32 % of base) : 113735.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-71 (-7.97 % of base) : 225260.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (FullOpts)
-71 (-7.97 % of base) : 208981.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (FullOpts)
-48 (-7.77 % of base) : 125275.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
-11 (-7.64 % of base) : 190503.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-39 (-6.27 % of base) : 3751.dasm - System.UInt128:System.Numerics.IBinaryInteger<System.UInt128>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
-39 (-6.27 % of base) : 311764.dasm - System.UInt128:System.Numerics.IBinaryInteger<System.UInt128>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
-41 (-6.26 % of base) : 36278.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:TopState():Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState:this (FullOpts)
-20 (-6.15 % of base) : 176348.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEnumMethod(System.Xml.Serialization.EnumMapping,System.String):System.Object:this (FullOpts)
-24 (-6.06 % of base) : 252989.dasm - System.Net.Http.Headers.CacheControlHeaderValue:GetCacheControlLength(System.String,int,System.Net.Http.Headers.CacheControlHeaderValue,byref):int (FullOpts)
-8 (-6.06 % of base) : 310745.dasm - System.SpanHelpers:SequenceCompareTo[ubyte](byref,int,byref,int):int (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: 14891910 (overridden on cmd)
Total bytes of diff: 14898163 (overridden on cmd)
Total bytes of delta: 6253 (0.04 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
230 : 20424.dasm (3.62 % of base)
181 : 19530.dasm (1.56 % of base)
117 : 38004.dasm (1.03 % of base)
117 : 43644.dasm (1.03 % of base)
96 : 29969.dasm (3.76 % of base)
71 : 1063.dasm (1.01 % of base)
71 : 4579.dasm (1.01 % of base)
68 : 28048.dasm (10.99 % of base)
68 : 39918.dasm (10.99 % of base)
61 : 26483.dasm (2.37 % of base)
57 : 43285.dasm (16.81 % of base)
56 : 19209.dasm (2.42 % of base)
56 : 29809.dasm (9.18 % of base)
53 : 18210.dasm (8.55 % of base)
52 : 23488.dasm (2.04 % of base)
52 : 47116.dasm (2.04 % of base)
52 : 8903.dasm (8.46 % of base)
51 : 1337.dasm (7.96 % of base)
50 : 5845.dasm (8.00 % of base)
49 : 5510.dasm (7.94 % of base)
Top file improvements (bytes):
-105 : 44605.dasm (-1.50 % of base)
-71 : 15094.dasm (-7.96 % of base)
-69 : 31320.dasm (-1.78 % of base)
-62 : 25677.dasm (-2.71 % of base)
-39 : 4615.dasm (-2.35 % of base)
-36 : 1100.dasm (-1.50 % of base)
-35 : 19272.dasm (-1.87 % of base)
-35 : 47995.dasm (-7.61 % of base)
-33 : 5589.dasm (-1.26 % of base)
-32 : 42322.dasm (-1.21 % of base)
-32 : 37231.dasm (-0.95 % of base)
-27 : 19532.dasm (-3.14 % of base)
-26 : 17806.dasm (-5.37 % of base)
-23 : 19357.dasm (-1.16 % of base)
-23 : 21645.dasm (-1.23 % of base)
-23 : 37978.dasm (-1.16 % of base)
-23 : 47140.dasm (-1.16 % of base)
-23 : 4024.dasm (-2.28 % of base)
-23 : 553.dasm (-2.28 % of base)
-21 : 41243.dasm (-1.23 % of base)
68 total files with Code Size differences (37 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
230 (3.62 % of base) : 20424.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
181 (1.56 % of base) : 19530.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
117 (1.03 % of base) : 38004.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
117 (1.03 % of base) : 43644.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
96 (3.76 % of base) : 29969.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
71 (1.01 % of base) : 1063.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
71 (1.01 % of base) : 4579.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
68 (10.99 % of base) : 28048.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
68 (10.99 % of base) : 39918.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
61 (2.37 % of base) : 26483.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
56 (9.18 % of base) : 29809.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
56 (2.42 % of base) : 19209.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
53 (8.55 % of base) : 18210.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
52 (8.46 % of base) : 8903.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
52 (2.04 % of base) : 23488.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
52 (2.04 % of base) : 47116.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
51 (7.96 % of base) : 1337.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
50 (8.00 % of base) : 5845.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
49 (7.94 % of base) : 5510.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
Top method improvements (bytes):
-105 (-1.50 % of base) : 44605.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-71 (-7.96 % of base) : 15094.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (Tier0-FullOpts)
-69 (-1.78 % of base) : 31320.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
-62 (-2.71 % of base) : 25677.dasm - System.IO.Tests.StandaloneStreamConformanceTests+<Seek_ReadWrite_RoundtripsExpectedData>d__36:MoveNext():this (Tier0-FullOpts)
-39 (-2.35 % of base) : 4615.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Instrumented Tier1)
-36 (-1.50 % of base) : 1100.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Instrumented Tier1)
-35 (-1.87 % of base) : 19272.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Instrumented Tier1)
-35 (-7.61 % of base) : 47995.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
-33 (-1.26 % of base) : 5589.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
-32 (-0.95 % of base) : 37231.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0-FullOpts)
-32 (-1.21 % of base) : 42322.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
-27 (-3.14 % of base) : 19532.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-23 (-1.16 % of base) : 19357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Instrumented Tier1)
-23 (-1.23 % of base) : 21645.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Instrumented Tier1)
-23 (-1.16 % of base) : 37978.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Instrumented Tier1)
-23 (-1.16 % of base) : 47140.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Instrumented Tier1)
-23 (-2.28 % of base) : 4024.dasm - System.Text.RegularExpressions.RegexNode:ComputeMinLength():int:this (Tier0-FullOpts)
-23 (-2.28 % of base) : 553.dasm - System.Text.RegularExpressions.RegexNode:ComputeMinLength():int:this (Tier0-FullOpts)
-21 (-1.23 % of base) : 41243.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
Top method regressions (percentages):
42 (17.87 % of base) : 7786.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (Tier0-FullOpts)
57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
20 (12.42 % of base) : 3398.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
20 (12.42 % of base) : 30207.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
68 (10.99 % of base) : 28048.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
68 (10.99 % of base) : 39918.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
56 (9.18 % of base) : 29809.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
53 (8.55 % of base) : 18210.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
18 (8.53 % of base) : 44049.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
52 (8.46 % of base) : 8903.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
50 (8.00 % of base) : 5845.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
51 (7.96 % of base) : 1337.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
49 (7.94 % of base) : 5510.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
49 (7.80 % of base) : 23522.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
29 (7.13 % of base) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
42 (6.89 % of base) : 11922.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
42 (6.73 % of base) : 667.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
41 (6.71 % of base) : 39535.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
41 (6.71 % of base) : 7179.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
41 (6.71 % of base) : 11655.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
Top method improvements (percentages):
-71 (-7.96 % of base) : 15094.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (Tier0-FullOpts)
-11 (-7.64 % of base) : 6832.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (Tier0-FullOpts)
-35 (-7.61 % of base) : 47995.dasm - System.SpanHelpers:IndexOfNullCharacter(uint):int (Tier1)
-12 (-6.45 % of base) : 20820.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
-26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
-9 (-4.92 % of base) : 40546.dasm - System.Formats.Asn1.Asn1Tag:TryEncode(System.Span`1[ubyte],byref):ubyte:this (Tier0-FullOpts)
-20 (-4.51 % of base) : 37102.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-20 (-4.51 % of base) : 11477.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-19 (-4.19 % of base) : 28937.dasm - System.Text.Latin1Utility:NarrowUtf16ToLatin1(uint,uint,uint):uint (Tier0-FullOpts)
-16 (-3.64 % of base) : 13010.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-16 (-3.64 % of base) : 39497.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-16 (-3.64 % of base) : 3390.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-16 (-3.64 % of base) : 5914.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (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)
-11 (-3.33 % of base) : 6872.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-11 (-3.33 % of base) : 47987.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-11 (-3.33 % of base) : 3860.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-6 (-3.31 % of base) : 28059.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
-6 (-3.24 % of base) : 7041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
-6 (-3.24 % of base) : 13209.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (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: 109390907 (overridden on cmd)
Total bytes of diff: 109389863 (overridden on cmd)
Total bytes of delta: -1044 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
230 : 145746.dasm (3.62 % of base)
189 : 12804.dasm (4.07 % of base)
189 : 35532.dasm (4.07 % of base)
180 : 72670.dasm (11.27 % of base)
127 : 88192.dasm (6.23 % of base)
116 : 62705.dasm (2.90 % of base)
115 : 83492.dasm (0.17 % of base)
109 : 86048.dasm (5.20 % of base)
106 : 62529.dasm (7.10 % of base)
106 : 29341.dasm (7.10 % of base)
106 : 68582.dasm (7.10 % of base)
104 : 14511.dasm (6.97 % of base)
100 : 173763.dasm (4.96 % of base)
95 : 5476.dasm (5.48 % of base)
95 : 20382.dasm (5.49 % of base)
92 : 294549.dasm (4.93 % of base)
90 : 311700.dasm (2.57 % of base)
76 : 78110.dasm (10.94 % of base)
74 : 315460.dasm (2.36 % of base)
74 : 114471.dasm (0.79 % of base)
Top file improvements (bytes):
-412 : 171462.dasm (-14.31 % of base)
-412 : 174227.dasm (-14.04 % of base)
-300 : 171636.dasm (-13.15 % of base)
-294 : 173640.dasm (-12.56 % of base)
-141 : 6349.dasm (-2.41 % of base)
-141 : 66613.dasm (-2.41 % of base)
-141 : 60577.dasm (-2.41 % of base)
-141 : 21157.dasm (-2.41 % of base)
-131 : 51679.dasm (-5.01 % of base)
-114 : 314357.dasm (-2.67 % of base)
-113 : 315548.dasm (-4.18 % of base)
-113 : 343485.dasm (-4.46 % of base)
-110 : 315640.dasm (-3.79 % of base)
-105 : 269200.dasm (-1.49 % of base)
-104 : 315609.dasm (-6.55 % of base)
-100 : 325030.dasm (-2.77 % of base)
-100 : 111629.dasm (-3.73 % of base)
-83 : 117624.dasm (-2.23 % of base)
-81 : 315459.dasm (-2.60 % of base)
-76 : 74268.dasm (-2.88 % of base)
81 total files with Code Size differences (39 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
230 (3.62 % of base) : 145746.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
189 (4.07 % of base) : 12804.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
189 (4.07 % of base) : 35532.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
180 (11.27 % of base) : 72670.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
127 (6.23 % of base) : 88192.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[uint,uint]]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[uint,uint]],System.Collections.Generic.KeyValuePair`2[uint,uint][],int,int,ubyte,ubyte):this (FullOpts)
116 (2.90 % 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)
115 (0.17 % of base) : 83492.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
109 (5.20 % of base) : 86048.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[ulong,ulong]]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ulong,ulong]],System.Collections.Generic.KeyValuePair`2[ulong,ulong][],int,int,ubyte,ubyte):this (FullOpts)
106 (7.10 % of base) : 62529.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
106 (7.10 % of base) : 29341.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
106 (7.10 % of base) : 68582.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
104 (6.97 % of base) : 14511.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
100 (4.96 % of base) : 173763.dasm - System.SpanTests.SpanTests:RunIndexOfAnyAlgComplexityTest[ushort](ushort[]) (FullOpts)
95 (5.48 % of base) : 5476.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
95 (5.49 % of base) : 20382.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
92 (4.93 % of base) : 294549.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingGetString(System.String) (FullOpts)
90 (2.57 % of base) : 311700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex888_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
76 (10.94 % of base) : 78110.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)
74 (0.79 % of base) : 114471.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement: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)
Top method improvements (bytes):
-412 (-14.31 % of base) : 171462.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchFive_Char() (FullOpts)
-412 (-14.04 % of base) : 174227.dasm - System.SpanTests.SpanTests:TestNoMatchFive_Char() (FullOpts)
-300 (-13.15 % of base) : 171636.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchFour_Char() (FullOpts)
-294 (-12.56 % of base) : 173640.dasm - System.SpanTests.SpanTests:TestNoMatchFour_Char() (FullOpts)
-141 (-2.41 % of base) : 6349.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
-141 (-2.41 % of base) : 66613.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
-141 (-2.41 % of base) : 60577.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
-141 (-2.41 % of base) : 21157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
-131 (-5.01 % of base) : 51679.dasm - DryIoc.ReflectionFactory:CreateExpressionOrDefault(DryIoc.Request):FastExpressionCompiler.LightExpression.Expression: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)
-113 (-4.46 % of base) : 343485.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,ubyte,ubyte,System.String):System.Object: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)
-105 (-1.49 % of base) : 269200.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):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)
-100 (-3.73 % of base) : 111629.dasm - System.Configuration.MgmtConfigurationRecord:CopyConfigDefinitionsRecursive(System.Configuration.ConfigDefinitionUpdates,System.Configuration.XmlUtil,System.Configuration.XmlUtilWriter,ubyte,System.Configuration.LocationUpdates,System.Configuration.SectionUpdates,ubyte,System.String,int,int):ubyte: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)
-83 (-2.23 % of base) : 117624.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
-81 (-2.60 % of base) : 315459.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2438_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-76 (-2.88 % of base) : 74268.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|448_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
Top method regressions (percentages):
42 (17.87 % of base) : 40694.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
42 (17.87 % of base) : 49111.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
18 (17.14 % of base) : 198836.dasm - System.Xml.DocumentXPathNavigator:ResetAttributePosition(System.Xml.XmlAttribute,System.Xml.XmlAttributeCollection,byref):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)
180 (11.27 % of base) : 72670.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
76 (10.94 % of base) : 78110.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)
21 (10.66 % of base) : 51782.dasm - DryIoc.Converter:DoConvertMany[System.__Canon](System.Object[]):System.__Canon[] (FullOpts)
22 (9.57 % of base) : 35294.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Security.Cryptography.HashAlgorithmName,int]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Security.Cryptography.HashAlgorithmName,int],System.Security.Cryptography.HashAlgorithmName,int,byref):ubyte (FullOpts)
30 (8.55 % of base) : 232126.dasm - System.Xml.XmlBaseWriter+NamespaceManager:AddNamespace(System.String,System.Xml.XmlDictionaryString):System.String:this (FullOpts)
36 (8.45 % of base) : 177707.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
36 (8.45 % of base) : 179953.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (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)
106 (7.10 % of base) : 62529.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
106 (7.10 % of base) : 29341.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
106 (7.10 % of base) : 68582.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
104 (6.97 % of base) : 14511.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]: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)
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)
Top method improvements (percentages):
-412 (-14.31 % of base) : 171462.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchFive_Char() (FullOpts)
-412 (-14.04 % of base) : 174227.dasm - System.SpanTests.SpanTests:TestNoMatchFive_Char() (FullOpts)
-300 (-13.15 % of base) : 171636.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchFour_Char() (FullOpts)
-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)
-294 (-12.56 % of base) : 173640.dasm - System.SpanTests.SpanTests:TestNoMatchFour_Char() (FullOpts)
-27 (-10.42 % of base) : 171754.dasm - System.Buffers.Text.Tests.Base64TestHelper:InitializeBytes(System.Span`1[ubyte],int) (FullOpts)
-57 (-8.66 % of base) : 172635.dasm - System.Memory.Tests.Span.StringSearchValuesTests+StringSearchValuesTestHelper:.ctor(System.Memory.Tests.Span.StringSearchValuesTests+StringSearchValuesTestHelper+IndexOfAnySearchDelegate,System.Memory.Tests.Span.StringSearchValuesTests+StringSearchValuesTestHelper+SearchValuesSearchDelegate,int):this (FullOpts)
-47 (-8.39 % of base) : 9601.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-47 (-8.32 % of base) : 23140.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-71 (-7.97 % of base) : 110858.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement,ubyte,ubyte):this (FullOpts)
-37 (-7.76 % of base) : 196740.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithMyCollectionField:Write2_TypeWithMyCollectionField(System.String,System.String,SerializationTypes.TypeWithMyCollectionField,ubyte,ubyte):this (FullOpts)
-11 (-7.64 % of base) : 54474.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-11 (-7.64 % of base) : 34224.dasm - Newtonsoft.Json.JsonTextReader:MatchValue(ubyte,System.String):ubyte:this (FullOpts)
-42 (-7.29 % of base) : 171134.dasm - System.SpanTests.ReadOnlySpanTests:DefaultFilledIndexOfAny_TwoInteger() (FullOpts)
-42 (-7.28 % of base) : 173997.dasm - System.SpanTests.SpanTests:DefaultFilledIndexOfAny_TwoInteger() (FullOpts)
-42 (-7.23 % of base) : 174194.dasm - System.SpanTests.SpanTests:DefaultFilledIndexOfTwo_Char() (FullOpts)
-42 (-7.20 % of base) : 173953.dasm - System.SpanTests.SpanTests:DefaultFilledLastIndexOfAny_Byte_TwoByte() (FullOpts)
-42 (-7.18 % of base) : 170918.dasm - System.SpanTests.ReadOnlySpanTests:DefaultFilledLastIndexOfAny_Byte_TwoByte() (FullOpts)
-42 (-7.17 % of base) : 171667.dasm - System.SpanTests.ReadOnlySpanTests:DefaultFilledLastIndexOfAny_TwoByte() (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: 11794549 (overridden on cmd)
Total bytes of diff: 11794414 (overridden on cmd)
Total bytes of delta: -135 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
294 : 1233.dasm (1.31 % of base)
132 : 1545.dasm (0.56 % of base)
98 : 15522.dasm (5.44 % of base)
97 : 24975.dasm (6.55 % of base)
96 : 1444.dasm (0.91 % of base)
95 : 22146.dasm (5.49 % of base)
86 : 15270.dasm (4.19 % of base)
83 : 15380.dasm (1.72 % of base)
73 : 18095.dasm (7.41 % of base)
68 : 16214.dasm (1.89 % of base)
67 : 23134.dasm (1.98 % of base)
55 : 15647.dasm (4.10 % of base)
46 : 1152.dasm (1.24 % of base)
45 : 23888.dasm (1.70 % of base)
45 : 26846.dasm (6.90 % of base)
38 : 27456.dasm (1.17 % of base)
36 : 21004.dasm (3.09 % of base)
35 : 23949.dasm (3.80 % of base)
35 : 33606.dasm (0.60 % of base)
31 : 1311.dasm (1.96 % of base)
Top file improvements (bytes):
-429 : 1455.dasm (-1.91 % of base)
-276 : 9819.dasm (-2.90 % of base)
-133 : 16194.dasm (-3.30 % of base)
-120 : 22441.dasm (-2.85 % of base)
-116 : 15551.dasm (-3.07 % of base)
-112 : 1413.dasm (-1.87 % of base)
-76 : 27651.dasm (-2.88 % of base)
-71 : 35748.dasm (-0.81 % of base)
-61 : 28004.dasm (-4.11 % of base)
-53 : 26172.dasm (-1.06 % of base)
-51 : 29490.dasm (-1.46 % of base)
-44 : 1418.dasm (-1.88 % of base)
-41 : 24459.dasm (-0.92 % of base)
-38 : 21319.dasm (-1.13 % of base)
-37 : 10871.dasm (-0.94 % of base)
-36 : 856.dasm (-1.13 % of base)
-34 : 23900.dasm (-1.60 % of base)
-32 : 21324.dasm (-8.74 % of base)
-32 : 10904.dasm (-2.05 % of base)
-30 : 1461.dasm (-0.32 % of base)
73 total files with Code Size differences (33 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
294 (1.31 % of base) : 1233.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
132 (0.56 % of base) : 1545.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
98 (5.44 % of base) : 15522.dasm - SixLabors.ImageSharp.Formats.Png.PngDecoderCore:ValidateChunk(byref):this (FullOpts)
97 (6.55 % of base) : 24975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
96 (0.91 % of base) : 1444.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
95 (5.49 % of base) : 22146.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
86 (4.19 % of base) : 15270.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
83 (1.72 % of base) : 15380.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
73 (7.41 % of base) : 18095.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
68 (1.89 % of base) : 16214.dasm - SixLabors.ImageSharp.Processing.Processors.Convolution.Convolution2PassProcessor`1+VerticalConvolutionRowOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Convolve4(int,System.Span`1[System.Numerics.Vector4]):this (FullOpts)
67 (1.98 % of base) : 23134.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
55 (4.10 % of base) : 15647.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetQuantizedColor(SixLabors.ImageSharp.PixelFormats.Rgba32,byref):ubyte:this (FullOpts)
46 (1.24 % of base) : 1152.dasm - BepuPhysics.IslandSleeper:Sleep(byref,BepuUtilities.IThreadDispatcher,ubyte,int,int,ubyte):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)
38 (1.17 % of base) : 27456.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
36 (3.09 % of base) : 21004.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(int,int,int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)
35 (3.80 % of base) : 23949.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.SourceLocation:this (FullOpts)
35 (0.60 % of base) : 33606.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
31 (1.96 % of base) : 1311.dasm - BepuPhysics.BatchCompressor:Compress(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
Top method improvements (bytes):
-429 (-1.91 % of base) : 1455.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
-133 (-3.30 % of base) : 16194.dasm - SixLabors.ImageSharp.Formats.Gif.LzwDecoder:DecodePixels(int,SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte]):this (FullOpts)
-120 (-2.85 % of base) : 22441.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (FullOpts)
-116 (-3.07 % of base) : 15551.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockBaseline(SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent,byref,byref,byref):this (FullOpts)
-112 (-1.87 % of base) : 1413.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-76 (-2.88 % of base) : 27651.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-71 (-0.81 % of base) : 35748.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-61 (-4.11 % of base) : 28004.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
-51 (-1.46 % of base) : 29490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-44 (-1.88 % of base) : 1418.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:Reduce(uint,int,byref,float,byref,byref,byref,byref,float,float,byref,byref,int,byref) (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)
-38 (-1.13 % of base) : 21319.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,uint,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
-37 (-0.94 % of base) : 10871.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
-36 (-1.13 % of base) : 856.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]](uint,byref,byref,uint,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
-34 (-1.60 % of base) : 23900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:PostDecodeWellKnownAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,short,Microsoft.CodeAnalysis.WellKnownAttributeData):this (FullOpts)
-32 (-2.05 % of base) : 10904.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:TransTrueDec@1369(FSharp.Compiler.CheckExpressions+SafeInitData,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Val,FSharp.Compiler.Text.Range,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Internal.Utilities.Collections.Tagged.Set`2[FSharp.Compiler.TypedTree+Val,System.Collections.Generic.IComparer`1[FSharp.Compiler.TypedTree+Val]],Internal.Utilities.Collections.Tagged.Set`2[FSharp.Compiler.TypedTree+Val,System.Collections.Generic.IComparer`1[FSharp.Compiler.TypedTree+Val]],ubyte,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassBindingGroup):System.Tuple`2[System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
-32 (-8.74 % of base) : 21324.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|11_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
-30 (-0.32 % of base) : 1461.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
Top method regressions (percentages):
22 (12.87 % of base) : 35637.dasm - System.Linq.Expressions.Compiler.DelegateHelpers:MakeNewDelegate(System.Type[]):System.Type (FullOpts)
73 (7.41 % of base) : 18095.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,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)
97 (6.55 % of base) : 24975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameterConstraintTypes(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]]:this (FullOpts)
16 (6.25 % of base) : 2944.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
16 (6.13 % of base) : 15512.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
95 (5.49 % of base) : 22146.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (FullOpts)
98 (5.44 % of base) : 15522.dasm - SixLabors.ImageSharp.Formats.Png.PngDecoderCore:ValidateChunk(byref):this (FullOpts)
21 (5.25 % 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)
17 (5.03 % of base) : 36578.dasm - System.Management.Automation.Language.Tokenizer:ContinuationAfterExtent(System.Management.Automation.Language.IScriptExtent,ushort):ubyte:this (FullOpts)
12 (5.00 % of base) : 28053.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:VisitAttributes(System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]]):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)
14 (4.43 % of base) : 19535.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.ValueTuple`2[System.__Canon,int],System.__Canon],System.ValueTuple`2[System.__Canon,int],int,byref):ubyte (FullOpts)
86 (4.19 % of base) : 15270.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
55 (4.10 % of base) : 15647.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetQuantizedColor(SixLabors.ImageSharp.PixelFormats.Rgba32,byref):ubyte:this (FullOpts)
35 (3.80 % of base) : 23949.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:FindBaseRefSyntax(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.SourceLocation:this (FullOpts)
5 (3.50 % of base) : 20018.dasm - Roslyn.Utilities.StringTable:AddSharedEntry(int,System.String):this (FullOpts)
12 (3.47 % of base) : 22311.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
12 (3.12 % of base) : 12747.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
Top method improvements (percentages):
-15 (-11.03 % of base) : 28805.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary`2+Node[System.__Canon,ubyte],System.__Canon,byref):ubyte:this (FullOpts)
-32 (-8.74 % of base) : 21324.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|11_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
-18 (-6.52 % 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)
-13 (-4.15 % of base) : 26242.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-61 (-4.11 % of base) : 28004.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
-11 (-3.69 % of base) : 13074.dasm - FSharp.Compiler.NicePrint+PrintTypes:prettyLayoutOfTopTypeInfoAux(FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+ArgReprInfo]]],FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TyparConstraint]]):FSharp.Compiler.Text.Layout (FullOpts)
-10 (-3.52 % of base) : 2141.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (FullOpts)
-10 (-3.52 % of base) : 337.dasm - System.RuntimeType:GetBaseType():System.RuntimeType:this (FullOpts)
-14 (-3.43 % of base) : 1501.dasm - BepuPhysics.CollisionDetection.PairCache:AwakenSet(int):this (FullOpts)
-24 (-3.42 % of base) : 2295.dasm - System.Xml.DomNameTable:AddName(System.String,System.String,System.String,System.Xml.Schema.IXmlSchemaInfo):System.Xml.XmlName:this (FullOpts)
-133 (-3.30 % of base) : 16194.dasm - SixLabors.ImageSharp.Formats.Gif.LzwDecoder:DecodePixels(int,SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte]):this (FullOpts)
-22 (-3.24 % of base) : 17653.dasm - Microsoft.ML.Internal.Utilities.NormStr+Pool:Get(System.ReadOnlyMemory`1[ushort],ubyte):Microsoft.ML.Internal.Utilities.NormStr:this (FullOpts)
-26 (-3.11 % of base) : 15711.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
-14 (-3.08 % of base) : 8844.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckExpressions+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckExpressions+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-116 (-3.07 % of base) : 15551.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockBaseline(SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent,byref,byref,byref):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)
-76 (-2.88 % of base) : 27651.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
-120 (-2.85 % of base) : 22441.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):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)