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.ReadOnlySpan1[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.Span1[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.ConcurrentDictionary2+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.ReadOnlySpan1[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.ReadOnlySpan1[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.ReadOnlySpan1[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.ReadOnlySpan1[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.ConcurrentDictionary2+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.ReadOnlySpan1[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.ReadOnlySpan1[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.Span1[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.ConcurrentDictionary2+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.ConcurrentDictionary2+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.Nullable1[int]]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary2+Tables[System.__Canon,System.Nullable1[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.ConcurrentDictionary2+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.Span1[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.ConcurrentDictionary2+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.ConcurrentDictionary2+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.Nullable1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary2+Node[System.__Canon,System.Nullable1[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.Nullable1[int]]:GetFromList(Microsoft.CodeAnalysis.SmallDictionary2+Node[System.__Canon,System.Nullable1[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.SmallDictionary2+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)